{"version":3,"file":"angular-d3-cloud.mjs","sources":["../../../projects/angular-d3-cloud/src/lib/angular-d3-cloud.component.ts","../../../projects/angular-d3-cloud/src/lib/angular-d3-cloud.component.html","../../../projects/angular-d3-cloud/src/lib/angular-d3-cloud.module.ts","../../../projects/angular-d3-cloud/src/public-api.ts","../../../projects/angular-d3-cloud/src/angular-d3-cloud.ts"],"sourcesContent":["import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport * as cloud from 'd3-cloud';\nimport { select } from 'd3-selection';\nimport 'd3-transition';\n\nimport { scaleOrdinal } from 'd3-scale';\nimport { schemeCategory10 } from 'd3-scale-chromatic';\nimport { AngularD3Word } from './interfaces';\n\nconst fill = scaleOrdinal(schemeCategory10);\nconst defaultFontSizeMapper: any = (word: AngularD3Word) => word.value;\n@Component({\n  selector: 'angular-d3-cloud',\n  templateUrl: './angular-d3-cloud.component.html',\n})\nexport class AngularD3CloudComponent implements OnChanges, OnInit {\n  @ViewChild('wordcloud') wordcloud: ElementRef<HTMLDivElement> | undefined;\n  @Input() data: cloud.Word[] = [];\n  @Input() width?: number = 700;\n  @Input() height?: number = 600;\n  @Input() padding?:\n    | number\n    | ((datum: cloud.Word, index: number) => number) = 5;\n  @Input() font?: string | ((datum: cloud.Word, index: number) => string) =\n    'serif';\n  @Input() fontSizeMapper?: (datum: cloud.Word, index: number) => number =\n    defaultFontSizeMapper;\n  @Input() rotate?: number | ((datum: cloud.Word, index: number) => number) = 0;\n  @Input() autoFill?: boolean = true;\n  @Input() fillMapper?: (datum: cloud.Word, index: number) => string;\n  @Input() animations?: boolean = false;\n  @Input() fontWeight: string | number = 'normal';\n\n  @Output() wordClick = new EventEmitter<{\n    event: MouseEvent;\n    word: cloud.Word;\n  }>();\n  @Output() wordMouseOver = new EventEmitter<{\n    event: MouseEvent;\n    word: cloud.Word;\n  }>();\n  @Output() wordMouseOut = new EventEmitter<{\n    event: MouseEvent;\n    word: cloud.Word;\n  }>();\n\n  private isMouseClickUsed = false;\n  private isMouseOverUsed = false;\n  private isMouseOutUsed = false;\n  private static TAG = '[AngularD3CloudComponent]';\n\n  ngOnInit(): void {\n    this.isMouseClickUsed = this.wordClick.observers.length > 0;\n    this.isMouseOverUsed = this.wordMouseOver.observers.length > 0;\n    this.isMouseOutUsed = this.wordMouseOut.observers.length > 0;\n  }\n\n  ngAfterViewInit() {\n    this.renderCloud();\n  }\n\n  ngOnChanges(_changes: SimpleChanges): void {\n    if (this.wordcloud) {\n      this.renderCloud();\n    }\n  }\n\n  renderCloud() {\n    this.validateProps();\n\n    select(this.wordcloud?.nativeElement!).selectAll('*').remove();\n\n    const _cloud = (cloud as any).default() as d3.layout.Cloud<cloud.Word>\n    const layout = _cloud\n      .size([this.width!, this.height!])\n      .font(this.font as any)\n      .fontWeight(this.fontWeight)\n      .words(this.data)\n      .padding(this.padding as any)\n      .rotate(this.rotate as any)\n      .fontSize(this.fontSizeMapper!)\n      .on('end', (words: any) => {\n        const texts = select(this.wordcloud?.nativeElement!)\n          .append('svg')\n          .attr('width', layout.size()[0])\n          .attr('height', layout.size()[1])\n          .append('g')\n          .attr(\n            'transform',\n            `translate(${layout.size()[0] / 2},${layout.size()[1] / 2})`\n          )\n          .selectAll('text')\n          .data(words)\n          .enter()\n          .append('text')\n          .style('font-family', this.font as any)\n          .style('font-weight', this.fontWeight)\n          .style('fill', (word: any, i) => {\n            if (this.autoFill) {\n              if (this.fillMapper) return this.fillMapper(word, i);\n              else return fill(i.toString());\n            } else {\n              return null;\n            }\n          })\n          .attr('text-anchor', 'middle')\n          .text((d: any) => d.text);\n\n        if (!this.animations) {\n          texts\n            .attr(\n              'transform',\n              (d: any) => `translate(${[d.x, d.y]})rotate(${d.rotate})`\n            )\n            .style('font-size', (d: any) => `${d.size}px`)\n            .style('fill-opacity', 1);\n        } else {\n          // Initial status\n          texts.style('font-size', 1).style('fill-opacity', 1e-6);\n\n          //Entering and existing words\n          texts\n            .transition()\n            .duration(600)\n            .attr(\n              'transform',\n              (d: any) => `translate(${[d.x, d.y]})rotate(${d.rotate})`\n            )\n            .style('font-size', (d: any) => `${d.size}px`)\n            .style('fill-opacity', 1);\n        }\n\n        if (this.isMouseClickUsed) {\n          texts.on('click', (event: MouseEvent, word: any) => {\n            this.wordClick.emit({ event, word });\n          });\n        }\n        if (this.isMouseOverUsed) {\n          texts.on('mouseover', (event: MouseEvent, word: any) => {\n            this.wordMouseOver.emit({ event, word });\n          });\n        }\n\n        if (this.isMouseOutUsed) {\n          texts.on('mouseout', (event: MouseEvent, word: any) => {\n            this.wordMouseOut.emit({ event, word });\n          });\n        }\n      });\n    layout.start();\n  }\n\n  private validateProps(): void {\n    if (!this.data || !Array.isArray(this.data)) {\n      throw new TypeError(\n        `${AngularD3CloudComponent.TAG}: [data] must be an array. Current value is: [${this.data}]`\n      );\n    }\n\n    if (\n      this.height === null ||\n      this.height === undefined ||\n      isNaN(this.height) ||\n      this.height <= 0\n    ) {\n      throw new TypeError(\n        `${AngularD3CloudComponent.TAG}: [height] must be a positive number (greater than 0). Current value is: [${this.height}]`\n      );\n    }\n\n    if (\n      this.width === null ||\n      this.width === undefined ||\n      isNaN(this.width) ||\n      this.width <= 0\n    ) {\n      throw new TypeError(\n        `${AngularD3CloudComponent.TAG}: [width] must be a positive number (greater than 0). Current value is: [${this.width}]`\n      );\n    }\n\n    if (\n      this.padding == null ||\n      this.padding === undefined ||\n      !['number', 'function'].includes(typeof this.padding) ||\n      (typeof this.padding === 'number' && this.padding < 0)\n    ) {\n      throw new TypeError(\n        `${AngularD3CloudComponent.TAG}: [padding] must be a positive number or function. Current value is: [${this.padding}]`\n      );\n    }\n\n    if (\n      this.font === null ||\n      this.font === undefined ||\n      !['string', 'function'].includes(typeof this.font)\n    ) {\n      throw new TypeError(\n        `${AngularD3CloudComponent.TAG}: [font] must be a positive string or function. Current value is: [${this.font}]`\n      );\n    }\n\n    if (!this.fontSizeMapper || typeof this.fontSizeMapper !== 'function') {\n      throw new TypeError(\n        `${AngularD3CloudComponent.TAG}: [fontSizeMapper] must be a function. Current value is: [${this.fontSizeMapper}]`\n      );\n    }\n\n    if (this.fillMapper && typeof this.fillMapper !== 'function') {\n      throw new TypeError(\n        `${AngularD3CloudComponent.TAG}: [fillMapper] must be a function. Current value is: [${this.fillMapper}]`\n      );\n    }\n\n    if (\n      this.rotate === null ||\n      this.rotate === undefined ||\n      !['number', 'function'].includes(typeof this.rotate) ||\n      (typeof this.rotate === 'number' && this.rotate < 0)\n    ) {\n      throw new TypeError(\n        `${AngularD3CloudComponent.TAG}: [rotate] must be a positive number or function. Current value is: [${this.rotate}]`\n      );\n    }\n\n    if (\n      this.autoFill === null ||\n      this.autoFill === undefined ||\n      typeof this.autoFill !== 'boolean'\n    ) {\n      throw new TypeError(\n        `${AngularD3CloudComponent.TAG}: [autoFill] must be boolean. Current value is: [${this.autoFill}]`\n      );\n    }\n\n    if (\n      this.fontWeight === null ||\n      this.fontWeight === undefined ||\n      !['number', 'string'].includes(typeof this.fontWeight) ||\n      (typeof this.fontWeight === 'number' && this.fontWeight < 0)\n    ) {\n      throw new TypeError(\n        `${AngularD3CloudComponent.TAG}: [fontWeight] must be a positive number or a string. Current value is: [${this.fontWeight}]`\n      );\n    }\n  }\n}\n","<div #wordcloud></div>\n","import { NgModule } from '@angular/core';\nimport { AngularD3CloudComponent } from './angular-d3-cloud.component';\n\n@NgModule({\n  declarations: [AngularD3CloudComponent],\n  exports: [AngularD3CloudComponent],\n})\nexport class AngularD3CloudModule {}\n","/*\n * Public API Surface of angular-d3-cloud\n */\n\nexport * from './lib/angular-d3-cloud.component';\nexport * from './lib/angular-d3-cloud.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}