{"version":3,"file":"c8y-ngx-components-icon-selector.mjs","sources":["../../icon-selector/icon-name.pipe.ts","../../icon-selector/icon-selector.component.ts","../../icon-selector/icon-selector.component.html","../../icon-selector/icon-selector-modal/icon-selector-modal.component.ts","../../icon-selector/icon-selector-modal/icon-selector-modal.component.html","../../icon-selector/icon-selector.service.ts","../../icon-selector/icon-selector-wrapper/icon-selector-wrapper.component.ts","../../icon-selector/icon-selector-wrapper/icon-selector-wrapper.component.html","../../icon-selector/icon-selector.module.ts","../../icon-selector/c8y-ngx-components-icon-selector.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'iconName'\n})\nexport class IconNamePipe implements PipeTransform {\n  transform(icon: string): string {\n    if (icon.startsWith('c8y-')) {\n      return icon.replace(/^c8y-/, '');\n    }\n    return icon;\n  }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest, defer, from } from 'rxjs';\nimport { debounceTime, map, shareReplay, startWith } from 'rxjs/operators';\nimport { gettext } from '@c8y/ngx-components';\nimport { clone } from 'lodash-es';\nimport { DefaultIconDefinition } from '@c8y/ngx-components/icon-selector/model';\nimport { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';\n\nconst allIconCategory = gettext('All`icons-category`');\n\n@Component({\n  selector: 'c8y-icon-selector',\n  templateUrl: './icon-selector.component.html',\n  styleUrls: []\n})\nexport class IconSelectorComponent {\n  @Input() iconCategoriesToExclude: string[] = [];\n  @Input() showIconClass = true;\n  @Output() onSelect = new EventEmitter<string>();\n  @Input() selectedIcon: SupportedIconsSuggestions;\n\n  icons$: Observable<DefaultIconDefinition[]>;\n  filteredIcons$: Observable<DefaultIconDefinition[]>;\n  searchTerm$ = new BehaviorSubject('');\n  selectedIconCategory$ = new BehaviorSubject<string>(allIconCategory);\n  availableIconCategories$: Observable<string[]>;\n\n  constructor() {\n    this.icons$ = defer(() => from(this.loadIconDefinitions())).pipe(\n      map(icons => icons.filter(tmp => !this.iconCategoriesToExclude.includes(tmp.label))),\n      shareReplay({ refCount: true, bufferSize: 1 })\n    );\n    this.filteredIcons$ = combineLatest([\n      this.icons$,\n      this.searchTerm$.pipe(debounceTime(500), startWith(this.searchTerm$.value)),\n      this.selectedIconCategory$\n    ]).pipe(\n      map(([icons, searchTerm, category]) =>\n        this.filterIconsByCategoryAndSearchTerm(icons, category, searchTerm)\n      )\n    );\n    this.availableIconCategories$ = this.icons$.pipe(\n      map(icons => [allIconCategory, ...icons.map(tmp => tmp.label)])\n    );\n  }\n\n  async loadIconDefinitions(): Promise<DefaultIconDefinition[]> {\n    const { allIcons } = await import('@c8y/ngx-components/icon-selector/icons');\n    return allIcons;\n  }\n\n  filterIconsByCategoryAndSearchTerm(\n    iconCategories: DefaultIconDefinition[],\n    selectedCategory: string,\n    searchTerm: string\n  ): DefaultIconDefinition[] {\n    if (selectedCategory !== allIconCategory) {\n      iconCategories = iconCategories.filter(category => category.label === selectedCategory);\n    }\n\n    if (searchTerm) {\n      const lowerCaseSearchTerm = searchTerm.toLowerCase();\n      const matchingCategories = new Array<DefaultIconDefinition>();\n      for (const category of iconCategories) {\n        const matchingIcons = category.icons.filter(iconClasses =>\n          iconClasses.some(iconClass => iconClass.includes(lowerCaseSearchTerm))\n        );\n        if (matchingIcons.length) {\n          matchingCategories.push({ ...clone(category), icons: matchingIcons });\n        }\n      }\n      return matchingCategories;\n    }\n\n    return iconCategories;\n  }\n\n  onSearchChange(searchTerm: string) {\n    this.searchTerm$.next(searchTerm);\n  }\n\n  onCategoryFilterChanged(categoryChange: string): void {\n    this.selectedIconCategory$.next(categoryChange);\n  }\n\n  onIconClicked(icon: ReadonlyArray<string>): void {\n    this.selectedIcon = icon[0];\n    this.onSelect.emit(icon[0]);\n  }\n}\n","<div class=\"p-l-24 p-r-24 p-t-8 p-b-8 separator-bottom\">\n  <div class=\"row d-flex-sm\">\n    <div class=\"col-sm-6 m-b-8\">\n      <div class=\"input-group-search input-group\" style=\"width: auto\">\n        <input\n          type=\"search\"\n          class=\"form-control\"\n          id=\"filter-icons\"\n          [ngModel]=\"searchTerm$ | async\"\n          (ngModelChange)=\"onSearchChange($event)\"\n          placeholder=\"{{ 'Type to filter icons…' | translate }}\"\n        />\n        <ng-template #searchIcon>\n          <span class=\"input-group-addon\">\n            <i c8yIcon=\"search\"></i>\n          </span>\n        </ng-template>\n        <span\n          class=\"input-group-addon pointer\"\n          *ngIf=\"searchTerm$ | async; else searchIcon\"\n          (click)=\"onSearchChange('')\"\n        >\n          <i c8yIcon=\"times\"></i>\n        </span>\n      </div>\n    </div>\n    <div class=\"col-sm-6 m-b-8 text-right\">\n      <div class=\"d-inline-flex a-i-center text-left\">\n        <label class=\"m-b-0 m-r-8 flex-no-shrink\" translate>Filter by type</label>\n        <div class=\"c8y-select-wrapper\">\n          <select\n            id=\"exampleSelect\"\n            class=\"form-control\"\n            [ngModel]=\"selectedIconCategory$ | async\"\n            (ngModelChange)=\"onCategoryFilterChanged($event)\"\n          >\n            <option *ngFor=\"let category of availableIconCategories$ | async\" [ngValue]=\"category\">\n              {{ category | translate }}\n            </option>\n          </select>\n          <span></span>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<div class=\"modal-inner-scroll\">\n  <div class=\"modal-body\" style=\"height: calc(100vh - 293px)\">\n    <div class=\"dtm-icon-grid\">\n      <div *ngFor=\"let iconDefinition of filteredIcons$ | async\" class=\"d-contents\">\n        <div class=\"legend form-block center grid__col--fullspan\">\n          {{ iconDefinition.label | translate }}\n        </div>\n\n        <div class=\"d-contents\" *ngFor=\"let icon of iconDefinition.icons\">\n          <div\n            class=\"dtm-icon-grid__item\"\n            [ngClass]=\"{\n              'dtm-icon-grid__item--selected': selectedIcon && icon[0] === selectedIcon\n            }\"\n          >\n            <button (click)=\"onIconClicked(icon)\" class=\"dtm-icon-grid__btn\" [title]=\"icon[0] | iconName\">\n              <i [c8yIcon]=\"icon[0]\" class=\"d-block icon-40\"></i>\n              <small *ngIf=\"showIconClass\" class=\"text-break-word\">{{ icon[0] | iconName }}</small>\n            </button>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n  selector: 'c8y-icon-selector-modal',\n  templateUrl: './icon-selector-modal.component.html'\n})\nexport class IconSelectorModalComponent {\n  title: string = gettext('Select icon');\n  currentSelection: string;\n  saveButtonLabel: string = gettext('Select');\n  iconCategoriesToExclude: string[] = [];\n  showIconClass = true;\n\n  readonly result: Promise<string> = new Promise((resolve, reject) => {\n    this.save = resolve;\n    this.cancel = reject;\n  });\n\n  private save: (value: string) => void;\n  private cancel: (reason?: any) => void;\n\n  constructor(private bsModal: BsModalRef) {}\n\n  close() {\n    this.bsModal.hide();\n    this.cancel();\n  }\n\n  saveChanges(): void {\n    this.bsModal.hide();\n    this.save(this.currentSelection);\n  }\n\n  selectionChange(newSelection: string) {\n    this.currentSelection = newSelection;\n  }\n}\n","<div class=\"modal-header\">\n  <div id=\"modal-title\" class=\"modal-title h4\">{{ title | translate }}</div>\n</div>\n<div id=\"modal-body\">\n  <c8y-icon-selector\n    (onSelect)=\"selectionChange($event)\"\n    [selectedIcon]=\"currentSelection\"\n    [iconCategoriesToExclude]=\"iconCategoriesToExclude\"\n    [showIconClass]=\"showIconClass\"\n  ></c8y-icon-selector>\n</div>\n<div class=\"modal-footer separator text-center\">\n  <button class=\"btn btn-default\" (click)=\"close()\">\n    {{ 'Cancel' | translate }}\n  </button>\n  <button class=\"btn btn-primary\" [disabled]=\"!currentSelection\" (click)=\"saveChanges()\">\n    {{ saveButtonLabel | translate }}\n  </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { IconSelectorModalComponent } from './icon-selector-modal/icon-selector-modal.component';\n\n@Injectable({ providedIn: 'root' })\nexport class IconSelectorService {\n  constructor(protected modal: BsModalService) {}\n\n  selectIcon(\n    initialState: Partial<\n      Pick<\n        IconSelectorModalComponent,\n        | 'currentSelection'\n        | 'title'\n        | 'saveButtonLabel'\n        | 'iconCategoriesToExclude'\n        | 'showIconClass'\n      >\n    > = {}\n  ): Promise<string> {\n    const modal = this.modal.show(IconSelectorModalComponent, {\n      ignoreBackdropClick: true,\n      keyboard: false,\n      initialState,\n      class: 'modal-lg'\n    });\n    const content = modal.content as IconSelectorModalComponent;\n    return content.result;\n  }\n}\n","import { Component, forwardRef, Input, Output, EventEmitter } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconSelectorService } from '../icon-selector.service';\nimport { GainsightService } from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE_ICON_SELECTOR } from '@c8y/ngx-components/icon-selector/model';\n/**\n * A component which acts as a wrapper for the icon selector.\n *\n * Example 1:\n * ```\n    <c8y-icon-selector-wrapper\n        [selectedIcon]=\"'water'\"\n        (onSelect)=\"selectIcon($event)\"\n    ></c8y-icon-selector-wrapper>\n * ```\n * OR as a part of a formGroup\n * Example 2:\n * ```\n    <c8y-icon-selector-wrapper name=\"icon\" formControlName=\"icon\">\n    </c8y-icon-selector-wrapper>\n * ```\n */\n@Component({\n  selector: 'c8y-icon-selector-wrapper',\n  templateUrl: './icon-selector-wrapper.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => IconSelectorWrapperComponent),\n      multi: true\n    }\n  ]\n})\nexport class IconSelectorWrapperComponent implements ControlValueAccessor {\n  @Input() canRemoveIcon = false;\n  @Input() selectedIcon: string;\n  /**\n   * The displayed icon size, the value has to be multiple of 8.\n   */\n  @Input() iconSize = 32;\n  @Output() onSelect: EventEmitter<string> = new EventEmitter();\n\n  /**\n   * @ignore\n   */\n  onTouched: () => void;\n\n  constructor(\n    private iconSelector: IconSelectorService,\n    private gainsightService: GainsightService\n  ) {}\n\n  /**\n   * @ignore\n   */\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onChange: (value: string) => void = () => {};\n\n  /**\n   * @ignore\n   * @param icon The value to update\n   */\n  writeValue(icon: string): void {\n    this.selectedIcon = icon;\n  }\n\n  /**\n   * @ignore\n   * @param fn The function to register for changes\n   */\n  registerOnChange(fn: () => void): void {\n    this.onChange = fn;\n  }\n\n  /**\n   * @ignore\n   * @param fn The function to register for changes\n   */\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  removeIcon() {\n    this.onSelect.emit(undefined);\n  }\n\n  async openIconSelector() {\n    try {\n      this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_ICON_SELECTOR.EVENTS.ICON_SELECTOR, {\n        component: PRODUCT_EXPERIENCE_ICON_SELECTOR.COMPONENTS.ICON_SELECTOR_WRAPPER_COMPONENT,\n        action: PRODUCT_EXPERIENCE_ICON_SELECTOR.ACTIONS.OPEN_ICON_SELECTOR\n      });\n      const icon = await this.iconSelector.selectIcon({\n        currentSelection: this.selectedIcon\n      });\n      this.onChange(icon);\n      this.selectedIcon = icon;\n      this.onSelect.emit(icon);\n      this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_ICON_SELECTOR.EVENTS.ICON_SELECTOR, {\n        component: PRODUCT_EXPERIENCE_ICON_SELECTOR.COMPONENTS.ICON_SELECTOR_WRAPPER_COMPONENT,\n        action: PRODUCT_EXPERIENCE_ICON_SELECTOR.ACTIONS.ICON_SELECTED\n      });\n    } catch {\n      // nothing to do\n    }\n  }\n}\n","<div class=\"d-flex a-i-center j-c-center p-relative\">\n  <div\n    class=\"icon-{{ iconSize }} text-center l-h-1 fit-w fit-h\"\n    *ngIf=\"selectedIcon\"\n  >\n    <i\n      class=\"c8y-icon-duocolor\"\n      [c8yIcon]=\"selectedIcon\"\n    ></i>\n  </div>\n\n  <div\n    class=\"icon-{{ iconSize }} text-muted text-center a-s-stretch fit-w\"\n    style=\"border: 2px dashed var(--c8y-root-component-border-color)\"\n    *ngIf=\"!selectedIcon\"\n  >\n    <span class=\"d-flex a-i-center j-c-center text-12 fit-h\">\n      <em>{{ 'Auto' | translate }}</em>\n    </span>\n  </div>\n  <div class=\"showOnHover d-flex j-c-center p-absolute fit-h fit-w\">\n    <button\n      class=\"btn btn-dot btn-icon btn-sm m-0\"\n      title=\"{{ 'Select icon' | translate }}\"\n      [attr.aria-label]=\"'Select icon' | translate\"\n      type=\"button\"\n      (click)=\"openIconSelector()\"\n      *ngIf=\"!selectedIcon\"\n    >\n      {{ 'Select' | translate }}\n    </button>\n    <button\n      class=\"btn btn-dot btn-sm btn-icon m-0\"\n      [attr.aria-label]=\"'Change icon' | translate\"\n      tooltip=\"{{ 'Change icon' | translate }}\"\n      placement=\"top\"\n      [delay]=\"500\"\n      container=\"body\"\n      type=\"button\"\n      *ngIf=\"selectedIcon\"\n      (click)=\"openIconSelector()\"\n    >\n      <i [c8yIcon]=\"'replace'\"></i>\n    </button>\n    <button\n      class=\"btn btn-dot btn-dot--danger btn-icon btn-sm m-0\"\n      [attr.aria-label]=\"'Remove icon and use default icon' | translate\"\n      tooltip=\"{{ 'Remove icon and use default icon' | translate }}\"\n      placement=\"top\"\n      [delay]=\"500\"\n      container=\"body\"\n      type=\"button\"\n      *ngIf=\"selectedIcon && canRemoveIcon\"\n      (click)=\"removeIcon()\"\n    >\n      <i [c8yIcon]=\"'trash'\"></i>\n    </button>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule, DropAreaModule } from '@c8y/ngx-components';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { IconNamePipe } from './icon-name.pipe';\nimport { IconSelectorModalComponent } from './icon-selector-modal/icon-selector-modal.component';\nimport { IconSelectorComponent } from './icon-selector.component';\nimport { IconSelectorWrapperComponent } from './icon-selector-wrapper/icon-selector-wrapper.component';\n\n@NgModule({\n  imports: [CommonModule, FormsModule, DropAreaModule, TooltipModule],\n  declarations: [\n    IconSelectorComponent,\n    IconSelectorModalComponent,\n    IconNamePipe,\n    IconSelectorWrapperComponent\n  ],\n  exports: [\n    IconSelectorComponent,\n    IconSelectorModalComponent,\n    IconNamePipe,\n    IconSelectorWrapperComponent\n  ]\n})\nexport class IconSelectorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i4.IconNamePipe","i2.IconSelectorComponent","i3","i1.IconSelectorService"],"mappings":"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"}