@yuuvis/client-framework 2.3.19 → 2.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/fesm2022/yuuvis-client-framework-actions.mjs +16 -16
  2. package/fesm2022/yuuvis-client-framework-app-bar.mjs +4 -4
  3. package/fesm2022/yuuvis-client-framework-app-bar.mjs.map +1 -1
  4. package/fesm2022/yuuvis-client-framework-autocomplete.mjs +7 -7
  5. package/fesm2022/yuuvis-client-framework-clipboard.mjs +3 -3
  6. package/fesm2022/yuuvis-client-framework-common.mjs +64 -64
  7. package/fesm2022/yuuvis-client-framework-datepicker.mjs +31 -31
  8. package/fesm2022/yuuvis-client-framework-forms.mjs +43 -43
  9. package/fesm2022/yuuvis-client-framework-icons.mjs +10 -10
  10. package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -1
  11. package/fesm2022/yuuvis-client-framework-list.mjs +10 -10
  12. package/fesm2022/yuuvis-client-framework-master-details.mjs +7 -7
  13. package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs +7 -7
  14. package/fesm2022/yuuvis-client-framework-metadata-form.mjs +15 -15
  15. package/fesm2022/yuuvis-client-framework-object-details.mjs +40 -34
  16. package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
  17. package/fesm2022/yuuvis-client-framework-object-flavor.mjs +18 -18
  18. package/fesm2022/yuuvis-client-framework-object-form.mjs +28 -28
  19. package/fesm2022/yuuvis-client-framework-object-preview.mjs +11 -11
  20. package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -1
  21. package/fesm2022/yuuvis-client-framework-object-summary.mjs +13 -13
  22. package/fesm2022/yuuvis-client-framework-object-versions.mjs +7 -7
  23. package/fesm2022/yuuvis-client-framework-overflow-hidden.mjs +7 -7
  24. package/fesm2022/yuuvis-client-framework-overflow-menu.mjs +7 -7
  25. package/fesm2022/yuuvis-client-framework-pagination.mjs +3 -3
  26. package/fesm2022/yuuvis-client-framework-popout.mjs +7 -7
  27. package/fesm2022/yuuvis-client-framework-renderer.mjs +41 -41
  28. package/fesm2022/yuuvis-client-framework-renderer.mjs.map +1 -1
  29. package/fesm2022/yuuvis-client-framework-sequence-list.mjs +3 -3
  30. package/fesm2022/yuuvis-client-framework-simple-search.mjs +3 -3
  31. package/fesm2022/yuuvis-client-framework-sort.mjs +3 -3
  32. package/fesm2022/yuuvis-client-framework-split-view.mjs +11 -11
  33. package/fesm2022/yuuvis-client-framework-split-view.mjs.map +1 -1
  34. package/fesm2022/yuuvis-client-framework-tile-list.mjs +69 -51
  35. package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
  36. package/fesm2022/yuuvis-client-framework-tree.mjs +9 -9
  37. package/fesm2022/yuuvis-client-framework-upload-progress.mjs +10 -10
  38. package/fesm2022/yuuvis-client-framework-widget-grid.mjs +36 -30
  39. package/fesm2022/yuuvis-client-framework-widget-grid.mjs.map +1 -1
  40. package/fesm2022/yuuvis-client-framework.mjs +10 -10
  41. package/lib/assets/i18n/en.json +5 -5
  42. package/package.json +4 -4
  43. package/tile-list/lib/tile-config/tile-config.component.d.ts +9 -7
  44. package/widget-grid/lib/widget-grid-workspaces/widget-grid-workspaces.component.d.ts +2 -0
  45. package/widget-grid/lib/widget-grid-workspaces/widget-grid-workspaces.interface.d.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-tile-list.mjs","sources":["../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-extension/tile-extension.service.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-extension/directive/tile-extension.directive.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile/tile.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile/tile.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-list/tile-list.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-list/tile-list.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/action-select/action-select.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/action-select/action-select.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/icon-select/icon-select.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/icon-select/icon-select.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/property-select/property-select.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/property-select/property-select.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-tile/tile-config-tile.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-tile/tile-config-tile.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-trigger/tile-config-trigger.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-trigger/tile-config-trigger.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-extension/extensions/email.extension.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/yuuvis-client-framework-tile-list.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { TileExtension } from '@yuuvis/client-shell-core';\nimport { EmailTileExtensionComponent } from './extensions/email.extension';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TileExtensionService {\n private _extensions: Record<string, TileExtension> = {};\n\n constructor() {\n // this.registerTileExtension({\n // // typeId: 'appSystemmail:email',\n // typeId: 'system:document',\n // cmp: EmailTileExtensionComponent\n // });\n }\n\n registerTileExtension(ext: TileExtension) {\n this._extensions[ext.typeId] = ext;\n }\n\n hasTileExtension(objectTypeId: string): boolean {\n return !!this._extensions[objectTypeId];\n }\n\n /**\n * Get tile extensions for a certain type\n * @param typeId ID of the type to fetch extesion for (objectTypeID or secondaryObjectTypeID)\n * @returns\n */\n getTileExtension(typeId: string): TileExtension | undefined {\n return this._extensions[typeId];\n }\n}\n","import { ComponentRef, Directive, Input, ViewContainerRef, effect, inject, input, signal } from '@angular/core';\nimport { TileExtensionService } from '../tile-extension.service';\nimport { TileExtension, TileExtensionComponent, TileExtensionDirectiveInput } from '@yuuvis/client-shell-core';\n\n@Directive({\n selector: '[yuvTileExtension]',\n standalone: true\n})\nexport class TileExtensionDirective {\n readonly #tileExtensioService = inject(TileExtensionService);\n readonly #containerRef = inject(ViewContainerRef);\n\n component!: ComponentRef<TileExtensionComponent>;\n\n yuvTileExtension = input.required<TileExtensionDirectiveInput>();\n\n #yuvTileExtensionEffect = effect(() => {\n const tile = this.yuvTileExtension();\n if (tile.typeId) {\n const ext = this.#tileExtensioService.getTileExtension(tile.typeId);\n if (ext) this._render(ext, tile.data);\n }\n });\n\n private _render(ext: TileExtension, data?: any) {\n if (this.component) this.#containerRef.clear();\n this.component = this.#containerRef.createComponent(ext.cmp);\n this.component.setInput('data', data);\n }\n}\n","import { Component, ElementRef, computed, inject, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DmsObject, DmsService, ObjectConfigAction } from '@yuuvis/client-core';\nimport { Action, ActionContext, ActionsService } from '@yuuvis/client-framework/actions';\nimport { RendererDirective } from '@yuuvis/client-framework/renderer';\nimport { switchMap } from 'rxjs';\nimport { TileExtensionDirective } from '../tile-extension/directive/tile-extension.directive';\nimport { TileData } from '../tile-list/tile-list.interface';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'yuv-tile',\n standalone: true,\n imports: [MatIconModule, MatTooltipModule, MatButtonModule, RendererDirective, TileExtensionDirective],\n templateUrl: './tile.component.html',\n styleUrl: './tile.component.scss',\n host: {\n '[class.dense]': 'dense()'\n }\n})\nexport class TileComponent {\n elRef = inject(ElementRef);\n readonly #dmsService = inject(DmsService);\n readonly #actionService = inject(ActionsService);\n\n tile = input.required<TileData>();\n actionContext = input<ActionContext>();\n dense = input<boolean>(false);\n\n actions = computed<Action[]>(() => {\n const actionsList: Action[] = [];\n if (this.tile().actions?.length) {\n this.tile().actions?.forEach((a: ObjectConfigAction) => {\n const aa: Action | undefined = this.#actionService.getActionById(a.id, this.actionContext());\n if (aa) actionsList.push(aa);\n });\n }\n return actionsList;\n });\n rendererInputs = computed(() => {\n return {\n icon: this.tile().icon,\n title: this.tile().title,\n description: this.tile().description,\n meta: this.tile().meta,\n aside: this.tile().aside\n };\n });\n\n executeAction(a: Action, evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n\n this.#dmsService\n .getDmsObject(this.tile().id)\n .pipe(switchMap((o: DmsObject) => a.run([o])))\n .subscribe();\n }\n}\n","<div class=\"tile\">\n <div data-slot=\"icon\">\n <ng-container *yuvRenderer=\"rendererInputs().icon\"></ng-container>\n </div>\n \n <div class=\"slots\">\n <div data-slot=\"title-description\">\n <div data-slot=\"title\">\n <ng-container *yuvRenderer=\"rendererInputs().title\"></ng-container>\n </div>\n <div data-slot=\"description\">\n <ng-container *yuvRenderer=\"rendererInputs().description\"></ng-container>\n </div>\n </div>\n \n <div data-slot=\"actions\">\n @for (a of actions(); track a.id) {\n <button mat-icon-button [matTooltip]=\"a.label\" (click)=\"executeAction(a, $event)\">\n <mat-icon inert=\"true\">{{ a.icon }}</mat-icon>\n </button>\n }\n </div>\n \n <div data-slot=\"aside\">\n <ng-container *yuvRenderer=\"rendererInputs().aside\"></ng-container>\n </div>\n \n <div data-slot=\"meta\">\n <ng-container *yuvRenderer=\"rendererInputs().meta\"></ng-container>\n </div>\n \n <div data-slot=\"badges\">{{ tile().badges }}</div>\n \n <div class=\"extension\">\n <ng-container *yuvTileExtension=\"{ typeId: tile().objectTypeId, data: tile().instanceData }\"></ng-container>\n </div>\n </div>\n</div>\n","import { NgClass, NgStyle } from '@angular/common';\nimport {\n Component,\n computed,\n contentChild,\n DestroyRef,\n effect,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n signal,\n untracked,\n viewChildren\n} from '@angular/core';\nimport {\n BaseObjectTypeField,\n DmsObject,\n EventService,\n ObjectConfigRecord,\n ObjectConfigService,\n ResolvedObjectConfigItem,\n SearchQuery,\n SearchResult,\n SearchService,\n SystemService,\n TranslateModule,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\n\nimport { ClickDoubleDirective, DragSelectDirective, DragSelectItemDirective } from '@yuuvis/client-framework/common';\nimport { TileComponent } from '../tile/tile.component';\n\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { ListItemDirective, YuvListModule } from '@yuuvis/client-framework/list';\nimport { Pagination } from '@yuuvis/client-framework/pagination';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\nimport { DeviceService, YmtMatIconRegistryService } from '@yuuvis/material';\nimport { finalize } from 'rxjs';\nimport { TileData, TileListConfigOptions, TileListHighlight } from './tile-list.interface';\n\n/**\n * List that renders the result of a search query as object config based tiles. It also contains a component to\n * set up that configuration.\n *\n * ## Paging\n * If the search result contains more items than the page size, the list will show a\n * pagination control to navigate inbetween the pages.\n *\n * ## Staggered animation\n * Adding a class of `staggered` to the `yuv-tile-list` component will animate\n * the tiles in a staggered way (only if the user has not set up the OS to not\n * play animation).\n */\n@Component({\n selector: 'yuv-tile-list',\n standalone: true,\n providers: [],\n imports: [\n NgClass,\n NgStyle,\n TileComponent,\n TranslateModule,\n ReactiveFormsModule,\n YuvListModule,\n ClickDoubleDirective,\n DragSelectDirective,\n DragSelectItemDirective,\n MatPaginatorModule\n ],\n templateUrl: './tile-list.component.html',\n styleUrl: './tile-list.component.scss',\n host: {\n tabindex: '0',\n role: 'listbox',\n '[class.dense]': 'dense()'\n }\n})\nexport class TileListComponent implements OnInit, OnDestroy {\n #objectConfigService = inject(ObjectConfigService);\n #system = inject(SystemService);\n #searchService = inject(SearchService);\n #destroyRef = inject(DestroyRef);\n #device = inject(DeviceService);\n #elRef = inject(ElementRef);\n #events = inject(EventService);\n\n emptyContent = contentChild<ElementRef>('empty');\n isTouchDevice = this.#device.isTouchEnabled;\n\n tiles = viewChildren(TileComponent);\n\n listItems = viewChildren(ListItemDirective);\n #listItemsEffect = effect(() => {\n if (this._keyManager) this._keyManager.destroy();\n this._keyManager = new ActiveDescendantKeyManager(this.listItems() || []).withWrap();\n });\n\n // #openContextMenu = signal<{ event: MouseEvent } | null>(null);\n #contextFlag = signal(false);\n\n @HostListener('contextmenu', ['$event'])\n onContextMenu(event: MouseEvent | PointerEvent) {\n event.preventDefault();\n if (this.#contextFlag()) {\n this.#contextFlag.set(false);\n return;\n }\n\n setTimeout(() => {\n this.ctxMenu.emit({ event, selection: this.selection() });\n }, 200);\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent) {\n // TODO: Clicking on the scrollbar also resets selection ... need to find a different way\n // (event.target as HTMLElement).parentElement?.tagName === 'YUV-TILE-LIST' && this.#select(-1);\n if (event.button === 2) {\n this.#contextFlag.set(true);\n this.onContextMenu(event);\n }\n }\n\n @HostListener('keydown.control.c', ['$event'])\n onCopy(event: KeyboardEvent) {\n event.preventDefault();\n if (this._selection.length) this.tileCopy.emit(this._selectionToTileData());\n }\n @HostListener('keydown.control.x', ['$event'])\n onCut(event: KeyboardEvent) {\n event.preventDefault();\n if (this._selection.length) this.tileCut.emit(this._selectionToTileData());\n }\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent) {\n switch (event.code) {\n case 'Escape': {\n this.clearSelection();\n break;\n }\n case 'Enter': {\n // same as double click\n const aii: number = this._keyManager.activeItemIndex !== null ? this._keyManager.activeItemIndex : -1;\n if (aii >= 0) {\n this.itemDblClick.emit(this.items[aii]);\n }\n break;\n }\n case 'Space': {\n // same as single click\n const aii: number = this._keyManager.activeItemIndex !== null ? this._keyManager.activeItemIndex : -1;\n if (aii >= 0) {\n this.select(this.items[aii], event);\n }\n break;\n }\n default: {\n this._keyManager?.onKeydown(event);\n }\n }\n }\n\n private _keyManager!: ActiveDescendantKeyManager<ListItemDirective>;\n\n #currBusy = false;\n _busy = signal(false);\n #_busyEffect = effect(() => {\n const b = this._busy();\n const preselect = this.#preselect();\n if (!b && preselect.length) {\n this.selectById(preselect);\n this.#preselect.set([]);\n }\n if (b !== this.#currBusy) {\n this.#currBusy = b;\n this.busy.emit(b);\n }\n });\n private oc?: ObjectConfigRecord;\n // state of pagination\n @HostBinding('class.pagination') pagination?: Pagination;\n private _selection: number[] = [];\n private _lastSelection?: number;\n\n selectedTile = signal<TileData[]>([]);\n empytIcon = signal<string>(YUV_ICONS.trash);\n /**\n * The ID of the selected list item\n */\n selection = signal<string[]>([]);\n /**\n * Tile configurations are stored globally for all apps. If you want a\n * separate config for your app/component you can specify a bucket. A bucket\n * is basically an ID where your custom tile config will be stored and\n * retrieved. Buckets should be unique so be sure to use a unique namespace.\n */\n bucket = input<string>();\n\n pageSize = input<number>(SearchService.DEFAULT_QUERY_SIZE);\n\n /**\n * Sets up the ability to select multile tiles\n */\n multiselect = input<boolean>(false);\n dense = input<boolean>(false);\n\n options = input<TileListConfigOptions | undefined>(undefined);\n\n flavor = input<ObjectFlavor>();\n\n flavorEffect = effect(() => {\n const f = this.flavor();\n if (f) this.applyFlavor(f);\n });\n appliedFlavor?: ObjectFlavor;\n /**\n * The search query to be executed. This may be a SearchQuery object or a CMIS query statement.\n */\n query = input<SearchQuery | string | null>();\n\n #preselect = signal<string[]>([]);\n preselect = input<string[]>([]);\n #preselectEffect = effect(() => this.#preselect.set(this.preselect()));\n\n highlights = input<TileListHighlight[] | null>([]);\n highlightStyles = computed<Record<string, Record<string, unknown>>>(() => {\n const x: Record<string, Record<string, unknown>> = {};\n (this.highlights() || []).forEach((highlight) => {\n highlight.ids.forEach((id) => {\n if (!x[id]) x[id] = {};\n x[id] = { ...x[id], ...highlight.cssStyles };\n });\n });\n return x;\n });\n\n preventChangeUntil = input<() => boolean>(() => true);\n /**\n * Emitted when a list item has been selected\n */\n itemSelect = output<TileData>();\n tileCopy = output<TileData[]>();\n tileCut = output<TileData[]>();\n busy = output<boolean>();\n queryResult = output<{ totalCount: number }>();\n\n /**\n * Emitted when selected items changed. If 'multiselect' input is set to true, this will\n * emit the whole selection, while 'itemSelect' will only emit the item that currently\n * has bee added to the selection.\n */\n selectionChange = output<TileData[]>();\n\n /**\n * Emitted when a list item has been doubleclicked\n */\n itemDblClick = output<TileData>();\n\n ctxMenu = output<{ event: MouseEvent | PointerEvent; selection: any }>();\n\n // the items rendered in the list\n items: TileData[] = [];\n private _rawResult?: SearchResult;\n searchExecuted = false;\n\n #query?: SearchQuery | string | null;\n #executeQueryEffect = effect(() => {\n // execute the query each time it changes\n this.#query = this.query();\n if (this.#query && this.oc)\n untracked(() => {\n this.#executeQuery(this.#query || undefined);\n this.empytIcon.set(YUV_ICONS.refresh);\n });\n });\n\n constructor() {\n this.#events\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const dmsObject = e.data as DmsObject;\n // check if the updated object is part of the list\n this.items.findIndex((item) => item.id === dmsObject.id) >= 0 && this.updateTileList([dmsObject]);\n });\n }\n\n getPageSize(): number {\n return typeof this.#query === 'string' ? this.pageSize() : this.#query?.size || this.pageSize();\n }\n\n contextMenuHandler(event: MouseEvent, index: number) {\n if (!coerceBooleanProperty(this.tiles()[index].elRef.nativeElement.ariaSelected)) {\n this._selectByIndex(index, event);\n }\n }\n\n select(i: TileData, evt?: MouseEvent | KeyboardEvent) {\n const check = this.preventChangeUntil();\n const checked = check();\n if (checked) {\n const idx = this.items.findIndex((item) => item.id === i.id);\n this._selectByIndex(idx, evt);\n }\n }\n\n selectById(ids: string[]) {\n if (this._busy()) this.#preselect.set(ids);\n else {\n this._selection = ids.map((id) => this.items.findIndex((i) => i.id === id)).filter((i) => i !== -1);\n this._keyManager.setActiveItem(this._selection[0] || 0);\n this.#elRef.nativeElement.focus();\n this.listItems().forEach((item: ListItemDirective, i: number) => item.selectedInput.set(this._selection.includes(i)));\n const tiles = this._selectionToTileData();\n this.selectionChange.emit(tiles);\n }\n }\n\n onDragSelectChange(sel: number[]) {\n if (this._keyManager.activeItemIndex !== -1) this._keyManager.setActiveItem(-1);\n this._selection = sel;\n this._selection.sort();\n this.listItems().forEach((item: ListItemDirective, i: number) => item.selectedInput.set(this._selection.includes(i)));\n }\n\n onDragSelect(sel: number[]) {\n this.#elRef.nativeElement.focus();\n this._selection = sel;\n this._keyManager.setActiveItem(sel[0] || 0);\n const tiles = this._selectionToTileData();\n this.selectionChange.emit(tiles);\n }\n\n private _selectByIndex(idx: number, evt?: MouseEvent | KeyboardEvent) {\n this._keyManager.setActiveItem(idx);\n this.#select(idx, evt?.shiftKey, evt?.ctrlKey);\n }\n\n refresh() {\n if (this.#query) {\n if (this.pagination) {\n this.goToPage(this.pagination.page);\n } else this.#executeQuery(this.query() || undefined);\n }\n }\n\n applyFlavor(flavor: ObjectFlavor) {\n this.appliedFlavor = this.appliedFlavor?.id === flavor.id ? undefined : flavor;\n if (this._rawResult) this.items = this._mapSearchResult(this._rawResult);\n }\n\n clearSelection(silent = false) {\n if (this._selection.length) {\n this._selection = [];\n this._keyManager.setActiveItem(-1);\n this.listItems().forEach((item: ListItemDirective) => item.selectedInput.set(false));\n if (!silent) this.selectionChange.emit([]);\n }\n }\n\n selectNext() {\n if (this._lastSelection) {\n let i = this._lastSelection + 1;\n if (i > this.items.length) i = 0;\n this.#select(i);\n }\n }\n selectPrev() {\n if (this._lastSelection) {\n let i = this._lastSelection - 1;\n if (i < 0) i = this.items.length - 1;\n this.#select(this._lastSelection - 1);\n }\n }\n\n changePage(pe: PageEvent) {\n this.goToPage(pe.pageIndex + 1);\n }\n\n goToPage(page: number) {\n if (!this.#query) return;\n this._busy.set(true);\n this.#searchService\n .getPage(this.#query, page, this.getPageSize())\n .pipe(finalize(() => this._busy.set(false)))\n .subscribe({\n next: (res: SearchResult) => {\n this.#setupPagination(res);\n this.items = this._mapSearchResult(res);\n },\n error: (err) => {\n // TODO: how should errors be handles in case hat loading pages fail\n }\n });\n }\n\n #select(index: number, shiftKey = false, ctrlKey = false) {\n this.#elRef.nativeElement.focus();\n if (index === -1) {\n this._selection = [];\n } else {\n if (this.multiselect()) {\n this._selection = this._selection.filter((i) => i !== index);\n if (ctrlKey) {\n // if ctrl key add to selection\n this._selection.push(index);\n } else if (shiftKey) {\n // add range\n if (this._lastSelection !== undefined) {\n const startIndex = this._lastSelection < index ? this._lastSelection : index;\n const endIndex = this._lastSelection > index ? this._lastSelection : index;\n for (let i = startIndex; i <= endIndex; i++) {\n this._selection.push(i);\n }\n } else {\n this._selection = [index];\n }\n } else {\n this._selection = [index];\n }\n } else this._selection = [index];\n this._selection = [...new Set(this._selection)];\n }\n this._lastSelection = this._selection.length === 0 ? undefined : index;\n this._selection.sort();\n\n this.listItems().forEach((item: ListItemDirective, i: number) => item.selectedInput.set(this._selection.includes(i)));\n const tiles = this._selectionToTileData();\n this.selectionChange.emit(tiles);\n tiles.length === 1 && this.itemSelect.emit(tiles[0]);\n this.selectedTile.set(this._selection.map((idx) => this.items[idx]));\n }\n\n private _selectionToTileData(): TileData[] {\n return this._selection.map((idx) => this.items[idx]);\n }\n\n /**\n * Executes a search query.\n * @param query The search query to execute. This may be a SearchQuery object or a string. If it's a string, it is supposed to\n * be a CMIS query statement.\n */\n #executeQuery(query: SearchQuery | string | undefined) {\n if (query && this.#system.system && !this._busy()) {\n this.searchExecuted = false;\n // reset items to avoid old data being shown while new stuff is loaded\n this.items = [];\n this._busy.set(true);\n\n const isSearchQuery = query && typeof query !== 'string';\n\n if (isSearchQuery) {\n query.fields = undefined;\n }\n\n (isSearchQuery ? this.#searchService.search(query as SearchQuery) : this.#searchService.searchCmis(query as string, this.getPageSize()))\n .pipe(finalize(() => this._busy.set(false)))\n .subscribe({\n next: (res: SearchResult) => {\n this.#setupPagination(res);\n this.items = this._mapSearchResult(res);\n this.queryResult.emit({ totalCount: res.items.length });\n\n const preselect = this.preselect();\n if (preselect) {\n this.selectById(preselect);\n }\n },\n error: (err) => console.error(err)\n });\n }\n }\n\n #setupPagination(searchResult: SearchResult) {\n this.pagination = undefined;\n\n this.pagination = searchResult.paging\n ? {\n total: searchResult.totalNumItems,\n pages: searchResult.paging.totalPages,\n page: searchResult.paging.page\n }\n : undefined;\n }\n\n #mapToTileData(objects: DmsObject[]): TileData[] {\n return objects.map((dmsObject) => {\n const sots = dmsObject.sots || [];\n\n let oc = this.oc![dmsObject.objectTypeId];\n\n // check if result oitem matches virtual config type\n const cfgTypes = this.options()?.configTypes || [];\n\n cfgTypes.forEach((cft) => {\n const matchesType = !cft.objectType || cft.objectType === dmsObject.objectTypeId;\n const matchesSOTs = !cft.sots || !cft.sots.length || cft.sots.every((sot) => sots.includes(sot));\n\n if (matchesType && matchesSOTs) {\n oc = this.oc![cft.id];\n }\n });\n\n // only apply a flavor if the object has that SOT\n const ownAppliedFlavor = this.appliedFlavor && sots.includes(this.appliedFlavor.sot) && this.oc![this.appliedFlavor.sot];\n if (ownAppliedFlavor) {\n oc = this.oc![this.appliedFlavor!.id];\n }\n\n if (!oc) oc = this.#objectConfigService.getDefaultConfig(dmsObject.objectTypeId);\n\n const tli: TileData = {\n objectTypeId: dmsObject.objectTypeId,\n id: dmsObject.id,\n actions: oc.actions,\n badges: oc.badges,\n instanceData: dmsObject.data,\n dmsObject,\n title: oc.title ? this.#getResolvedObjectConfigItem(oc.title.propertyName, dmsObject.data) : { propertyName: '', value: '' }\n };\n\n tli.icon = oc.icon\n ? {\n rendererType: 'icon',\n propertyName: 'custom',\n value: oc.icon.svg,\n meta: { isFontIcon: YmtMatIconRegistryService.isFontIcon(oc.icon.svg), objectTypeId: '' }\n }\n : {\n rendererType: 'icon',\n propertyName: BaseObjectTypeField.OBJECT_TYPE_ID,\n value: ownAppliedFlavor && this.appliedFlavor ? this.appliedFlavor.sot : dmsObject.objectTypeId\n };\n if (oc.description) tli.description = this.#getResolvedObjectConfigItem(oc.description.propertyName, dmsObject.data);\n if (oc.meta) tli.meta = this.#getResolvedObjectConfigItem(oc.meta.propertyName, dmsObject.data);\n if (oc.aside) tli.aside = this.#getResolvedObjectConfigItem(oc.aside.propertyName, dmsObject.data);\n\n return tli;\n });\n }\n\n private _mapSearchResult(res: SearchResult): TileData[] {\n this.searchExecuted = true;\n this._rawResult = res;\n return this.oc ? this.#mapToTileData(res.items.map((i) => new DmsObject(i))) : [];\n }\n\n #getResolvedObjectConfigItem(propertyName: string, instanceData: Record<string, unknown>): ResolvedObjectConfigItem {\n const item: ResolvedObjectConfigItem = {\n propertyName: propertyName,\n value: instanceData[propertyName]\n };\n // Meta data are considered properties that start with the property name followed by an underscore.\n // Organization fields for example have an additional property 'xyz_title' that contains the resolved\n // name of a user while the value itself is the users ID.\n const metaData = Object.keys(instanceData)\n .filter((key) => key.startsWith(propertyName + '_'))\n .map((key) => ({ [key.substring(key.indexOf('_') + 1)]: instanceData[key] }));\n\n // If there are meta data properties, they'll be merged into a Record where the\n // key is the property name without the underscore and the actual properties name.\n // So { 'xyz_title': 'John Doe' } will be merged into { title: 'John Doe' }\n if (metaData.length) {\n const meta = metaData.reduce((acc, cur) => ({ ...acc, ...cur }), {});\n item.meta = meta;\n }\n\n return item;\n }\n\n updateTileList(listItems: DmsObject[]) {\n listItems.forEach((item) => {\n const idx = this.items.findIndex((listItem) => listItem.id === item.id);\n if (idx >= 0 && this.oc) {\n const mappedTileData = this.#mapToTileData([item]);\n this.items[idx] = mappedTileData[0];\n }\n });\n }\n\n ngOnInit(): void {\n this.#objectConfigService\n .getObjectConfigs$(this.bucket() || '', true)\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe({\n next: (res: ObjectConfigRecord) => {\n this.oc = res;\n const q = this.query();\n q && this.#executeQuery(q);\n }\n });\n }\n\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n }\n}\n","<div\n class=\"tiles\"\n [yuvDragSelect]=\"{ disabled: !this.multiselect() || isTouchDevice }\"\n (dragSelectChange)=\"onDragSelectChange($event)\"\n (dragSelect)=\"onDragSelect($event)\"\n>\n @for (i of items; track i.id) {\n <yuv-tile\n [dense]=\"dense()\"\n yuvDragSelectItem\n yuvListItem\n [attr.aria-selected]=\"selection().includes(i.id)\"\n (click.single)=\"select(i, $event)\"\n (click.double)=\"itemDblClick.emit(i)\"\n [ngClass]=\"{ selected: selection().includes(i.id), last: $last }\"\n [actionContext]=\"options()?.actionContext\"\n [tile]=\"i\"\n [ngStyle]=\"highlightStyles()[i.id]\"\n (contextmenu)=\"contextMenuHandler($event, $index)\"\n ></yuv-tile>\n } @empty {\n <div class=\"empyt-list\">\n @if (searchExecuted && emptyContent()) {\n <ng-content></ng-content>\n }\n </div>\n }\n <div class=\"offset\" (click)=\"clearSelection()\"></div>\n</div>\n@if (pagination) {\n <mat-paginator\n class=\"paginator\"\n [length]=\"pagination?.total\"\n [pageSize]=\"getPageSize()\"\n (page)=\"changePage($event)\"\n hidePageSize\n >\n </mat-paginator>\n}\n","import { NgClass } from '@angular/common';\nimport { Component, Signal, computed, inject, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { VirtualObjectType } from '@yuuvis/client-core';\nimport { Action, ActionsService } from '@yuuvis/client-framework/actions';\n\n@Component({\n selector: 'yuv-tile-action-select',\n standalone: true,\n imports: [NgClass, MatIconModule],\n templateUrl: './action-select.component.html',\n styleUrl: './action-select.component.scss'\n})\nexport class ActionSelectComponent {\n private actionService = inject(ActionsService);\n\n objectType = input.required<VirtualObjectType>();\n actions: Signal<Action[]> = computed<Action[]>(() => {\n const ot = this.objectType();\n return ot.objectType ? this.actionService.getActionsForType(ot.objectType) : [];\n });\n\n selectedActionIds = input<string[]>([]);\n actionSelect = output<Action>();\n}\n","<div class=\"actions\">\n @for (a of actions(); track a.id) {\n <button [ngClass]=\"{ selected: selectedActionIds().includes(a.id) }\" (click)=\"actionSelect.emit(a)\">\n <mat-icon>{{ a.icon }}</mat-icon\n >{{ a.label }}\n </button>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, input, output } from '@angular/core';\nimport { TranslateModule, VirtualObjectType } from '@yuuvis/client-core';\n\n@Component({\n selector: 'yuv-icon-select',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './icon-select.component.html',\n styleUrl: './icon-select.component.scss'\n})\nexport class IconSelectComponent {\n objectType = input<VirtualObjectType>();\n iconSelect = output<string | null>();\n\n async createIcon(inputEl: HTMLInputElement) {\n const file: File | undefined = inputEl.files ? inputEl.files[0] : undefined;\n if (file) {\n const text = await file.text();\n this.#emit(text);\n } else this.#emit(null);\n }\n\n reset() {\n this.#emit(null);\n }\n\n #emit(data: string | null) {\n this.iconSelect.emit(data);\n }\n}\n","<input style=\"display: none\" #fileInput type=\"file\" accept=\".svg\" (change)=\"createIcon(fileInput)\" />\n\n<button class=\"primary\" (click)=\"fileInput.click()\">{{ 'yuv.tile-config.icon-select.pick' | translate }}</button>\n<button class=\"secondary\" (click)=\"reset()\">{{ 'yuv.tile-config.icon-select.reset' | translate }}</button>\n","import { NgClass } from '@angular/common';\nimport { Component, computed, effect, inject, input, output, signal, untracked } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n BaseObjectTypeField,\n ContentStreamField,\n ObjectConfigProperty,\n ObjectTypeField,\n SecondaryObjectType,\n Sort,\n SystemService,\n TranslateModule,\n Utils,\n VirtualObjectType\n} from '@yuuvis/client-core';\n\ntype TypeProperty = { label: string; baseProperty?: boolean } & Partial<ObjectTypeField>;\n\n@Component({\n selector: 'yuv-tile-property-select',\n standalone: true,\n imports: [NgClass, FormsModule, TranslateModule, \n MatButtonModule, MatIconModule],\n templateUrl: './property-select.component.html',\n styleUrl: './property-select.component.scss'\n})\nexport class PropertySelectComponent {\n private system = inject(SystemService);\n\n // fields that should not be available to be placed in the slots\n readonly #excludeFields: string[] = [\n BaseObjectTypeField.PARENT_ID,\n BaseObjectTypeField.PARENT_OBJECT_TYPE_ID,\n BaseObjectTypeField.OBJECT_ID,\n BaseObjectTypeField.OBJECT_TYPE_ID,\n BaseObjectTypeField.BASE_TYPE_ID,\n BaseObjectTypeField.PARENT_VERSION_NUMBER,\n BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS,\n BaseObjectTypeField.TAGS,\n BaseObjectTypeField.TENANT,\n BaseObjectTypeField.TRACE_ID,\n ContentStreamField.REPOSITORY_ID,\n ContentStreamField.DIGEST,\n ContentStreamField.ARCHIVE_PATH,\n ContentStreamField.ID,\n ContentStreamField.RANGE\n ];\n\n objectTypeFields: TypeProperty[] = [];\n\n query = signal<string | null>(null);\n\n objectType = input<VirtualObjectType>();\n filteredObjectTypeFields = computed<TypeProperty[]>(() => {\n return this.query() !== null\n ? this.objectTypeFields.filter((otf) => otf.label.toLowerCase().indexOf(this.query()?.toLocaleLowerCase() || '') !== -1)\n : this.getObjectTypeFields(this.objectType());\n });\n\n objectTypesEffect = effect(() => {\n untracked(() => this.getObjectTypeFields(this.objectType()));\n });\n\n selectedProperty = input<ObjectConfigProperty>();\n\n propertySelect = output<TypeProperty | undefined>();\n\n selectProperty(field: TypeProperty) {\n this.propertySelect.emit(field);\n }\n\n removeProperty(evt: MouseEvent | KeyboardEvent) {\n evt.stopPropagation();\n \n this.propertySelect.emit(undefined);\n }\n\n private getObjectTypeFields(type?: VirtualObjectType) {\n if (!type) return [];\n // load properties\n const otf: TypeProperty[] = [];\n if (type.sots && type.sots.length > 0) {\n type.sots.forEach((s: string) => {\n const sot: SecondaryObjectType | undefined = this.system.getSecondaryObjectType(s);\n if (sot)\n sot.fields.forEach((of) =>\n otf.push({\n id: of.id,\n label: this._getLabel(of)\n })\n );\n });\n }\n\n let objectTypeProperties: TypeProperty[] = [];\n if (type.objectType) {\n const ot = this.system.getObjectType(type.objectType);\n objectTypeProperties = (ot?.fields || []).map((otf) => ({ ...otf, label: this._getLabel(otf), baseProperty: true }));\n }\n\n this.objectTypeFields = [...objectTypeProperties, ...otf]\n .filter((f) => f.id && !this.#excludeFields.includes(f.id))\n // sort alphanummeric by label\n .sort(Utils.sortValues('label', Sort.ASC))\n // put base properties at the end\n .sort(Utils.sortValues('baseProperty', Sort.ASC));\n return this.objectTypeFields;\n }\n\n private _getLabel(otf: ObjectTypeField): string {\n return this.system.getLocalizedLabel(otf.id) || otf.id;\n }\n}\n","<!-- TODO: enable once filtering of properties makes sense -->\n<!-- <form class=\"filter\">\n <div class=\"filter-input\">\n <input type=\"text\" [placeholder]=\"'yuv.tile-config.property-select.filter.placeholder' | translate\" name=\"query\" [(ngModel)]=\"query\" />\n @if (query()) {\n <button class=\"icn\" (click)=\"query.set(null)\">\n <yuv-icon [svg]=\"clearIcon\"></yuv-icon>\n </button>\n }\n </div>\n</form> -->\n\n<ul class=\"properties\">\n @for (p of filteredObjectTypeFields(); track $index) {\n <li [ngClass]=\"{ baseProperty: p.baseProperty, selected: p.id === selectedProperty()?.propertyName }\" (click)=\"selectProperty(p)\">\n <div class=\"label\">{{ p.label }}</div>\n <button mat-icon-button (click)=\"removeProperty($event)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n }\n</ul>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, computed, inject, input, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ObjectConfig, ObjectConfigAction, ObjectConfigProperty, SystemService } from '@yuuvis/client-core';\nimport { Action, ActionsService } from '@yuuvis/client-framework/actions';\nimport { ObjectTypeIconComponent } from '@yuuvis/client-framework/icons';\n\n/**\n * Component for setting up a tile config\n */\n@Component({\n selector: 'yuv-tile-config-tile',\n standalone: true,\n imports: [MatButtonModule,\n MatTooltipModule,\n MatIconModule, CommonModule, ObjectTypeIconComponent],\n templateUrl: './tile-config-tile.component.html',\n styleUrl: './tile-config-tile.component.scss'\n})\nexport class TileConfigTileComponent {\n private readonly actionService = inject(ActionsService);\n private readonly elRef = inject(ElementRef);\n #system = inject(SystemService);\n\n disableIconSlot = input<boolean>();\n disableBadgesSlot = input<boolean>();\n\n objectConfig = input.required<ObjectConfig >();\n _objectConfig = computed<ObjectConfig>(() => {\n const oc = this.objectConfig();\n if (oc) {\n [oc.title, oc.description, oc.meta, oc.aside].forEach((field: ObjectConfigProperty | undefined) => {\n if (field) {\n const label = this.#system.getLocalizedLabel(field.propertyName);\n field.label = label || field.label || field.propertyName;\n }\n });\n }\n return oc;\n });\n\n actions = computed<Action[]>(() => {\n const actionsList: Action[] = [];\n const ocActions = this.objectConfig();\n if (ocActions?.actions?.length) {\n ocActions.actions?.forEach((a: ObjectConfigAction) => {\n const aa: Action | undefined = this.actionService.getActionById(a.id);\n if (aa) actionsList.push(aa);\n });\n }\n return actionsList;\n });\n\n slotSelect = output<string>();\n\n selectSlot(slot: string) {\n if (this.disableIconSlot() && slot === 'icon') return;\n this.slotSelect.emit(slot);\n\n // set active state\n (this.elRef.nativeElement as HTMLElement).querySelectorAll('[data-slot]').forEach((e) => {\n if (e.getAttribute('data-slot') === slot) e.classList.add('active');\n else e.classList.remove('active');\n });\n }\n}\n","@let oc = _objectConfig();\n\n<div data-slot=\"icon\" [attr.disabled]=\"disableIconSlot()\" (click)=\"selectSlot('icon')\">\n @if (oc && oc.icon) {\n <mat-icon>{{ oc.icon.svg }}</mat-icon>\n } @else if (oc && oc.objectTypeId) {\n <yuv-object-type-icon [objectTypeId]=\"oc.objectTypeId\"></yuv-object-type-icon>\n }\n</div>\n<div data-slot=\"title\" (click)=\"selectSlot('title')\">{{ oc?.title?.label }}</div>\n<div data-slot=\"actions\" (click)=\"selectSlot('actions')\">\n @for (a of actions(); track a.id) {\n <button mat-icon-button [matTooltip]=\"a.label\">\n <mat-icon inert=\"true\">{{ a.icon }}</mat-icon>\n </button>\n }\n</div>\n<div data-slot=\"description\" (click)=\"selectSlot('description')\">{{ oc?.description?.label }}</div>\n<div data-slot=\"aside\" (click)=\"selectSlot('aside')\">{{ oc?.aside?.label }}</div>\n<div data-slot=\"meta\" (click)=\"selectSlot('meta')\">{{ oc?.meta?.label }}</div>\n@if (!disableBadgesSlot()) {\n <div data-slot=\"badges\" (click)=\"selectSlot('badges')\">\n {{ oc?.badges }}\n </div>\n}\n","import { Component, computed, inject, input, output, Signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n GenericObjectType,\n ObjectConfig,\n ObjectConfigAction,\n ObjectConfigBadge,\n ObjectConfigIcon,\n ObjectConfigProperty,\n ObjectConfigService,\n ObjectTypeField,\n SystemService,\n TranslateModule,\n VirtualObjectType\n} from '@yuuvis/client-core';\nimport { Action } from '@yuuvis/client-framework/actions';\nimport { YuvListModule } from '@yuuvis/client-framework/list';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\nimport { ActionSelectComponent } from './action-select/action-select.component';\nimport { IconSelectComponent } from './icon-select/icon-select.component';\nimport { PropertySelectComponent } from './property-select/property-select.component';\nimport { TileConfigTileComponent } from './tile-config-tile/tile-config-tile.component';\nimport { DialogComponent } from '@yuuvis/client-framework/common';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-tile-config',\n standalone: true,\n imports: [\n YuvSplitViewModule,\n TileConfigTileComponent,\n IconSelectComponent,\n PropertySelectComponent,\n ActionSelectComponent,\n TranslateModule,\n YuvListModule,\n MatIconModule,\n MatDialogModule,\n MatButtonModule,\n DialogComponent,\n YmtButtonDirective\n ],\n templateUrl: './tile-config.component.html',\n styleUrls: ['./tile-config.component.scss']\n})\nexport class TileConfigComponent {\n #objectConfigService = inject(ObjectConfigService);\n #system = inject(SystemService);\n\n /**\n * Tile configurations are stored globally for all apps. If you want a\n * separate config for your app/component you can specify a bucket. A bucket\n * is basically an ID where your custom tile config will be stored and\n * retrieved. Buckets should be unique so be sure to use a unique namespace.\n */\n bucket = input<string | undefined>(undefined);\n bucketLabel = input<string | undefined>(undefined);\n\n configTypes = input<VirtualObjectType[] | undefined>(undefined);\n configFlavors = input<ObjectFlavor[]>([]);\n get configChanged(): boolean {\n return Object.keys(this.changes).length > 0;\n }\n\n types: Signal<{ id: string; icon?: string; flavor?: boolean; data: ObjectFlavor | VirtualObjectType }[]> = computed(() => {\n const ct = this.configTypes() || [];\n const cf: VirtualObjectType[] = [];\n // TODO: enable when flavors are supported in tile config\n // const cf = this.configFlavors() || [];\n return [...ct.map((t) => ({ id: t.id, icon: t.icon, data: t })), ...cf.map((f) => ({ id: f.id, icon: f.icon, flavor: true, data: f }))];\n });\n\n save = output();\n canceled = output();\n\n selectedType?: VirtualObjectType;\n selectedTypeProperties: ObjectTypeField[] = [];\n\n #emptyObjectConfig: ObjectConfig = {\n objectTypeId: '',\n title: { propertyName: '', label: '' },\n description: { propertyName: '', label: '' },\n meta: { propertyName: '', label: '' },\n aside: { propertyName: '', label: '' },\n actions: [],\n badges: []\n };\n\n objectConfig?: ObjectConfig;\n selectedSlot?: string;\n flavors: ObjectFlavor[] = [];\n\n changes: Record<string, ObjectConfig | undefined> = {};\n\n getConfigValue(p: string): ObjectConfigIcon | ObjectConfigProperty | ObjectConfigAction | ObjectConfigBadge | undefined {\n return this.objectConfig ? (this.objectConfig as any)[p] : undefined;\n }\n\n getConfigProperty(p: string): ObjectConfigProperty | undefined {\n return this.getConfigValue(p) as ObjectConfigProperty;\n }\n\n getSelectedActions(): string[] {\n return this.objectConfig?.actions ? this.objectConfig.actions.map((a) => a.id) : [];\n }\n\n slotSelect(item: string) {\n this.selectedSlot = item;\n }\n\n itemSelected(idx: number[]) {\n const t = this.types()[idx[0]];\n if (!t) return;\n if (t.flavor) this.#selectFlavor(t.data as ObjectFlavor);\n else this.#selectType(t.data as VirtualObjectType);\n }\n\n #selectFlavor(flavor: ObjectFlavor) {\n const t: GenericObjectType | undefined = this.#system.getObjectType(flavor.sot);\n if (t)\n this.#selectType({\n id: flavor.id,\n objectType: flavor.objectTypeID,\n sots: [flavor.sot]\n });\n }\n\n async #selectType(t: VirtualObjectType) {\n this.selectedType = t;\n\n const alreadyChanged = this.changes[t.id];\n // load tile config\n // if the type has been changed before load that config instead of the persisted one\n this.objectConfig = { ...alreadyChanged || this.#objectConfigService.getObjectConfig(t, this.bucket() || '') } ;\n\n if (!this.objectConfig) {\n this.objectConfig = {\n ...this.#emptyObjectConfig,\n objectTypeId: t.id\n };\n }\n }\n\n iconSelected(icon: string | null) {\n if (!this.selectedType) return;\n if (this.objectConfig) {\n this.objectConfig.icon = icon ? { svg: icon } : undefined;\n this.changes[this.selectedType.id] = this.objectConfig;\n }\n }\n\n propertySelected(tileSlot: string, field?: Partial<ObjectTypeField>) {\n if (!this.selectedType) return;\n const p: any = {};\n p[tileSlot] = field\n ? {\n label: field.label,\n propertyName: field.id\n }\n : undefined;\n\n this.objectConfig = structuredClone({\n ...this.objectConfig,\n ...p\n });\n this.changes[this.selectedType.id] = this.objectConfig;\n }\n\n actionSelected(action: Action) {\n if (!this.selectedType) return;\n if (this.objectConfig) {\n const actions = this.objectConfig?.actions ? [ ...this.objectConfig.actions ] : [];\n const idx = actions.findIndex((a) => a.id === action.id);\n if (idx !== -1) actions.splice(idx, 1);\n else actions.push({ id: action.id });\n this.objectConfig = { ...this.objectConfig, actions };\n this.changes[this.selectedType.id] = { ...this.objectConfig };\n }\n }\n\n saveConfig() {\n if (Object.keys(this.changes).length) {\n this.#objectConfigService.saveObjectConfigs(this.changes, this.bucket()).subscribe((_) => this.save.emit());\n }\n }\n\n resetConfig() {\n if (this.selectedType) {\n const defaults = this.#objectConfigService.getRegisteredDefault(this.selectedType.id, this.bucket()) || this.#emptyObjectConfig;\n this.changes[this.selectedType.id] = { ...defaults };\n this.objectConfig = { ...defaults };\n const originalConfig = this.#objectConfigService.getObjectConfig(this.selectedType, this.bucket());\n if (this.#deepEqual(defaults, originalConfig)) {\n this.changes[this.selectedType.id] = undefined;\n delete this.changes[this.selectedType.id];\n } else {\n this.changes[this.selectedType.id] = { ...defaults };\n }\n }\n }\n \n cancelConfig() {\n this.changes = {};\n this.canceled.emit();\n }\n \n #deepEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) return false;\n \n const keysA = Object.keys(a as object);\n const keysB = Object.keys(b as object);\n \n if (keysA.length !== keysB.length) return false;\n \n for (const key of keysA) {\n if (!keysB.includes(key)) return false;\n if (!this.#deepEqual((a as any)[key], (b as any)[key])) return false;\n }\n return true;\n }\n}\n","<yuv-dialog [headertitel]=\"'yuv.tile-config.title' | translate: { bucket: bucketLabel() }\">\n <main class=\"tile-config\">\n <yuv-split-view [gutterSize]=\"1\" [layoutSettingsID]=\"'yuv.framework.tile-config.layout'\">\n <!-- list of types -->\n <ng-template yuvSplitArea [size]=\"30\">\n <div class=\"types\">\n <yuv-list (itemSelect)=\"itemSelected($event)\" autoSelect>\n @for (t of types() || []; track t.id; let i = $index) {\n <div\n yuvListItem\n >\n @if (t.icon) {\n <mat-icon>{{ t.icon }}</mat-icon>\n }\n {{ t.id | translate }}\n </div>\n }\n </yuv-list>\n </div>\n </ng-template>\n\n <!-- selected type details-->\n <ng-template yuvSplitArea [size]=\"70\">\n <div class=\"details\">\n @if (selectedType) {\n <header>\n <h2>{{ selectedType.id | translate }}</h2>\n <button ymtButton=\"secondary\" (click)=\"resetConfig()\">{{ 'yuv.tile-config.button.reset' | translate }}</button>\n </header>\n <div class=\"dummy-preview\">\n <yuv-tile-config-tile\n [disableIconSlot]=\"true\"\n [disableBadgesSlot]=\"true\"\n [objectConfig]=\"objectConfig!\"\n (slotSelect)=\"slotSelect($event)\"\n ></yuv-tile-config-tile>\n </div>\n\n <main>\n @if (selectedSlot === 'icon') {\n <h3>{{ 'yuv.tile-config.slot.icon.headline' | translate }}</h3>\n <yuv-icon-select [objectType]=\"selectedType\" (iconSelect)=\"iconSelected($event)\"></yuv-icon-select>\n } @else if (selectedSlot === 'badges') {\n <div class=\"placeholder empty\">\n <p>Future feature: Select badges (like: is favorite, ratings, ...)</p>\n </div>\n } @else if (!selectedSlot) {\n } @else if (selectedSlot === 'actions') {\n <h3>{{ 'yuv.tile-config.slot.action.headline' | translate }}</h3>\n <yuv-tile-action-select\n [objectType]=\"selectedType\"\n [selectedActionIds]=\"getSelectedActions()\"\n (actionSelect)=\"actionSelected($event)\"\n ></yuv-tile-action-select>\n } @else {\n <h3>{{ 'yuv.tile-config.slot.property.headline' | translate }}</h3>\n <yuv-tile-property-select\n [objectType]=\"selectedType\"\n [selectedProperty]=\"getConfigProperty(selectedSlot)\"\n (propertySelect)=\"propertySelected(selectedSlot, $event)\"\n ></yuv-tile-property-select>\n }\n </main>\n } @else {\n <div class=\"placeholder empty\">\n <h2>{{ 'yuv.tile-config.details.empty.title' | translate }}</h2>\n <p>{{ 'yuv.tile-config.details.empty.description' | translate }}</p>\n </div>\n }\n </div>\n </ng-template>\n </yuv-split-view>\n </main>\n\n <footer>\n <button ymtButton=\"secondary\" (click)=\"cancelConfig()\">{{ 'yuv.tile-config.button.close' | translate }}</button>\n <button ymtButton=\"primary\" [disabled]=\"!configChanged\" (click)=\"saveConfig()\">{{ 'yuv.tile-config.button.save' | translate }}</button>\n </footer>\n</yuv-dialog>\n","import { CommonModule } from '@angular/common';\nimport { Component, TemplateRef, inject, input, viewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TileListConfigOptions } from '../../tile-list/tile-list.interface';\nimport { TileConfigComponent } from '../tile-config.component';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-tile-config-trigger',\n standalone: true,\n imports: [CommonModule, TileConfigComponent, TranslateModule, \n YmtIconButtonDirective,\n MatButtonModule, MatTooltipModule, MatIcon],\n templateUrl: './tile-config-trigger.component.html',\n styleUrl: './tile-config-trigger.component.scss'\n})\nexport class TileConfigTriggerComponent {\n #dialog = inject(MatDialog);\n\n tplTileConfig = viewChild.required<TemplateRef<any>>('tplTileConfig');\n\n #dialogRef?: MatDialogRef<any>;\n\n icon = input<string>('settings');\n bucket = input<string>();\n bucketLabel = input<string | undefined>();\n options = input<TileListConfigOptions | undefined>(undefined);\n // If true, renders a smaller icon button\n small = input<boolean>(false);\n\n openTileConfigOverlay() {\n const popoverConfig: MatDialogConfig = {\n height: '80vh',\n width: '80vw',\n maxWidth: '80vw'\n };\n this.#dialogRef = this.#dialog.open(this.tplTileConfig(), popoverConfig);\n }\n\n onObjectConfigSave() {\n if (this.#dialogRef) this.#dialogRef.close();\n }\n\n onObjectConfigCancel() {\n if (this.#dialogRef) this.#dialogRef.close();\n }\n}\n","<button ymt-icon-button [icon-button-size]=\"small() ? 'small' : 'medium'\" class=\"settings icon\" (click)=\"openTileConfigOverlay()\" [matTooltip]=\"'yuv.tile-config.trigger.tooltip' | translate\">\n <mat-icon>settings</mat-icon>\n</button>\n\n<ng-template #tplTileConfig>\n <yuv-tile-config\n (save)=\"onObjectConfigSave()\"\n (canceled)=\"onObjectConfigCancel()\"\n [bucket]=\"bucket() || undefined\"\n [bucketLabel]=\"bucketLabel()\"\n [configTypes]=\"options()?.configTypes\"\n [configFlavors]=\"options()?.configFlavors || []\"\n ></yuv-tile-config>\n</ng-template>\n","import { Component, computed, input } from '@angular/core';\nimport { TileExtensionComponent } from '@yuuvis/client-shell-core';\n\n@Component({\n selector: 'yuv-email-tile-extension',\n standalone: true,\n imports: [],\n template: `\n @if (hasAttachements()) {\n <span>{{ attachments().length }}</span>\n <svg class=\"icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#5f6368\" viewBox=\"0 -960 960 960\">\n <path\n d=\"M720-330q0 104-73 177T470-80q-104 0-177-73t-73-177v-370q0-75 52.5-127.5T400-880q75 0 127.5 52.5T580-700v350q0 46-32 78t-78 32q-46 0-78-32t-32-78v-370h80v370q0 13 8.5 21.5T470-320q13 0 21.5-8.5T500-350v-350q-1-42-29.5-71T400-800q-42 0-71 29t-29 71v370q-1 71 49 120.5T470-160q70 0 119-49.5T640-330v-390h80v390Z\"\n />\n </svg>\n }\n `,\n styles: [\n `\n :host {\n display: flex;\n justify-content: end;\n margin-top: 0.5rem;\n\n .icon {\n height: 1rem;\n }\n }\n `\n ],\n host: {\n '[class.attachments]': 'hasAttachements()'\n }\n})\nexport class EmailTileExtensionComponent implements TileExtensionComponent {\n data = input.required<any>();\n attachments = computed(() => this.data()['appSystemmail:attachments'] || []);\n hasAttachements = computed(() => !!this.data()['appSystemmail:attachmentCount']);\n\n onClick(a: string, evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n\n alert(`You clicked '${a}' my friend.`);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i1","i2","i4","TranslateModule"],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-tile-list.mjs","sources":["../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-extension/tile-extension.service.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-extension/directive/tile-extension.directive.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile/tile.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile/tile.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-list/tile-list.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-list/tile-list.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/action-select/action-select.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/action-select/action-select.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/icon-select/icon-select.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/icon-select/icon-select.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/property-select/property-select.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/property-select/property-select.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-tile/tile-config-tile.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-tile/tile-config-tile.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-trigger/tile-config-trigger.component.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-config/tile-config-trigger/tile-config-trigger.component.html","../../../../../libs/yuuvis/client-framework/tile-list/src/lib/tile-extension/extensions/email.extension.ts","../../../../../libs/yuuvis/client-framework/tile-list/src/yuuvis-client-framework-tile-list.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { TileExtension } from '@yuuvis/client-shell-core';\nimport { EmailTileExtensionComponent } from './extensions/email.extension';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TileExtensionService {\n private _extensions: Record<string, TileExtension> = {};\n\n constructor() {\n // this.registerTileExtension({\n // // typeId: 'appSystemmail:email',\n // typeId: 'system:document',\n // cmp: EmailTileExtensionComponent\n // });\n }\n\n registerTileExtension(ext: TileExtension) {\n this._extensions[ext.typeId] = ext;\n }\n\n hasTileExtension(objectTypeId: string): boolean {\n return !!this._extensions[objectTypeId];\n }\n\n /**\n * Get tile extensions for a certain type\n * @param typeId ID of the type to fetch extesion for (objectTypeID or secondaryObjectTypeID)\n * @returns\n */\n getTileExtension(typeId: string): TileExtension | undefined {\n return this._extensions[typeId];\n }\n}\n","import { ComponentRef, Directive, Input, ViewContainerRef, effect, inject, input, signal } from '@angular/core';\nimport { TileExtensionService } from '../tile-extension.service';\nimport { TileExtension, TileExtensionComponent, TileExtensionDirectiveInput } from '@yuuvis/client-shell-core';\n\n@Directive({\n selector: '[yuvTileExtension]',\n standalone: true\n})\nexport class TileExtensionDirective {\n readonly #tileExtensioService = inject(TileExtensionService);\n readonly #containerRef = inject(ViewContainerRef);\n\n component!: ComponentRef<TileExtensionComponent>;\n\n yuvTileExtension = input.required<TileExtensionDirectiveInput>();\n\n #yuvTileExtensionEffect = effect(() => {\n const tile = this.yuvTileExtension();\n if (tile.typeId) {\n const ext = this.#tileExtensioService.getTileExtension(tile.typeId);\n if (ext) this._render(ext, tile.data);\n }\n });\n\n private _render(ext: TileExtension, data?: any) {\n if (this.component) this.#containerRef.clear();\n this.component = this.#containerRef.createComponent(ext.cmp);\n this.component.setInput('data', data);\n }\n}\n","import { Component, ElementRef, computed, inject, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DmsObject, DmsService, ObjectConfigAction } from '@yuuvis/client-core';\nimport { Action, ActionContext, ActionsService } from '@yuuvis/client-framework/actions';\nimport { RendererDirective } from '@yuuvis/client-framework/renderer';\nimport { switchMap } from 'rxjs';\nimport { TileExtensionDirective } from '../tile-extension/directive/tile-extension.directive';\nimport { TileData } from '../tile-list/tile-list.interface';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'yuv-tile',\n standalone: true,\n imports: [MatIconModule, MatTooltipModule, MatButtonModule, RendererDirective, TileExtensionDirective],\n templateUrl: './tile.component.html',\n styleUrl: './tile.component.scss',\n host: {\n '[class.dense]': 'dense()'\n }\n})\nexport class TileComponent {\n elRef = inject(ElementRef);\n readonly #dmsService = inject(DmsService);\n readonly #actionService = inject(ActionsService);\n\n tile = input.required<TileData>();\n actionContext = input<ActionContext>();\n dense = input<boolean>(false);\n\n actions = computed<Action[]>(() => {\n const actionsList: Action[] = [];\n if (this.tile().actions?.length) {\n this.tile().actions?.forEach((a: ObjectConfigAction) => {\n const aa: Action | undefined = this.#actionService.getActionById(a.id, this.actionContext());\n if (aa) actionsList.push(aa);\n });\n }\n return actionsList;\n });\n rendererInputs = computed(() => {\n return {\n icon: this.tile().icon,\n title: this.tile().title,\n description: this.tile().description,\n meta: this.tile().meta,\n aside: this.tile().aside\n };\n });\n\n executeAction(a: Action, evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n\n this.#dmsService\n .getDmsObject(this.tile().id)\n .pipe(switchMap((o: DmsObject) => a.run([o])))\n .subscribe();\n }\n}\n","<div class=\"tile\">\n <div data-slot=\"icon\">\n <ng-container *yuvRenderer=\"rendererInputs().icon\"></ng-container>\n </div>\n \n <div class=\"slots\">\n <div data-slot=\"title-description\">\n <div data-slot=\"title\">\n <ng-container *yuvRenderer=\"rendererInputs().title\"></ng-container>\n </div>\n <div data-slot=\"description\">\n <ng-container *yuvRenderer=\"rendererInputs().description\"></ng-container>\n </div>\n </div>\n \n <div data-slot=\"actions\">\n @for (a of actions(); track a.id) {\n <button mat-icon-button [matTooltip]=\"a.label\" (click)=\"executeAction(a, $event)\">\n <mat-icon inert=\"true\">{{ a.icon }}</mat-icon>\n </button>\n }\n </div>\n \n <div data-slot=\"aside\">\n <ng-container *yuvRenderer=\"rendererInputs().aside\"></ng-container>\n </div>\n \n <div data-slot=\"meta\">\n <ng-container *yuvRenderer=\"rendererInputs().meta\"></ng-container>\n </div>\n \n <div data-slot=\"badges\">{{ tile().badges }}</div>\n \n <div class=\"extension\">\n <ng-container *yuvTileExtension=\"{ typeId: tile().objectTypeId, data: tile().instanceData }\"></ng-container>\n </div>\n </div>\n</div>\n","import { NgClass, NgStyle } from '@angular/common';\nimport {\n Component,\n computed,\n contentChild,\n DestroyRef,\n effect,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n signal,\n untracked,\n viewChildren\n} from '@angular/core';\nimport {\n BaseObjectTypeField,\n DmsObject,\n EventService,\n ObjectConfigRecord,\n ObjectConfigService,\n ResolvedObjectConfigItem,\n SearchQuery,\n SearchResult,\n SearchService,\n SystemService,\n TranslateModule,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\n\nimport { ClickDoubleDirective, DragSelectDirective, DragSelectItemDirective } from '@yuuvis/client-framework/common';\nimport { TileComponent } from '../tile/tile.component';\n\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { ListItemDirective, YuvListModule } from '@yuuvis/client-framework/list';\nimport { Pagination } from '@yuuvis/client-framework/pagination';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\nimport { DeviceService, YmtMatIconRegistryService } from '@yuuvis/material';\nimport { finalize } from 'rxjs';\nimport { TileData, TileListConfigOptions, TileListHighlight } from './tile-list.interface';\n\n/**\n * List that renders the result of a search query as object config based tiles. It also contains a component to\n * set up that configuration.\n *\n * ## Paging\n * If the search result contains more items than the page size, the list will show a\n * pagination control to navigate inbetween the pages.\n *\n * ## Staggered animation\n * Adding a class of `staggered` to the `yuv-tile-list` component will animate\n * the tiles in a staggered way (only if the user has not set up the OS to not\n * play animation).\n */\n@Component({\n selector: 'yuv-tile-list',\n standalone: true,\n providers: [],\n imports: [\n NgClass,\n NgStyle,\n TileComponent,\n TranslateModule,\n ReactiveFormsModule,\n YuvListModule,\n ClickDoubleDirective,\n DragSelectDirective,\n DragSelectItemDirective,\n MatPaginatorModule\n ],\n templateUrl: './tile-list.component.html',\n styleUrl: './tile-list.component.scss',\n host: {\n tabindex: '0',\n role: 'listbox',\n '[class.dense]': 'dense()'\n }\n})\nexport class TileListComponent implements OnInit, OnDestroy {\n #objectConfigService = inject(ObjectConfigService);\n #system = inject(SystemService);\n #searchService = inject(SearchService);\n #destroyRef = inject(DestroyRef);\n #device = inject(DeviceService);\n #elRef = inject(ElementRef);\n #events = inject(EventService);\n\n emptyContent = contentChild<ElementRef>('empty');\n isTouchDevice = this.#device.isTouchEnabled;\n\n tiles = viewChildren(TileComponent);\n\n listItems = viewChildren(ListItemDirective);\n #listItemsEffect = effect(() => {\n if (this._keyManager) this._keyManager.destroy();\n this._keyManager = new ActiveDescendantKeyManager(this.listItems() || []).withWrap();\n });\n\n // #openContextMenu = signal<{ event: MouseEvent } | null>(null);\n #contextFlag = signal(false);\n\n @HostListener('contextmenu', ['$event'])\n onContextMenu(event: MouseEvent | PointerEvent) {\n event.preventDefault();\n if (this.#contextFlag()) {\n this.#contextFlag.set(false);\n return;\n }\n\n setTimeout(() => {\n this.ctxMenu.emit({ event, selection: this.selection() });\n }, 200);\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent) {\n // TODO: Clicking on the scrollbar also resets selection ... need to find a different way\n // (event.target as HTMLElement).parentElement?.tagName === 'YUV-TILE-LIST' && this.#select(-1);\n if (event.button === 2) {\n this.#contextFlag.set(true);\n this.onContextMenu(event);\n }\n }\n\n @HostListener('keydown.control.c', ['$event'])\n onCopy(event: KeyboardEvent) {\n event.preventDefault();\n if (this._selection.length) this.tileCopy.emit(this._selectionToTileData());\n }\n @HostListener('keydown.control.x', ['$event'])\n onCut(event: KeyboardEvent) {\n event.preventDefault();\n if (this._selection.length) this.tileCut.emit(this._selectionToTileData());\n }\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent) {\n switch (event.code) {\n case 'Escape': {\n this.clearSelection();\n break;\n }\n case 'Enter': {\n // same as double click\n const aii: number = this._keyManager.activeItemIndex !== null ? this._keyManager.activeItemIndex : -1;\n if (aii >= 0) {\n this.itemDblClick.emit(this.items[aii]);\n }\n break;\n }\n case 'Space': {\n // same as single click\n const aii: number = this._keyManager.activeItemIndex !== null ? this._keyManager.activeItemIndex : -1;\n if (aii >= 0) {\n this.select(this.items[aii], event);\n }\n break;\n }\n default: {\n this._keyManager?.onKeydown(event);\n }\n }\n }\n\n private _keyManager!: ActiveDescendantKeyManager<ListItemDirective>;\n\n #currBusy = false;\n _busy = signal(false);\n #_busyEffect = effect(() => {\n const b = this._busy();\n const preselect = this.#preselect();\n if (!b && preselect.length) {\n this.selectById(preselect);\n this.#preselect.set([]);\n }\n if (b !== this.#currBusy) {\n this.#currBusy = b;\n this.busy.emit(b);\n }\n });\n private oc?: ObjectConfigRecord;\n // state of pagination\n @HostBinding('class.pagination') pagination?: Pagination;\n private _selection: number[] = [];\n private _lastSelection?: number;\n\n selectedTile = signal<TileData[]>([]);\n empytIcon = signal<string>(YUV_ICONS.trash);\n /**\n * The ID of the selected list item\n */\n selection = signal<string[]>([]);\n /**\n * Tile configurations are stored globally for all apps. If you want a\n * separate config for your app/component you can specify a bucket. A bucket\n * is basically an ID where your custom tile config will be stored and\n * retrieved. Buckets should be unique so be sure to use a unique namespace.\n */\n bucket = input<string>();\n\n pageSize = input<number>(SearchService.DEFAULT_QUERY_SIZE);\n\n /**\n * Sets up the ability to select multile tiles\n */\n multiselect = input<boolean>(false);\n dense = input<boolean>(false);\n\n options = input<TileListConfigOptions | undefined>(undefined);\n\n flavor = input<ObjectFlavor>();\n\n flavorEffect = effect(() => {\n const f = this.flavor();\n if (f) this.applyFlavor(f);\n });\n appliedFlavor?: ObjectFlavor;\n /**\n * The search query to be executed. This may be a SearchQuery object or a CMIS query statement.\n */\n query = input<SearchQuery | string | null>();\n\n #preselect = signal<string[]>([]);\n preselect = input<string[]>([]);\n #preselectEffect = effect(() => this.#preselect.set(this.preselect()));\n\n highlights = input<TileListHighlight[] | null>([]);\n highlightStyles = computed<Record<string, Record<string, unknown>>>(() => {\n const x: Record<string, Record<string, unknown>> = {};\n (this.highlights() || []).forEach((highlight) => {\n highlight.ids.forEach((id) => {\n if (!x[id]) x[id] = {};\n x[id] = { ...x[id], ...highlight.cssStyles };\n });\n });\n return x;\n });\n\n preventChangeUntil = input<() => boolean>(() => true);\n /**\n * Emitted when a list item has been selected\n */\n itemSelect = output<TileData>();\n tileCopy = output<TileData[]>();\n tileCut = output<TileData[]>();\n busy = output<boolean>();\n queryResult = output<{ totalCount: number }>();\n\n /**\n * Emitted when selected items changed. If 'multiselect' input is set to true, this will\n * emit the whole selection, while 'itemSelect' will only emit the item that currently\n * has bee added to the selection.\n */\n selectionChange = output<TileData[]>();\n\n /**\n * Emitted when a list item has been doubleclicked\n */\n itemDblClick = output<TileData>();\n\n ctxMenu = output<{ event: MouseEvent | PointerEvent; selection: any }>();\n\n // the items rendered in the list\n items: TileData[] = [];\n private _rawResult?: SearchResult;\n searchExecuted = false;\n\n #query?: SearchQuery | string | null;\n #executeQueryEffect = effect(() => {\n // execute the query each time it changes\n this.#query = this.query();\n if (this.#query && this.oc)\n untracked(() => {\n this.#executeQuery(this.#query || undefined);\n this.empytIcon.set(YUV_ICONS.refresh);\n });\n });\n\n constructor() {\n this.#events\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const dmsObject = e.data as DmsObject;\n // check if the updated object is part of the list\n this.items.findIndex((item) => item.id === dmsObject.id) >= 0 && this.updateTileList([dmsObject]);\n });\n }\n\n getPageSize(): number {\n return typeof this.#query === 'string' ? this.pageSize() : this.#query?.size || this.pageSize();\n }\n\n contextMenuHandler(event: MouseEvent, index: number) {\n if (!coerceBooleanProperty(this.tiles()[index].elRef.nativeElement.ariaSelected)) {\n this._selectByIndex(index, event);\n }\n }\n\n select(i: TileData, evt?: MouseEvent | KeyboardEvent) {\n const check = this.preventChangeUntil();\n const checked = check();\n if (checked) {\n const idx = this.items.findIndex((item) => item.id === i.id);\n this._selectByIndex(idx, evt);\n }\n }\n\n selectById(ids: string[]) {\n if (this._busy()) this.#preselect.set(ids);\n else {\n this._selection = ids.map((id) => this.items.findIndex((i) => i.id === id)).filter((i) => i !== -1);\n this._keyManager.setActiveItem(this._selection[0] || 0);\n this.#elRef.nativeElement.focus();\n this.listItems().forEach((item: ListItemDirective, i: number) => item.selectedInput.set(this._selection.includes(i)));\n const tiles = this._selectionToTileData();\n this.selectionChange.emit(tiles);\n }\n }\n\n onDragSelectChange(sel: number[]) {\n if (this._keyManager.activeItemIndex !== -1) this._keyManager.setActiveItem(-1);\n this._selection = sel;\n this._selection.sort();\n this.listItems().forEach((item: ListItemDirective, i: number) => item.selectedInput.set(this._selection.includes(i)));\n }\n\n onDragSelect(sel: number[]) {\n this.#elRef.nativeElement.focus();\n this._selection = sel;\n this._keyManager.setActiveItem(sel[0] || 0);\n const tiles = this._selectionToTileData();\n this.selectionChange.emit(tiles);\n }\n\n private _selectByIndex(idx: number, evt?: MouseEvent | KeyboardEvent) {\n this._keyManager.setActiveItem(idx);\n this.#select(idx, evt?.shiftKey, evt?.ctrlKey);\n }\n\n refresh() {\n if (this.#query) {\n if (this.pagination) {\n this.goToPage(this.pagination.page);\n } else this.#executeQuery(this.query() || undefined);\n }\n }\n\n applyFlavor(flavor: ObjectFlavor) {\n this.appliedFlavor = this.appliedFlavor?.id === flavor.id ? undefined : flavor;\n if (this._rawResult) this.items = this._mapSearchResult(this._rawResult);\n }\n\n clearSelection(silent = false) {\n if (this._selection.length) {\n this._selection = [];\n this._keyManager.setActiveItem(-1);\n this.listItems().forEach((item: ListItemDirective) => item.selectedInput.set(false));\n if (!silent) this.selectionChange.emit([]);\n }\n }\n\n selectNext() {\n if (this._lastSelection) {\n let i = this._lastSelection + 1;\n if (i > this.items.length) i = 0;\n this.#select(i);\n }\n }\n selectPrev() {\n if (this._lastSelection) {\n let i = this._lastSelection - 1;\n if (i < 0) i = this.items.length - 1;\n this.#select(this._lastSelection - 1);\n }\n }\n\n changePage(pe: PageEvent) {\n this.goToPage(pe.pageIndex + 1);\n }\n\n goToPage(page: number) {\n if (!this.#query) return;\n this._busy.set(true);\n this.#searchService\n .getPage(this.#query, page, this.getPageSize())\n .pipe(finalize(() => this._busy.set(false)))\n .subscribe({\n next: (res: SearchResult) => {\n this.#setupPagination(res);\n this.items = this._mapSearchResult(res);\n },\n error: (err) => {\n // TODO: how should errors be handles in case hat loading pages fail\n }\n });\n }\n\n #select(index: number, shiftKey = false, ctrlKey = false) {\n this.#elRef.nativeElement.focus();\n if (index === -1) {\n this._selection = [];\n } else {\n if (this.multiselect()) {\n this._selection = this._selection.filter((i) => i !== index);\n if (ctrlKey) {\n // if ctrl key add to selection\n this._selection.push(index);\n } else if (shiftKey) {\n // add range\n if (this._lastSelection !== undefined) {\n const startIndex = this._lastSelection < index ? this._lastSelection : index;\n const endIndex = this._lastSelection > index ? this._lastSelection : index;\n for (let i = startIndex; i <= endIndex; i++) {\n this._selection.push(i);\n }\n } else {\n this._selection = [index];\n }\n } else {\n this._selection = [index];\n }\n } else this._selection = [index];\n this._selection = [...new Set(this._selection)];\n }\n this._lastSelection = this._selection.length === 0 ? undefined : index;\n this._selection.sort();\n\n this.listItems().forEach((item: ListItemDirective, i: number) => item.selectedInput.set(this._selection.includes(i)));\n const tiles = this._selectionToTileData();\n this.selectionChange.emit(tiles);\n tiles.length === 1 && this.itemSelect.emit(tiles[0]);\n this.selectedTile.set(this._selection.map((idx) => this.items[idx]));\n }\n\n private _selectionToTileData(): TileData[] {\n return this._selection.map((idx) => this.items[idx]);\n }\n\n /**\n * Executes a search query.\n * @param query The search query to execute. This may be a SearchQuery object or a string. If it's a string, it is supposed to\n * be a CMIS query statement.\n */\n #executeQuery(query: SearchQuery | string | undefined) {\n if (query && this.#system.system && !this._busy()) {\n this.searchExecuted = false;\n // reset items to avoid old data being shown while new stuff is loaded\n this.items = [];\n this._busy.set(true);\n\n const isSearchQuery = query && typeof query !== 'string';\n\n if (isSearchQuery) {\n query.fields = undefined;\n }\n\n (isSearchQuery ? this.#searchService.search(query as SearchQuery) : this.#searchService.searchCmis(query as string, this.getPageSize()))\n .pipe(finalize(() => this._busy.set(false)))\n .subscribe({\n next: (res: SearchResult) => {\n this.#setupPagination(res);\n this.items = this._mapSearchResult(res);\n this.queryResult.emit({ totalCount: res.items.length });\n\n const preselect = this.preselect();\n if (preselect) {\n this.selectById(preselect);\n }\n },\n error: (err) => console.error(err)\n });\n }\n }\n\n #setupPagination(searchResult: SearchResult) {\n this.pagination = undefined;\n\n this.pagination = searchResult.paging\n ? {\n total: searchResult.totalNumItems,\n pages: searchResult.paging.totalPages,\n page: searchResult.paging.page\n }\n : undefined;\n }\n\n #mapToTileData(objects: DmsObject[]): TileData[] {\n return objects.map((dmsObject) => {\n const sots = dmsObject.sots || [];\n\n let oc = this.oc![dmsObject.objectTypeId];\n\n // check if result oitem matches virtual config type\n const cfgTypes = this.options()?.configTypes || [];\n\n cfgTypes.forEach((cft) => {\n const matchesType = !cft.objectType || cft.objectType === dmsObject.objectTypeId;\n const matchesSOTs = !cft.sots || !cft.sots.length || cft.sots.every((sot) => sots.includes(sot));\n\n if (matchesType && matchesSOTs) {\n oc = this.oc![cft.id];\n }\n });\n\n // only apply a flavor if the object has that SOT\n const ownAppliedFlavor = this.appliedFlavor && sots.includes(this.appliedFlavor.sot) && this.oc![this.appliedFlavor.sot];\n if (ownAppliedFlavor) {\n oc = this.oc![this.appliedFlavor!.id];\n }\n\n if (!oc) oc = this.#objectConfigService.getDefaultConfig(dmsObject.objectTypeId);\n\n const tli: TileData = {\n objectTypeId: dmsObject.objectTypeId,\n id: dmsObject.id,\n actions: oc.actions,\n badges: oc.badges,\n instanceData: dmsObject.data,\n dmsObject,\n title: oc.title ? this.#getResolvedObjectConfigItem(oc.title.propertyName, dmsObject.data) : { propertyName: '', value: '' }\n };\n\n tli.icon = oc.icon\n ? {\n rendererType: 'icon',\n propertyName: 'custom',\n value: oc.icon.svg,\n meta: { isFontIcon: YmtMatIconRegistryService.isFontIcon(oc.icon.svg), objectTypeId: '' }\n }\n : {\n rendererType: 'icon',\n propertyName: BaseObjectTypeField.OBJECT_TYPE_ID,\n value: ownAppliedFlavor && this.appliedFlavor ? this.appliedFlavor.sot : dmsObject.objectTypeId\n };\n if (oc.description) tli.description = this.#getResolvedObjectConfigItem(oc.description.propertyName, dmsObject.data);\n if (oc.meta) tli.meta = this.#getResolvedObjectConfigItem(oc.meta.propertyName, dmsObject.data);\n if (oc.aside) tli.aside = this.#getResolvedObjectConfigItem(oc.aside.propertyName, dmsObject.data);\n\n return tli;\n });\n }\n\n private _mapSearchResult(res: SearchResult): TileData[] {\n this.searchExecuted = true;\n this._rawResult = res;\n return this.oc ? this.#mapToTileData(res.items.map((i) => new DmsObject(i))) : [];\n }\n\n #getResolvedObjectConfigItem(propertyName: string, instanceData: Record<string, unknown>): ResolvedObjectConfigItem {\n const item: ResolvedObjectConfigItem = {\n propertyName: propertyName,\n value: instanceData[propertyName]\n };\n // Meta data are considered properties that start with the property name followed by an underscore.\n // Organization fields for example have an additional property 'xyz_title' that contains the resolved\n // name of a user while the value itself is the users ID.\n const metaData = Object.keys(instanceData)\n .filter((key) => key.startsWith(propertyName + '_'))\n .map((key) => ({ [key.substring(key.indexOf('_') + 1)]: instanceData[key] }));\n\n // If there are meta data properties, they'll be merged into a Record where the\n // key is the property name without the underscore and the actual properties name.\n // So { 'xyz_title': 'John Doe' } will be merged into { title: 'John Doe' }\n if (metaData.length) {\n const meta = metaData.reduce((acc, cur) => ({ ...acc, ...cur }), {});\n item.meta = meta;\n }\n\n return item;\n }\n\n updateTileList(listItems: DmsObject[]) {\n listItems.forEach((item) => {\n const idx = this.items.findIndex((listItem) => listItem.id === item.id);\n if (idx >= 0 && this.oc) {\n const mappedTileData = this.#mapToTileData([item]);\n this.items[idx] = mappedTileData[0];\n }\n });\n }\n\n ngOnInit(): void {\n this.#objectConfigService\n .getObjectConfigs$(this.bucket() || '', true)\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe({\n next: (res: ObjectConfigRecord) => {\n this.oc = res;\n const q = this.query();\n q && this.#executeQuery(q);\n }\n });\n }\n\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n }\n}\n","<div\n class=\"tiles\"\n [yuvDragSelect]=\"{ disabled: !this.multiselect() || isTouchDevice }\"\n (dragSelectChange)=\"onDragSelectChange($event)\"\n (dragSelect)=\"onDragSelect($event)\"\n>\n @for (i of items; track i.id) {\n <yuv-tile\n [dense]=\"dense()\"\n yuvDragSelectItem\n yuvListItem\n [attr.aria-selected]=\"selection().includes(i.id)\"\n (click.single)=\"select(i, $event)\"\n (click.double)=\"itemDblClick.emit(i)\"\n [ngClass]=\"{ selected: selection().includes(i.id), last: $last }\"\n [actionContext]=\"options()?.actionContext\"\n [tile]=\"i\"\n [ngStyle]=\"highlightStyles()[i.id]\"\n (contextmenu)=\"contextMenuHandler($event, $index)\"\n ></yuv-tile>\n } @empty {\n <div class=\"empyt-list\">\n @if (searchExecuted && emptyContent()) {\n <ng-content></ng-content>\n }\n </div>\n }\n <div class=\"offset\" (click)=\"clearSelection()\"></div>\n</div>\n@if (pagination) {\n <mat-paginator\n class=\"paginator\"\n [length]=\"pagination?.total\"\n [pageSize]=\"getPageSize()\"\n (page)=\"changePage($event)\"\n hidePageSize\n >\n </mat-paginator>\n}\n","import { NgClass } from '@angular/common';\nimport { Component, Signal, computed, inject, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { VirtualObjectType } from '@yuuvis/client-core';\nimport { Action, ActionsService } from '@yuuvis/client-framework/actions';\n\n@Component({\n selector: 'yuv-tile-action-select',\n standalone: true,\n imports: [NgClass, MatIconModule],\n templateUrl: './action-select.component.html',\n styleUrl: './action-select.component.scss'\n})\nexport class ActionSelectComponent {\n private actionService = inject(ActionsService);\n\n objectType = input.required<VirtualObjectType>();\n actions: Signal<Action[]> = computed<Action[]>(() => {\n const ot = this.objectType();\n return ot.objectType ? this.actionService.getActionsForType(ot.objectType) : [];\n });\n\n selectedActionIds = input<string[]>([]);\n actionSelect = output<Action>();\n}\n","<div class=\"actions\">\n @for (a of actions(); track a.id) {\n <button [ngClass]=\"{ selected: selectedActionIds().includes(a.id) }\" (click)=\"actionSelect.emit(a)\">\n <mat-icon>{{ a.icon }}</mat-icon\n >{{ a.label }}\n </button>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, input, output } from '@angular/core';\nimport { TranslateModule, VirtualObjectType } from '@yuuvis/client-core';\n\n@Component({\n selector: 'yuv-icon-select',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n templateUrl: './icon-select.component.html',\n styleUrl: './icon-select.component.scss'\n})\nexport class IconSelectComponent {\n objectType = input<VirtualObjectType>();\n iconSelect = output<string | null>();\n\n async createIcon(inputEl: HTMLInputElement) {\n const file: File | undefined = inputEl.files ? inputEl.files[0] : undefined;\n if (file) {\n const text = await file.text();\n this.#emit(text);\n } else this.#emit(null);\n }\n\n reset() {\n this.#emit(null);\n }\n\n #emit(data: string | null) {\n this.iconSelect.emit(data);\n }\n}\n","<input style=\"display: none\" #fileInput type=\"file\" accept=\".svg\" (change)=\"createIcon(fileInput)\" />\n\n<button class=\"primary\" (click)=\"fileInput.click()\">{{ 'yuv.tile-config.icon-select.pick' | translate }}</button>\n<button class=\"secondary\" (click)=\"reset()\">{{ 'yuv.tile-config.icon-select.reset' | translate }}</button>\n","import { NgClass } from '@angular/common';\nimport { Component, computed, effect, inject, input, output, signal, untracked } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n BaseObjectTypeField,\n ContentStreamField,\n ObjectConfigProperty,\n ObjectTypeField,\n SecondaryObjectType,\n Sort,\n SystemService,\n TranslateModule,\n Utils,\n VirtualObjectType\n} from '@yuuvis/client-core';\n\ntype TypeProperty = { label: string; baseProperty?: boolean } & Partial<ObjectTypeField>;\n\n@Component({\n selector: 'yuv-tile-property-select',\n standalone: true,\n imports: [NgClass, FormsModule, TranslateModule, \n MatButtonModule, MatIconModule],\n templateUrl: './property-select.component.html',\n styleUrl: './property-select.component.scss'\n})\nexport class PropertySelectComponent {\n private system = inject(SystemService);\n\n // fields that should not be available to be placed in the slots\n readonly #excludeFields: string[] = [\n BaseObjectTypeField.PARENT_ID,\n BaseObjectTypeField.PARENT_OBJECT_TYPE_ID,\n BaseObjectTypeField.OBJECT_ID,\n BaseObjectTypeField.OBJECT_TYPE_ID,\n BaseObjectTypeField.BASE_TYPE_ID,\n BaseObjectTypeField.PARENT_VERSION_NUMBER,\n BaseObjectTypeField.SECONDARY_OBJECT_TYPE_IDS,\n BaseObjectTypeField.TAGS,\n BaseObjectTypeField.TENANT,\n BaseObjectTypeField.TRACE_ID,\n ContentStreamField.REPOSITORY_ID,\n ContentStreamField.DIGEST,\n ContentStreamField.ARCHIVE_PATH,\n ContentStreamField.ID,\n ContentStreamField.RANGE\n ];\n\n objectTypeFields: TypeProperty[] = [];\n\n query = signal<string | null>(null);\n\n objectType = input<VirtualObjectType>();\n filteredObjectTypeFields = computed<TypeProperty[]>(() => {\n return this.query() !== null\n ? this.objectTypeFields.filter((otf) => otf.label.toLowerCase().indexOf(this.query()?.toLocaleLowerCase() || '') !== -1)\n : this.getObjectTypeFields(this.objectType());\n });\n\n objectTypesEffect = effect(() => {\n untracked(() => this.getObjectTypeFields(this.objectType()));\n });\n\n selectedProperty = input<ObjectConfigProperty>();\n\n propertySelect = output<TypeProperty | undefined>();\n\n selectProperty(field: TypeProperty) {\n this.propertySelect.emit(field);\n }\n\n removeProperty(evt: MouseEvent | KeyboardEvent) {\n evt.stopPropagation();\n \n this.propertySelect.emit(undefined);\n }\n\n private getObjectTypeFields(type?: VirtualObjectType) {\n if (!type) return [];\n const otf: Record<string, TypeProperty> = {};\n if (type.sots && type.sots.length > 0) {\n type.sots.forEach((s: string) => {\n const sot: SecondaryObjectType | undefined = this.system.getSecondaryObjectType(s);\n if (sot)\n sot.fields.forEach((of) =>\n otf[of.id] = {\n id: of.id,\n label: this._getLabel(of)\n }\n );\n });\n }\n\n let objectTypeProperties: Record<string, TypeProperty> = {};\n if (type.objectType) {\n const ot = this.system.getObjectType(type.objectType);\n if (ot) {\n ot.fields.forEach((of) => {\n objectTypeProperties[of.id] = {\n id: of.id,\n label: this._getLabel(of),\n baseProperty: true\n };\n });\n }\n }\n\n this.objectTypeFields = [...Object.values(objectTypeProperties), ...Object.values(otf)]\n .filter((f) => f.id && !this.#excludeFields.includes(f.id))\n // sort alphanummeric by label\n .sort(Utils.sortValues('label', Sort.ASC))\n // put base properties at the end\n .sort(Utils.sortValues('baseProperty', Sort.ASC));\n return this.objectTypeFields;\n }\n\n private _getLabel(otf: ObjectTypeField): string {\n return this.system.getLocalizedLabel(otf.id) || otf.id;\n }\n}\n","<!-- TODO: enable once filtering of properties makes sense -->\n<!-- <form class=\"filter\">\n <div class=\"filter-input\">\n <input type=\"text\" [placeholder]=\"'yuv.tile-config.property-select.filter.placeholder' | translate\" name=\"query\" [(ngModel)]=\"query\" />\n @if (query()) {\n <button class=\"icn\" (click)=\"query.set(null)\">\n <yuv-icon [svg]=\"clearIcon\"></yuv-icon>\n </button>\n }\n </div>\n</form> -->\n\n<ul class=\"properties\">\n @for (p of filteredObjectTypeFields(); track $index) {\n <li [ngClass]=\"{ baseProperty: p.baseProperty, selected: p.id === selectedProperty()?.propertyName }\" (click)=\"selectProperty(p)\">\n <div class=\"label\">{{ p.label }}</div>\n <button mat-icon-button (click)=\"removeProperty($event)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n }\n</ul>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, computed, inject, input, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ObjectConfig, ObjectConfigAction, ObjectConfigProperty, SystemService } from '@yuuvis/client-core';\nimport { Action, ActionsService } from '@yuuvis/client-framework/actions';\nimport { ObjectTypeIconComponent } from '@yuuvis/client-framework/icons';\n\n/**\n * Component for setting up a tile config\n */\n@Component({\n selector: 'yuv-tile-config-tile',\n standalone: true,\n imports: [MatButtonModule,\n MatTooltipModule,\n MatIconModule, CommonModule, ObjectTypeIconComponent],\n templateUrl: './tile-config-tile.component.html',\n styleUrl: './tile-config-tile.component.scss'\n})\nexport class TileConfigTileComponent {\n private readonly actionService = inject(ActionsService);\n private readonly elRef = inject(ElementRef);\n #system = inject(SystemService);\n\n disableIconSlot = input<boolean>();\n disableBadgesSlot = input<boolean>();\n\n objectConfig = input.required<ObjectConfig >();\n _objectConfig = computed<ObjectConfig>(() => {\n const oc = this.objectConfig();\n if (oc) {\n [oc.title, oc.description, oc.meta, oc.aside].forEach((field: ObjectConfigProperty | undefined) => {\n if (field) {\n const label = this.#system.getLocalizedLabel(field.propertyName);\n field.label = label || field.label || field.propertyName;\n }\n });\n }\n return oc;\n });\n\n actions = computed<Action[]>(() => {\n const actionsList: Action[] = [];\n const ocActions = this.objectConfig();\n if (ocActions?.actions?.length) {\n ocActions.actions?.forEach((a: ObjectConfigAction) => {\n const aa: Action | undefined = this.actionService.getActionById(a.id);\n if (aa) actionsList.push(aa);\n });\n }\n return actionsList;\n });\n\n slotSelect = output<string>();\n\n selectSlot(slot: string) {\n if (this.disableIconSlot() && slot === 'icon') return;\n this.slotSelect.emit(slot);\n\n // set active state\n (this.elRef.nativeElement as HTMLElement).querySelectorAll('[data-slot]').forEach((e) => {\n if (e.getAttribute('data-slot') === slot) e.classList.add('active');\n else e.classList.remove('active');\n });\n }\n}\n","@let oc = _objectConfig();\n\n<div data-slot=\"icon\" [attr.disabled]=\"disableIconSlot()\" (click)=\"selectSlot('icon')\">\n @if (oc && oc.icon) {\n <mat-icon>{{ oc.icon.svg }}</mat-icon>\n } @else if (oc && oc.objectTypeId) {\n <yuv-object-type-icon [objectTypeId]=\"oc.objectTypeId\"></yuv-object-type-icon>\n }\n</div>\n<div data-slot=\"title\" (click)=\"selectSlot('title')\">{{ oc?.title?.label }}</div>\n<div data-slot=\"actions\" (click)=\"selectSlot('actions')\">\n @for (a of actions(); track a.id) {\n <button mat-icon-button [matTooltip]=\"a.label\">\n <mat-icon inert=\"true\">{{ a.icon }}</mat-icon>\n </button>\n }\n</div>\n<div data-slot=\"description\" (click)=\"selectSlot('description')\">{{ oc?.description?.label }}</div>\n<div data-slot=\"aside\" (click)=\"selectSlot('aside')\">{{ oc?.aside?.label }}</div>\n<div data-slot=\"meta\" (click)=\"selectSlot('meta')\">{{ oc?.meta?.label }}</div>\n@if (!disableBadgesSlot()) {\n <div data-slot=\"badges\" (click)=\"selectSlot('badges')\">\n {{ oc?.badges }}\n </div>\n}\n","import { Component, computed, effect, inject, input, output, Signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport {\n GenericObjectType,\n ObjectConfig,\n ObjectConfigAction,\n ObjectConfigBadge,\n ObjectConfigIcon,\n ObjectConfigProperty,\n ObjectConfigService,\n ObjectTypeField,\n SystemService,\n TranslateModule,\n VirtualObjectType\n} from '@yuuvis/client-core';\nimport { Action } from '@yuuvis/client-framework/actions';\nimport { DialogComponent } from '@yuuvis/client-framework/common';\nimport { YuvListModule } from '@yuuvis/client-framework/list';\nimport { ObjectFlavor } from '@yuuvis/client-shell-core';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { ActionSelectComponent } from './action-select/action-select.component';\nimport { IconSelectComponent } from './icon-select/icon-select.component';\nimport { PropertySelectComponent } from './property-select/property-select.component';\nimport { TileConfigTileComponent } from './tile-config-tile/tile-config-tile.component';\n\ninterface InnerType {\n id: string;\n icon?: string;\n flavor?: boolean;\n data: ObjectFlavor | VirtualObjectType;\n}\n\n@Component({\n selector: 'yuv-tile-config',\n standalone: true,\n imports: [\n FormsModule,\n TileConfigTileComponent,\n IconSelectComponent,\n PropertySelectComponent,\n ActionSelectComponent,\n TranslateModule,\n YuvListModule,\n MatIconModule,\n MatDialogModule,\n MatSelectModule,\n MatButtonModule,\n DialogComponent,\n MatFormFieldModule,\n YmtButtonDirective\n ],\n templateUrl: './tile-config.component.html',\n styleUrls: ['./tile-config.component.scss']\n})\nexport class TileConfigComponent {\n #objectConfigService = inject(ObjectConfigService);\n #system = inject(SystemService);\n\n /**\n * Tile configurations are stored globally for all apps. If you want a\n * separate config for your app/component you can specify a bucket. A bucket\n * is basically an ID where your custom tile config will be stored and\n * retrieved. Buckets should be unique so be sure to use a unique namespace.\n */\n bucket = input<string | undefined>(undefined);\n bucketLabel = input<string | undefined>(undefined);\n\n configTypes = input<VirtualObjectType[] | undefined>(undefined);\n configFlavors = input<ObjectFlavor[]>([]);\n get configChanged(): boolean {\n return Object.keys(this.changes).length > 0;\n }\n\n types: Signal<InnerType[]> = computed(() => {\n const ct = this.configTypes() || [];\n const cf: VirtualObjectType[] = [];\n // TODO: enable when flavors are supported in tile config\n // const cf = this.configFlavors() || [];\n return [...ct.map((t) => ({ id: t.id, icon: t.icon, data: t })), ...cf.map((f) => ({ id: f.id, icon: f.icon, flavor: true, data: f }))];\n });\n #typesEffect = effect(() => {\n const t = this.types();\n if (t.length && !this.selectedType) {\n this.typeSelected(t[0]);\n }\n })\n\n save = output();\n canceled = output();\n\n selectedType?: VirtualObjectType;\n selectedTypeProperties: ObjectTypeField[] = [];\n\n #emptyObjectConfig: ObjectConfig = {\n objectTypeId: '',\n title: { propertyName: '', label: '' },\n description: { propertyName: '', label: '' },\n meta: { propertyName: '', label: '' },\n aside: { propertyName: '', label: '' },\n actions: [],\n badges: []\n };\n\n objectConfig?: ObjectConfig;\n selectedSlot?: string;\n flavors: ObjectFlavor[] = [];\n\n changes: Record<string, ObjectConfig | undefined> = {};\n\n getConfigValue(p: string): ObjectConfigIcon | ObjectConfigProperty | ObjectConfigAction | ObjectConfigBadge | undefined {\n return this.objectConfig ? (this.objectConfig as any)[p] : undefined;\n }\n\n getConfigProperty(p: string): ObjectConfigProperty | undefined {\n return this.getConfigValue(p) as ObjectConfigProperty;\n }\n\n getSelectedActions(): string[] {\n return this.objectConfig?.actions ? this.objectConfig.actions.map((a) => a.id) : [];\n }\n\n slotSelect(item: string) {\n this.selectedSlot = item;\n }\n\n typeSelected(type: InnerType) {\n const t = this.types().find((ty) => ty.id === type.id);\n if (!t) return;\n if (t.flavor) this.#selectFlavor(t.data as ObjectFlavor);\n else this.#selectType(t.data as VirtualObjectType);\n }\n\n #selectFlavor(flavor: ObjectFlavor) {\n const t: GenericObjectType | undefined = this.#system.getObjectType(flavor.sot);\n if (t)\n this.#selectType({\n id: flavor.id,\n objectType: flavor.objectTypeID,\n sots: [flavor.sot]\n });\n }\n\n async #selectType(t: VirtualObjectType) {\n this.selectedType = t;\n\n const alreadyChanged = this.changes[t.id];\n // load tile config\n // if the type has been changed before load that config instead of the persisted one\n this.objectConfig = { ...(alreadyChanged || this.#objectConfigService.getObjectConfig(t, this.bucket() || '')) };\n\n if (!this.objectConfig) {\n this.objectConfig = {\n ...this.#emptyObjectConfig,\n objectTypeId: t.id\n };\n }\n }\n\n iconSelected(icon: string | null) {\n if (!this.selectedType) return;\n if (this.objectConfig) {\n this.objectConfig.icon = icon ? { svg: icon } : undefined;\n this.changes[this.selectedType.id] = this.objectConfig;\n }\n }\n\n propertySelected(tileSlot: string, field?: Partial<ObjectTypeField>) {\n if (!this.selectedType) return;\n const p: any = {};\n p[tileSlot] = field\n ? {\n label: field.label,\n propertyName: field.id\n }\n : undefined;\n\n this.objectConfig = structuredClone({\n ...this.objectConfig,\n ...p\n });\n this.changes[this.selectedType.id] = this.objectConfig;\n }\n\n actionSelected(action: Action) {\n if (!this.selectedType) return;\n if (this.objectConfig) {\n const actions = this.objectConfig?.actions ? [...this.objectConfig.actions] : [];\n const idx = actions.findIndex((a) => a.id === action.id);\n if (idx !== -1) actions.splice(idx, 1);\n else actions.push({ id: action.id });\n this.objectConfig = { ...this.objectConfig, actions };\n this.changes[this.selectedType.id] = { ...this.objectConfig };\n }\n }\n\n saveConfig() {\n if (Object.keys(this.changes).length) {\n this.#objectConfigService.saveObjectConfigs(this.changes, this.bucket()).subscribe((_) => this.save.emit());\n }\n }\n\n resetConfig() {\n if (this.selectedType) {\n const defaults = this.#objectConfigService.getRegisteredDefault(this.selectedType.id, this.bucket()) || this.#emptyObjectConfig;\n this.changes[this.selectedType.id] = { ...defaults };\n this.objectConfig = { ...defaults };\n const originalConfig = this.#objectConfigService.getObjectConfig(this.selectedType, this.bucket());\n if (this.#deepEqual(defaults, originalConfig)) {\n this.changes[this.selectedType.id] = undefined;\n delete this.changes[this.selectedType.id];\n } else {\n this.changes[this.selectedType.id] = { ...defaults };\n }\n }\n }\n\n cancelConfig() {\n this.changes = {};\n this.canceled.emit();\n }\n\n #deepEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) return false;\n\n const keysA = Object.keys(a as object);\n const keysB = Object.keys(b as object);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (!keysB.includes(key)) return false;\n if (!this.#deepEqual((a as any)[key], (b as any)[key])) return false;\n }\n return true;\n }\n}\n","<yuv-dialog [headertitel]=\"'yuv.tile-config.title' | translate: { bucket: bucketLabel() }\">\n <main class=\"tile-config\">\n <section class=\"picker\">\n <mat-form-field>\n <mat-select [panelWidth]=\"null\" [(ngModel)]=\"selectedType\" (ngModelChange)=\"typeSelected($event)\">\n @for (t of types() || []; track t.id; let i = $index) {\n <mat-option [value]=\"t.data\">{{ t.id | translate }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n @if (selectedType) {\n <button ymtButton=\"secondary\" (click)=\"resetConfig()\">{{ 'yuv.tile-config.button.reset' | translate }}</button>\n }\n </section>\n\n <section class=\"details\">\n @if (selectedType) {\n <div class=\"dummy-preview\">\n <yuv-tile-config-tile\n [disableIconSlot]=\"true\"\n [disableBadgesSlot]=\"true\"\n [objectConfig]=\"objectConfig!\"\n (slotSelect)=\"slotSelect($event)\"\n ></yuv-tile-config-tile>\n </div>\n\n <main>\n @if (selectedSlot === 'icon') {\n <h3>{{ 'yuv.tile-config.slot.icon.headline' | translate }}</h3>\n <yuv-icon-select [objectType]=\"selectedType\" (iconSelect)=\"iconSelected($event)\"></yuv-icon-select>\n } @else if (selectedSlot === 'badges') {\n <div class=\"placeholder empty\">\n <p>Future feature: Select badges (like: is favorite, ratings, ...)</p>\n </div>\n } @else if (!selectedSlot) {\n } @else if (selectedSlot === 'actions') {\n <h3>{{ 'yuv.tile-config.slot.action.headline' | translate }}</h3>\n <yuv-tile-action-select\n [objectType]=\"selectedType\"\n [selectedActionIds]=\"getSelectedActions()\"\n (actionSelect)=\"actionSelected($event)\"\n ></yuv-tile-action-select>\n } @else {\n <h3>{{ 'yuv.tile-config.slot.property.headline' | translate }}</h3>\n <yuv-tile-property-select\n [objectType]=\"selectedType\"\n [selectedProperty]=\"getConfigProperty(selectedSlot)\"\n (propertySelect)=\"propertySelected(selectedSlot, $event)\"\n ></yuv-tile-property-select>\n }\n </main>\n } @else {\n <div class=\"placeholder empty\"></div>\n }\n </section>\n </main>\n\n <footer>\n <button ymtButton=\"secondary\" (click)=\"cancelConfig()\">{{ 'yuv.tile-config.button.close' | translate }}</button>\n <button ymtButton=\"primary\" [disabled]=\"!configChanged\" (click)=\"saveConfig()\">{{ 'yuv.tile-config.button.save' | translate }}</button>\n </footer>\n</yuv-dialog>\n","import { CommonModule } from '@angular/common';\nimport { Component, TemplateRef, inject, input, viewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TileListConfigOptions } from '../../tile-list/tile-list.interface';\nimport { TileConfigComponent } from '../tile-config.component';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-tile-config-trigger',\n standalone: true,\n imports: [CommonModule, TileConfigComponent, TranslateModule, \n YmtIconButtonDirective,\n MatButtonModule, MatTooltipModule, MatIcon],\n templateUrl: './tile-config-trigger.component.html',\n styleUrl: './tile-config-trigger.component.scss'\n})\nexport class TileConfigTriggerComponent {\n #dialog = inject(MatDialog);\n\n tplTileConfig = viewChild.required<TemplateRef<any>>('tplTileConfig');\n\n #dialogRef?: MatDialogRef<any>;\n\n icon = input<string>('settings');\n bucket = input<string>();\n bucketLabel = input<string | undefined>();\n options = input<TileListConfigOptions | undefined>(undefined);\n // If true, renders a smaller icon button\n small = input<boolean>(false);\n\n openTileConfigOverlay() {\n const popoverConfig: MatDialogConfig = {\n height: '80vh',\n width: '80vw',\n maxWidth: '80vw'\n };\n this.#dialogRef = this.#dialog.open(this.tplTileConfig(), popoverConfig);\n }\n\n onObjectConfigSave() {\n if (this.#dialogRef) this.#dialogRef.close();\n }\n\n onObjectConfigCancel() {\n if (this.#dialogRef) this.#dialogRef.close();\n }\n}\n","<button ymt-icon-button [icon-button-size]=\"small() ? 'small' : 'medium'\" class=\"settings icon\" (click)=\"openTileConfigOverlay()\" [matTooltip]=\"'yuv.tile-config.trigger.tooltip' | translate\">\n <mat-icon>settings</mat-icon>\n</button>\n\n<ng-template #tplTileConfig>\n <yuv-tile-config\n (save)=\"onObjectConfigSave()\"\n (canceled)=\"onObjectConfigCancel()\"\n [bucket]=\"bucket() || undefined\"\n [bucketLabel]=\"bucketLabel()\"\n [configTypes]=\"options()?.configTypes\"\n [configFlavors]=\"options()?.configFlavors || []\"\n ></yuv-tile-config>\n</ng-template>\n","import { Component, computed, input } from '@angular/core';\nimport { TileExtensionComponent } from '@yuuvis/client-shell-core';\n\n@Component({\n selector: 'yuv-email-tile-extension',\n standalone: true,\n imports: [],\n template: `\n @if (hasAttachements()) {\n <span>{{ attachments().length }}</span>\n <svg class=\"icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"#5f6368\" viewBox=\"0 -960 960 960\">\n <path\n d=\"M720-330q0 104-73 177T470-80q-104 0-177-73t-73-177v-370q0-75 52.5-127.5T400-880q75 0 127.5 52.5T580-700v350q0 46-32 78t-78 32q-46 0-78-32t-32-78v-370h80v370q0 13 8.5 21.5T470-320q13 0 21.5-8.5T500-350v-350q-1-42-29.5-71T400-800q-42 0-71 29t-29 71v370q-1 71 49 120.5T470-160q70 0 119-49.5T640-330v-390h80v390Z\"\n />\n </svg>\n }\n `,\n styles: [\n `\n :host {\n display: flex;\n justify-content: end;\n margin-top: 0.5rem;\n\n .icon {\n height: 1rem;\n }\n }\n `\n ],\n host: {\n '[class.attachments]': 'hasAttachements()'\n }\n})\nexport class EmailTileExtensionComponent implements TileExtensionComponent {\n data = input.required<any>();\n attachments = computed(() => this.data()['appSystemmail:attachments'] || []);\n hasAttachements = computed(() => !!this.data()['appSystemmail:attachmentCount']);\n\n onClick(a: string, evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n\n alert(`You clicked '${a}' my friend.`);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i1","i2","TranslateModule"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAOa,oBAAoB,CAAA;AAG/B,IAAA,WAAA,GAAA;QAFQ,IAAW,CAAA,WAAA,GAAkC,EAAE;;;;;;;AAUvD,IAAA,qBAAqB,CAAC,GAAkB,EAAA;QACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG;;AAGpC,IAAA,gBAAgB,CAAC,YAAoB,EAAA;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;;AAGzC;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,MAAc,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;;+GAzBtB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;4FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCEY,sBAAsB,CAAA;AAJnC,IAAA,WAAA,GAAA;AAKW,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACnD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAIjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,QAAQ,EAA+B;AAEhE,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,MAAK;AACpC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACpC,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;AACnE,gBAAA,IAAI,GAAG;oBAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;;AAEzC,SAAC,CAAC;AAOH;AApBU,IAAA,oBAAoB;AACpB,IAAA,aAAa;AAMtB,IAAA,uBAAuB;IAQf,OAAO,CAAC,GAAkB,EAAE,IAAU,EAAA;QAC5C,IAAI,IAAI,CAAC,SAAS;AAAE,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;QAC5D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;;+GAnB5B,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCcY,aAAa,CAAA;AAV1B,IAAA,WAAA,GAAA;AAWE,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AACjB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAEhD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAY;QACjC,IAAa,CAAA,aAAA,GAAG,KAAK,EAAiB;AACtC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAU,KAAK,CAAC;AAE7B,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAW,MAAK;YAChC,MAAM,WAAW,GAAa,EAAE;YAChC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE;gBAC/B,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAqB,KAAI;AACrD,oBAAA,MAAM,EAAE,GAAuB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AAC5F,oBAAA,IAAI,EAAE;AAAE,wBAAA,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9B,iBAAC,CAAC;;AAEJ,YAAA,OAAO,WAAW;AACpB,SAAC,CAAC;AACF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;YAC7B,OAAO;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI;AACtB,gBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK;AACxB,gBAAA,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW;AACpC,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI;AACtB,gBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;aACpB;AACH,SAAC,CAAC;AAWH;AApCU,IAAA,WAAW;AACX,IAAA,cAAc;IA0BvB,aAAa,CAAC,CAAS,EAAE,GAAU,EAAA;QACjC,GAAG,CAAC,cAAc,EAAE;QACpB,GAAG,CAAC,eAAe,EAAE;AAErB,QAAA,IAAI,CAAC;AACF,aAAA,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;AAC3B,aAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAY,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,aAAA,SAAS,EAAE;;+GApCL,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB1B,kuCAsCA,EAAA,MAAA,EAAA,CAAA,iiGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxBY,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAO1F,aAAa,EAAA,UAAA,EAAA,CAAA;kBAVzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EACR,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAGhG,IAAA,EAAA;AACJ,wBAAA,eAAe,EAAE;AAClB,qBAAA,EAAA,QAAA,EAAA,kuCAAA,EAAA,MAAA,EAAA,CAAA,iiGAAA,CAAA,EAAA;;;AEgCH;;;;;;;;;;;;AAYG;MAyBU,iBAAiB,CAAA;AAC5B,IAAA,oBAAoB;AACpB,IAAA,OAAO;AACP,IAAA,cAAc;AACd,IAAA,WAAW;AACX,IAAA,OAAO;AACP,IAAA,MAAM;AACN,IAAA,OAAO;AAQP,IAAA,gBAAgB;;AAMhB,IAAA,YAAY;AAGZ,IAAA,aAAa,CAAC,KAAgC,EAAA;QAC5C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B;;QAGF,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;SAC1D,EAAE,GAAG,CAAC;;AAIT,IAAA,WAAW,CAAC,KAAiB,EAAA;;;AAG3B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;;AAK7B,IAAA,MAAM,CAAC,KAAoB,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;;AAG7E,IAAA,KAAK,CAAC,KAAoB,EAAA;QACxB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;;AAG5E,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,QAAQ,KAAK,CAAC,IAAI;YAChB,KAAK,QAAQ,EAAE;gBACb,IAAI,CAAC,cAAc,EAAE;gBACrB;;YAEF,KAAK,OAAO,EAAE;;gBAEZ,MAAM,GAAG,GAAW,IAAI,CAAC,WAAW,CAAC,eAAe,KAAK,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,CAAC,CAAC;AACrG,gBAAA,IAAI,GAAG,IAAI,CAAC,EAAE;AACZ,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;gBAEzC;;YAEF,KAAK,OAAO,EAAE;;gBAEZ,MAAM,GAAG,GAAW,IAAI,CAAC,WAAW,CAAC,eAAe,KAAK,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,CAAC,CAAC;AACrG,gBAAA,IAAI,GAAG,IAAI,CAAC,EAAE;AACZ,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;;gBAErC;;YAEF,SAAS;AACP,gBAAA,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC;;;;AAOxC,IAAA,SAAS;AAET,IAAA,YAAY;AAsDZ,IAAA,UAAU;AAEV,IAAA,gBAAgB;AA2ChB,IAAA,MAAM;AACN,IAAA,mBAAmB;AAUnB,IAAA,WAAA,GAAA;AAtMA,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAClD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AAC/B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AACtC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AAC/B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC;AAE9B,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAa,OAAO,CAAC;AAChD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;AAE3C,QAAA,IAAA,CAAA,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC;AAEnC,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,iBAAiB,CAAC;AAC3C,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,MAAK;YAC7B,IAAI,IAAI,CAAC,WAAW;AAAE,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAChD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;AACtF,SAAC,CAAC;;AAGF,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;QAkE5B,IAAS,CAAA,SAAA,GAAG,KAAK;AACjB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,MAAK;AACzB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;AACnC,YAAA,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE;AAC1B,gBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC1B,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;;AAEzB,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE;AACxB,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAC;AAClB,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;AAErB,SAAC,CAAC;QAIM,IAAU,CAAA,UAAA,GAAa,EAAE;AAGjC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAa,EAAE,CAAC;AACrC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAS,SAAS,CAAC,KAAK,CAAC;AAC3C;;AAEG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAW,EAAE,CAAC;AAChC;;;;;AAKG;QACH,IAAM,CAAA,MAAA,GAAG,KAAK,EAAU;AAExB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,aAAa,CAAC,kBAAkB,CAAC;AAE1D;;AAEG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,KAAK,CAAC;AACnC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAU,KAAK,CAAC;AAE7B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoC,SAAS,CAAC;QAE7D,IAAM,CAAA,MAAA,GAAG,KAAK,EAAgB;AAE9B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,MAAK;AACzB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC;AAAE,gBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5B,SAAC,CAAC;AAEF;;AAEG;QACH,IAAK,CAAA,KAAA,GAAG,KAAK,EAA+B;AAE5C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAW,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAW,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAEtE,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAA6B,EAAE,CAAC;AAClD,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAA0C,MAAK;YACvE,MAAM,CAAC,GAA4C,EAAE;AACrD,YAAA,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,KAAI;gBAC9C,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AAC3B,oBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAAE,wBAAA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;AACtB,oBAAA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,SAAS,EAAE;AAC9C,iBAAC,CAAC;AACJ,aAAC,CAAC;AACF,YAAA,OAAO,CAAC;AACV,SAAC,CAAC;QAEF,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAgB,MAAM,IAAI,CAAC;AACrD;;AAEG;QACH,IAAU,CAAA,UAAA,GAAG,MAAM,EAAY;QAC/B,IAAQ,CAAA,QAAA,GAAG,MAAM,EAAc;QAC/B,IAAO,CAAA,OAAA,GAAG,MAAM,EAAc;QAC9B,IAAI,CAAA,IAAA,GAAG,MAAM,EAAW;QACxB,IAAW,CAAA,WAAA,GAAG,MAAM,EAA0B;AAE9C;;;;AAIG;QACH,IAAe,CAAA,eAAA,GAAG,MAAM,EAAc;AAEtC;;AAEG;QACH,IAAY,CAAA,YAAA,GAAG,MAAM,EAAY;QAEjC,IAAO,CAAA,OAAA,GAAG,MAAM,EAAwD;;QAGxE,IAAK,CAAA,KAAA,GAAe,EAAE;QAEtB,IAAc,CAAA,cAAA,GAAG,KAAK;AAGtB,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,MAAK;;AAEhC,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE;gBACxB,SAAS,CAAC,MAAK;oBACb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;oBAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AACvC,iBAAC,CAAC;AACN,SAAC,CAAC;AAGA,QAAA,IAAI,CAAC;AACF,aAAA,EAAE,CAAC,YAAY,CAAC,kBAAkB;aAClC,IAAI,CAAC,kBAAkB,EAAE;AACzB,aAAA,SAAS,CAAC,CAAC,CAAW,KAAI;AACzB,YAAA,MAAM,SAAS,GAAG,CAAC,CAAC,IAAiB;;AAErC,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC;AACnG,SAAC,CAAC;;IAGN,WAAW,GAAA;QACT,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;;IAGjG,kBAAkB,CAAC,KAAiB,EAAE,KAAa,EAAA;AACjD,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;AAChF,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC;;;IAIrC,MAAM,CAAC,CAAW,EAAE,GAAgC,EAAA;AAClD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACvC,QAAA,MAAM,OAAO,GAAG,KAAK,EAAE;QACvB,IAAI,OAAO,EAAE;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;AAC5D,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC;;;AAIjC,IAAA,UAAU,CAAC,GAAa,EAAA;QACtB,IAAI,IAAI,CAAC,KAAK,EAAE;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;aACrC;AACH,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACnG,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;AACjC,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,IAAuB,EAAE,CAAS,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrH,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACzC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAIpC,IAAA,kBAAkB,CAAC,GAAa,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,IAAuB,EAAE,CAAS,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;;AAGvH,IAAA,YAAY,CAAC,GAAa,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACzC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG1B,cAAc,CAAC,GAAW,EAAE,GAAgC,EAAA;AAClE,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC;;IAGhD,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;;gBAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,SAAS,CAAC;;;AAIxD,IAAA,WAAW,CAAC,MAAoB,EAAA;QAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,MAAM,CAAC,EAAE,GAAG,SAAS,GAAG,MAAM;QAC9E,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;;IAG1E,cAAc,CAAC,MAAM,GAAG,KAAK,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpF,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;;;IAI9C,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC;AAC/B,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,CAAC,GAAG,CAAC;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;;IAGnB,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC;gBAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;;;AAIzC,IAAA,UAAU,CAAC,EAAa,EAAA;QACtB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC;;AAGjC,IAAA,QAAQ,CAAC,IAAY,EAAA;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC;aACF,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;AAC7C,aAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1C,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAiB,KAAI;AAC1B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;gBAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;aACxC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;;;AAGhB,SAAA,CAAC;;IAGN,OAAO,CAAC,KAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAA;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;AACjC,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;aACf;AACL,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;gBAC5D,IAAI,OAAO,EAAE;;AAEX,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;qBACtB,IAAI,QAAQ,EAAE;;AAEnB,oBAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;AACrC,wBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK;AAC5E,wBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK;AAC1E,wBAAA,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE;AAC3C,4BAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;;;yBAEpB;AACL,wBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC;;;qBAEtB;AACL,oBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC;;;;AAEtB,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;AAEjD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,KAAK;AACtE,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAEtB,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,IAAuB,EAAE,CAAS,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrH,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACzC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,QAAA,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;;IAG9D,oBAAoB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;AAGtD;;;;AAIG;AACH,IAAA,aAAa,CAAC,KAAuC,EAAA;AACnD,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;AACjD,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;AAE3B,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAEpB,MAAM,aAAa,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAExD,IAAI,aAAa,EAAE;AACjB,gBAAA,KAAK,CAAC,MAAM,GAAG,SAAS;;AAG1B,YAAA,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAoB,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAe,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACpI,iBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1C,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,GAAiB,KAAI;AAC1B,oBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;oBAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACvC,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AAEvD,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;oBAClC,IAAI,SAAS,EAAE;AACb,wBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;;iBAE7B;gBACD,KAAK,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG;AAClC,aAAA,CAAC;;;AAIR,IAAA,gBAAgB,CAAC,YAA0B,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAE3B,QAAA,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;AAC7B,cAAE;gBACE,KAAK,EAAE,YAAY,CAAC,aAAa;AACjC,gBAAA,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,UAAU;AACrC,gBAAA,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC;AAC3B;cACD,SAAS;;AAGf,IAAA,cAAc,CAAC,OAAoB,EAAA;AACjC,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,KAAI;AAC/B,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,EAAE;YAEjC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAG,CAAC,SAAS,CAAC,YAAY,CAAC;;YAGzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,IAAI,EAAE;AAElD,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACvB,gBAAA,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,YAAY;AAChF,gBAAA,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAEhG,gBAAA,IAAI,WAAW,IAAI,WAAW,EAAE;oBAC9B,EAAE,GAAG,IAAI,CAAC,EAAG,CAAC,GAAG,CAAC,EAAE,CAAC;;AAEzB,aAAC,CAAC;;YAGF,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YACxH,IAAI,gBAAgB,EAAE;gBACpB,EAAE,GAAG,IAAI,CAAC,EAAG,CAAC,IAAI,CAAC,aAAc,CAAC,EAAE,CAAC;;AAGvC,YAAA,IAAI,CAAC,EAAE;gBAAE,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC;AAEhF,YAAA,MAAM,GAAG,GAAa;gBACpB,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,EAAE,EAAE,SAAS,CAAC,EAAE;gBAChB,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,MAAM,EAAE,EAAE,CAAC,MAAM;gBACjB,YAAY,EAAE,SAAS,CAAC,IAAI;gBAC5B,SAAS;AACT,gBAAA,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;aAC3H;AAED,YAAA,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;AACZ,kBAAE;AACE,oBAAA,YAAY,EAAE,MAAM;AACpB,oBAAA,YAAY,EAAE,QAAQ;AACtB,oBAAA,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG;AAClB,oBAAA,IAAI,EAAE,EAAE,UAAU,EAAE,yBAAyB,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,EAAE;AACxF;AACH,kBAAE;AACE,oBAAA,YAAY,EAAE,MAAM;oBACpB,YAAY,EAAE,mBAAmB,CAAC,cAAc;AAChD,oBAAA,KAAK,EAAE,gBAAgB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,SAAS,CAAC;iBACpF;YACL,IAAI,EAAE,CAAC,WAAW;AAAE,gBAAA,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC;YACpH,IAAI,EAAE,CAAC,IAAI;AAAE,gBAAA,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC;YAC/F,IAAI,EAAE,CAAC,KAAK;AAAE,gBAAA,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC;AAElG,YAAA,OAAO,GAAG;AACZ,SAAC,CAAC;;AAGI,IAAA,gBAAgB,CAAC,GAAiB,EAAA;AACxC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AACrB,QAAA,OAAO,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;;IAGnF,4BAA4B,CAAC,YAAoB,EAAE,YAAqC,EAAA;AACtF,QAAA,MAAM,IAAI,GAA6B;AACrC,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,KAAK,EAAE,YAAY,CAAC,YAAY;SACjC;;;;AAID,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY;AACtC,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC;AAClD,aAAA,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;AAK/E,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AACpE,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;AAGlB,QAAA,OAAO,IAAI;;AAGb,IAAA,cAAc,CAAC,SAAsB,EAAA;AACnC,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACvE,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE;gBACvB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;;AAEvC,SAAC,CAAC;;IAGJ,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;aACF,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI;AAC3C,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAuB,KAAI;AAChC,gBAAA,IAAI,CAAC,EAAE,GAAG,GAAG;AACb,gBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,gBAAA,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;;AAE7B,SAAA,CAAC;;IAGN,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;;+GArgBlB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,GAAA,EAAA,MAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EArBjB,EAAE,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAiCQ,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAET,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtG5C,ypCAuCA,EAAA,MAAA,EAAA,CAAA,kgCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED8BI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,oBAAoB,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACvB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAUT,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAxB7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EACb,UAAA,EAAA,IAAI,EACL,SAAA,EAAA,EAAE,EACJ,OAAA,EAAA;wBACP,OAAO;wBACP,OAAO;wBACP,aAAa;wBACb,eAAe;wBACf,mBAAmB;wBACnB,aAAa;wBACb,oBAAoB;wBACpB,mBAAmB;wBACnB,uBAAuB;wBACvB;qBACD,EAGK,IAAA,EAAA;AACJ,wBAAA,QAAQ,EAAE,GAAG;AACb,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,eAAe,EAAE;AAClB,qBAAA,EAAA,QAAA,EAAA,ypCAAA,EAAA,MAAA,EAAA,CAAA,kgCAAA,CAAA,EAAA;wDA0BD,aAAa,EAAA,CAAA;sBADZ,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;gBAcvC,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gBAWrC,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;gBAM7C,KAAK,EAAA,CAAA;sBADJ,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;gBAM7C,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;gBA+CF,UAAU,EAAA,CAAA;sBAA1C,WAAW;uBAAC,kBAAkB;;;MElLpB,qBAAqB,CAAA;AAPlC,IAAA,WAAA,GAAA;AAQU,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;AAE9C,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAqB;AAChD,QAAA,IAAA,CAAA,OAAO,GAAqB,QAAQ,CAAW,MAAK;AAClD,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;YAC5B,OAAO,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE;AACjF,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAW,EAAE,CAAC;QACvC,IAAY,CAAA,YAAA,GAAG,MAAM,EAAU;AAChC;+GAXY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,ECblC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0QAQA,EDCY,MAAA,EAAA,CAAA,qhBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,mFAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIrB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cACtB,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,0QAAA,EAAA,MAAA,EAAA,CAAA,qhBAAA,CAAA,EAAA;;;MEEtB,mBAAmB,CAAA;AAPhC,IAAA,WAAA,GAAA;QAQE,IAAU,CAAA,UAAA,GAAG,KAAK,EAAqB;QACvC,IAAU,CAAA,UAAA,GAAG,MAAM,EAAiB;AAiBrC;IAfC,MAAM,UAAU,CAAC,OAAyB,EAAA;AACxC,QAAA,MAAM,IAAI,GAAqB,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS;QAC3E,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AAC9B,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;;AACX,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;IAGzB,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;AAGlB,IAAA,KAAK,CAAC,IAAmB,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;+GAjBjB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,ECXhC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0VAIA,EDGY,MAAA,EAAA,CAAA,gDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAI5B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,0VAAA,EAAA,MAAA,EAAA,CAAA,gDAAA,CAAA,EAAA;;;MEqB7B,uBAAuB,CAAA;AARpC,IAAA,WAAA,GAAA;AASU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;;AAG7B,QAAA,IAAA,CAAA,cAAc,GAAa;AAClC,YAAA,mBAAmB,CAAC,SAAS;AAC7B,YAAA,mBAAmB,CAAC,qBAAqB;AACzC,YAAA,mBAAmB,CAAC,SAAS;AAC7B,YAAA,mBAAmB,CAAC,cAAc;AAClC,YAAA,mBAAmB,CAAC,YAAY;AAChC,YAAA,mBAAmB,CAAC,qBAAqB;AACzC,YAAA,mBAAmB,CAAC,yBAAyB;AAC7C,YAAA,mBAAmB,CAAC,IAAI;AACxB,YAAA,mBAAmB,CAAC,MAAM;AAC1B,YAAA,mBAAmB,CAAC,QAAQ;AAC5B,YAAA,kBAAkB,CAAC,aAAa;AAChC,YAAA,kBAAkB,CAAC,MAAM;AACzB,YAAA,kBAAkB,CAAC,YAAY;AAC/B,YAAA,kBAAkB,CAAC,EAAE;AACrB,YAAA,kBAAkB,CAAC;SACpB;QAED,IAAgB,CAAA,gBAAA,GAAmB,EAAE;AAErC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAgB,IAAI,CAAC;QAEnC,IAAU,CAAA,UAAA,GAAG,KAAK,EAAqB;AACvC,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAAiB,MAAK;AACvD,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK;AACtB,kBAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;kBACrH,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AACjD,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,MAAK;AAC9B,YAAA,SAAS,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9D,SAAC,CAAC;QAEF,IAAgB,CAAA,gBAAA,GAAG,KAAK,EAAwB;QAEhD,IAAc,CAAA,cAAA,GAAG,MAAM,EAA4B;AAsDpD;;AAzFU,IAAA,cAAc;AAqCvB,IAAA,cAAc,CAAC,KAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGjC,IAAA,cAAc,CAAC,GAA+B,EAAA;QAC5C,GAAG,CAAC,eAAe,EAAE;AAErB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;;AAG7B,IAAA,mBAAmB,CAAC,IAAwB,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;QACpB,MAAM,GAAG,GAAiC,EAAE;AAC5C,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAS,KAAI;gBAC9B,MAAM,GAAG,GAAoC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAClF,gBAAA,IAAI,GAAG;AACL,oBAAA,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KACpB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;wBACX,EAAE,EAAE,EAAE,CAAC,EAAE;AACT,wBAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AACzB,qBAAA,CACF;AACL,aAAC,CAAC;;QAGJ,IAAI,oBAAoB,GAAiC,EAAE;AAC3D,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;YACrD,IAAI,EAAE,EAAE;gBACN,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AACvB,oBAAA,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;wBAC5B,EAAE,EAAE,EAAE,CAAC,EAAE;AACT,wBAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AACzB,wBAAA,YAAY,EAAE;qBACf;AACH,iBAAC,CAAC;;;AAIN,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;aACnF,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;;aAEzD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC;;AAExC,aAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,gBAAgB;;AAGtB,IAAA,SAAS,CAAC,GAAoB,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE;;+GA3F7C,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BpC,w2BAsBA,EAAA,MAAA,EAAA,CAAA,2lCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDCY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC7C,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIrB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;+BACE,0BAA0B,EAAA,UAAA,EACxB,IAAI,EACP,OAAA,EAAA,CAAC,OAAO,EAAE,WAAW,EAAE,eAAe;wBAC7C,eAAe,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,w2BAAA,EAAA,MAAA,EAAA,CAAA,2lCAAA,CAAA,EAAA;;;AEfnC;;AAEG;MAUU,uBAAuB,CAAA;AATpC,IAAA,WAAA,GAAA;AAUmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;QAE/B,IAAe,CAAA,eAAA,GAAG,KAAK,EAAW;QAClC,IAAiB,CAAA,iBAAA,GAAG,KAAK,EAAW;AAEpC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAiB;AAC9C,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAe,MAAK;AAC1C,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;YAC9B,IAAI,EAAE,EAAE;gBACN,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAuC,KAAI;oBAChG,IAAI,KAAK,EAAE;AACT,wBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC;AAChE,wBAAA,KAAK,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY;;AAE5D,iBAAC,CAAC;;AAEJ,YAAA,OAAO,EAAE;AACX,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAW,MAAK;YAChC,MAAM,WAAW,GAAa,EAAE;AAChC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,YAAA,IAAI,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE;gBAC9B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAqB,KAAI;AACnD,oBAAA,MAAM,EAAE,GAAuB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,oBAAA,IAAI,EAAE;AAAE,wBAAA,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9B,iBAAC,CAAC;;AAEJ,YAAA,OAAO,WAAW;AACpB,SAAC,CAAC;QAEF,IAAU,CAAA,UAAA,GAAG,MAAM,EAAU;AAY9B;AA3CC,IAAA,OAAO;AAiCP,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,KAAK,MAAM;YAAE;AAC/C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGzB,QAAA,IAAI,CAAC,KAAK,CAAC,aAA6B,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACtF,YAAA,IAAI,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,IAAI;AAAE,gBAAA,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAC9D,gBAAA,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnC,SAAC,CAAC;;+GA5CO,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBpC,2iCAyBA,EAAA,MAAA,EAAA,CAAA,k4EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDVY,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACvB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,uBAAuB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAI3C,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EACpB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,eAAe;wBACvB,gBAAgB;AAChB,wBAAA,aAAa,EAAE,YAAY,EAAE,uBAAuB,CAAC,EAAA,QAAA,EAAA,2iCAAA,EAAA,MAAA,EAAA,CAAA,k4EAAA,CAAA,EAAA;;;ME0C5C,mBAAmB,CAAA;AAtBhC,IAAA,WAAA,GAAA;AAuBE,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAClD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AAE/B;;;;;AAKG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAqB,SAAS,CAAC;AAC7C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,CAAC;AAElD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAkC,SAAS,CAAC;AAC/D,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAiB,EAAE,CAAC;AAKzC,QAAA,IAAA,CAAA,KAAK,GAAwB,QAAQ,CAAC,MAAK;YACzC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;YACnC,MAAM,EAAE,GAAwB,EAAE;;;AAGlC,YAAA,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzI,SAAC,CAAC;AACF,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,MAAK;AACzB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBAClC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;AAE3B,SAAC,CAAC;QAEF,IAAI,CAAA,IAAA,GAAG,MAAM,EAAE;QACf,IAAQ,CAAA,QAAA,GAAG,MAAM,EAAE;QAGnB,IAAsB,CAAA,sBAAA,GAAsB,EAAE;AAE9C,QAAA,IAAA,CAAA,kBAAkB,GAAiB;AACjC,YAAA,YAAY,EAAE,EAAE;YAChB,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACtC,WAAW,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YAC5C,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACrC,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;AACtC,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,MAAM,EAAE;SACT;QAID,IAAO,CAAA,OAAA,GAAmB,EAAE;QAE5B,IAAO,CAAA,OAAA,GAA6C,EAAE;AAiIvD;AArLC,IAAA,oBAAoB;AACpB,IAAA,OAAO;AAaP,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;;AAU7C,IAAA,YAAY;AAaZ,IAAA,kBAAkB;AAgBlB,IAAA,cAAc,CAAC,CAAS,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,YAAY,GAAI,IAAI,CAAC,YAAoB,CAAC,CAAC,CAAC,GAAG,SAAS;;AAGtE,IAAA,iBAAiB,CAAC,CAAS,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAyB;;IAGvD,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;;AAGrF,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;AAG1B,IAAA,YAAY,CAAC,IAAe,EAAA;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,CAAC;YAAE;QACR,IAAI,CAAC,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAoB,CAAC;;AACnD,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAyB,CAAC;;AAGpD,IAAA,aAAa,CAAC,MAAoB,EAAA;AAChC,QAAA,MAAM,CAAC,GAAkC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;AAC/E,QAAA,IAAI,CAAC;YACH,IAAI,CAAC,WAAW,CAAC;gBACf,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,UAAU,EAAE,MAAM,CAAC,YAAY;AAC/B,gBAAA,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG;AAClB,aAAA,CAAC;;IAGN,MAAM,WAAW,CAAC,CAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC;QAErB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;;;QAGzC,IAAI,CAAC,YAAY,GAAG,EAAE,IAAI,cAAc,IAAI,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;AAEhH,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,YAAY,GAAG;gBAClB,GAAG,IAAI,CAAC,kBAAkB;gBAC1B,YAAY,EAAE,CAAC,CAAC;aACjB;;;AAIL,IAAA,YAAY,CAAC,IAAmB,EAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;AACxB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,SAAS;AACzD,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY;;;IAI1D,gBAAgB,CAAC,QAAgB,EAAE,KAAgC,EAAA;QACjE,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;QACxB,MAAM,CAAC,GAAQ,EAAE;AACjB,QAAA,CAAC,CAAC,QAAQ,CAAC,GAAG;AACZ,cAAE;gBACE,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,YAAY,EAAE,KAAK,CAAC;AACrB;cACD,SAAS;AAEb,QAAA,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;YAClC,GAAG,IAAI,CAAC,YAAY;AACpB,YAAA,GAAG;AACJ,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY;;AAGxD,IAAA,cAAc,CAAC,MAAc,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;AACxB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE;AAChF,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;YACxD,IAAI,GAAG,KAAK,CAAC,CAAC;AAAE,gBAAA,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;;gBACjC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;AACrD,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;;;IAIjE,UAAU,GAAA;QACR,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;;IAI/G,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,kBAAkB;AAC/H,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE;AACpD,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,QAAQ,EAAE;AACnC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAClG,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE;gBAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,SAAS;gBAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;;iBACpC;AACL,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE;;;;IAK1D,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;IAGtB,UAAU,CAAC,CAAU,EAAE,CAAU,EAAA;QAC/B,IAAI,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;AACxB,QAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;AAAE,YAAA,OAAO,KAAK;QAE5F,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAW,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAW,CAAC;AAEtC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK;AAE/C,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,KAAK;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAE,CAAS,CAAC,GAAG,CAAC,EAAG,CAAS,CAAC,GAAG,CAAC,CAAC;AAAE,gBAAA,OAAO,KAAK;;AAEtE,QAAA,OAAO,IAAI;;+GApLF,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EC3DhC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,grFA8DA,EDrBI,MAAA,EAAA,CAAA,4vCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,EACvB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,EACvB,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,EACf,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,+BAClB,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKT,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAtB/B,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EACP,OAAA,EAAA;wBACP,WAAW;wBACX,uBAAuB;wBACvB,mBAAmB;wBACnB,uBAAuB;wBACvB,qBAAqB;wBACrB,eAAe;wBACf,aAAa;wBACb,aAAa;wBACb,eAAe;wBACf,eAAe;wBACf,eAAe;wBACf,eAAe;wBACf,kBAAkB;wBAClB;AACD,qBAAA,EAAA,QAAA,EAAA,grFAAA,EAAA,MAAA,EAAA,CAAA,4vCAAA,CAAA,EAAA;;;MEnCU,0BAA0B,CAAA;AATvC,IAAA,WAAA,GAAA;AAUE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AAE3B,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAmB,eAAe,CAAC;AAIrE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,UAAU,CAAC;QAChC,IAAM,CAAA,MAAA,GAAG,KAAK,EAAU;QACxB,IAAW,CAAA,WAAA,GAAG,KAAK,EAAsB;AACzC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoC,SAAS,CAAC;;AAE7D,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAU,KAAK,CAAC;AAkB9B;AA7BC,IAAA,OAAO;AAIP,IAAA,UAAU;IASV,qBAAqB,GAAA;AACnB,QAAA,MAAM,aAAa,GAAoB;AACrC,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,QAAQ,EAAE;SACX;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC;;IAG1E,kBAAkB,GAAA;QAChB,IAAI,IAAI,CAAC,UAAU;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;IAG9C,oBAAoB,GAAA;QAClB,IAAI,IAAI,CAAC,UAAU;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;+GA5BnC,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,ECpBvC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,slBAcA,EDAY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+BAAE,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAEC,iBAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1D,sBAAsB,EACtB,QAAA,EAAA,mFAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,6TAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIjC,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBATtC,SAAS;+BACE,yBAAyB,EAAA,UAAA,EACvB,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,mBAAmB,EAAEE,iBAAe;wBAC1D,sBAAsB;AACtB,wBAAA,eAAe,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,slBAAA,EAAA;;;MEkBlC,2BAA2B,CAAA;AA/BxC,IAAA,WAAA,GAAA;AAgCE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAO;AAC5B,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC;AAC5E,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,+BAA+B,CAAC,CAAC;AAQjF;IANC,OAAO,CAAC,CAAS,EAAE,GAAU,EAAA;QAC3B,GAAG,CAAC,cAAc,EAAE;QACpB,GAAG,CAAC,eAAe,EAAE;AAErB,QAAA,KAAK,CAAC,CAAA,aAAA,EAAgB,CAAC,CAAA,YAAA,CAAc,CAAC;;+GAT7B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EA3B5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+EAAA,CAAA,EAAA,CAAA,CAAA;;4FAkBU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA/BvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EACxB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,EAAE,EACD,QAAA,EAAA;;;;;;;;;GAST,EAcK,IAAA,EAAA;AACJ,wBAAA,qBAAqB,EAAE;AACxB,qBAAA,EAAA,MAAA,EAAA,CAAA,+EAAA,CAAA,EAAA;;;AChCH;;AAEG;;;;"}
@@ -92,10 +92,10 @@ class TreeService {
92
92
  this._resolveChildren(nodeIDs, n.children);
93
93
  });
94
94
  }
