{"version":3,"file":"meshmakers-octo-ui-legacy.mjs","sources":["../../../../projects/meshmakers/octo-ui-legacy/src/lib/table/mm-octo-table.model.ts","../../../../projects/meshmakers/octo-ui-legacy/src/lib/table/mm-octo-table.component.ts","../../../../projects/meshmakers/octo-ui-legacy/src/lib/table/mm-octo-table.component.html","../../../../projects/meshmakers/octo-ui-legacy/src/lib/breadcrumb/mm-breadcrumb.component.ts","../../../../projects/meshmakers/octo-ui-legacy/src/lib/notification-bar/mm-notification-bar.component.ts","../../../../projects/meshmakers/octo-ui-legacy/src/lib/entity-select-input/mm-entity-select-input.component.ts","../../../../projects/meshmakers/octo-ui-legacy/src/public-api.ts","../../../../projects/meshmakers/octo-ui-legacy/src/meshmakers-octo-ui-legacy.ts"],"sourcesContent":["export interface TableColumn {\n  displayName?: string | null;\n  dataKey: string;\n  templateName?: string;\n  sortingDisabled?: boolean;\n}\n\nexport function getDisplayName(column: TableColumn): string {\n  return column.displayName ?? column.dataKey;\n}\n\nexport function getDataKey(column: TableColumn): string {\n  return column.dataKey;\n}\n\nexport type ColumnDefinition = string | TableColumn;\n","/**\n * Material Design replacement for legacy Kendo-based MmOctoTableComponent.\n * Uses Angular Material table with sorting, pagination, and search.\n */\nimport {\n  Component,\n  ElementRef,\n  Input,\n  ViewChild,\n  OnInit,\n  AfterViewInit,\n  AfterContentInit,\n  OnDestroy,\n  Output,\n  EventEmitter,\n  ContentChildren,\n  QueryList,\n  TemplateRef,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatSort, MatSortHeader } from '@angular/material/sort';\nimport { BehaviorSubject, fromEvent, merge, Observable, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';\n\nimport { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport {\n  MatCell,\n  MatCellDef,\n  MatColumnDef,\n  MatHeaderCell,\n  MatHeaderCellDef,\n  MatHeaderRow,\n  MatHeaderRowDef,\n  MatRow,\n  MatRowDef,\n  MatTable\n} from '@angular/material/table';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatToolbar } from '@angular/material/toolbar';\nimport { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';\nimport { MatListItemIcon } from '@angular/material/list';\nimport { RouterLink } from '@angular/router';\nimport { SearchFilterDto, SearchFilterTypesDto, SortDto, SortOrdersDto } from '@meshmakers/octo-services';\nimport { AssetRepoGraphQlDataSource } from '@meshmakers/octo-services';\nimport { ColumnDefinition, getDisplayName, getDataKey, TableColumn } from './mm-octo-table.model';\n\nexport interface ActionColumn {\n  displayText: string;\n  actionId: string;\n  iconName?: string;\n  svgIconName?: string;\n}\n\nexport interface ToolbarAction {\n  iconName?: string;\n  svgIconName?: string;\n  route?: string;\n  clickHandler?: () => void;\n  actionText: string;\n  isDisabled?: Observable<boolean>;\n  isHidden?: Observable<boolean>;\n}\n\n@Component({\n  selector: 'mm-octo-table',\n  standalone: true,\n  imports: [\n    AsyncPipe,\n    MatButton,\n    MatCell,\n    MatCellDef,\n    MatColumnDef,\n    MatFormField,\n    MatHeaderCell,\n    MatIcon,\n    MatInput,\n    MatLabel,\n    MatPaginator,\n    MatProgressBar,\n    MatRow,\n    MatRowDef,\n    MatSort,\n    MatSortHeader,\n    MatTable,\n    MatToolbar,\n    NgIf,\n    MatHeaderCellDef,\n    MatIconButton,\n    MatMenu,\n    MatMenuItem,\n    MatMenuTrigger,\n    MatListItemIcon,\n    MatHeaderRow,\n    MatHeaderRowDef,\n    MatButton,\n    RouterLink,\n    MatCellDef,\n    MatHeaderRowDef,\n    MatRowDef,\n    NgTemplateOutlet\n  ],\n  templateUrl: './mm-octo-table.component.html',\n  changeDetection: ChangeDetectionStrategy.Eager,\n  styleUrl: './mm-octo-table.component.scss'\n})\n \nexport class MmOctoTableComponent implements OnInit, AfterViewInit, AfterContentInit, OnDestroy {\n   \n  @Input() dataSource!: AssetRepoGraphQlDataSource<any, any, any>;\n   \n  @ContentChildren(TemplateRef) cellTemplates!: QueryList<TemplateRef<any>>;\n   \n  templateMap = new Map<string, TemplateRef<any>>();\n\n  @Input() actionColumns: ActionColumn[] = [];\n  @Input() leftToolbarActions: ToolbarAction[] = [];\n  @Input() optionActions: ActionColumn[] = [];\n  @Input() searchFilterColumns: string[] = [];\n  @Input() currentId = '';\n  @Input() defaultSortColumn = '';\n  @Input() rowIsClickable = true;\n\n  @Input() pageSizeOptions = [5, 10, 20, 50];\n  @Input() selectedPageSize = 5;\n\n   \n  @Output() rowClicked = new EventEmitter<any>();\n  @Output() searchFilterStringUpdated = new EventEmitter<string>();\n  @Input() selectedRowId = '';\n\n   \n  @Output() actionColumnClick = new EventEmitter<{ action: string; id: string; entry: any }>();\n\n  @Input() set columns(cols: ColumnDefinition[]) {\n    if (cols === null || cols === undefined || cols.length === 0) {\n      this._columns = [];\n      return;\n    }\n\n    this._columns = [];\n\n    for (const column of cols) {\n      if (typeof column === 'string') {\n        this._columns.push({ dataKey: column });\n      } else {\n        this._columns.push(column);\n      }\n    }\n  }\n\n  get columns(): TableColumn[] {\n    return this._columns;\n  }\n  _columns: TableColumn[] = [];\n\n   \n  selectedRow: any = null;\n\n  selectedPageSizeSubject: BehaviorSubject<number> = new BehaviorSubject<number>(this.selectedPageSize);\n\n  @ViewChild(MatPaginator, { static: false }) paginator?: MatPaginator;\n  @ViewChild(MatSort, { static: false }) sort?: MatSort;\n  @ViewChild('input', { static: false }) input?: ElementRef<HTMLInputElement>;\n\n  private loadingSubscription?: Subscription;\n  private wasLoadingPreviously = false;\n  private hadFocusBeforeLoading = false;\n\n  get columnDataKeys(): string[] {\n    return this._columns.map((c) => getDataKey(c));\n  }\n\n  get columnDisplayNames(): string[] {\n    return this._columns.map((c) => getDisplayName(c));\n  }\n\n  ngOnInit(): void {\n    this.selectedPageSizeSubject.next(this.selectedPageSize);\n\n    if (!this.dataSource) {\n      throw new Error('No dataSource provided');\n    }\n\n    this.checkSelectedRow();\n  }\n\n  ngAfterContentInit(): void {\n    this.templateMap.clear();\n    if (this.cellTemplates) {\n       \n      this.cellTemplates.forEach((template: any) => {\n        const refName = template._declarationTContainer?.localNames?.[0];\n        if (refName) {\n          this.templateMap.set(refName, template);\n        }\n      });\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (this.dataSource?.loading$) {\n      this.loadingSubscription = this.dataSource.loading$.subscribe((isLoading) => {\n        if (this.wasLoadingPreviously && !isLoading && this.hadFocusBeforeLoading && this.input) {\n          setTimeout(() => {\n            this.input?.nativeElement?.focus();\n            this.hadFocusBeforeLoading = false;\n          }, 0);\n        }\n\n        if (!this.wasLoadingPreviously && isLoading && this.input) {\n          this.hadFocusBeforeLoading = document.activeElement === this.input.nativeElement;\n        }\n\n        this.wasLoadingPreviously = isLoading;\n      });\n    }\n\n    if (this.sort && this.input && this.paginator) {\n      fromEvent(this.input.nativeElement, 'keyup')\n        .pipe(\n          debounceTime(500),\n          distinctUntilChanged(),\n          tap(() => {\n            if (this.paginator) {\n              this.paginator.pageIndex = 0;\n            }\n            this.searchFilterStringUpdated.emit(this.input?.nativeElement?.value ?? '');\n            this.loadData();\n          })\n        )\n        .subscribe();\n\n      this.sort.sortChange.subscribe(() => {\n        if (this.paginator) this.paginator.pageIndex = 0;\n      });\n\n      merge(this.sort.sortChange, this.paginator.page)\n        .pipe(\n          tap(() => {\n            this.loadData();\n          })\n        )\n        .subscribe();\n    }\n    this.loadData();\n  }\n\n  loadData(): void {\n    if (!this.input || !this.sort) {\n      return;\n    }\n    const filterString = this.input.nativeElement.value;\n    const field = this.sort.active;\n    const direction = this.sort.direction;\n\n    let filter: SearchFilterDto | null = null;\n    if (filterString) {\n      filter = {\n        type: SearchFilterTypesDto.AttributeFilterDto,\n        attributePaths: this.searchFilterColumns,\n        searchTerm: filterString\n      };\n    }\n\n    const sort = [];\n    if (field) {\n      sort.push({\n        attributePath: field,\n        sortOrder: direction === 'asc' ? SortOrdersDto.AscendingDto : SortOrdersDto.DescendingDto\n      } as SortDto);\n    }\n\n    if (this.paginator) {\n      this.dataSource?.loadData(this.paginator.pageIndex * this.paginator.pageSize, this.paginator.pageSize, filter, null, sort);\n    }\n  }\n\n  protected readonly encodeURIComponent = encodeURIComponent;\n\n   \n  accessElement(element: any, column: TableColumn): any {\n    if (column.templateName) {\n      return element;\n    }\n    if (column.dataKey.indexOf('.') === -1) {\n      return element[column.dataKey];\n    }\n    const keys = column.dataKey.split('.');\n    let value = element;\n    for (const key of keys) {\n      value = value[key];\n    }\n    return value;\n  }\n\n  selectedPageSizeChanged($event: PageEvent) {\n    this.selectedPageSizeSubject.next($event.pageSize);\n  }\n\n  getActionDisplayTexts(): string[] {\n    return this.actionColumns.map((ac) => ac.displayText);\n  }\n\n   \n  onRowClick(row: any) {\n    if (this.rowIsClickable) {\n      this.selectedRow = row;\n      this.rowClicked.emit(row);\n    }\n  }\n\n   \n  isRowSelected(row: any): boolean {\n    return this.selectedRow === row;\n  }\n\n  checkSelectedRow() {\n     \n    this.dataSource.connect(null as any).subscribe((data) => {\n      for (const entry of data) {\n        if (entry.rtId === this.selectedRowId) {\n          this.onRowClick(entry);\n        }\n      }\n    });\n  }\n\n   \n  emitRowData(data: { action: string; id: string; entry: any }) {\n    this.actionColumnClick.emit(data);\n  }\n\n  hasOptionActions = () => {\n    return this.optionActions.length > 0;\n  };\n\n  hasActionColumns = () => {\n    return this.actionColumns.length > 0 || this.optionActions.length > 0;\n  };\n  protected readonly getDisplayName = getDisplayName;\n  protected readonly getDataKey = getDataKey;\n\n  isSortable(column: TableColumn): boolean {\n    if (column.sortingDisabled !== undefined) {\n      return !column.sortingDisabled;\n    }\n    return true;\n  }\n\n   \n  getTemplate(templateName: string): TemplateRef<any> | undefined {\n    return this.templateMap.get(templateName);\n  }\n\n  ngOnDestroy(): void {\n    if (this.loadingSubscription) {\n      this.loadingSubscription.unsubscribe();\n    }\n  }\n}\n","<div>\n  @if ($safeNavigationMigration(dataSource?.loading$) | async) {\n    <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n  }\n</div>\n\n<mat-toolbar class=\"octo-toolbar octo-detail-toolbar\">\n  @for (toolbarAction of leftToolbarActions; track toolbarAction) {\n    @if (toolbarAction.route) {\n      <button\n        mat-flat-button\n        [routerLink]=\"toolbarAction.route\"\n        type=\"button\"\n        [hidden]=\"!toolbarAction.isHidden ? false : (toolbarAction.isHidden | async)\"\n        [disabled]=\"!toolbarAction.isDisabled ? false : (toolbarAction.isDisabled | async)\"\n      >\n        @if (toolbarAction?.svgIconName) {\n          <mat-icon class=\"svg-icon\" svgIcon=\"{{ toolbarAction.svgIconName }}\" matListItemIcon></mat-icon>\n        }\n        @if (toolbarAction?.iconName) {\n          <mat-icon class=\"material-symbols-outlined\">{{ toolbarAction.iconName }}</mat-icon>\n        }\n        {{ toolbarAction.actionText }}\n      </button>\n    } @else {\n      <button\n        mat-flat-button\n        type=\"button\"\n        (click)=\"toolbarAction.clickHandler?.()\"\n        [hidden]=\"!toolbarAction.isHidden ? false : (toolbarAction.isHidden | async)\"\n        [disabled]=\"!toolbarAction.isDisabled ? false : (toolbarAction.isDisabled | async)\"\n      >\n        @if (toolbarAction?.svgIconName) {\n          <mat-icon class=\"svg-icon\" svgIcon=\"{{ toolbarAction.svgIconName }}\" matListItemIcon></mat-icon>\n        }\n        @if (toolbarAction?.iconName) {\n          <mat-icon class=\"material-symbols-outlined\">{{ toolbarAction.iconName }}</mat-icon>\n        }\n        {{ toolbarAction.actionText }}\n      </button>\n    }\n  }\n\n  <div class=\"octo-spacer\"></div>\n\n  <div class=\"octo-toolbar-search\">\n    <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n      <mat-label>\n        <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n        Search\n      </mat-label>\n      <input #input matInput [disabled]=\"$safeNavigationMigration(dataSource?.loading$) | async\"/>\n    </mat-form-field>\n  </div>\n</mat-toolbar>\n\n<mat-table\n  [dataSource]=\"dataSource\"\n  class=\"mat-elevation-z8 table-container\"\n  mat-table\n  matSort\n  matSortActive=\"{{ defaultSortColumn }}\"\n  matSortDirection=\"asc\"\n  matSortDisableClear=\"true\"\n>\n  @for (column of columns; track column) {\n    <ng-container [matColumnDef]=\"getDataKey(column)\">\n      <mat-header-cell *matHeaderCellDef>\n        <span *ngIf=\"isSortable(column); else nonSortableHeader\" mat-sort-header>\n          {{ getDisplayName(column) }}\n        </span>\n        <ng-template #nonSortableHeader>\n          {{ getDisplayName(column) }}\n        </ng-template>\n      </mat-header-cell>\n      <mat-cell *matCellDef=\"let element\">\n        <span class=\"mobile-label\">{{ getDisplayName(column)}}</span>\n        @if (column.templateName) {\n          <ng-container\n            *ngTemplateOutlet=\"getTemplate(column.templateName); context: { $implicit: element }\"></ng-container>\n        } @else {\n          {{ accessElement(element, column) }}\n        }\n      </mat-cell>\n    </ng-container>\n  }\n\n  <!-- Consolidated Action Column with multiple buttons -->\n  <ng-container matColumnDef=\"actions\">\n    <mat-header-cell *matHeaderCellDef>Actions</mat-header-cell>\n    <mat-cell *matCellDef=\"let element\">\n      @for (column of actionColumns; track column) {\n        <ng-container>\n          <button mat-button\n                  (click)=\"emitRowData({ action: column.actionId, id: encodeURIComponent(element[currentId]), entry: element })\">\n            <mat-icon *ngIf=\"column?.svgIconName\" class=\"svg-icon\" svgIcon=\"{{ column.svgIconName }}\"\n                      matListItemIcon></mat-icon>\n            <mat-icon *ngIf=\"column?.iconName\" class=\"material-symbols-outlined\">{{ column.iconName }}</mat-icon>\n          </button>\n        </ng-container>\n      }\n\n      <!-- Options menu with additional actions -->\n      @if (optionActions.length > 0) {\n        <button mat-icon-button [matMenuTriggerFor]=\"menu\" aria-label=\"Options\">\n          <mat-icon class=\"material-symbols-outlined\">more_vert</mat-icon>\n        </button>\n      }\n\n      <mat-menu #menu=\"matMenu\">\n        @for (optionAction of optionActions; track optionAction) {\n          <ng-container>\n            <button\n              mat-menu-item\n              (click)=\"emitRowData({ action: optionAction.actionId, id: encodeURIComponent(element[currentId]), entry: element })\"\n            >\n              @if (optionAction?.svgIconName) {\n                <mat-icon class=\"svg-icon\" svgIcon=\"{{ optionAction.svgIconName }}\" matListItemIcon></mat-icon>\n              }\n              @if (optionAction?.iconName) {\n                <mat-icon class=\"material-symbols-outlined\">{{ optionAction.iconName }}</mat-icon>\n              }\n              {{ optionAction.displayText }}\n            </button>\n          </ng-container>\n        }\n      </mat-menu>\n    </mat-cell>\n  </ng-container>\n\n  @if (hasActionColumns()) {\n    <mat-header-row *matHeaderRowDef=\"columnDataKeys.concat(['actions'])\"></mat-header-row>\n    <mat-row *matRowDef=\"let row; columns: columnDataKeys.concat(['actions'])\"></mat-row>\n  } @else {\n    <mat-header-row *matHeaderRowDef=\"columnDataKeys\"></mat-header-row>\n    <mat-row *matRowDef=\"let row; columns: columnDataKeys\"></mat-row>\n  }\n</mat-table>\n\n<mat-paginator\n  [length]=\"$safeNavigationMigration(dataSource?.totalCount$) | async\"\n  (page)=\"selectedPageSizeChanged($event)\"\n  [pageSizeOptions]=\"pageSizeOptions\"\n  [pageSize]=\"selectedPageSizeSubject.getValue()\"\n></mat-paginator>\n","/**\n * Material Design replacement for legacy mm-breadcrumb from @meshmakers/shared-ui.\n * Uses BreadCrumbService from shared-services.\n *\n * Supports optional translation via BREADCRUMB_TRANSLATE_FN injection token.\n * If provided, breadcrumb labels are passed through the translate function.\n */\nimport { Component, inject, InjectionToken, OnDestroy, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport { BreadCrumbService, BreadCrumbData } from '@meshmakers/shared-services';\nimport { RouterLink } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\n/**\n * Optional injection token for breadcrumb label translation.\n * Provide a function that takes a translation key and returns the translated string.\n * If the key is a dynamic value (e.g. an ID), the function should return it unchanged.\n *\n * Example usage with @ngx-translate:\n * ```\n * providers: [\n *   { provide: BREADCRUMB_TRANSLATE_FN, useFactory: (ts: TranslateService) => (key: string) => ts.instant(key), deps: [TranslateService] }\n * ]\n * ```\n */\nexport const BREADCRUMB_TRANSLATE_FN = new InjectionToken<(key: string) => string>('BREADCRUMB_TRANSLATE_FN');\n\n@Component({\n  selector: 'mm-breadcrumb',\n  standalone: true,\n  imports: [RouterLink],\n  template: `\n    @if (breadcrumbData.length > 0) {\n      <nav class=\"breadcrumb-nav\">\n        @for (item of breadcrumbData; track item.url; let last = $last) {\n          @if (item.url && !last) {\n            <a [routerLink]=\"item.url\" class=\"breadcrumb-link\">{{ translate(item.text) }}</a>\n          } @else {\n            <span class=\"breadcrumb-current\">{{ translate(item.text) }}</span>\n          }\n          @if (!last) {\n            <span class=\"breadcrumb-separator\"> / </span>\n          }\n        }\n      </nav>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.Eager,\n  styles: [`\n    .breadcrumb-nav {\n      padding: 8px 16px;\n      font-size: 14px;\n    }\n    .breadcrumb-link {\n      color: #0275d8;\n      text-decoration: none;\n    }\n    .breadcrumb-link:hover {\n      text-decoration: underline;\n    }\n    .breadcrumb-current {\n      color: #333;\n    }\n    .breadcrumb-separator {\n      color: #999;\n      margin: 0 4px;\n    }\n  `]\n})\n\nexport class MmBreadcrumbComponent implements OnInit, OnDestroy {\n  private readonly breadcrumbService = inject(BreadCrumbService);\n  private readonly translateFn = inject(BREADCRUMB_TRANSLATE_FN, { optional: true });\n  protected breadcrumbData: BreadCrumbData[] = [];\n  private subscription: Subscription | null = null;\n\n  ngOnInit(): void {\n    this.subscription = this.breadcrumbService.breadCrumbItems.subscribe(items => {\n      this.breadcrumbData = items;\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.subscription?.unsubscribe();\n  }\n\n  protected translate(text: string | undefined): string {\n    if (!text) return '';\n    return this.translateFn ? this.translateFn(text) : text;\n  }\n}\n","/**\n * Material Design replacement for legacy mm-notification-bar from @meshmakers/shared-ui.\n * Uses MatSnackBar to display error messages from MessageService.\n */\nimport { Component, OnInit, OnDestroy, inject, NgZone, ChangeDetectionStrategy } from '@angular/core';\nimport { MessageService, NotificationMessage } from '@meshmakers/shared-services';\nimport { MatSnackBar, MatSnackBarRef, MatSnackBarModule } from '@angular/material/snack-bar';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { filter, debounceTime } from 'rxjs/operators';\n\n@Component({\n  selector: 'mm-notification-bar',\n  standalone: true,\n  imports: [MatSnackBarModule],\n  changeDetection: ChangeDetectionStrategy.Eager,\n  template: ''\n})\n \nexport class MmNotificationBarComponent implements OnInit, OnDestroy {\n  private readonly snackBar = inject(MatSnackBar);\n  private readonly messageService = inject(MessageService);\n  private readonly router = inject(Router);\n  private readonly ngZone = inject(NgZone);\n\n  private currentSnackBarRef: MatSnackBarRef<unknown> | null = null;\n  private subscriptions: Subscription[] = [];\n  private snackBarOpenTime = 0;\n\n  ngOnInit(): void {\n    const errorSubscription = this.messageService.getLatestErrorMessage().subscribe((value: NotificationMessage | null) => {\n      if (value) {\n        this.closeCurrentSnackBar();\n\n        const message = value.details\n          ? `${value.message}: ${value.details}`\n          : value.message;\n\n        this.currentSnackBarRef = this.snackBar.open(message, 'Close', {\n          horizontalPosition: 'center',\n          verticalPosition: 'top',\n          duration: 10000,\n          panelClass: ['error-snackbar']\n        });\n\n        this.snackBarOpenTime = Date.now();\n      }\n    });\n\n    const navigationSubscription = this.router.events\n      .pipe(filter(event => event instanceof NavigationEnd))\n      .subscribe(() => {\n        this.closeCurrentSnackBar();\n      });\n\n    this.setupGlobalInteractionListeners();\n    this.subscriptions.push(errorSubscription, navigationSubscription);\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n    this.closeCurrentSnackBar();\n  }\n\n  private closeCurrentSnackBar(): void {\n    if (this.currentSnackBarRef) {\n      this.currentSnackBarRef.dismiss();\n      this.currentSnackBarRef = null;\n    }\n  }\n\n  private setupGlobalInteractionListeners(): void {\n    this.ngZone.runOutsideAngular(() => {\n      const events = ['click', 'keydown', 'scroll', 'touchstart'];\n\n      events.forEach(eventType => {\n        const subscription = fromEvent(document, eventType)\n          .pipe(\n            debounceTime(500),\n            filter(() => this.currentSnackBarRef !== null),\n            filter((event) => this.shouldCloseOnInteraction(event))\n          )\n          .subscribe(() => {\n            this.ngZone.run(() => {\n              this.closeCurrentSnackBar();\n            });\n          });\n\n        this.subscriptions.push(subscription);\n      });\n    });\n  }\n\n  private shouldCloseOnInteraction(event: Event): boolean {\n    if (!this.currentSnackBarRef) return false;\n\n    const timeSinceOpen = Date.now() - this.snackBarOpenTime;\n    if (timeSinceOpen < 1000) return false;\n\n    const target = event.target as Element;\n    const snackBarElement = document.querySelector('.mat-mdc-snack-bar-container');\n    if (snackBarElement && snackBarElement.contains(target)) return false;\n\n    if (event.type === 'keydown') {\n      const keyEvent = event as KeyboardEvent;\n      const excludedKeys = ['Tab', 'Shift', 'Control', 'Alt', 'Meta'];\n      return !excludedKeys.includes(keyEvent.key);\n    }\n\n    return true;\n  }\n}\n","/**\n * Material Design replacement for legacy mm-entity-select from @meshmakers/shared-ui.\n * Uses Angular Material Autocomplete with ControlValueAccessor.\n */\nimport {\n  Component,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Injector,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  inject,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormControl,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  NgControl,\n  ReactiveFormsModule,\n  ValidationErrors,\n  Validator\n} from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatInput, MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteActivatedEvent, MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { EntitySelectDataSource } from '@meshmakers/shared-services';\nimport { Subject } from 'rxjs';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { debounceTime, filter, tap } from 'rxjs/operators';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n  selector: 'mm-entity-select',\n  standalone: true,\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    MatInputModule,\n    MatAutocompleteModule,\n    MatProgressSpinnerModule,\n  ],\n  template: `\n    <input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\"\n      [matAutocomplete]=\"auto\" [placeholder]=\"placeholder\" matInput>\n    <mat-autocomplete #auto=\"matAutocomplete\" (closed)=\"onEntityClosed()\"\n                     (optionActivated)=\"onEntityActivated($event)\" (optionSelected)=\"onEntitySelected($event)\"\n                     [displayWith]=\"dataSource?.onDisplayEntity ?? null\">\n      @if (isLoading) {\n        <mat-option class=\"is-loading\">\n          <mat-spinner diameter=\"50\"></mat-spinner>\n        </mat-option>\n      }\n      @if (!isLoading) {\n        @for (entity of filteredEntities; track entity) {\n          <mat-option [value]=\"entity\">\n            {{dataSource?.onDisplayEntity(entity) ?? null}}\n          </mat-option>\n        }\n      }\n    </mat-autocomplete>\n  `,\n  styles: [`\n    span { opacity: 0; transition: opacity 200ms; }\n    :host.floating span { opacity: 1; }\n  `],\n  host: {\n    '[id]': 'id',\n    '[attr.aria-describedby]': 'describedBy'\n  },\n  changeDetection: ChangeDetectionStrategy.Eager,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => MmEntitySelectInputComponent),\n      multi: true\n    },\n    {\n      provide: MatFormFieldControl,\n      useExisting: MmEntitySelectInputComponent\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => MmEntitySelectInputComponent),\n      multi: true\n    }\n  ]\n})\n \nexport class MmEntitySelectInputComponent implements OnInit, OnDestroy, DoCheck, ControlValueAccessor, MatFormFieldControl<unknown>, Validator {\n  elRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly injector = inject(Injector);\n  private readonly fm = inject(FocusMonitor);\n\n  private static nextId = 0;\n  public readonly searchFormControl: FormControl;\n  public isLoading: boolean;\n   \n  public filteredEntities: any[] = [];\n  public ngControl: NgControl | null;\n  public errorState: boolean;\n  public focused: boolean;\n  public readonly stateChanges = new Subject<void>();\n  @HostBinding()\n  public readonly id = `ia-entity-select-${MmEntitySelectInputComponent.nextId++}`;\n\n   \n  public valueChange: EventEmitter<any> = new EventEmitter<any>();\n   \n  private _selectedEntity: any;\n  @ViewChild('input') private readonly inputField: MatInput | null;\n  protected describedBy = '';\n   \n  private activatedValue: any;\n\n  constructor() {\n    const elRef = this.elRef;\n    const fm = this.fm;\n\n    this.ngControl = null;\n    this.errorState = false;\n    this.inputField = null;\n    this._dataSource = null;\n    this._placeholder = '';\n    this._prefix = '';\n\n    this.searchFormControl = new FormControl();\n    this.isLoading = false;\n    this._disabled = false;\n    this.focused = false;\n    fm.monitor(elRef.nativeElement, true).subscribe((origin) => {\n      this.focused = !!origin;\n      this.stateChanges.next();\n    });\n  }\n\n   \n  private _dataSource: EntitySelectDataSource<any> | null;\n\n   \n  public get dataSource(): EntitySelectDataSource<any> | null {\n    return this._dataSource;\n  }\n\n  @Input()\n   \n  public set dataSource(value: EntitySelectDataSource<any> | null) {\n    this._dataSource = value;\n  }\n\n  private _disabled = false;\n\n  @Input()\n  public get disabled(): boolean {\n    return this._disabled;\n  }\n\n   \n  public set disabled(dis: any) {\n    this._disabled = coerceBooleanProperty(dis);\n    if (this._disabled) {\n      this.searchFormControl.disable();\n    } else {\n      this.searchFormControl.enable();\n    }\n    this.stateChanges.next();\n  }\n\n  private _placeholder: string;\n\n  @Input()\n  public get placeholder(): string {\n    return this._placeholder;\n  }\n\n   \n  public set placeholder(plh: any) {\n    this._placeholder = plh;\n    this.stateChanges.next();\n  }\n\n  private _required = false;\n\n  @Input()\n  public get required(): boolean {\n    return this._required;\n  }\n\n   \n  public set required(req: any) {\n    this._required = coerceBooleanProperty(req);\n    if (this.inputField != null) {\n      this.inputField.required = this._required;\n    }\n    this.stateChanges.next();\n  }\n\n  private _prefix: string;\n\n  @Input()\n  public get prefix(): string {\n    return this._prefix;\n  }\n\n  public set prefix(value: string) {\n    if (value !== this._prefix) {\n      this._prefix = value;\n    }\n  }\n\n   \n  public get value(): any {\n    return this._selectedEntity;\n  }\n\n   \n  public set value(value: any) {\n    if (value !== this._selectedEntity) {\n      this.searchFormControl.setValue(value);\n      this.setValue(value);\n    }\n  }\n\n  public get empty(): boolean {\n    const n = this.searchFormControl.value;\n    return !n;\n  }\n\n  @HostBinding('class.floating')\n  public get shouldLabelFloat(): boolean {\n    return this.focused || !this.empty;\n  }\n\n  ngOnInit(): void {\n    this.ngControl = this.injector.get(NgControl, null);\n    if (this.ngControl != null) {\n      this.ngControl.valueAccessor = this;\n    }\n\n    if (this._prefix) {\n      this.searchFormControl.valueChanges\n        .pipe(\n          debounceTime(300),\n          filter((value) => typeof value === 'string'),\n          filter((value) => value.startsWith(this._prefix)),\n          tap(() => (this.value = null)),\n          tap(() => (this.isLoading = true))\n        )\n        .subscribe(async (value: string) => {\n          if (!this._dataSource) {\n            this.isLoading = false;\n            return;\n          }\n\n          const resultSet = await this._dataSource?.onFilter(value.replace(this._prefix, '').trim());\n\n          if (resultSet.items) {\n            if (resultSet.items.length === 1) {\n              this.value = resultSet.items[0];\n            } else {\n              this.filteredEntities = resultSet.items;\n            }\n          }\n          this.isLoading = false;\n        });\n    }\n\n    this.searchFormControl.valueChanges\n      .pipe(\n        debounceTime(300),\n        tap(() => (this.filteredEntities = [])),\n         \n        filter((value: any) => typeof value === 'string'),\n        tap(() => {\n          this.setValue(null);\n        }),\n        filter((value) => value.toString().length >= 3),\n        tap(() => (this.isLoading = true))\n      )\n      .subscribe(async (value: string) => {\n        if (!this._dataSource) {\n          this.isLoading = false;\n          return;\n        }\n\n        const resultSet = await this._dataSource.onFilter(value);\n\n        if (resultSet?.items) {\n          this.filteredEntities = resultSet.items;\n        }\n        this.isLoading = false;\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.stateChanges.complete();\n    this.fm.stopMonitoring(this.elRef.nativeElement);\n  }\n\n  ngDoCheck(): void {\n    if (this.ngControl != null) {\n      this.errorState = (this.ngControl.invalid && this.ngControl.touched) ?? false;\n      this.stateChanges.next();\n    }\n  }\n\n  public clear(): void {\n    this.filteredEntities = [];\n    this.searchFormControl.reset(null);\n  }\n\n  public focus(): void {\n    this.elRef.nativeElement.querySelector('input')?.focus();\n  }\n\n  public onEntitySelected(event: MatAutocompleteSelectedEvent): void {\n    this.value = event.option.value;\n    this.filteredEntities = [];\n  }\n\n  public onEntityActivated(event: MatAutocompleteActivatedEvent): void {\n    this.activatedValue = event.option?.value;\n  }\n\n  public onEntityClosed(): void {\n    if (this.activatedValue) {\n      this.value = this.activatedValue;\n      this.activatedValue = null;\n    }\n  }\n\n  public reset(): void {\n    this.value = null;\n  }\n\n  public onFocusOut(): void {\n    if (this.filteredEntities.length === 1) {\n      this.activatedValue = this.filteredEntities[0];\n      this.value = this.filteredEntities[0];\n    }\n  }\n\n  public onTouched(): void {\n    this._onTouched();\n    this.stateChanges.next();\n  }\n\n   \n  public registerOnChange(fn: any): void {\n    this._propagateChange = fn;\n  }\n\n   \n  public registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n   \n  public writeValue(obj: any): void {\n    this.clear();\n    this.value = obj;\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  public onContainerClick(event: MouseEvent): void {\n    if ((event.target as Element).tagName.toLowerCase() !== 'input') {\n      this.focus();\n    }\n  }\n\n  public setDescribedByIds(ids: string[]): void {\n    this.describedBy = ids.join(' ');\n  }\n\n  validate(control: AbstractControl): ValidationErrors | null {\n     \n    const selection: any = control.value;\n    if (typeof selection === 'string') {\n      return { incorrect: true };\n    }\n    return null;\n  }\n\n   \n  private _propagateChange = (_: any): void => {\n    // noop\n  };\n\n  private readonly _onTouched = (): void => {\n    // noop\n  };\n\n   \n  private setValue(value: any): void {\n    if (value !== this._selectedEntity) {\n      this._selectedEntity = value;\n      this.valueChange.emit(value);\n      this._propagateChange(this._selectedEntity);\n      this.stateChanges.next();\n    }\n  }\n}\n","/*\n * Public API Surface of octo-ui-legacy\n */\n\nexport * from './lib/table';\nexport * from './lib/breadcrumb';\nexport * from './lib/notification-bar';\nexport * from './lib/entity-select-input';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}