@dmlibs/dm-cmps 0.0.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dmlibs-dm-cmps.mjs","sources":["../../../projects/dm-cmps/src/lib/utils/dm-cmps-data-source.ts","../../../projects/dm-cmps/src/lib/dm-mat-select/utils.ts","../../../projects/dm-cmps/src/lib/dm-mat-select/dm-mat-select.ts","../../../projects/dm-cmps/src/lib/dm-mat-select/dm-mat-select.html","../../../projects/dm-cmps/src/public-api.ts","../../../projects/dm-cmps/src/dmlibs-dm-cmps.ts"],"sourcesContent":["import { signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { debounceTime, distinctUntilChanged, Subject, Subscription, switchMap } from 'rxjs';\n\nexport interface DmCmpsDataSourceSort {\n direction: 'asc' | 'desc';\n field: string;\n sortFn?: (a: any, b: any) => number;\n}\n\nexport class DmCmpsDataSource<T> implements DmCmpsDataSourceConfig<T> {\n private data: T[];\n private filteredData: T[];\n private _resultData: T[];\n\n public result = signal<T[]>([]);\n\n private paginationEnabled: boolean = false;\n private currentPageIndex: number = 0;\n private pageSize: number = 10;\n private autoPaginationAboveItemsCount: number = 100;\n\n private searchTerm: string = '';\n\n private speratedSearch: boolean = false;\n private filterPredicate: (data: T, filter: string) => boolean = (item: T, filter: string) => {\n if (!item || !filter) {\n return true;\n }\n if (typeof item === 'string') {\n return item.toLowerCase().includes(filter.toLowerCase());\n }\n const match = (term: string) =>\n Object.values(item).some(\n (value) => value != null && value.toString().toLowerCase().includes(term.toLowerCase())\n );\n if (this.speratedSearch) {\n const terms = filter\n .split(' ')\n .map((t) => t.trim())\n .filter((t) => !!t);\n return terms.every((term) => match(term));\n }\n return match(filter);\n };\n\n private filterByObject: Partial<T> | null = null;\n\n private fieldsToSearchIn: string[] = [];\n\n private sortMap: DmCmpsDataSourceSort[] = [];\n private sortFn: ((a: T, b: T) => number) | null = null;\n\n private searchTerms$: Subject<string> = new Subject<string>();\n private searchDebounceTime = signal<number>(300);\n\n private readonly subscription = new Subscription();\n\n /**\n * builds a new DmCmpsDataSource\n * @param initialData The data to be used as datasource\n */\n constructor(initialData: T[] = []) {\n this.data = initialData;\n this.filteredData = [...initialData];\n this._resultData = [...initialData];\n if (\n this.autoPaginationAboveItemsCount > 0 &&\n initialData.length > this.autoPaginationAboveItemsCount\n ) {\n this.paginationEnabled = true;\n }\n this.updateResultSignal();\n\n this.subscription.add(\n toObservable(this.searchDebounceTime)\n .pipe(\n switchMap((debounceMs) =>\n this.searchTerms$.pipe(\n debounceTime(debounceMs),\n distinctUntilChanged((p, c) => p === c)\n )\n )\n )\n .subscribe((term) => {\n this.searchTerm = term;\n this.applySearch();\n })\n );\n // this.searchTerms$\n // .pipe(\n // debounceTime(this.searchDebounceTime),\n // distinctUntilChanged((p, c) => p === c && c != '')\n // )\n // .subscribe((term) => {\n // this.searchTerm = term;\n // this.applySearch();\n // });\n }\n\n private updateResultData() {\n this.applySorting();\n this.applySearch();\n this.updateResultSignal();\n }\n\n disconnect(): void {\n this.subscription.unsubscribe();\n }\n\n setAutoPaginationAboveItemsCount(count: number): void {\n this.autoPaginationAboveItemsCount = count;\n if (count > 0 && this._resultData.length > count) {\n this.paginationEnabled = true;\n } else {\n this.paginationEnabled = false;\n }\n this.updateResultSignal();\n }\n\n applyPagination(pageSize?: number): void {\n if (pageSize !== undefined && pageSize < 5) {\n throw new Error('Page size must be at least 5');\n }\n this.currentPageIndex = 0;\n this.paginationEnabled = true;\n if (pageSize) {\n this.pageSize = pageSize;\n }\n }\n\n setPageSize(pageSize: number): void {\n if (pageSize < 5) {\n throw new Error('Page size must be at least 5');\n }\n this.pageSize = pageSize;\n this.updateResultSignal();\n }\n\n disablePagination(): void {\n this.currentPageIndex = 0;\n this.paginationEnabled = false;\n this.updateResultSignal();\n }\n\n nextPage(): number {\n if (this.pageSize <= 0 || !this.paginationEnabled) {\n return 0;\n }\n const totalPages = Math.ceil(this._resultData.length / this.pageSize);\n if (this.currentPageIndex < totalPages - 1) {\n this.currentPageIndex++;\n }\n this.updateResultSignal();\n return this.currentPageIndex;\n }\n\n previousPage(): number {\n if (this.pageSize <= 0 || !this.paginationEnabled) {\n return 0;\n }\n if (this.currentPageIndex > 0) {\n this.currentPageIndex--;\n }\n this.updateResultSignal();\n return this.currentPageIndex;\n }\n\n firstPage(): number {\n if (this.pageSize <= 0 || !this.paginationEnabled) {\n return 0;\n }\n this.currentPageIndex = 0;\n this.updateResultSignal();\n return this.currentPageIndex;\n }\n\n lastPage(): number {\n if (this.pageSize <= 0 || !this.paginationEnabled) {\n return 0;\n }\n const totalPages = Math.ceil(this._resultData.length / this.pageSize);\n this.currentPageIndex = totalPages - 1;\n this.updateResultSignal();\n return this.currentPageIndex;\n }\n\n getCurrentPageIndex(): number {\n return this.currentPageIndex;\n }\n\n getTotalPagesCount(): number {\n if (this.pageSize <= 0) {\n return 1;\n }\n return Math.ceil(this._resultData.length / this.pageSize);\n }\n\n setSearchDebounceTime(milliseconds: number): void {\n this.searchDebounceTime.set(milliseconds);\n }\n\n setDatasource(newData: T[]) {\n this.data = [...newData];\n this.applyObjectFilter();\n }\n\n private updateResultSignal() {\n const res = (() => {\n if (\n this.pageSize > 0 &&\n (this.paginationEnabled ||\n (this.autoPaginationAboveItemsCount > 0 &&\n this._resultData.length > this.autoPaginationAboveItemsCount))\n ) {\n const startIndex = this.currentPageIndex * this.pageSize;\n return this._resultData.slice(startIndex, startIndex + this.pageSize);\n }\n return this._resultData;\n })();\n this.result.set(res);\n }\n\n // get resultData(): T[] {\n // if (\n // this.pageSize > 0 &&\n // (this.paginationEnabled ||\n // (this.autoPaginationAboveItemsCount > 0 &&\n // this._resultData.length > this.autoPaginationAboveItemsCount))\n // ) {\n // const startIndex = this.currentPageIndex * this.pageSize;\n // return this.filteredData.slice(startIndex, startIndex + this.pageSize);\n // }\n\n // return this.filteredData;\n // }\n\n search(filterTerm: string): void {\n this.searchTerms$.next(filterTerm);\n }\n\n private applySearch(): void {\n if (!this.searchTerm) {\n this._resultData = [...this.filteredData];\n } else {\n this.currentPageIndex = 0;\n this._resultData = this.filteredData.filter((item) =>\n this.filterPredicate(item, this.searchTerm)\n );\n }\n this.updateResultSignal();\n }\n\n setFilterPredicate(predicate: (data: T, filter: string) => boolean): void {\n this.filterPredicate = predicate;\n }\n\n setFieldsToSearchIn(fields: string[]) {\n if (!fields || fields.length === 0) {\n throw new Error('Fields to search in cannot be empty');\n }\n this.fieldsToSearchIn = fields;\n this.setFilterPredicate((item: T, filter: string) => {\n if (!item || !filter) {\n return true;\n }\n if (this.speratedSearch) {\n const terms = filter\n .split(' ')\n .map((t) => t.trim())\n .filter((t) => !!t);\n return terms.every((term) => {\n return this.fieldsToSearchIn.some((field) => {\n const value = (item as any)[field];\n if (value != null) {\n return value.toString().toLowerCase().includes(term.toLowerCase());\n }\n return false;\n });\n });\n }\n return this.fieldsToSearchIn.some((field) => {\n const value = (item as any)[field];\n if (value != null) {\n return value.toString().toLowerCase().includes(filter.toLowerCase());\n }\n return false;\n });\n });\n }\n\n setSortFunction(sortFn: ((a: T, b: T) => number) | null): void {\n this.sortFn = sortFn;\n }\n\n private applySorting() {\n if (this.sortMap.length === 0 && !this.sortFn) {\n return;\n }\n if (this.sortFn) {\n this.filteredData.sort(this.sortFn);\n return;\n }\n\n this.filteredData.sort((a, b) => {\n for (const sort of this.sortMap) {\n let comparison = 0;\n if (sort.sortFn) {\n comparison = sort.sortFn(a, b);\n } else {\n const aValue = (a as any)[sort.field];\n const bValue = (b as any)[sort.field];\n if (isNaN(aValue) || isNaN(bValue)) {\n if (typeof aValue === 'string' && typeof bValue === 'string') {\n comparison = aValue.localeCompare(bValue);\n } else {\n comparison = 0;\n }\n } else if (aValue < bValue) {\n comparison = -1;\n } else if (aValue > bValue) {\n comparison = 1;\n } else {\n comparison = 0;\n }\n }\n\n if (comparison !== 0) {\n return sort.direction === 'asc' ? comparison : -comparison;\n }\n }\n return 0;\n });\n }\n\n sortByFields(sortMap: DmCmpsDataSourceSort[]): void {\n this.sortMap = sortMap;\n this.sortFn = null;\n this.updateResultData();\n }\n\n resetSorting(): void {\n this.sortMap = [];\n this.sortFn = null;\n this.applyObjectFilter();\n }\n\n setFilterByObjectFields(filterObj: Partial<T> | null): void {\n this.filterByObject = filterObj;\n this.applyObjectFilter();\n }\n\n private applyObjectFilter(): void {\n if (!this.filterByObject) {\n this.filteredData = [...this.data];\n } else {\n this.filteredData = this.data.filter((item) => {\n for (const [key, value] of Object.entries(this.filterByObject!)) {\n if ((item as any)[key] !== value) {\n return false;\n }\n }\n return true;\n });\n }\n this.updateResultData();\n }\n\n applySperatedSearch(enabled: boolean): void {\n this.speratedSearch = enabled;\n }\n}\n\ninterface DmCmpsDataSourceConfig<T = any> {\n /**\n * Disconnects the data source and performs any necessary cleanup.\n */\n disconnect: () => void;\n\n /**\n * Sets auto pagination threshold.\n * When the number of items exceeds the given count, pagination will be enabled automatically.\n * Use -1 to disable auto pagination.\n *\n * @param count Number of items threshold\n * @default 100\n */\n setAutoPaginationAboveItemsCount: (count: number) => void;\n\n /**\n * ApplyPagination - Enables pagination with the given page size.\n *\n * @param pageSize Number of items per page, optional, default is 10, must be at least 5\n * @default 10\n */\n applyPagination: (pageSize?: number) => void;\n\n /**\n * Sets the page size for pagination.\n * @param pageSize Number of items per page, must be at least 5\n */\n setPageSize: (pageSize: number) => void;\n\n /**\n * Disables pagination.\n */\n disablePagination: () => void;\n\n /**\n * Moves to the next page and returns the current page index.\n * @returns New current page index\n */\n nextPage: () => number;\n\n /**\n * Moves to the previous page and returns the current page index.\n * @returns New current page index\n */\n previousPage: () => number;\n\n /**\n * Moves to the first page and returns the current page index.\n * @returns New current page index\n */\n firstPage: () => number;\n\n /**\n * Moves to the last page and returns the current page index.\n * @returns New current page index\n */\n lastPage: () => number;\n\n /**\n * Gets the current page index.\n * @returns Current page index\n */\n getCurrentPageIndex: () => number;\n\n /**\n * Gets the total number of pages.\n * @returns Total pages count\n */\n getTotalPagesCount: () => number;\n\n /**\n * Sets the debounce time for search input.\n * @param milliseconds Debounce time in milliseconds\n * @default 300\n */\n setSearchDebounceTime: (milliseconds: number) => void;\n\n /**\n * Sets the data source.\n * @param newData New data array\n */\n setDatasource: (newData: T[]) => void;\n\n /**\n * Performs a search with the given filter term.\n * @param filterTerm The term to filter the data\n */\n search: (filterTerm: string) => void;\n\n /**\n * Sets the filter predicate function.\n * @param predicate Function to filter data items\n *\n * @default - A default predicate that checks if the item includes the filter term in any of its non Object properties.\n */\n setFilterPredicate: (predicate: (data: T, filter: string) => boolean) => void;\n\n /**\n * Sets the fields to search in.\n * @param fields Array of field names to search in\n *\n * @default - All non Object properties of the data items.\n */\n setFieldsToSearchIn: (fields: string[]) => void;\n\n /**\n * Sets a custom sort function.\n * @param sortFn Custom sort function\n *\n * @default - No custom sort function.\n */\n setSortFunction: (sortFn: ((a: T, b: T) => number) | null) => void;\n\n /**\n * Sorts the data by the given fields and directions.\n * @param sortMap\n * @default - No sorting applied.\n */\n sortByFields: (sortMap: DmCmpsDataSourceSort[]) => void;\n\n /**\n * Resets any applied sorting.\n */\n resetSorting: () => void;\n\n /**\n * Sets filter by object fields.\n * @param filterObj Object with fields and values to filter by\n * @default null (no filtering)\n */\n setFilterByObjectFields: (filterObj: Partial<T> | null) => void;\n\n /**\n * Enables or disables separated search.\n * When enabled, the search term is split by spaces and each term is searched separately.\n * @param enabled true to enable separated search, false to disable\n * @default false\n */\n applySperatedSearch: (enabled: boolean) => void;\n}\n","import {\n Input,\n InputSignal,\n InputSignalWithTransform,\n ModelSignal,\n OutputEmitterRef,\n} from '@angular/core';\nimport { DmMatSelectOutput } from './dm-mat-select';\nimport { FormControl } from '@angular/forms';\nimport { MatSelectChange } from '@angular/material/select';\n\nexport const SEARCH_SECTION_BG_COLOR_VAR = '--dm-mat-select-search-section-bg-color';\nexport const SEARCH_SECTION_BG_COLOR_DEFAULT_VALUE = '#faf9fd';\n\n/**\n * Public API for <dm-mat-select>\n *\n * This interface describes all inputs, outputs, and configuration options.\n * It is used only for documentation and IntelliSense — not for runtime behavior.\n */\nexport interface DmMatSelectConfig<T = any> {\n /**\n * CSS classes applied to the mat-form-field element.\n * ```\n * type string\n * ```\n *\n */\n formFieldClass?: InputSignal<string>;\n\n /**\n * CSS classes applied to the wrapper div element.\n * ```\n * type string\n * ```\n *\n */\n wrapperClass?: InputSignal<string>;\n\n /**\n * Appearance style of the select component.\n * ```\n * type 'fill' | 'outline'\n * ```\n *\n * @default fill\n */\n appearance?: InputSignal<'fill' | 'outline'>;\n\n /**\n * Enables multiple selection mode.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n multiple?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Enables a \"Select All\" option in the dropdown.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n selectAllEnabled?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Text of the \"Select All\" checkbox.\n * ```\n * type string\n * ```\n *\n * @default 'בחר הכל'\n */\n selectAllLabel?: InputSignal<string>;\n\n /**\n * Label shown in the form field.\n * ```\n * type string\n * ```\n *\n * @default ''\n */\n label?: InputSignal<string>;\n\n /**\n * The list of items shown in the dropdown.\n * ```\n * type T[]\n * ```\n *\n * @default []\n */\n options: InputSignal<T[]>;\n\n /**\n * The property to use as the unique identifier of each item.\n * ```\n * type keyof T\n * ```\n *\n * @default '_id'\n */\n optionValueKey?: InputSignal<keyof T>;\n\n /**\n * The property to use as the display label.\n * ```\n * type keyof T\n * ```\n *\n * @default 'name'\n */\n optionLabelKey?: InputSignal<keyof T>;\n\n /**\n * Enables searching inside the dropdown.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n searchable?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Function to filter options based on search input.\n * ```\n * type ((option: T, filter: string) => boolean) | null\n * ```\n *\n * @default null\n */\n filterPredicate?: InputSignal<((option: T, filter: string) => boolean) | null>;\n\n /**\n * Marks field as required.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n required?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Disables the component.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n disabled?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Custom error message.\n * ```\n * type string | null\n * ```\n *\n * @default null\n */\n error?: InputSignal<string | null>;\n\n /**\n * Placeholder text for the search input.\n * ```\n * type string\n * ```\n *\n * @default 'חפש...'\n */\n searchPlaceholder?: InputSignal<string>;\n\n /**\n * Enables an empty option in the select dropdown.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n emptyOption?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Label for the empty option.\n * ```\n * type string\n * ```\n *\n * @default 'ללא'\n */\n emptyOptionLabel?: InputSignal<string>;\n\n /**\n * Value for the empty option.\n * ```\n * type null | string | number\n * ```\n *\n * @default null\n */\n emptyOptionValue?: InputSignal<T | null>;\n\n /**\n * Function to format option names for display.\n * ```\n * type (option: T) => string\n * ```\n *\n */\n optionNameFormat?: InputSignal<((option: T) => string) | null>;\n\n /**\n * Width of the select panel.\n * To set the panel width to match the trigger width, use 'auto'.\n * To set a custom width, provide a CSS width value (e.g., '300px', '50%', etc.).\n * To have the panel width adjust to its content, set to null or empty string.\n * ```\n * type string | null\n * ```\n *\n * @default 'auto'\n */\n panelWidth?: InputSignal<string | null>;\n\n /**\\\n * Custom CSS classes applied to the select panel.\n * Can be a string, array of strings, Set of strings, or an object with class names as keys and boolean values.\n * Accepts the same values as ngClass.\n * ```\n * type string | string[] | Set<string> | { [key: string]: any }\n * ```\n *\n * @default ''\n */\n panelClass?: InputSignal<string | string[] | Set<string> | { [key: string]: any }>;\n\n /**\\\n * Background color for the search section.\n * Uses CSS variable '--dm-mat-select-search-section-bg-color'.\n * ```\n * type string | null\n * ```\n *\n * @default '#faf9fd'\n */\n searchSectionBackgroundColor?: InputSignal<string | null>;\n\n /**\n * Sort selected items at top of the list.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n sortBySelectedOnTop?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * A signal that holds the selected value(s) of the select component.\n * ```\n * type ModelSignal<DmMatSelectOutput<T>>\n * ```\n *\n * @default null\n */\n value?: ModelSignal<DmMatSelectOutput<T>>;\n\n /**\n * FormControl to bind to the select component.\n * ```\n * type FormControl<DmMatSelectOutput<T>> | null\n * ```\n *\n * @default null\n */\n formControl?: InputSignal<FormControl<DmMatSelectOutput<T>> | null>;\n\n /**\n * Event emitted when the selection changes.\n * ```\n * type OutputEmitterRef<MatSelectChange<DmMatSelectOutput<T>>>\n * ```\n *\n *\n */\n selectionChange?: OutputEmitterRef<MatSelectChange<DmMatSelectOutput<T>>>;\n\n /**\n * Icon name to display in the select trigger.\n * Can be a Material icon name or a Bootstrap icon html (like <i class=\"bi bi-name\"></i>).\n * ```\n * type string | null\n * ```\n *\n * @default null\n */\n icon?: InputSignal<string | null>;\n\n /**\n * Label to show in disabled option when there is no data to display.\n * ```\n * type string\n * ```\n *\n * @default 'אין נתונים להצגה'\n */\n noDataLabel?: InputSignal<string>;\n\n /**\n * Cleans the search input after selecting an option.\n * ```\n * type boolean\n * ```\n *\n * @default false\n */\n clearSearchAfterSelect?: InputSignalWithTransform<boolean, unknown>;\n\n /**\n * Tooltip text for the clear search button.\n * ```\n * type string\n * ```\n * @default 'נקה חיפוש'\n */\n clearSearchButtonTooltip?: InputSignal<string>;\n\n /**\n * Automatically focuses the search input when the panel opens.\n * ```\n * type boolean\n * ```\n *\n * @default true\n */\n focusSearchInputOnPanelOpen?: InputSignalWithTransform<boolean, unknown>;\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n effect,\n input,\n model,\n OnDestroy,\n output,\n signal,\n} from '@angular/core';\nimport { MatFormFieldModule, MatSuffix } from '@angular/material/form-field';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { DmCmpsDataSource } from '../utils/dm-cmps-data-source';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatOptionSelectionChange } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport {\n DmMatSelectConfig,\n SEARCH_SECTION_BG_COLOR_DEFAULT_VALUE,\n SEARCH_SECTION_BG_COLOR_VAR,\n} from './utils';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nexport type DmMatSelectOutput<T> = T | T[] | string | string[] | number | number[] | null;\ntype DmMatSelectOption<T> = T & { __dmMatSelectFormattedName: string };\n\n@Component({\n selector: 'dm-mat-select',\n standalone: true,\n imports: [\n MatFormFieldModule,\n MatSelectModule,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatInputModule,\n MatCheckboxModule,\n MatIcon,\n MatButtonModule,\n MatTooltip,\n MatSuffix,\n ],\n templateUrl: './dm-mat-select.html',\n styleUrl: './dm-mat-select.scss',\n})\nexport class DmMatSelect<T = any> implements DmMatSelectConfig<T>, OnDestroy {\n formFieldClass = input<string>('');\n wrapperClass = input<string>('');\n appearance = input<'fill' | 'outline'>('fill');\n multiple = input(false, { transform: booleanAttribute });\n selectAllEnabled = input(false, { transform: booleanAttribute });\n selectAllLabel = input<string>('בחר הכל');\n label = input<string>('');\n options = input<T[]>([]);\n optionValueKey = input<keyof T>('_id' as keyof T);\n optionLabelKey = input<keyof T>('name' as keyof T);\n searchable = input(false, { transform: booleanAttribute });\n\n required = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n error = input<string | null>(null);\n\n searchPlaceholder = input<string>('חפש...');\n\n emptyOption = input(false, { transform: booleanAttribute });\n emptyOptionLabel = input<string>('ללא');\n emptyOptionValue = input<T | null>(null);\n\n optionNameFormat = input<((option: T) => string) | null>(null);\n private _optionNameFormat: ((option: T) => string) | null = null;\n\n protected datasource = signal<DmCmpsDataSource<DmMatSelectOption<T>>>(\n new DmCmpsDataSource<DmMatSelectOption<T>>()\n );\n\n value = model<DmMatSelectOutput<T>>(null);\n\n formControl = input<FormControl<DmMatSelectOutput<T>> | null>(null);\n panelWidth = input<string | null>('auto');\n panelClass = input<string | string[] | Set<string> | { [key: string]: any }>('');\n searchSectionBackgroundColor = input<string | null>(SEARCH_SECTION_BG_COLOR_DEFAULT_VALUE);\n\n sortBySelectedOnTop = input(false, { transform: booleanAttribute });\n\n private internalControl = new FormControl<DmMatSelectOutput<T>>(null);\n\n protected control = computed(() => this.formControl() ?? this.internalControl);\n\n selectionChange = output<MatSelectChange<DmMatSelectOutput<T>>>();\n\n icon = input<string | null>(null);\n\n protected isBootstrapIcon = computed(() => {\n return this.icon() ? this.icon()!.includes('bi-') : false;\n });\n\n noDataLabel = input<string>('אין נתונים להצגה');\n\n clearSearchAfterSelect = input(true, { transform: booleanAttribute });\n\n clearSearchButtonTooltip = input<string>('נקה חיפוש');\n\n focusSearchInputOnPanelOpen = input(true, { transform: booleanAttribute });\n\n filterPredicate = input<((option: T, filterText: string) => boolean) | null>(null);\n private _filterPredicate: ((option: T, filterText: string) => boolean) | null = null;\n\n simpleArray = computed(() => {\n return typeof this.options()[0] === 'string' || typeof this.options()[0] === 'number';\n });\n\n private selectedOptionsIdsSet = signal<Set<any>>(new Set());\n\n protected filterText = model<string>('');\n\n protected checkIfAllSelected = computed(() => {\n const options = this.datasource().result();\n const selected = this.control().value;\n const allSelected =\n options.length > 0 &&\n Array.isArray(selected) &&\n selected.length >= options.length &&\n options.every((option) => {\n const optionValue = this.getOptionValue(option);\n return this.selectedOptionsIdsSet().has(optionValue);\n });\n\n return allSelected;\n });\n\n constructor() {\n this.runEffects();\n }\n\n ngOnDestroy(): void {\n this.datasource().disconnect();\n }\n\n setOptionsFormattedNames(options: DmMatSelectOption<T>[]) {\n if (this._optionNameFormat) {\n for (const option of options) {\n option.__dmMatSelectFormattedName = this._optionNameFormat(option);\n }\n }\n }\n\n private runEffects() {\n effect(() => {\n this._filterPredicate = this.filterPredicate();\n this._optionNameFormat = this.optionNameFormat();\n });\n\n effect(() => {\n const opts = this.options() as DmMatSelectOption<T>[];\n this.setOptionsFormattedNames(opts);\n this.datasource().setAutoPaginationAboveItemsCount(-1);\n this.datasource().setSearchDebounceTime(3000);\n if (this._filterPredicate) {\n console.log('filter predicate updated!!!!!!!!');\n\n this.datasource().setFilterPredicate(this._filterPredicate);\n }\n if (this.sortBySelectedOnTop() && this.multiple()) {\n this.datasource().setSortFunction(\n ((a: T, b: T) => {\n const aSelected = this.selectedOptionsIdsSet().has(this.getOptionValue(a));\n const bSelected = this.selectedOptionsIdsSet().has(this.getOptionValue(b));\n if (aSelected && !bSelected) {\n return -1;\n } else if (!aSelected && bSelected) {\n return 1;\n } else {\n return 0;\n }\n }).bind(this)\n );\n }\n this.datasource().setDatasource(opts);\n });\n\n effect(() => {\n if (this.formControl()) {\n return;\n }\n this.internalControl.setValue(this.value(), { emitEvent: false });\n });\n\n effect((onCleanup) => {\n const ctrl = this.control();\n const setSelectedIdsSet = (selectedVal: DmMatSelectOutput<T>) => {\n const newSelectedIdsSet = new Set<any>();\n if (this.multiple()) {\n const arr = Array.isArray(selectedVal) ? selectedVal : [];\n for (const item of arr) {\n const id = this.getOptionValue(item as T);\n newSelectedIdsSet.add(id);\n }\n this.selectedOptionsIdsSet.set(newSelectedIdsSet);\n }\n };\n setSelectedIdsSet(ctrl.value);\n\n const sub = ctrl.valueChanges.subscribe((val) => {\n setSelectedIdsSet(val);\n this.value.set(val);\n });\n\n onCleanup(() => sub.unsubscribe());\n });\n\n effect(() => {\n document.documentElement.style.setProperty(\n SEARCH_SECTION_BG_COLOR_VAR,\n this.searchSectionBackgroundColor() ?? SEARCH_SECTION_BG_COLOR_DEFAULT_VALUE\n );\n });\n }\n\n protected applyFilter(event: KeyboardEvent) {\n const target = event.target as HTMLInputElement;\n this.filterText.set(target.value);\n this.datasource().search(this.filterText());\n }\n\n protected selectionChangeHandler(event: MatSelectChange<T | T[] | null>) {\n this.selectionChange.emit(event);\n }\n\n private getOptionValue(option: T): any {\n if (this.simpleArray()) return option;\n return typeof option === 'object' && option != null\n ? (option as any)[this.optionValueKey()]\n : option;\n }\n\n protected onSelectionChangeHandler(event: MatOptionSelectionChange, option: T | null) {\n if (!event.isUserInput) return;\n console.log('selection change!!');\n\n const selected = event.source.selected;\n const currentValue = this.control().value;\n if (this.multiple()) {\n if (!option) return;\n const arr = Array.isArray(currentValue) ? currentValue : [];\n let newValue: (string | number | T)[];\n if (selected) {\n newValue = [...arr, this.getOptionValue(option)];\n } else {\n newValue = arr.filter((v) => v !== this.getOptionValue(option));\n }\n this.control().setValue(newValue as DmMatSelectOutput<T>);\n } else {\n if (!option) {\n this.control().setValue(this.emptyOptionValue());\n return;\n }\n if (selected) {\n console.log('set value => ', option);\n\n this.control().setValue(this.getOptionValue(option) as DmMatSelectOutput<T>);\n } else {\n this.control().setValue(null);\n }\n }\n if (this.clearSearchAfterSelect()) {\n this.resetSearch();\n }\n }\n\n protected selectAllChange(event: MatCheckboxChange) {\n if (event.checked) {\n const allValues = this.datasource()\n .result()\n .map((option) => this.getOptionValue(option));\n const newValues = Array.isArray(this.control().value)\n ? (this.control().value as (string | T)[])\n : [];\n for (const val of allValues) {\n if (!this.selectedOptionsIdsSet().has(val)) {\n newValues.push(val);\n }\n }\n this.control().setValue(newValues as DmMatSelectOutput<T>);\n } else {\n const selectedValues = (this.control().value as (string | T)[]).filter((val) => {\n const allOptionValues = this.datasource()\n .result()\n .map((option) => this.getOptionValue(option));\n return !allOptionValues.includes(val as any);\n });\n this.control().setValue(selectedValues as DmMatSelectOutput<T>);\n }\n }\n\n protected resetSearch() {\n this.filterText.set('');\n this.datasource().search('');\n }\n\n protected onPanelOpened() {\n if (this.focusSearchInputOnPanelOpen()) {\n const searchInput = document.getElementById('dm-mat-select-search-input') as HTMLInputElement;\n setTimeout(() => {\n if (searchInput) {\n searchInput.focus();\n }\n }, 0);\n }\n }\n}\n","<div class=\"dm-mat-select-wrapper\" [class]=\"wrapperClass()\">\n <mat-form-field [appearance]=\"appearance()\" [class]=\"formFieldClass()\">\n <mat-label>{{ label() }}</mat-label>\n <mat-select\n [multiple]=\"multiple()\"\n [formControl]=\"control()\"\n (selectionChange)=\"selectionChangeHandler($event)\"\n [disabled]=\"disabled()\"\n [panelWidth]=\"panelWidth()\"\n [panelClass]=\"panelClass()\"\n (opened)=\"onPanelOpened()\"\n >\n <div\n class=\"search-section\"\n [ngStyle]=\"{\n 'background-color': 'none'\n }\"\n >\n @if (searchable()) {\n <mat-form-field>\n <input\n id=\"dm-mat-select-search-input\"\n matInput\n [placeholder]=\"searchPlaceholder()\"\n [(ngModel)]=\"filterText\"\n (keyup)=\"applyFilter($event)\"\n />\n @if (filterText()) {\n <button\n mat-icon-button\n matSuffix\n (click)=\"resetSearch()\"\n [matTooltip]=\"clearSearchButtonTooltip() || ''\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n } @if (selectAllEnabled() && multiple()) {\n <mat-checkbox [checked]=\"checkIfAllSelected()\" (change)=\"selectAllChange($event)\">{{\n selectAllLabel()\n }}</mat-checkbox>\n }\n </div>\n @if (emptyOption()) {\n <mat-option\n [value]=\"emptyOptionValue()\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, emptyOptionValue())\"\n >{{ emptyOptionLabel() }}</mat-option\n >\n } @for (option of datasource().result(); track simpleArray() ? option :\n option[this.optionValueKey()]) {\n <mat-option\n [value]=\"simpleArray() ? option : option[optionValueKey()]\"\n (onSelectionChange)=\"onSelectionChangeHandler($event, option)\"\n >{{\n optionNameFormat()\n ? option.__dmMatSelectFormattedName\n : simpleArray()\n ? option\n : option[optionLabelKey()]\n }}</mat-option\n >\n } @if (datasource().result().length === 0) {\n <mat-option disabled>{{ noDataLabel() }}</mat-option>\n }\n </mat-select>\n\n @if (icon(); as icon) {\n <span matSuffix>\n @if (isBootstrapIcon()) {\n <span [innerHTML]=\"icon\"></span> } @else {\n <mat-icon matSuffix>{{ icon }}</mat-icon>\n }\n </span>\n }\n\n <span matSuffix>\n <ng-content select=\"[dm-mat-select-suffix]\"></ng-content>\n </span>\n\n <mat-error>{{ error() }}</mat-error>\n </mat-form-field>\n</div>\n","/*\n * Public API Surface of dm-cmps\n */\n\nexport { DmCmpsDataSource } from './lib/utils/dm-cmps-data-source';\nexport type { DmCmpsDataSourceSort } from './lib/utils/dm-cmps-data-source';\nexport { DmMatSelect } from './lib/dm-mat-select/dm-mat-select';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;MAUa,gBAAgB,CAAA;AACnB,IAAA,IAAI;AACJ,IAAA,YAAY;AACZ,IAAA,WAAW;AAEZ,IAAA,MAAM,GAAG,MAAM,CAAM,EAAE,kDAAC;IAEvB,iBAAiB,GAAY,KAAK;IAClC,gBAAgB,GAAW,CAAC;IAC5B,QAAQ,GAAW,EAAE;IACrB,6BAA6B,GAAW,GAAG;IAE3C,UAAU,GAAW,EAAE;IAEvB,cAAc,GAAY,KAAK;AAC/B,IAAA,eAAe,GAAyC,CAAC,IAAO,EAAE,MAAc,KAAI;AAC1F,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1D;AACA,QAAA,MAAM,KAAK,GAAG,CAAC,IAAY,KACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CACtB,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CACxF;AACH,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,KAAK,GAAG;iBACX,KAAK,CAAC,GAAG;iBACT,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;iBACnB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,YAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C;AACA,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,IAAA,CAAC;IAEO,cAAc,GAAsB,IAAI;IAExC,gBAAgB,GAAa,EAAE;IAE/B,OAAO,GAA2B,EAAE;IACpC,MAAM,GAAoC,IAAI;AAE9C,IAAA,YAAY,GAAoB,IAAI,OAAO,EAAU;AACrD,IAAA,kBAAkB,GAAG,MAAM,CAAS,GAAG,8DAAC;AAE/B,IAAA,YAAY,GAAG,IAAI,YAAY,EAAE;AAElD;;;AAGG;AACH,IAAA,WAAA,CAAY,cAAmB,EAAE,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,WAAW,CAAC;AACpC,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC;AACnC,QAAA,IACE,IAAI,CAAC,6BAA6B,GAAG,CAAC;AACtC,YAAA,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,6BAA6B,EACvD;AACA,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B;QACA,IAAI,CAAC,kBAAkB,EAAE;QAEzB,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,YAAY,CAAC,IAAI,CAAC,kBAAkB;AACjC,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,UAAU,KACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,YAAY,CAAC,UAAU,CAAC,EACxB,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CACxC,CACF;AAEF,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB,IAAI,CAAC,WAAW,EAAE;QACpB,CAAC,CAAC,CACL;;;;;;;;;;IAUH;IAEQ,gBAAgB,GAAA;QACtB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;IACjC;AAEA,IAAA,gCAAgC,CAAC,KAAa,EAAA;AAC5C,QAAA,IAAI,CAAC,6BAA6B,GAAG,KAAK;AAC1C,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK,EAAE;AAChD,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B;aAAO;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAChC;QACA,IAAI,CAAC,kBAAkB,EAAE;IAC3B;AAEA,IAAA,eAAe,CAAC,QAAiB,EAAA;QAC/B,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,CAAC,EAAE;AAC1C,YAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;QACjD;AACA,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC;AACzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC7B,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QAC1B;IACF;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;QACjD;AACA,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxB,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC;AACzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC9B,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEA,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACjD,YAAA,OAAO,CAAC;QACV;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrE,IAAI,IAAI,CAAC,gBAAgB,GAAG,UAAU,GAAG,CAAC,EAAE;YAC1C,IAAI,CAAC,gBAAgB,EAAE;QACzB;QACA,IAAI,CAAC,kBAAkB,EAAE;QACzB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEA,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACjD,YAAA,OAAO,CAAC;QACV;AACA,QAAA,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE;YAC7B,IAAI,CAAC,gBAAgB,EAAE;QACzB;QACA,IAAI,CAAC,kBAAkB,EAAE;QACzB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEA,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACjD,YAAA,OAAO,CAAC;QACV;AACA,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC;QACzB,IAAI,CAAC,kBAAkB,EAAE;QACzB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEA,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACjD,YAAA,OAAO,CAAC;QACV;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;AACrE,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,GAAG,CAAC;QACtC,IAAI,CAAC,kBAAkB,EAAE;QACzB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEA,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;AACtB,YAAA,OAAO,CAAC;QACV;AACA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC3D;AAEA,IAAA,qBAAqB,CAAC,YAAoB,EAAA;AACxC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC;IAC3C;AAEA,IAAA,aAAa,CAAC,OAAY,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,GAAG,GAAG,CAAC,MAAK;AAChB,YAAA,IACE,IAAI,CAAC,QAAQ,GAAG,CAAC;iBAChB,IAAI,CAAC,iBAAiB;AACrB,qBAAC,IAAI,CAAC,6BAA6B,GAAG,CAAC;wBACrC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,6BAA6B,CAAC,CAAC,EAClE;gBACA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ;AACxD,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;YACvE;YACA,OAAO,IAAI,CAAC,WAAW;QACzB,CAAC,GAAG;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;IACtB;;;;;;;;;;;;;AAgBA,IAAA,MAAM,CAAC,UAAkB,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;IACpC;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QAC3C;aAAO;AACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,KAC/C,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAC5C;QACH;QACA,IAAI,CAAC,kBAAkB,EAAE;IAC3B;AAEA,IAAA,kBAAkB,CAAC,SAA+C,EAAA;AAChE,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;IAClC;AAEA,IAAA,mBAAmB,CAAC,MAAgB,EAAA;QAClC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,YAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;QACxD;AACA,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM;QAC9B,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAO,EAAE,MAAc,KAAI;AAClD,YAAA,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACpB,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,MAAM,KAAK,GAAG;qBACX,KAAK,CAAC,GAAG;qBACT,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;qBACnB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,gBAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAI;oBAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AAC1C,wBAAA,MAAM,KAAK,GAAI,IAAY,CAAC,KAAK,CAAC;AAClC,wBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,4BAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;wBACpE;AACA,wBAAA,OAAO,KAAK;AACd,oBAAA,CAAC,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;YACA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AAC1C,gBAAA,MAAM,KAAK,GAAI,IAAY,CAAC,KAAK,CAAC;AAClC,gBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,oBAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACtE;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,eAAe,CAAC,MAAuC,EAAA;AACrD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACtB;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAC7C;QACF;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACnC;QACF;QAEA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC9B,YAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC/B,IAAI,UAAU,GAAG,CAAC;AAClB,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChC;qBAAO;oBACL,MAAM,MAAM,GAAI,CAAS,CAAC,IAAI,CAAC,KAAK,CAAC;oBACrC,MAAM,MAAM,GAAI,CAAS,CAAC,IAAI,CAAC,KAAK,CAAC;oBACrC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;wBAClC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC5D,4BAAA,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;wBAC3C;6BAAO;4BACL,UAAU,GAAG,CAAC;wBAChB;oBACF;AAAO,yBAAA,IAAI,MAAM,GAAG,MAAM,EAAE;wBAC1B,UAAU,GAAG,CAAC,CAAC;oBACjB;AAAO,yBAAA,IAAI,MAAM,GAAG,MAAM,EAAE;wBAC1B,UAAU,GAAG,CAAC;oBAChB;yBAAO;wBACL,UAAU,GAAG,CAAC;oBAChB;gBACF;AAEA,gBAAA,IAAI,UAAU,KAAK,CAAC,EAAE;AACpB,oBAAA,OAAO,IAAI,CAAC,SAAS,KAAK,KAAK,GAAG,UAAU,GAAG,CAAC,UAAU;gBAC5D;YACF;AACA,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,YAAY,CAAC,OAA+B,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEA,IAAA,uBAAuB,CAAC,SAA4B,EAAA;AAClD,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;QAC/B,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACpC;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AAC5C,gBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAe,CAAC,EAAE;AAC/D,oBAAA,IAAK,IAAY,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;AAChC,wBAAA,OAAO,KAAK;oBACd;gBACF;AACA,gBAAA,OAAO,IAAI;AACb,YAAA,CAAC,CAAC;QACJ;QACA,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,mBAAmB,CAAC,OAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO;IAC/B;AACD;;ACxWM,MAAM,2BAA2B,GAAG,yCAAyC;AAC7E,MAAM,qCAAqC,GAAG,SAAS;;MCsCjD,WAAW,CAAA;AACtB,IAAA,cAAc,GAAG,KAAK,CAAS,EAAE,0DAAC;AAClC,IAAA,YAAY,GAAG,KAAK,CAAS,EAAE,wDAAC;AAChC,IAAA,UAAU,GAAG,KAAK,CAAqB,MAAM,sDAAC;IAC9C,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,gBAAgB,GAAG,KAAK,CAAC,KAAK,6DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAChE,IAAA,cAAc,GAAG,KAAK,CAAS,SAAS,0DAAC;AACzC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AACzB,IAAA,OAAO,GAAG,KAAK,CAAM,EAAE,mDAAC;AACxB,IAAA,cAAc,GAAG,KAAK,CAAU,KAAgB,0DAAC;AACjD,IAAA,cAAc,GAAG,KAAK,CAAU,MAAiB,0DAAC;IAClD,UAAU,GAAG,KAAK,CAAC,KAAK,uDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAE1D,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,KAAK,GAAG,KAAK,CAAgB,IAAI,iDAAC;AAElC,IAAA,iBAAiB,GAAG,KAAK,CAAS,QAAQ,6DAAC;IAE3C,WAAW,GAAG,KAAK,CAAC,KAAK,wDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC3D,IAAA,gBAAgB,GAAG,KAAK,CAAS,KAAK,4DAAC;AACvC,IAAA,gBAAgB,GAAG,KAAK,CAAW,IAAI,4DAAC;AAExC,IAAA,gBAAgB,GAAG,KAAK,CAAiC,IAAI,4DAAC;IACtD,iBAAiB,GAAmC,IAAI;AAEtD,IAAA,UAAU,GAAG,MAAM,CAC3B,IAAI,gBAAgB,EAAwB,sDAC7C;AAED,IAAA,KAAK,GAAG,KAAK,CAAuB,IAAI,iDAAC;AAEzC,IAAA,WAAW,GAAG,KAAK,CAA2C,IAAI,uDAAC;AACnE,IAAA,UAAU,GAAG,KAAK,CAAgB,MAAM,sDAAC;AACzC,IAAA,UAAU,GAAG,KAAK,CAA2D,EAAE,sDAAC;AAChF,IAAA,4BAA4B,GAAG,KAAK,CAAgB,qCAAqC,wEAAC;IAE1F,mBAAmB,GAAG,KAAK,CAAC,KAAK,gEAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE3D,IAAA,eAAe,GAAG,IAAI,WAAW,CAAuB,IAAI,CAAC;AAE3D,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,eAAe,mDAAC;IAE9E,eAAe,GAAG,MAAM,EAAyC;AAEjE,IAAA,IAAI,GAAG,KAAK,CAAgB,IAAI,gDAAC;AAEvB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACxC,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK;AAC3D,IAAA,CAAC,2DAAC;AAEF,IAAA,WAAW,GAAG,KAAK,CAAS,kBAAkB,uDAAC;IAE/C,sBAAsB,GAAG,KAAK,CAAC,IAAI,mEAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAErE,IAAA,wBAAwB,GAAG,KAAK,CAAS,WAAW,oEAAC;IAErD,2BAA2B,GAAG,KAAK,CAAC,IAAI,wEAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE1E,IAAA,eAAe,GAAG,KAAK,CAAsD,IAAI,2DAAC;IAC1E,gBAAgB,GAAwD,IAAI;AAEpF,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC1B,OAAO,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ;AACvF,IAAA,CAAC,uDAAC;AAEM,IAAA,qBAAqB,GAAG,MAAM,CAAW,IAAI,GAAG,EAAE,iEAAC;AAEjD,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,sDAAC;AAE9B,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK;AACrC,QAAA,MAAM,WAAW,GACf,OAAO,CAAC,MAAM,GAAG,CAAC;AAClB,YAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AACvB,YAAA,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;AACjC,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAI;gBACvB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC/C,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC;AACtD,YAAA,CAAC,CAAC;AAEJ,QAAA,OAAO,WAAW;AACpB,IAAA,CAAC,8DAAC;AAEF,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,UAAU,EAAE;IACnB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE;IAChC;AAEA,IAAA,wBAAwB,CAAC,OAA+B,EAAA;AACtD,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,MAAM,CAAC,0BAA0B,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YACpE;QACF;IACF;IAEQ,UAAU,GAAA;QAChB,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE;AAC9C,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAClD,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAA4B;AACrD,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;YACnC,IAAI,CAAC,UAAU,EAAE,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC7C,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;gBAE/C,IAAI,CAAC,UAAU,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC7D;YACA,IAAI,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjD,gBAAA,IAAI,CAAC,UAAU,EAAE,CAAC,eAAe,CAC/B,CAAC,CAAC,CAAI,EAAE,CAAI,KAAI;AACd,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC1E,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC1E,oBAAA,IAAI,SAAS,IAAI,CAAC,SAAS,EAAE;wBAC3B,OAAO,CAAC,CAAC;oBACX;AAAO,yBAAA,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE;AAClC,wBAAA,OAAO,CAAC;oBACV;yBAAO;AACL,wBAAA,OAAO,CAAC;oBACV;AACF,gBAAA,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CACd;YACH;YACA,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;AACvC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtB;YACF;AACA,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACnE,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAA,MAAM,iBAAiB,GAAG,CAAC,WAAiC,KAAI;AAC9D,gBAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAO;AACxC,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,oBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,EAAE;AACzD,oBAAA,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;wBACtB,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,IAAS,CAAC;AACzC,wBAAA,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3B;AACA,oBAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,iBAAiB,CAAC;gBACnD;AACF,YAAA,CAAC;AACD,YAAA,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;YAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;gBAC9C,iBAAiB,CAAC,GAAG,CAAC;AACtB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACrB,YAAA,CAAC,CAAC;YAEF,SAAS,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;AACpC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CACxC,2BAA2B,EAC3B,IAAI,CAAC,4BAA4B,EAAE,IAAI,qCAAqC,CAC7E;AACH,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,WAAW,CAAC,KAAoB,EAAA;AACxC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;QAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAC7C;AAEU,IAAA,sBAAsB,CAAC,KAAsC,EAAA;AACrE,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC;AAEQ,IAAA,cAAc,CAAC,MAAS,EAAA;QAC9B,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,YAAA,OAAO,MAAM;AACrC,QAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI;AAC7C,cAAG,MAAc,CAAC,IAAI,CAAC,cAAc,EAAE;cACrC,MAAM;IACZ;IAEU,wBAAwB,CAAC,KAA+B,EAAE,MAAgB,EAAA;QAClF,IAAI,CAAC,KAAK,CAAC,WAAW;YAAE;AACxB,QAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAEjC,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK;AACzC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM;gBAAE;AACb,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,EAAE;AAC3D,YAAA,IAAI,QAAiC;YACrC,IAAI,QAAQ,EAAE;AACZ,gBAAA,QAAQ,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAClD;iBAAO;AACL,gBAAA,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACjE;YACA,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAgC,CAAC;QAC3D;aAAO;YACL,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAChD;YACF;YACA,IAAI,QAAQ,EAAE;AACZ,gBAAA,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC;AAEpC,gBAAA,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAyB,CAAC;YAC9E;iBAAO;gBACL,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC/B;QACF;AACA,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;YACjC,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEU,IAAA,eAAe,CAAC,KAAwB,EAAA;AAChD,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;AAC9B,iBAAA,MAAM;AACN,iBAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC/C,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK;AAClD,kBAAG,IAAI,CAAC,OAAO,EAAE,CAAC;kBAChB,EAAE;AACN,YAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;gBAC3B,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC1C,oBAAA,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;gBACrB;YACF;YACA,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,SAAiC,CAAC;QAC5D;aAAO;AACL,YAAA,MAAM,cAAc,GAAI,IAAI,CAAC,OAAO,EAAE,CAAC,KAAwB,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAC7E,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU;AACpC,qBAAA,MAAM;AACN,qBAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC/C,gBAAA,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAU,CAAC;AAC9C,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,cAAsC,CAAC;QACjE;IACF;IAEU,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9B;IAEU,aAAa,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,2BAA2B,EAAE,EAAE;YACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,4BAA4B,CAAqB;YAC7F,UAAU,CAAC,MAAK;gBACd,IAAI,WAAW,EAAE;oBACf,WAAW,CAAC,KAAK,EAAE;gBACrB;YACF,CAAC,EAAE,CAAC,CAAC;QACP;IACF;uGAvQW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,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,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,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,KAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClDxB,8pFAoFA,EAAA,MAAA,EAAA,CAAA,okBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjDI,kBAAkB,wgBAClB,eAAe,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,EACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,8mBACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,iBAAiB,obACjB,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,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,UAAU,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,CAAA,EAAA,CAAA;;2FAMD,WAAW,EAAA,UAAA,EAAA,CAAA;kBAnBvB,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP;wBACP,kBAAkB;wBAClB,eAAe;wBACf,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,cAAc;wBACd,iBAAiB;wBACjB,OAAO;wBACP,eAAe;wBACf,UAAU;wBACV,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,8pFAAA,EAAA,MAAA,EAAA,CAAA,okBAAA,CAAA,EAAA;;;AE9CH;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@dmlibs/dm-cmps",
3
+ "version": "0.0.1",
4
+ "peerDependencies": {
5
+ "@angular/common": "^21.0.0",
6
+ "@angular/core": "^21.0.0"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "sideEffects": false,
12
+ "module": "fesm2022/dmlibs-dm-cmps.mjs",
13
+ "typings": "types/dmlibs-dm-cmps.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./types/dmlibs-dm-cmps.d.ts",
20
+ "default": "./fesm2022/dmlibs-dm-cmps.mjs"
21
+ }
22
+ }
23
+ }