95
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
96
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TreeService }); }
95
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
96
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TreeService }); }
97
97
  }
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TreeService, decorators: [{
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TreeService, decorators: [{
99
99
  type: Injectable
100
100
  }] });
101
101
 
@@ -138,10 +138,10 @@ class TreeNodeComponent {
138
138
  ngOnDestroy() {
139
139
  this._subs.forEach((s) => s.unsubscribe());
140
140
  }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TreeNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: TreeNodeComponent, isStandalone: true, selector: "yuv-tree-node", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null }, toggleIcon: { classPropertyName: "toggleIcon", publicName: "toggleIcon", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "treeitem" }, properties: { "class.focused": "this.focused", "attr.aria-selected": "this.selected", "attr.aria-expanded": "this.expanded" } }, ngImport: i0, template: "@if (node().children?.length) {\n <!-- toggle children button-->\n <!-- TODO: title should be i18n -->\n <button class=\"toggle\" (click)=\"toggleExpanded()\">\n <yuv-icon [svg]=\"toggleIcon()\"></yuv-icon>\n </button>\n}\n<div class=\"node-label\" [attr.node-id]=\"node().id\" [ngClass]=\"{ selectable: node().selectable }\" (click)=\"select($event)\">\n @if (node().icon) {\n <yuv-icon class=\"node-icon\" [svg]=\"node().icon!\"></yuv-icon>\n }\n <div class=\"label\">{{ node().label }}</div>\n</div>\n\n@if (node().expanded) {\n <div class=\"children\">\n @for (childNode of node().children; track $index) {\n <yuv-tree-node [toggleIcon]=\"toggleIcon()\" [node]=\"childNode\"></yuv-tree-node>\n }\n </div>\n}\n", styles: [":host-context(:focus).focused>.node-label{background-color:var(--ymt-focus-background);outline:1px solid var(--ymt-text-color-subtle);outline-offset:-3px}:host-context([selectable])[aria-selected=true]>.node-label{background-color:var(--ymt-selection-background)}:host-context([selectable])[aria-selected=true]>.node-label:hover{background-color:var(--ymt-selection-background)}:host{display:grid;grid-template-rows:auto auto;grid-template-columns:var(--toggle-icon-size) 1fr;grid-template-areas:\"toggle label\" \"child child\";align-items:center}:host .node-label{grid-area:label;display:flex;flex-flow:row nowrap;align-items:center}:host .node-label.selectable{cursor:pointer}:host .node-label:hover{background-color:var(--ymt-hover-background)}:host .node-label .label{padding:var(--node-padding);text-align:start;color:var(--ymt-text-color);background-color:transparent;-webkit-user-select:none;user-select:none;flex:1}:host .node-label .node-icon{color:var(--ymt-text-color-subtle)}:host .children{grid-area:child;padding-inline-start:var(--node-indent)}:host[aria-expanded=true] button.toggle{rotate:90deg}:host button.toggle{grid-area:toggle;border:0;padding:2px;border-radius:50%;justify-self:center;align-self:center}\n"], dependencies: [{ kind: "component", type: TreeNodeComponent, selector: "yuv-tree-node", inputs: ["node", "toggleIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: YuvIconComponent, selector: "yuv-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "ngmodule", type: MatTooltipModule }] }); }
