{"version":3,"file":"acorex-components-command.mjs","sources":["../../../../packages/components/command/src/lib/command.component.ts","../../../../packages/components/command/src/lib/command.component.html","../../../../packages/components/command/src/lib/command.module.ts","../../../../packages/components/command/src/lib/command.type.ts","../../../../packages/components/command/src/acorex-components-command.ts"],"sourcesContent":["import {\n  AXAutoFocusDirective,\n  AXComponent,\n  AXFocusEvent,\n  AXHtmlEvent,\n  AXValuableComponent,\n  MXInputBaseValueComponent,\n  MXLookComponent,\n} from '@acorex/cdk/common';\nimport {\n  AXListNavigationDirective,\n  AXListNavigationItemDirective,\n  AXListNavigationModule,\n} from '@acorex/cdk/list-navigation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXKBDComponent, AXKBDItemComponent } from '@acorex/components/kbd';\nimport { AXSearchBoxComponent, AXSearchBoxModule } from '@acorex/components/search-box';\nimport { CommonModule } from '@angular/common';\nimport {\n  Component,\n  computed,\n  forwardRef,\n  input,\n  output,\n  signal,\n  TemplateRef,\n  viewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\n\nimport { AXCommandComponentEvent, AXCommandFooter, AXCommandItem, AXCommandMenuItem } from './command.type';\n\n@Component({\n  selector: 'ax-command',\n  templateUrl: './command.component.html',\n  styleUrl: './command.component.css',\n  encapsulation: ViewEncapsulation.None,\n  imports: [\n    AXSearchBoxModule,\n    AXDecoratorModule,\n    CommonModule,\n    FormsModule,\n    AXListNavigationModule,\n    AXKBDComponent,\n    AXKBDItemComponent,\n    AXAutoFocusDirective,\n  ],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => AXCommandComponent),\n      multi: true,\n    },\n    { provide: AXComponent, useExisting: AXCommandComponent },\n    { provide: AXValuableComponent, useExisting: AXCommandComponent },\n  ],\n\n  inputs: ['disabled', 'readonly', 'tabIndex', 'placeholder', 'value', 'state', 'name', 'id'],\n})\nexport class AXCommandComponent extends classes(MXInputBaseValueComponent<AXCommandMenuItem>, MXLookComponent) {\n  protected searchValue = signal('');\n  protected searchBox = viewChild<AXSearchBoxComponent>('f');\n  readonly onSubmit = output<AXCommandComponentEvent>();\n  readonly onEscape = output<AXHtmlEvent<KeyboardEvent>>();\n  readonly onSearchBoxFocus = output<AXHtmlEvent<FocusEvent>>();\n  readonly onSearchBoxBlur = output<AXHtmlEvent<FocusEvent>>();\n  protected listNavigation = viewChild('l', { read: AXListNavigationDirective });\n  private listNav = viewChild(AXListNavigationDirective);\n\n  /**\n   * The custom template used for rendering content.\n   *\n   * @param {TemplateRef<any>} customTemplate\n   */\n  customTemplate = input<TemplateRef<any>>();\n\n  searchBar = input(true);\n\n  divider = input(true);\n\n  searchKey = input<string | null>(null);\n\n  footerButtons = input<AXCommandFooter>({ navigation: true, select: true, close: true });\n\n  protected displayItems = computed<AXCommandItem[]>(() => {\n    const searchValue = this.searchValue();\n    let filtered: AXCommandItem[];\n    if (searchValue) {\n      filtered = this.filterRecursive(this.value.list?.items ?? [], searchValue);\n    } else {\n      filtered = [];\n    }\n    return filtered;\n  });\n\n  protected focusHandler(e: AXFocusEvent) {\n    this.onSearchBoxFocus.emit({ component: this, nativeEvent: e.nativeEvent });\n  }\n\n  protected blurHandler(e: AXFocusEvent) {\n    this.onSearchBoxBlur.emit({ component: this, nativeEvent: e.nativeEvent });\n  }\n\n  private filterRecursive(items: any[], value: string): any[] {\n    const lowerSignal = value.toLowerCase();\n    const searchKey = this.searchKey();\n\n    return items\n      .map((item) => {\n        let isMatch: boolean;\n        if (searchKey) {\n          isMatch = item[searchKey]?.toLowerCase().includes(lowerSignal);\n        } else {\n          isMatch = item.text?.toLowerCase().includes(lowerSignal) || item.href?.toLowerCase().includes(lowerSignal);\n        }\n\n        const filteredChildren = item.children ? this.filterRecursive(item.children, value) : [];\n\n        if (isMatch || filteredChildren.length > 0) {\n          return {\n            ...item,\n            children: filteredChildren,\n          };\n        }\n\n        return null;\n      })\n      .filter(Boolean);\n  }\n\n  protected onItemClick(item: AXCommandItem) {\n    this.onSubmit.emit({ data: item, component: this });\n  }\n\n  protected keyPress(e: AXHtmlEvent<KeyboardEvent>, item: AXCommandItem) {\n    if (e.nativeEvent.key === 'Enter' || e.nativeEvent.code === 'Space') {\n      e.nativeEvent.stopPropagation();\n      e.nativeEvent.preventDefault();\n      this.onSubmit.emit({ data: item, component: this });\n    }\n  }\n\n  protected searchEscapeHandler(e: AXHtmlEvent<KeyboardEvent>) {\n    if (e.nativeEvent.key === 'Escape') {\n      this.onEscape.emit({ component: this, nativeEvent: e.nativeEvent });\n    }\n    if (e.nativeEvent.key === 'ArrowDown') {\n      this.listNavigation().focusOnIndex(0);\n    }\n  }\n\n  protected closeHandler(e: AXHtmlEvent<KeyboardEvent>) {\n    if (!this.listNav().activeIndex() && e.nativeEvent.key === 'ArrowUp') {\n      this.searchBox().focus();\n    }\n\n    if (\n      e.nativeEvent.key === 'ArrowUp' ||\n      e.nativeEvent.key === 'ArrowDown' ||\n      e.nativeEvent.key === 'Tab' ||\n      e.nativeEvent.key === 'Shift'\n    )\n      return;\n\n    this.searchBox().focus();\n  }\n\n  protected activeHandler(l: AXListNavigationDirective, i: AXListNavigationItemDirective) {\n    l?.navigateTo(i);\n  }\n}\n","@if (searchBar()) {\n  <div class=\"ax-search-box-container\">\n    <ax-search-box\n      #f\n      [delayTime]=\"20\"\n      [name]=\"name\"\n      [placeholder]=\"placeholder\"\n      [disabled]=\"disabled\"\n      [readonly]=\"readonly\"\n      [(ngModel)]=\"searchValue\"\n      (onFocus)=\"focusHandler($event)\"\n      (onBlur)=\"blurHandler($event)\"\n      (onKeyDown)=\"searchEscapeHandler($event)\"\n      [axAutoFocus]=\"true\"\n    >\n      <ax-clear-button></ax-clear-button>\n    </ax-search-box>\n  </div>\n}\n\n<div #l class=\"ax-command-container\" #s=\"axListNavigation\" axListNavigation (onKeypress)=\"closeHandler($event)\">\n  @if (value?.pinned && !searchValue()) {\n    <div class=\"ax-command-item-pinned-container\">\n      @if (value.pinned.title) {\n        <ax-text class=\"ax-command-item-pinned-text\">{{ value.pinned.title }}</ax-text>\n      }\n\n      @for (item of value.pinned.items; track item.id) {\n        <ng-container\n          [ngTemplateOutlet]=\"renderItem\"\n          [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n        >\n        </ng-container>\n      }\n    </div>\n  }\n\n  @if (value?.list && !searchValue()) {\n    <div class=\"ax-command-item-pinned-container\">\n      @if (value.list.title) {\n        <ax-text class=\"ax-command-item-pinned-text\">{{ value.list.title }}</ax-text>\n      } @else if (divider()) {\n        <div class=\"ax-command-divider\"></div>\n      }\n\n      @for (item of value.list.items; track item.id) {\n        <ng-container\n          [ngTemplateOutlet]=\"renderItem\"\n          [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n        >\n        </ng-container>\n      }\n    </div>\n  }\n\n  @if (displayItems() && searchValue()) {\n    <div class=\"ax-command-item-wrapper\">\n      @for (item of displayItems(); track item.id) {\n        <ng-container\n          [ngTemplateOutlet]=\"renderItem\"\n          [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n        >\n        </ng-container>\n      } @empty {\n        <div class=\"ax-command-not-found\">\n          <ax-text>No results found for \"{{ searchValue() }}\"</ax-text>\n        </div>\n      }\n    </div>\n  }\n\n  <ng-template #renderItem let-item let-level=\"level\" let-listNavigation=\"listNavigation\">\n    <div\n      (mouseenter)=\"activeHandler(listNavigation, a)\"\n      class=\"ax-remove-default-select-style\"\n      [class.ax-command-item-container]=\"!customTemplate()\"\n      [style.padding-inline-start.rem]=\"!customTemplate() ? level * 0.625 : 0\"\n      [class.ax-command-item-container-active]=\"a.isActive() && !customTemplate()\"\n      #a=\"axListNavigationItem\"\n      axListNavigationItem\n      (click)=\"onItemClick(item)\"\n      (onKeypress)=\"keyPress($event, item)\"\n    >\n      @if (customTemplate()) {\n        <ng-container\n          [ngTemplateOutlet]=\"customTemplate()\"\n          [ngTemplateOutletContext]=\"{\n            $implicit: item,\n            level: level,\n            isActive: a.isActive(),\n          }\"\n        ></ng-container>\n      } @else {\n        <div class=\"ax-command-item\">\n          @if (item.icon) {\n            <i class=\"ax-command-item-icon\" [class]=\"item.icon\"></i>\n          }\n          <span class=\"ax-command-item-text\">{{ item.text }}</span>\n        </div>\n      }\n    </div>\n\n    @if (item.children?.length) {\n      @for (child of item.children; track child.id) {\n        <ng-container\n          [ngTemplateOutlet]=\"renderItem\"\n          [ngTemplateOutletContext]=\"{ $implicit: child, level: level + 1, listNavigation: s }\"\n        >\n        </ng-container>\n      }\n    }\n  </ng-template>\n</div>\n\n@if (footerButtons().navigation || footerButtons().select || footerButtons().close) {\n  <div class=\"ax-command-footer\">\n    @if (footerButtons().navigation) {\n      <div class=\"ax-kbd-footer\">\n        <ax-kbd class=\"ax-kbd\">\n          <ax-kbd-item [keys]=\"['&uarr;']\"></ax-kbd-item>\n          <ax-kbd-item [keys]=\"['&darr;']\"></ax-kbd-item>\n        </ax-kbd>\n        <ax-text class=\"ax-kbd-text\">to navigate</ax-text>\n      </div>\n    }\n\n    @if (footerButtons().select) {\n      <div class=\"ax-kbd-footer\">\n        <ax-kbd class=\"ax-kbd\">\n          <ax-kbd-item [keys]=\"['&#8617;']\"></ax-kbd-item>\n        </ax-kbd>\n        <ax-text class=\"ax-kbd-text\">to select</ax-text>\n      </div>\n    }\n\n    @if (footerButtons().close) {\n      <div class=\"ax-kbd-footer\">\n        <ax-kbd class=\"ax-kbd\">\n          <ax-kbd-item [keys]=\"['esc']\"></ax-kbd-item>\n        </ax-kbd>\n        <ax-text class=\"ax-kbd-text\">to close</ax-text>\n      </div>\n    }\n  </div>\n}\n","import { NgModule } from '@angular/core';\nimport { AXCommandComponent } from './command.component';\n\nconst COMPONENT = [AXCommandComponent];\nconst MODULES = [];\n\n@NgModule({\n  imports: [...MODULES, ...COMPONENT],\n  exports: [...COMPONENT],\n  providers: [],\n})\nexport class AXCommandModule {}\n","import { AXEvent } from '@acorex/cdk/common';\n\nexport type AXCommandItem = {\n  id: string | number;\n  text: string;\n  icon?: string;\n  href?: string;\n  children?: AXCommandItem[];\n  index?: number;\n  data?: any;\n};\n\ntype forceId = {\n  id: string | number;\n};\n\nexport type AXCommandMenuItem<T extends forceId = AXCommandItem> = {\n  pinned?: { title?: string; items: T[] };\n  list: { title?: string; items: T[] };\n};\n\nexport class AXCommandComponentEvent extends AXEvent {\n  data: AXCommandItem;\n}\n\nexport type AXCommandFooter = { navigation: boolean; select: boolean; close: boolean };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}