141
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TreeNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TreeNodeComponent, isStandalone: true, selector: "yuv-tree-node", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null }, toggleIcon: { classPropertyName: "toggleIcon", publicName: "toggleIcon", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "treeitem" }, properties: { "class.focused": "this.focused", "attr.aria-selected": "this.selected", "attr.aria-expanded": "this.expanded" } }, ngImport: i0, template: "@if (node().children?.length) {\n <!-- toggle children button-->\n <!-- TODO: title should be i18n -->\n <button class=\"toggle\" (click)=\"toggleExpanded()\">\n <yuv-icon [svg]=\"toggleIcon()\"></yuv-icon>\n </button>\n}\n<div class=\"node-label\" [attr.node-id]=\"node().id\" [ngClass]=\"{ selectable: node().selectable }\" (click)=\"select($event)\">\n @if (node().icon) {\n <yuv-icon class=\"node-icon\" [svg]=\"node().icon!\"></yuv-icon>\n }\n <div class=\"label\">{{ node().label }}</div>\n</div>\n\n@if (node().expanded) {\n <div class=\"children\">\n @for (childNode of node().children; track $index) {\n <yuv-tree-node [toggleIcon]=\"toggleIcon()\" [node]=\"childNode\"></yuv-tree-node>\n }\n </div>\n}\n", styles: [":host-context(:focus).focused>.node-label{background-color:var(--ymt-focus-background);outline:1px solid var(--ymt-text-color-subtle);outline-offset:-3px}:host-context([selectable])[aria-selected=true]>.node-label{background-color:var(--ymt-selection-background)}:host-context([selectable])[aria-selected=true]>.node-label:hover{background-color:var(--ymt-selection-background)}:host{display:grid;grid-template-rows:auto auto;grid-template-columns:var(--toggle-icon-size) 1fr;grid-template-areas:\"toggle label\" \"child child\";align-items:center}:host .node-label{grid-area:label;display:flex;flex-flow:row nowrap;align-items:center}:host .node-label.selectable{cursor:pointer}:host .node-label:hover{background-color:var(--ymt-hover-background)}:host .node-label .label{padding:var(--node-padding);text-align:start;color:var(--ymt-text-color);background-color:transparent;-webkit-user-select:none;user-select:none;flex:1}:host .node-label .node-icon{color:var(--ymt-text-color-subtle)}:host .children{grid-area:child;padding-inline-start:var(--node-indent)}:host[aria-expanded=true] button.toggle{rotate:90deg}:host button.toggle{grid-area:toggle;border:0;padding:2px;border-radius:50%;justify-self:center;align-self:center}\n"], dependencies: [{ kind: "component", type: TreeNodeComponent, selector: "yuv-tree-node", inputs: ["node", "toggleIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: YuvIconComponent, selector: "yuv-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "ngmodule", type: MatTooltipModule }] }); }
143
143
  }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TreeNodeComponent, decorators: [{
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TreeNodeComponent, decorators: [{
145
145
  type: Component,
146
146
  args: [{ selector: 'yuv-tree-node', standalone: true, imports: [CommonModule, YuvIconComponent, MatTooltipModule], host: {
147
147
  role: 'treeitem'
@@ -277,10 +277,10 @@ class TreeComponent {
277
277
  ngOnDestroy() {
278
278
  this._observer.disconnect();
279
279
  }
280
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
281
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: TreeComponent, isStandalone: true, selector: "yuv-tree", inputs: { tree: { classPropertyName: "tree", publicName: "tree", isSignal: true, isRequired: true, transformFunction: null }, multiselect: { classPropertyName: "multiselect", publicName: "multiselect", isSignal: true, isRequired: false, transformFunction: null }, selectedNodes: { classPropertyName: "selectedNodes", publicName: "selectedNodes", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange" }, host: { attributes: { "role": "tree" }, listeners: { "keydown": "onKeydown($event)" }, properties: { "class.selectable": "this.selectable", "attr.tabindex": "this.tabindex" }, classAttribute: "yuv-tree" }, providers: [TreeService], ngImport: i0, template: "@for (node of tree().nodes; track node.id) {\n <yuv-tree-node [node]=\"node\"></yuv-tree-node>\n}\n", styles: [":host{--toggle-icon-size: 18px;--node-padding: var(--ymt-spacing-xs);--node-indent: var(--toggle-icon-size)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TreeNodeComponent, selector: "yuv-tree-node", inputs: ["node", "toggleIcon"] }] }); }
280
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
281
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TreeComponent, isStandalone: true, selector: "yuv-tree", inputs: { tree: { classPropertyName: "tree", publicName: "tree", isSignal: true, isRequired: true, transformFunction: null }, multiselect: { classPropertyName: "multiselect", publicName: "multiselect", isSignal: true, isRequired: false, transformFunction: null }, selectedNodes: { classPropertyName: "selectedNodes", publicName: "selectedNodes", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange" }, host: { attributes: { "role": "tree" }, listeners: { "keydown": "onKeydown($event)" }, properties: { "class.selectable": "this.selectable", "attr.tabindex": "this.tabindex" }, classAttribute: "yuv-tree" }, providers: [TreeService], ngImport: i0, template: "@for (node of tree().nodes; track node.id) {\n <yuv-tree-node [node]=\"node\"></yuv-tree-node>\n}\n", styles: [":host{--toggle-icon-size: 18px;--node-padding: var(--ymt-spacing-xs);--node-indent: var(--toggle-icon-size)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TreeNodeComponent, selector: "yuv-tree-node", inputs: ["node", "toggleIcon"] }] }); }
282
282
  }
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TreeComponent, decorators: [{
283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TreeComponent, decorators: [{
284
284
  type: Component,
285
285
  args: [{ selector: 'yuv-tree', standalone: true, imports: [CommonModule, TreeNodeComponent], providers: [TreeService], host: {
286
286
  class: 'yuv-tree',