@skyux/ag-grid 12.1.0 → 12.3.0
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.
- package/fesm2022/skyux-ag-grid.mjs.map +1 -1
- package/index.d.ts +3 -0
- package/lib/modules/ag-grid/types/cell-editor-autocomplete-params.d.ts +0 -3
- package/lib/modules/ag-grid/types/cell-editor-datepicker-params.d.ts +0 -3
- package/lib/modules/ag-grid/types/cell-editor-lookup-params.d.ts +0 -3
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-ag-grid.mjs","sources":["../../../../../libs/components/ag-grid/src/lib/modules/shared/sky-ag-grid-resources.module.ts","../../../../../libs/components/ag-grid/src/lib/styles/ag-grid-theme.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-adapter.service.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-type.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-wrapper.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-wrapper.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-row-delete.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-row-delete.directive.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid.module.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/apply-lookup-properties-defaults.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-editor-initial-action.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-editor-utils.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-template/cell-renderer-template.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/header-group-info.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header-group.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header-group.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/header-info.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/icons/icon-map.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/loading/loading.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/loading/loading.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-class.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/header-class.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid.service.ts","../../../../../libs/components/ag-grid/src/index.ts","../../../../../libs/components/ag-grid/src/skyux-ag-grid.ts"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-ag-grid' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n sky_ag_grid_row_selector_aria_label: {\n message: 'Row selector for row {0}',\n },\n sky_ag_grid_row_selector_column_heading: { message: 'Row selection' },\n sky_ag_grid_cell_editor_datepicker_aria_label: {\n message: 'Editable date {0} for row {1}',\n },\n sky_ag_grid_cell_editor_datepicker_hint_text: {\n message: 'Use the format {0}.',\n },\n sky_ag_grid_cell_editor_number_aria_label: {\n message: 'Editable number {0} for row {1}',\n },\n sky_ag_grid_cell_editor_text_aria_label: {\n message: 'Editable text {0} for row {1}',\n },\n sky_ag_grid_cell_editor_autocomplete_aria_label: {\n message: 'Editable autocomplete {0} for row {1}',\n },\n sky_ag_grid_cell_renderer_number_validator_message: {\n message: 'Enter a valid number.',\n },\n sky_ag_grid_cell_renderer_currency_validator_message: {\n message: 'Enter a valid currency.',\n },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\n sky_ag_grid_cell_editor_currency_aria_label: {\n message: 'Editable currency {0} for row {1}',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_asc: {\n message: 'Sort column {0}, currently ascending',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_desc: {\n message: 'Sort column {0}, currently descending',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted: {\n message: 'Sort column {0}, not currently sorted',\n },\n sky_ag_grid_column_group_header_expand_aria_label: {\n message: 'Expand column group {0}',\n },\n sky_ag_grid_column_group_header_collapse_aria_label: {\n message: 'Collapse column group {0}',\n },\n },\n 'FR-CA': {\n sky_ag_grid_row_selector_aria_label: {\n message: 'Sélecteur de ligne pour la ligne {0}',\n },\n sky_ag_grid_row_selector_column_heading: {\n message: 'Sélection d’une ligne',\n },\n sky_ag_grid_cell_editor_datepicker_aria_label: {\n message: 'Date modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_editor_datepicker_hint_text: {\n message: 'Utilisez le format {0}.',\n },\n sky_ag_grid_cell_editor_number_aria_label: {\n message: 'Numéro modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_editor_text_aria_label: {\n message: 'Texte modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_editor_autocomplete_aria_label: {\n message: 'Saisie automatique modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_renderer_number_validator_message: {\n message: 'Entrez un numéro valide.',\n },\n sky_ag_grid_cell_renderer_currency_validator_message: {\n message: 'Entrez une devise valide.',\n },\n skyux_lookup_tokens_summary: { message: '{0} articles sélectionnés' },\n sky_ag_grid_cell_editor_currency_aria_label: {\n message: 'Devise modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_asc: {\n message: 'Trier la colonne {0}, actuellement en ordre croissant',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_desc: {\n message: 'Trier la colonne {0}, actuellement en ordre décroissant',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted: {\n message: 'Trier la colonne {0}, actuellement non triée',\n },\n sky_ag_grid_column_group_header_expand_aria_label: {\n message: 'Agrandir le groupe de colonnes {0}',\n },\n sky_ag_grid_column_group_header_collapse_aria_label: {\n message: 'Réduire le groupe de colonnes {0}',\n },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyAgGridResourcesModule {}\n","import { SkyThemeSettings } from '@skyux/theme';\n\nimport {\n Theme,\n colorSchemeDark,\n colorSchemeLight,\n iconSetQuartz,\n themeQuartz,\n} from 'ag-grid-community';\n\nconst defaultsForAllThemes = {\n backgroundColor: 'var(--sky-background-color-page-default)',\n borderColor: 'var(--sky-border-color-neutral-medium)',\n borderRadius: 'var(--sky-border-radius-s, 3px)',\n cardShadow: 'none',\n cellEditingBorder: 'none',\n cellHorizontalPadding: 12,\n checkboxCheckedBackgroundColor:\n 'var(--sky-color-background-selected-heavy, var(--sky-background-color-input-selected, transparent))',\n checkboxCheckedBorderColor: { ref: 'checkboxCheckedShapeColor' },\n checkboxCheckedShapeColor:\n 'var(--sky-override-switch-checked-color, var(--sky-color-icon-inverse, var(--sky-text-color-default)))',\n checkboxIndeterminateBackgroundColor:\n 'var(--sky-override-switch-checked-color, var(--sky-color-icon-inverse, transparent))',\n checkboxUncheckedBackgroundColor: 'transparent',\n checkboxUncheckedBorderColor: `var(\n --sky-border-color-neutral-medium-dark,\n var(--sky-border-color-neutral-medium)\n )`,\n checkboxCheckedShapeImage: {\n svg: `<svg width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m8.5 16.586-3.793-3.793a1 1 0 0 0-1.414 1.414l4.5 4.5a1 1 0 0 0 1.414 0l11-11a1 1 0 0 0-1.414-1.414L8.5 16.586Z\" fill=\"#212121\"/></svg>`,\n },\n // eslint-disable-next-line @cspell/spellchecker\n fontFamily: ['BLKB Sans', 'Helvetica Neue', 'Arial', 'sans-serif'],\n foregroundColor: 'var(--sky-text-color-default)',\n headerBackgroundColor: 'var(--sky-background-color-page-default)',\n headerColumnBorder: {\n style: 'solid' as const,\n width: 1,\n color: { ref: 'borderColor' },\n },\n headerColumnBorderHeight: '100%',\n headerColumnResizeHandleColor: 'var(--sky-border-color-neutral-medium)',\n headerColumnResizeHandleHeight: '100%',\n headerColumnResizeHandleWidth: 1,\n headerFontFamily: { ref: 'fontFamily' },\n iconSize: 12,\n inputDisabledBackgroundColor: 'transparent',\n inputFocusBorder: 'transparent',\n inputFocusShadow: 'none',\n invalidColor: 'var(--sky-background-color-danger-dark)',\n listItemHeight: { ref: 'rowHeight' },\n oddRowBackgroundColor: 'var(--sky-background-color-page-default)',\n pickerListBackgroundColor: { ref: 'backgroundColor' },\n popupShadow: '5px 5px 10px rgba(0, 0, 0, 0.3)',\n rowBorderColor: 'var(--sky-border-color-neutral-medium)',\n rowHoverColor: 'transparent',\n secondaryForegroundColor: 'var(--sky-text-color-deemphasized)',\n selectedRowBackgroundColor: 'var(--sky-background-color-selected)',\n spacing: 4,\n textColor: 'var(--sky-text-color-default)',\n tooltipBackgroundColor: 'var(--sky-background-color-neutral-light)',\n wrapperBorderRadius: 0,\n};\nconst defaultsForDataEntryGrid = {\n backgroundColor: 'var(--sky-background-color-page-default)',\n columnBorder: true,\n popupShadow: 'none',\n};\nconst defaultThemeBase = {\n ...defaultsForAllThemes,\n backgroundColor: '#fbfbfb', //SkyDefaultDesignTokens.color.gray['01'],\n fontSize: 15,\n headerHeight: 37,\n inputFocusBorderColor: 'var(--sky-highlight-color-info)',\n rowHeight: 38,\n rangeSelectionBorderColor: 'var(--sky-highlight-color-info)',\n};\nconst modernThemeBase = {\n ...defaultsForAllThemes,\n fontSize: 16,\n headerColumnBorder: {\n style: 'solid' as const,\n width: 1,\n color: 'transparent',\n },\n headerColumnResizeHandleColor: { ref: 'headerBackgroundColor' },\n headerColumnSeparatorColor: { ref: 'headerBackgroundColor' },\n headerHeight: 60,\n inputFocusBorderColor: '#1870B8', // SkyModernDesignTokens['border-color']['primary-dark'],\n rowHeight: 60,\n rangeSelectionBorderColor: { ref: 'inputFocusBorderColor' },\n};\nconst modernCompactThemeBase = {\n headerHeight: 32,\n rowHeight: 32,\n};\nconst modernThemeDarkBase = {\n ...defaultsForAllThemes,\n fontSize: 16,\n headerHeight: 60,\n rowHeight: 60,\n};\n\nconst SkyAgGridDataGridDefault = themeQuartz\n .withPart(colorSchemeLight)\n .withPart(iconSetQuartz)\n .withParams(defaultThemeBase);\n\nconst SkyAgGridDataEntryGridDefault = SkyAgGridDataGridDefault.withParams(\n defaultsForDataEntryGrid,\n).withParams({\n cellHorizontalPadding: '11px',\n columnBorder: {\n style: 'solid' as const,\n width: 1,\n color: { ref: 'borderColor' },\n },\n});\n\nconst SkyAgGridDataGridModernLight = themeQuartz\n .withPart(colorSchemeLight)\n .withPart(iconSetQuartz)\n .withParams(modernThemeBase);\n\nconst SkyAgGridDataGridModernLightCompact =\n SkyAgGridDataGridModernLight.withParams(modernCompactThemeBase);\n\nconst SkyAgGridDataGridModernDark = themeQuartz\n .withPart(colorSchemeDark)\n .withPart(iconSetQuartz)\n .withParams(modernThemeDarkBase);\n\nconst SkyAgGridDataGridModernDarkCompact =\n SkyAgGridDataGridModernDark.withParams(modernCompactThemeBase);\n\nconst SkyAgGridDataEntryGridModernLight =\n SkyAgGridDataGridModernLight.withParams(defaultsForDataEntryGrid).withParams({\n backgroundColor: '#ffffff',\n });\n\nconst SkyAgGridDataEntryGridModernLightCompact =\n SkyAgGridDataGridModernLightCompact.withParams(defaultsForDataEntryGrid);\n\nconst SkyAgGridDataEntryGridModernDark = SkyAgGridDataGridModernDark.withParams(\n defaultsForDataEntryGrid,\n);\n\nconst SkyAgGridDataEntryGridModernDarkCompact =\n SkyAgGridDataGridModernDarkCompact.withParams(defaultsForDataEntryGrid);\n\nexport function getSkyAgGridTheme(\n grid: 'data-entry-grid' | 'data-grid',\n theme: string | undefined,\n mode: string | undefined,\n spacing: string | undefined,\n): Theme {\n if (grid === 'data-grid') {\n if (theme === 'modern') {\n if (mode === 'dark') {\n if (spacing === 'compact') {\n return SkyAgGridDataGridModernDarkCompact;\n } else {\n return SkyAgGridDataGridModernDark;\n }\n } else {\n if (spacing === 'compact') {\n return SkyAgGridDataGridModernLightCompact;\n } else {\n return SkyAgGridDataGridModernLight;\n }\n }\n } else {\n return SkyAgGridDataGridDefault;\n }\n } else {\n if (theme === 'modern') {\n if (mode === 'dark') {\n if (spacing === 'compact') {\n return SkyAgGridDataEntryGridModernDarkCompact;\n } else {\n return SkyAgGridDataEntryGridModernDark;\n }\n } else {\n if (spacing === 'compact') {\n return SkyAgGridDataEntryGridModernLightCompact;\n } else {\n return SkyAgGridDataEntryGridModernLight;\n }\n }\n } else {\n return SkyAgGridDataEntryGridDefault;\n }\n }\n}\n\ntype SkyAgGridThemeType =\n `ag-theme-sky-${'data-entry-grid' | 'data-grid'}-${'default' | 'modern-light' | 'modern-dark' | 'modern-light-compact' | 'modern-dark-compact'}`;\n\nexport function agGridThemeIsCompact(\n themeSettings: SkyThemeSettings | undefined,\n compactLayout: boolean,\n): boolean {\n return (\n themeSettings?.theme.name === 'modern' &&\n (compactLayout || themeSettings?.spacing.name === 'compact')\n );\n}\n\nexport function getSkyAgGridThemeClassName(\n editable: boolean,\n themeSettings: SkyThemeSettings | undefined,\n compactLayout: boolean,\n): SkyAgGridThemeType {\n let theme = `ag-theme-sky-${editable ? 'data-entry-grid' : 'data-grid'}-`;\n if (themeSettings?.theme.name === 'modern') {\n theme += `modern-${themeSettings.mode.name}`;\n if (agGridThemeIsCompact(themeSettings, compactLayout)) {\n theme += `-compact`;\n }\n } else {\n theme += 'default';\n }\n return theme as SkyAgGridThemeType;\n}\n","import { Injectable } from '@angular/core';\nimport { SkyCoreAdapterService } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAgGridAdapterService {\n #skyAdapterService: SkyCoreAdapterService;\n\n constructor(skyAdapterService: SkyCoreAdapterService) {\n this.#skyAdapterService = skyAdapterService;\n }\n\n public getElementOrParentWithClass(\n element: HTMLElement,\n className: string,\n ): HTMLElement | undefined {\n if (element && element.classList.contains(className)) {\n return element;\n } else if (element.parentElement) {\n return this.getElementOrParentWithClass(element.parentElement, className);\n }\n\n return undefined;\n }\n\n public setFocusedElementById(parentEl: HTMLElement, selector: string): void {\n const element = parentEl.querySelector(`#${selector}`) as HTMLElement;\n\n /* istanbul ignore else */\n if (element) {\n element.focus();\n }\n }\n\n public getFocusedElement(): HTMLElement {\n return document.activeElement as HTMLElement;\n }\n\n public getNextFocusableElement(\n currentEl: HTMLElement,\n parentEl?: HTMLElement,\n moveFocusLeft?: boolean,\n ): HTMLElement | undefined {\n if (parentEl) {\n const focusableChildren =\n this.#skyAdapterService.getFocusableChildren(parentEl);\n const currentElementIndex = focusableChildren.indexOf(currentEl);\n const nextIndex = moveFocusLeft\n ? currentElementIndex - 1\n : currentElementIndex + 1;\n\n if (\n (!moveFocusLeft && focusableChildren.length >= nextIndex) ||\n (moveFocusLeft && nextIndex >= 0)\n ) {\n return focusableChildren[nextIndex];\n }\n }\n\n return undefined;\n }\n\n public focusOnFocusableChildren(element: HTMLElement): void {\n const focusableChildren =\n this.#skyAdapterService.getFocusableChildren(element);\n\n if (focusableChildren.length) {\n focusableChildren[0].focus();\n }\n }\n}\n","/**\n * These column types can be used by setting the AG Grid [column definition `type`](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing) to one of the following values.\n * Any [SKY UX component](https://developer.blackbaud.com/skyux/components) can be made into a [cell editor](https://www.ag-grid.com/javascript-grid-cell-editor/) or [cell renderer](https://www.ag-grid.com/javascript-grid-cell-rendering-components/) component. If you would like to use a component that does not have a column definition yet, please consider [contributing it](https://developer.blackbaud.com/skyux/contribute/contribution-process) to the SKY UX data entry grid module, or [file an issue](https://developer.blackbaud.com/skyux/contribute/contribution-process/file-issue) in the [`@skyux/ag-grid` repo](https://github.com/blackbaud/skyux-ag-grid).\n */\nexport enum SkyCellType {\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as [SKY UX autocomplete components](https://developer.blackbaud.com/skyux/components/autocomplete). You can set any of the autocomplete component's properties by passing `SkyCellEditorAutocompleteParams` in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/javascript-grid-cell-editing/#dynamic-parameters) based on other cell values. See the demo for an example. Text can be entered and a value selected from the provided list.\n *\n * **Read-only mode**\n *\n * Cells the column will display the currently selected value's name property by default. If the autocomplete needs to show a different property or needs to be formatted in any way, you can [define a `valueFormatter`](https://www.ag-grid.com/javascript-grid-value-formatters/) on the column definition.\n */\n Autocomplete = 'skyCellAutocomplete',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as a currency amount.\n *\n * **Read-only mode**\n *\n * Formats the display as currency using [SKY UX numeric components](https://developer.blackbaud.com/skyux/components/numeric).\n */\n Currency = 'skyCellCurrency',\n /**\n * **Edit and read-only modes**\n *\n * Combines SkyCellType.Currency and SkyCellType.Validator, where the value is displayed as a currency and passed to a validator function.\n */\n CurrencyValidator = 'skyCellCurrencyValidator',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as [SKY UX datepicker components](https://developer.blackbaud.com/skyux/components/datepicker). You can set any of the datepicker component's properties by passing `SkyCellEditorDatepickerParams` in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/javascript-grid-cell-editing/#dynamic-parameters) based on other cell values. See the demo for an example. Date values can be entered.\n *\n * **Read-only mode**\n *\n * Cells in the column will display the currently selected date formatted as `MM-DD-YYYY`, or the date format of the locale passed to `getGridOptions()`. If you would like to overwrite this format, you can [define a `valueFormatter`](https://www.ag-grid.com/javascript-grid-value-formatters/) on the column definition. See the demo for an example.\n */\n Date = 'skyCellDate',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as [SKY UX lookup components](https://developer.blackbaud.com/skyux-v5/components/lookup). You can set any of the lookup component's properties by passing `SkyCellEditorLookupParams` in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/javascript-grid-cell-editing/#dynamic-parameters) based on other cell values. See the demo for an example. Text can be entered and a value selected from the provided list.\n *\n * **Read-only mode**\n *\n * Cells the column will display, by default, either: the name(s) of the selected value(s) if there are less than 6, or a summary count of the values if there are more than 5. If the lookup needs to show a different property or needs to be formatted in any way, you can [define a `valueFormatter`](https://www.ag-grid.com/javascript-grid-value-formatters/) on the column definition.\n */\n Lookup = 'skyCellLookup',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as HTML number `inputs`. Only numbers can be entered.\n *\n * **Read-only mode**\n *\n * Cells in the column will render as the number value.\n */\n Number = 'skyCellNumber',\n /**\n * **Edit and read-only modes**\n *\n * Combines SkyCellType.Number and SkyCellType.Validator, where the value is displayed as a number and passed to a validator function.\n */\n NumberValidator = 'skyCellNumberValidator',\n /**\n * **Edit and read-only modes**\n *\n * The header and cells in the column will render right aligned.\n */\n RightAligned = 'skyCellRightAligned',\n /**\n * **Edit and read-only modes**\n *\n * Cells in the column will render as [SKY UX checkbox components](https://developer.blackbaud.com/skyux/components/checkbox). It allows the user to select multiple rows, and adds a highlight to selected rows. The [Ag Grid `rowNode`](https://www.ag-grid.com/javascript-grid-row-node/) will be updated to reflect the selected state.\n */\n RowSelector = 'skyCellRowSelector',\n /**\n * **Read-only mode**\n *\n * Cells in the column will render in a `TemplateRef` passed in the column definition's `cellRendererParams.template` property, with `value` and `row` context. See the demo for an example.\n */\n Template = 'skyCellTemplate',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as HTML text `inputs`. Any characters can be entered.\n *\n * **Read-only mode**\n *\n * Cells in the column will render as their string value.\n */\n Text = 'skyCellText',\n /**\n * **Edit and read-only modes**\n *\n * Cells in the column will be passed to a validator function that flags erroneous entries. You can set the validator function and message by passing a `SkyAgGridValidatorProperties` object as `skyComponentProperties` to [column definition's `cellRendererParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing), like `skyComponentProperties.validator` and `skyComponentProperties.validatorMessage`. SkyCellType.Validator can be combined with other cell types, such as SkyCellType.Autocomplete or SkyCellType.Date, by using the array syntax for the [column definition's `type` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing).\n */\n Validator = 'skyCellValidator',\n}\n","import { AsyncPipe, DOCUMENT, NgClass } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n booleanAttribute,\n computed,\n inject,\n input,\n numberAttribute,\n} from '@angular/core';\nimport { SkyMutationObserverService } from '@skyux/core';\nimport { SkyViewkeeperModule } from '@skyux/core';\nimport {\n SkyThemeService,\n SkyThemeSettings,\n SkyThemeSettingsChange,\n} from '@skyux/theme';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport {\n CellEditingStartedEvent,\n CellFocusedEvent,\n HeaderFocusedEvent,\n} from 'ag-grid-community';\nimport {\n BehaviorSubject,\n Observable,\n ReplaySubject,\n Subject,\n combineLatest,\n distinctUntilChanged,\n of,\n take,\n takeUntil,\n} from 'rxjs';\n\nimport {\n getSkyAgGridTheme,\n getSkyAgGridThemeClassName,\n} from '../../styles/ag-grid-theme';\n\nimport { SkyAgGridAdapterService } from './ag-grid-adapter.service';\nimport { SkyCellType } from './types/cell-type';\n\nlet idIndex = 0;\n\n@Component({\n selector: 'sky-ag-grid-wrapper',\n templateUrl: './ag-grid-wrapper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, NgClass, SkyViewkeeperModule],\n})\nexport class SkyAgGridWrapperComponent\n implements AfterContentInit, AfterViewInit, OnDestroy, OnInit\n{\n @ContentChild(AgGridAngular, {\n static: true,\n })\n public agGrid: AgGridAngular | undefined;\n\n @HostBinding('class.sky-ag-grid-layout-normal')\n public isNormalLayout = false;\n\n /**\n * Enable a compact layout for the grid when using modern theme. Compact layout uses\n * a smaller font size and row height to display more data in a smaller space.\n */\n @Input({ transform: booleanAttribute })\n public set compact(value: boolean) {\n this.#isCompact.next(value);\n }\n\n /**\n * The minimum height of the grid in pixels. The default value is `50`.\n */\n public readonly minHeight = input<number, unknown>(50, {\n transform: numberAttribute,\n });\n\n public afterAnchorId: string;\n public beforeAnchorId: string;\n public gridId: string;\n public wrapperClasses$: Observable<string[]>;\n\n public get viewkeeperClasses(): string[] {\n return this.#_viewkeeperClasses;\n }\n\n public set viewkeeperClasses(value: string[]) {\n this.#_viewkeeperClasses = value;\n this.#changeDetector.markForCheck();\n }\n\n get #isInEditMode(): boolean {\n if (this.agGrid && this.agGrid.api) {\n const primaryGridEditing = this.agGrid.api.getEditingCells().length > 0;\n if (primaryGridEditing) {\n return true;\n } else if (this.agGrid.api.getGridOption('masterDetail')) {\n let innerEditing = false;\n this.agGrid.api.forEachDetailGridInfo((detailGrid) => {\n if (detailGrid?.api && detailGrid.api.getEditingCells().length > 0) {\n innerEditing = true;\n }\n });\n\n return innerEditing;\n }\n }\n return false;\n }\n\n protected readonly minHeightStyle = computed(() => {\n return `--sky-ag-grid-min-height: ${this.minHeight()}px;`;\n });\n\n #_viewkeeperClasses: string[] = [];\n readonly #ngUnsubscribe = new Subject<void>();\n readonly #themeSvc = inject(SkyThemeService, {\n optional: true,\n });\n readonly #wrapperClasses = new BehaviorSubject<string[]>([\n `ag-theme-sky-data-grid-default`,\n ]);\n readonly #adapterService = inject(SkyAgGridAdapterService);\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #parentChangeDetector = inject(ChangeDetectorRef, {\n optional: true,\n skipSelf: true,\n });\n readonly #elementRef = inject(ElementRef<HTMLElement>);\n readonly #document = inject(DOCUMENT);\n readonly #mutationObserverService = inject(SkyMutationObserverService);\n readonly #isCompact = new BehaviorSubject<boolean>(false);\n readonly #hasEditableClass = new ReplaySubject<boolean>(1);\n\n constructor() {\n idIndex++;\n this.afterAnchorId = 'sky-ag-grid-nav-anchor-after-' + idIndex;\n this.beforeAnchorId = 'sky-ag-grid-nav-anchor-before-' + idIndex;\n this.gridId = 'sky-ag-grid-' + idIndex;\n this.wrapperClasses$ = this.#wrapperClasses.asObservable();\n }\n\n public ngAfterContentInit(): void {\n if (this.agGrid) {\n const domLayout = this.agGrid.gridOptions?.domLayout;\n if (domLayout === 'autoHeight') {\n if (this.agGrid.gridOptions?.context?.enableTopScroll) {\n this.viewkeeperClasses.push(\n '.ag-header',\n '.ag-body-horizontal-scroll',\n );\n } else {\n this.viewkeeperClasses.push('.ag-header');\n }\n } else if (domLayout === 'normal') {\n this.isNormalLayout = true;\n this.#parentChangeDetector?.detectChanges();\n }\n this.agGrid.gridReady\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#moveHorizontalScroll();\n });\n this.agGrid.firstDataRendered\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#moveHorizontalScroll();\n });\n this.agGrid.rowDataUpdated\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#moveHorizontalScroll();\n });\n this.agGrid.cellEditingStarted\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((params: CellEditingStartedEvent) => {\n if (params.colDef.type) {\n const types = Array.isArray(params.colDef.type)\n ? params.colDef.type\n : [params.colDef.type];\n const addClasses = types.map(\n (t) => `sky-ag-grid-cell-editing-${t}`,\n );\n this.#wrapperClasses.next([\n ...this.#wrapperClasses.getValue(),\n ...addClasses,\n ]);\n if (\n types.includes(SkyCellType.Template) &&\n params.rowIndex !== null\n ) {\n this.agGrid?.api.setFocusedCell(params.rowIndex, params.column);\n }\n }\n });\n this.agGrid.cellEditingStopped\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#wrapperClasses.next(\n this.#wrapperClasses\n .getValue()\n .filter((c) => !c.startsWith('sky-ag-grid-cell-editing-')),\n );\n });\n this.agGrid.cellFocused\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event: CellFocusedEvent) => {\n const context = event.context || {};\n\n context['lastFocusedCell'] = {\n rowIndex: event.rowIndex,\n column:\n typeof event.column === 'object'\n ? event.column?.getColId()\n : `${event.column}`,\n };\n\n event.api?.setGridOption('context', context);\n });\n\n this.agGrid.headerFocused\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event: HeaderFocusedEvent) => {\n const context = event.context || {};\n\n context['lastFocusedCell'] = {\n rowIndex: null,\n column: event.column?.getUniqueId\n ? event.column.getUniqueId()\n : `${event.column}`,\n };\n\n event.api?.setGridOption('context', context);\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#hasEditableClass.complete();\n this.#isCompact.complete();\n this.#wrapperClasses.complete();\n }\n\n public ngOnInit(): void {\n combineLatest<[boolean, boolean, SkyThemeSettingsChange | undefined]>([\n this.#hasEditableClass.pipe(distinctUntilChanged()),\n this.#isCompact.pipe(distinctUntilChanged()),\n this.#themeSvc?.settingsChange ?? of(undefined),\n ])\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(([hasEditableClass, isCompact, settings]) => {\n this.#updateGridTheme(\n hasEditableClass,\n isCompact,\n settings?.currentSettings,\n );\n });\n }\n\n public ngAfterViewInit(): void {\n const agGridElement: HTMLElement | undefined =\n this.#elementRef.nativeElement.querySelector('ag-grid-angular');\n const callback = (): void => {\n this.#hasEditableClass.next(\n !!agGridElement?.classList.contains('sky-ag-grid-editable'),\n );\n };\n if (agGridElement) {\n const agGridClassObserver =\n this.#mutationObserverService.create(callback);\n agGridClassObserver.observe(agGridElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n this.#ngUnsubscribe.pipe(take(1)).subscribe(() => {\n agGridClassObserver.disconnect();\n });\n }\n callback();\n }\n\n /**\n * Prevent closing a modal when focused in AG Grid.\n */\n public onKeyUpEscape($event: Event): void {\n $event.stopPropagation();\n this.agGrid?.api.stopEditing(true);\n }\n\n public onGridKeydown(event: KeyboardEvent): void {\n if (this.agGrid && !this.#isInEditMode && event.key === 'Tab') {\n const idToFocus = event.shiftKey\n ? this.beforeAnchorId\n : this.afterAnchorId;\n this.#adapterService.setFocusedElementById(\n this.#elementRef.nativeElement,\n idToFocus,\n );\n }\n }\n\n public onAnchorFocus(event: FocusEvent): void {\n const relatedTarget = event.relatedTarget as HTMLElement | undefined;\n const previousWasGrid =\n relatedTarget && this.#elementRef.nativeElement.contains(relatedTarget);\n\n if (this.agGrid && !previousWasGrid) {\n this.#elementRef.nativeElement\n .querySelector('.ag-tab-guard.ag-tab-guard-top')\n ?.focus();\n }\n }\n\n #moveHorizontalScroll(): void {\n const toTop = !!this.agGrid?.gridOptions?.context?.enableTopScroll;\n const root = this.#elementRef.nativeElement.querySelector('.ag-root');\n const header = root?.querySelector('.ag-header');\n const floatingBottom = root?.querySelector('.ag-floating-bottom');\n const scrollbar = root?.querySelector('.ag-body-horizontal-scroll');\n if (root && header && floatingBottom && scrollbar) {\n if (\n scrollbar.style.height !==\n scrollbar.style.getPropertyValue(\n '--sky-ag-body-horizontal-scroll-width',\n )\n ) {\n scrollbar.style.setProperty(\n '--sky-ag-body-horizontal-scroll-width',\n scrollbar.style.height,\n );\n }\n const isTop = root.children[1].matches('.ag-body-horizontal-scroll');\n if (toTop && !isTop) {\n const fragment = this.#document.createDocumentFragment();\n fragment.appendChild(scrollbar);\n header.after(fragment);\n } else if (!toTop && isTop) {\n const fragment = this.#document.createDocumentFragment();\n fragment.appendChild(scrollbar);\n floatingBottom.after(fragment);\n }\n }\n }\n\n #updateGridTheme(\n hasEditableClass: boolean,\n isCompact: boolean,\n themeSettings?: SkyThemeSettings,\n ): void {\n const skyAgGridTheme = getSkyAgGridTheme(\n hasEditableClass ? 'data-entry-grid' : 'data-grid',\n themeSettings?.theme?.name,\n themeSettings?.mode?.name,\n isCompact ? 'compact' : themeSettings?.spacing?.name,\n );\n this.agGrid?.api.setGridOption('theme', skyAgGridTheme);\n const skyAgGridThemeClassName = getSkyAgGridThemeClassName(\n hasEditableClass,\n themeSettings,\n isCompact,\n );\n const previousValue = this.#wrapperClasses.getValue();\n let value = [\n ...previousValue.filter((c) => !c.startsWith('ag-theme-')),\n skyAgGridThemeClassName,\n ];\n const textSelectionClass = 'sky-ag-grid-text-selection';\n if (this.#getTextSelection(hasEditableClass)) {\n value.push(textSelectionClass);\n } else {\n value = value.filter((c) => c !== textSelectionClass);\n }\n this.#wrapperClasses.next([...new Set(value)]);\n }\n\n #getTextSelection(hasEditableClass: boolean): boolean {\n if (this.agGrid?.gridOptions?.context?.enableCellTextSelection) {\n return !hasEditableClass;\n } else {\n return false;\n }\n }\n}\n","<span\n class=\"nav-anchor\"\n tabindex=\"0\"\n [id]=\"beforeAnchorId\"\n (focusin)=\"onAnchorFocus($event)\"\n>\n</span>\n<div\n class=\"sky-ag-grid\"\n tabindex=\"0\"\n [class.sky-ag-grid-top-scrollbar]=\"\n agGrid?.gridOptions?.context &&\n agGrid?.gridOptions?.context['enableTopScroll']\n \"\n [ngClass]=\"wrapperClasses$ | async\"\n [id]=\"gridId\"\n [skyViewkeeper]=\"viewkeeperClasses\"\n [style]=\"minHeightStyle()\"\n (keydown)=\"onGridKeydown($event)\"\n (keyup.escape)=\"onKeyUpEscape($event)\"\n>\n <ng-content />\n</div>\n<span\n tabindex=\"0\"\n class=\"nav-anchor\"\n [id]=\"afterAnchorId\"\n (focusin)=\"onAnchorFocus($event)\"\n>\n</span>\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Directive,\n Input,\n OnDestroy,\n contentChildren,\n effect,\n inject,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { SkyBreakpoint, SkyMediaQueryService } from '@skyux/core';\nimport {\n SkyDataManagerService,\n SkyDataManagerState,\n SkyDataViewColumnWidths,\n SkyDataViewConfig,\n} from '@skyux/data-manager';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport {\n ColumnMovedEvent,\n ColumnResizedEvent,\n ColumnState,\n DragStoppedEvent,\n GridApi,\n IColumnLimit,\n RowSelectedEvent,\n} from 'ag-grid-community';\nimport { Subject, Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';\n\nfunction toColumnWidthName(breakpoint: SkyBreakpoint): 'xs' | 'sm' {\n return breakpoint === 'xs' ? 'xs' : 'sm';\n}\n\n/**\n * @internal\n */\n@Directive({ selector: '[skyAgGridDataManagerAdapter]' })\nexport class SkyAgGridDataManagerAdapterDirective\n implements AfterContentInit, OnDestroy\n{\n @Input()\n public viewId: string | undefined;\n\n public readonly agGridList = contentChildren<AgGridAngular>(AgGridAngular, {\n descendants: true,\n });\n\n public skyAgGridWrapperList = contentChildren(SkyAgGridWrapperComponent, {\n descendants: true,\n });\n\n #currentAgGrid: AgGridAngular | undefined;\n #currentDataState: SkyDataManagerState | undefined;\n #currentSkyAgGridWrapper: SkyAgGridWrapperComponent | undefined;\n #dataStateSub: Subscription | undefined;\n #viewConfig: SkyDataViewConfig | undefined;\n #ngUnsubscribe = new Subject<void>();\n #changeDetector: ChangeDetectorRef;\n #dataManagerSvc: SkyDataManagerService;\n\n readonly #breakpoint = toSignal(\n inject(SkyMediaQueryService).breakpointChange,\n );\n\n constructor(\n changeDetector: ChangeDetectorRef,\n dataManagerSvc: SkyDataManagerService,\n ) {\n this.#changeDetector = changeDetector;\n this.#dataManagerSvc = dataManagerSvc;\n\n effect(() => {\n const list = this.agGridList();\n\n this.#checkForAgGrid(list);\n });\n\n effect(() => {\n const list = this.skyAgGridWrapperList();\n\n this.#checkForSkyAgGridWrapper(list);\n });\n\n effect(() => {\n const breakpoint = this.#breakpoint();\n\n if (breakpoint) {\n this.#applyColumnWidths(breakpoint);\n }\n });\n }\n\n public ngAfterContentInit(): void {\n if (this.viewId) {\n this.#dataManagerSvc.setViewkeeperClasses(this.viewId, ['.ag-header']);\n this.#viewConfig = this.#dataManagerSvc.getViewById(this.viewId);\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n #checkForAgGrid(agGridList: readonly AgGridAngular[]): void {\n const agGrid = agGridList[0];\n const agGridCount = agGridList.length;\n\n if (agGrid) {\n if (agGrid !== this.#currentAgGrid) {\n this.#registerAgGrid(agGrid);\n }\n\n if (agGridCount > 1) {\n console.warn(\n 'More than one ag-grid child component was found. Using the first ag-Grid.',\n );\n }\n }\n }\n\n #checkForSkyAgGridWrapper(\n wrappers: readonly SkyAgGridWrapperComponent[],\n ): void {\n const count = wrappers.length;\n const wrapper = wrappers[0];\n\n /* istanbul ignore else */\n if (wrapper !== this.#currentSkyAgGridWrapper) {\n this.#registerSkyAgGridWrapper(wrapper);\n }\n\n if (count > 1) {\n console.warn(\n 'More than one ag-grid child component was found. Using the first ag-Grid.',\n );\n }\n }\n\n #unregisterAgGrid(): void {\n this.#currentAgGrid = undefined;\n\n /* istanbul ignore if */\n if (this.#dataStateSub) {\n this.#dataStateSub.unsubscribe();\n }\n }\n\n #unregisterSkyAgGridWrapper(): void {\n this.#currentSkyAgGridWrapper = undefined;\n }\n\n #registerSkyAgGridWrapper(wrapper: SkyAgGridWrapperComponent): void {\n this.#unregisterSkyAgGridWrapper();\n this.#currentSkyAgGridWrapper = wrapper;\n\n setTimeout(() => {\n if (this.#currentSkyAgGridWrapper) {\n this.#currentSkyAgGridWrapper.viewkeeperClasses = [];\n }\n });\n }\n\n #registerAgGrid(agGrid: AgGridAngular): void {\n this.#unregisterAgGrid();\n\n this.#currentAgGrid = agGrid;\n\n if (agGrid) {\n agGrid.gridReady.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {\n if (this.#viewConfig && this.viewId) {\n this.#viewConfig.onSelectAllClick = () => agGrid.api.selectAll();\n this.#viewConfig.onClearAllClick = () => agGrid.api.deselectAll();\n this.#dataManagerSvc.updateViewConfig(this.#viewConfig);\n this.#dataStateSub = this.#dataManagerSvc\n .getDataStateUpdates(this.#viewConfig.id)\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((dataState: SkyDataManagerState) => {\n this.#currentDataState = dataState;\n this.#displayColumns(dataState);\n this.#applySort(dataState);\n });\n\n if (agGrid.gridOptions?.context?.enableTopScroll) {\n this.#dataManagerSvc.setViewkeeperClasses(this.viewId, [\n '.ag-header',\n '.ag-body-horizontal-scroll',\n ]);\n }\n\n this.#applyColumnWidths();\n }\n });\n\n agGrid.columnMoved\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n filter(\n (event: ColumnMovedEvent) =>\n ![\n 'gridInitializing',\n 'uiColumnResized',\n 'uiColumnDragged',\n 'api',\n ].includes(event.source),\n ),\n )\n .subscribe((value: ColumnMovedEvent) => {\n this.#updateColumnsInCurrentDataState(value.api);\n });\n\n agGrid.columnResized\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n filter(\n (event: ColumnResizedEvent) => event.source === 'uiColumnResized',\n ),\n )\n .subscribe((event: ColumnResizedEvent) => {\n const colId = event.column?.getColId();\n const width = event.column?.getActualWidth();\n const breakpoint = this.#breakpoint();\n\n if (colId && width && breakpoint) {\n this.#updateColumnWidth(colId, width, breakpoint);\n }\n });\n\n agGrid.dragStopped\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value: DragStoppedEvent) => {\n this.#updateColumnsInCurrentDataState(value.api);\n });\n\n agGrid.rowSelected\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event: RowSelectedEvent) => {\n if (this.#viewConfig && this.#currentDataState) {\n const row = event.node;\n const selectedIds = this.#currentDataState.selectedIds || [];\n const rowIndex = selectedIds.indexOf(row.data.id);\n\n if (row.isSelected() && rowIndex === -1) {\n selectedIds.push(row.data.id);\n } else if (!row.isSelected() && rowIndex !== -1) {\n selectedIds.splice(rowIndex, 1);\n }\n\n this.#currentDataState.selectedIds = selectedIds;\n this.#dataManagerSvc.updateDataState(\n this.#currentDataState,\n this.#viewConfig.id,\n );\n\n this.#changeDetector.markForCheck();\n }\n });\n\n agGrid.sortChanged.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {\n const gridColumnStates: ColumnState[] = agGrid.api.getColumnState();\n\n const activeSortColumnState =\n gridColumnStates?.find(\n (aGridColumnState) => aGridColumnState.sortIndex === 0,\n ) ??\n gridColumnStates?.find((aGridColumnState) => aGridColumnState.sort);\n\n if (this.#viewConfig && this.#currentDataState) {\n if (activeSortColumnState) {\n const activeSortColumnDef = agGrid.api.getColumnDef(\n activeSortColumnState.colId,\n );\n this.#currentDataState.activeSortOption = {\n descending: activeSortColumnState.sort === 'desc',\n id: activeSortColumnState.colId,\n propertyName: activeSortColumnDef?.field || '',\n label: activeSortColumnDef?.headerName || '',\n };\n } else {\n this.#currentDataState.activeSortOption = undefined;\n }\n this.#dataManagerSvc.updateDataState(\n this.#currentDataState,\n this.#viewConfig.id,\n );\n }\n });\n }\n }\n\n #updateColumnsInCurrentDataState(api: GridApi): void {\n if (this.#viewConfig && this.#currentDataState) {\n const columnOrder = this.#getColumnOrder(api);\n\n const viewState = this.#currentDataState.getViewStateById(\n this.#viewConfig.id,\n );\n\n if (\n viewState &&\n (viewState.displayedColumnIds.length !== columnOrder.length ||\n viewState.displayedColumnIds.some((col, i) => col !== columnOrder[i]))\n ) {\n viewState.displayedColumnIds = columnOrder;\n\n this.#dataManagerSvc.updateDataState(\n this.#currentDataState.addOrUpdateView(\n this.#viewConfig.id,\n viewState,\n ),\n this.#viewConfig.id,\n );\n }\n }\n }\n\n #getColumnOrder(api: GridApi): string[] {\n return api\n .getColumnState()\n .filter((state) => !state.hide)\n .map((state) => state.colId);\n }\n\n #displayColumns(dataState: SkyDataManagerState): void {\n const agGrid = this.#currentAgGrid;\n\n if (agGrid && this.#viewConfig) {\n const viewState = dataState.getViewStateById(this.#viewConfig.id);\n let displayedColumnIds: string[] = [];\n\n /*istanbul ignore else*/\n if (viewState?.displayedColumnIds) {\n displayedColumnIds = viewState.displayedColumnIds;\n }\n\n const columnOrder = this.#getColumnOrder(agGrid.api);\n\n if (\n displayedColumnIds.length !== columnOrder.length ||\n displayedColumnIds.some((col, i) => col !== columnOrder[i])\n ) {\n const hideColumns = agGrid.api\n .getColumnState()\n .map((col) => col.colId)\n .filter((colId) => !displayedColumnIds.includes(colId));\n\n agGrid.api.setColumnsVisible(hideColumns, false);\n agGrid.api.setColumnsVisible(displayedColumnIds, true);\n agGrid.api.moveColumns(displayedColumnIds, 0);\n this.#removeColumnWidths(hideColumns);\n }\n }\n }\n\n #applySort(dataState: SkyDataManagerState): void {\n const agGrid = this.#currentAgGrid;\n const activeSort = dataState.activeSortOption;\n\n if (activeSort) {\n agGrid?.api.applyColumnState({\n state: [\n {\n colId: activeSort.id,\n sort: activeSort.descending ? 'desc' : 'asc',\n },\n ],\n defaultState: { sort: null },\n });\n }\n }\n\n #updateColumnWidth(\n colId: string,\n width: number,\n breakpoint: SkyBreakpoint,\n ): void {\n const viewState =\n this.viewId && this.#currentDataState?.getViewStateById(this.viewId);\n if (viewState && this.viewId && this.#currentDataState) {\n const currentWidths = viewState?.columnWidths;\n\n currentWidths[toColumnWidthName(breakpoint)][colId] = width;\n\n viewState.columnWidths = currentWidths;\n this.#dataManagerSvc.updateDataState(\n this.#currentDataState.addOrUpdateView(this.viewId, viewState),\n this.viewId,\n );\n }\n }\n\n #removeColumnWidths(colIds: string[]): void {\n const viewState =\n this.viewId && this.#currentDataState?.getViewStateById(this.viewId);\n\n if (viewState && this.viewId && this.#currentDataState) {\n const currentWidths = viewState?.columnWidths;\n\n for (const colId of colIds) {\n delete currentWidths['xs'][colId];\n delete currentWidths['sm'][colId];\n }\n\n viewState.columnWidths = currentWidths;\n this.#dataManagerSvc.updateDataState(\n this.#currentDataState.addOrUpdateView(this.viewId, viewState),\n this.viewId,\n );\n }\n }\n\n #applyColumnWidths(breakpoint?: SkyBreakpoint): void {\n breakpoint ??= this.#breakpoint();\n\n if (breakpoint) {\n const viewState =\n this.viewId && this.#currentDataState?.getViewStateById(this.viewId);\n\n if (viewState && viewState.columnWidths && viewState.displayedColumnIds) {\n const columnLimits = this.#getGridColumnLimits(\n viewState.displayedColumnIds,\n viewState.columnWidths,\n toColumnWidthName(breakpoint),\n );\n\n this.#currentAgGrid?.api.sizeColumnsToFit({ columnLimits });\n }\n }\n }\n\n #getGridColumnLimits(\n displayedColumns: string[],\n currentWidths: SkyDataViewColumnWidths,\n breakpointName: keyof SkyDataViewColumnWidths,\n ): IColumnLimit[] {\n const gridColumnLimits: IColumnLimit[] = [];\n\n for (const column of displayedColumns) {\n const columnWidth = currentWidths[breakpointName][column];\n\n if (columnWidth) {\n gridColumnLimits.push({\n key: column,\n minWidth: columnWidth,\n maxWidth: columnWidth,\n });\n }\n }\n return gridColumnLimits;\n }\n}\n","import { NgStyle } from '@angular/common';\nimport {\n Component,\n ElementRef,\n TemplateRef,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { SkyInlineDeleteModule } from '@skyux/layout';\n\n/**\n * Component for rendering the inline delete template in the overlay.\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-row-delete',\n template: `\n <ng-template\n #inlineDeleteTemplateRef\n let-row\n let-tableWidth=\"tableWidth()\"\n let-getRowDeleteItem=\"getRowDeleteItem\"\n let-cancelRowDelete=\"cancelRowDelete\"\n let-confirmRowDelete=\"confirmRowDelete\"\n >\n <div\n #inlineDeleteRef\n class=\"sky-ag-grid-row-delete\"\n [id]=\"'row-delete-ref-' + row.id\"\n [ngStyle]=\"{\n height: row.rowHeight + 'px',\n position: 'fixed',\n top: '-100vh',\n width: tableWidth + 'px',\n }\"\n >\n <sky-inline-delete\n [pending]=\"getRowDeleteItem(row).pending\"\n (cancelTriggered)=\"cancelRowDelete(row)\"\n (deleteTriggered)=\"confirmRowDelete(row)\"\n />\n </div>\n </ng-template>\n `,\n imports: [NgStyle, SkyInlineDeleteModule],\n})\nexport class SkyAgGridRowDeleteComponent {\n public readonly inlineDeleteRefs =\n viewChildren<ElementRef<HTMLDivElement>>('inlineDeleteRef');\n\n public readonly inlineDeleteTemplateRef = viewChild<TemplateRef<unknown>>(\n 'inlineDeleteTemplateRef',\n );\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n Directive,\n ElementRef,\n EnvironmentInjector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n contentChild,\n inject,\n input,\n linkedSignal,\n output,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport {\n SKY_STACKING_CONTEXT,\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAffixer,\n SkyDynamicComponentService,\n SkyOverlayService,\n SkyScrollableHostService,\n} from '@skyux/core';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport { IRowNode } from 'ag-grid-community';\nimport {\n BehaviorSubject,\n Subject,\n animationFrames,\n asapScheduler,\n delay,\n filter,\n map,\n merge,\n observeOn,\n sample,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\n\nimport { SkyAgGridRowDeleteComponent } from './ag-grid-row-delete.component';\nimport { SkyAgGridRowDeleteCancelArgs } from './types/ag-grid-row-delete-cancel-args';\nimport { SkyAgGridRowDeleteConfig } from './types/ag-grid-row-delete-config';\nimport { SkyAgGridRowDeleteConfirmArgs } from './types/ag-grid-row-delete-confirm-args';\nimport { SkyAgGridRowDeleteContents } from './types/ag-grid-row-delete-contents';\n\n@Directive({ selector: '[skyAgGridRowDelete]' })\nexport class SkyAgGridRowDeleteDirective\n implements AfterContentInit, AfterViewInit, OnDestroy\n{\n /**\n * The IDs of the data in the rows where the inline delete appears.\n */\n public readonly rowDeleteIds = input<string[], unknown>([], {\n transform: (value) => (Array.isArray(value) ? value.map(String) : []),\n });\n public readonly rowDeleteIdsChange = output<string[]>();\n\n /**\n * Emits a `SkyAgGridRowDeleteCancelArgs` object when a row's inline delete is cancelled.\n */\n public rowDeleteCancel = output<SkyAgGridRowDeleteCancelArgs>();\n\n /**\n * Emits a `SkyAgGridRowDeleteConfirmArgs` object when a row's inline delete is confirmed.\n */\n public rowDeleteConfirm = output<SkyAgGridRowDeleteConfirmArgs>();\n\n protected readonly agGrid = contentChild(AgGridAngular);\n\n readonly #ngUnsubscribe = new Subject<void>();\n #rowDeleteComponent: SkyAgGridRowDeleteComponent | undefined;\n #rowDeleteConfigs: SkyAgGridRowDeleteConfig[] = [];\n readonly #rowDeleteContents: SkyAgGridRowDeleteContents[] = [];\n #rowDeleteContentsQueue: Pick<\n SkyAgGridRowDeleteContents,\n 'id' | 'overlay'\n >[] = [];\n readonly #rowDeleteContentsQueued = new Subject<void>();\n readonly #rowDeleteIdsInternal = linkedSignal<unknown[], string[]>({\n source: this.rowDeleteIds,\n computation: (value) =>\n [...new Set(value)]\n .filter(Boolean)\n .map(String)\n .sort((a, b) => a.localeCompare(b)),\n equal: (a, b) => a.length === b.length && a.every((v, i) => v === b[i]),\n });\n readonly #clipPath = new BehaviorSubject<string | undefined>(undefined);\n readonly #zIndex = new BehaviorSubject(998);\n readonly #affixService = inject(SkyAffixService);\n readonly #dynamicComponentSvc = inject(SkyDynamicComponentService);\n readonly #elementRef = inject(ElementRef<HTMLElement>);\n readonly #environmentInjector = inject(EnvironmentInjector);\n readonly #overlayService = inject(SkyOverlayService);\n readonly #scrollableHostService = inject(SkyScrollableHostService);\n readonly #stackingContext = inject(SKY_STACKING_CONTEXT, { optional: true });\n readonly #viewContainerRef = inject(ViewContainerRef);\n readonly #viewUpdate = new Subject<void>();\n\n constructor() {\n if (this.#stackingContext) {\n this.#stackingContext.zIndex\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((zIndex) => {\n this.#zIndex.next(zIndex);\n });\n }\n const rowDeleteIds = toObservable<string[]>(this.#rowDeleteIdsInternal);\n toObservable(this.agGrid)\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n filter((agGrid) => !!agGrid),\n switchMap((agGrid: AgGridAngular) =>\n merge(\n agGrid.componentStateChanged,\n agGrid.filterChanged,\n agGrid.firstDataRendered,\n agGrid.gridReady,\n agGrid.gridSizeChanged.pipe(delay(500)),\n agGrid.rowDataUpdated.pipe(\n takeUntil(this.#ngUnsubscribe),\n tap((evt) => {\n const ids = this.#rowDeleteIdsInternal();\n this.#rowDeleteIdsInternal.set(\n ids.filter((id) => evt.api.getRowNode(id)),\n );\n }),\n ),\n agGrid.sortChanged,\n this.#viewUpdate.pipe(delay(200)),\n rowDeleteIds.pipe(\n takeUntil(this.#ngUnsubscribe),\n tap((value) => {\n this.#rowDeleteConfigs = this.#rowDeleteConfigs.filter(\n (config) => value.includes(config.id),\n );\n\n for (const id of value) {\n if (\n !this.#rowDeleteConfigs.some((config) => config.id === id)\n ) {\n this.#rowDeleteConfigs.push({\n id,\n pending: false,\n });\n }\n }\n\n this.rowDeleteIdsChange.emit(value);\n }),\n ),\n ).pipe(\n takeUntil(this.#ngUnsubscribe),\n // After change detection.\n observeOn(asapScheduler),\n // Wait for a render cycle.\n sample(animationFrames()),\n map(() => undefined),\n ),\n ),\n )\n .subscribe(() => {\n this.#updateRowDeleteStates();\n });\n\n this.#rowDeleteContentsQueued\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n // After change detection.\n observeOn(asapScheduler),\n // Wait for a render cycle.\n sample(animationFrames()),\n )\n .subscribe(() => {\n const queue = [...this.#rowDeleteContentsQueue];\n this.#rowDeleteContentsQueue = [];\n queue.forEach(({ id, overlay }) => {\n if (\n this.#rowDeleteContents.findIndex(\n (content) => content.id === id,\n ) === -1 &&\n this.#rowDeleteIdsInternal().includes(id)\n ) {\n const inlineDeleteRef = this.#rowDeleteComponent\n ?.inlineDeleteRefs()\n .find(\n (elRef) => elRef.nativeElement.id === 'row-delete-ref-' + id,\n );\n const rowNode = this.agGrid()?.api.getRowNode(id);\n if (rowNode && inlineDeleteRef) {\n const affixer = this.#affixService.createAffixer(inlineDeleteRef);\n this.#affixToRow(affixer, id);\n this.#rowDeleteContents.push({ id, affixer, overlay });\n return;\n }\n }\n this.#overlayService.close(overlay);\n });\n });\n }\n\n public ngAfterContentInit(): void {\n this.#rowDeleteComponent = this.#dynamicComponentSvc.createComponent(\n SkyAgGridRowDeleteComponent,\n {\n environmentInjector: this.#environmentInjector,\n viewContainerRef: this.#viewContainerRef,\n },\n ).instance;\n }\n\n public ngAfterViewInit(): void {\n if (this.#stackingContext) {\n this.#scrollableHostService\n .watchScrollableHostClipPathChanges(this.#elementRef)\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((clipPath) => {\n this.#clipPath.next(clipPath);\n });\n }\n this.#viewUpdate.next();\n }\n\n public ngOnDestroy(): void {\n this.#viewUpdate.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n this.#rowDeleteContents.forEach(({ id }) => {\n this.#destroyRowDelete(id);\n });\n }\n\n public cancelRowDelete(row: IRowNode): void {\n if (row.id) {\n this.#rowDeleteIdsInternal.set(\n this.#rowDeleteIdsInternal().filter((id) => id !== row.id),\n );\n this.rowDeleteCancel.emit({ id: row.id });\n }\n }\n\n public confirmRowDelete(row: IRowNode): void {\n const rowConfig = this.#rowDeleteConfigs.find(\n (config) => config.id === row.id,\n );\n if (row.id && rowConfig) {\n rowConfig.pending = true;\n this.rowDeleteConfirm.emit({ id: row.id });\n }\n }\n\n public getRowDeleteItem(row: IRowNode): SkyAgGridRowDeleteConfig {\n return (\n this.#rowDeleteConfigs.find((config) => config.id === row.id) ?? {\n id: `${row.id}`,\n pending: false,\n }\n );\n }\n\n #affixToRow(affixer: SkyAffixer, id: string): void {\n const rowElement = this.#elementRef.nativeElement.querySelector(`\n [row-id=\"${id}\"] div[aria-colindex],\n .ag-row.sky-ag-grid-row-${id} div[aria-colindex]\n `);\n const values = this.#rowDeleteIdsInternal();\n\n if (rowElement && values.includes(id)) {\n affixer.affixTo(rowElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n isSticky: true,\n placement: 'above',\n verticalAlignment: 'top',\n horizontalAlignment: 'left',\n enableAutoFit: false,\n });\n }\n }\n\n #destroyRowDelete(id: string): void {\n const idx = this.#rowDeleteContents.findIndex(\n (content) => content.id === id,\n );\n if (idx > -1 && this.#rowDeleteContents[idx].overlay) {\n this.#rowDeleteContents[idx].affixer.destroy();\n this.#overlayService.close(this.#rowDeleteContents[idx].overlay);\n this.#rowDeleteContents.splice(idx, 1);\n }\n }\n\n #updateRowDeleteStates(): void {\n const deleteTemplateRef =\n this.#rowDeleteComponent?.inlineDeleteTemplateRef();\n const agGrid = this.agGrid();\n const value = this.#rowDeleteIdsInternal();\n\n const contentIds = this.#rowDeleteContents.map((content) => content.id);\n for (const id of contentIds) {\n if (!value.includes(id)) {\n this.#destroyRowDelete(id);\n }\n }\n\n if (deleteTemplateRef && agGrid) {\n for (const id of value) {\n this.#updateOneRowDeleteState(id, agGrid, deleteTemplateRef);\n }\n }\n }\n\n #updateOneRowDeleteState(\n id: string,\n agGrid: AgGridAngular,\n deleteTemplateRef: TemplateRef<unknown>,\n ): void {\n const rowNode = agGrid.api.getRowNode(id);\n const idx = this.#rowDeleteContents.findIndex(\n (content) => content.id === id,\n );\n if (idx > -1) {\n if (rowNode?.displayed) {\n // We must reaffix things when the data changes because the rows rerender and the previous element that the delete was affixed\n // to is destroyed.\n this.#affixToRow(this.#rowDeleteContents[idx].affixer, id);\n } else {\n this.#destroyRowDelete(id);\n }\n } else if (rowNode) {\n const overlay = this.#overlayService.create({\n enableScroll: true,\n environmentInjector: this.#environmentInjector,\n showBackdrop: false,\n closeOnNavigation: true,\n enableClose: false,\n enablePointerEvents: true,\n });\n\n overlay.attachTemplate(deleteTemplateRef, {\n $implicit: rowNode,\n tableWidth: () =>\n this.#elementRef.nativeElement.querySelector('.sky-ag-grid')\n .offsetWidth,\n getRowDeleteItem: (row: IRowNode) => this.getRowDeleteItem(row),\n cancelRowDelete: (row: IRowNode) => this.cancelRowDelete(row),\n confirmRowDelete: (row: IRowNode) => this.confirmRowDelete(row),\n });\n\n /**\n * We are manually setting the z-index here because overlays will always be on top of\n * the omnibar. The default manual setting is 2 less than the omnibar's z-index of 1000 and one less than\n * the header row's viewkeeper which is 999. We discussed changing the overlay service to allow for this\n * but decided against that change at this time due to its niche nature.\n */\n this.#zIndex\n .pipe(takeUntil(this.#ngUnsubscribe), takeUntil(overlay.closed))\n .subscribe((zIndex) => {\n overlay.componentRef.instance.zIndex = zIndex.toString(10);\n });\n this.#clipPath\n .pipe(takeUntil(this.#ngUnsubscribe), takeUntil(overlay.closed))\n .subscribe((clipPath) => {\n overlay.componentRef.instance.updateClipPath(clipPath);\n });\n this.#rowDeleteContentsQueue.push({ id, overlay });\n this.#rowDeleteContentsQueued.next();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AgGridAngular } from 'ag-grid-angular';\n\nimport { SkyAgGridResourcesModule } from '../shared/sky-ag-grid-resources.module';\n\nimport { SkyAgGridDataManagerAdapterDirective } from './ag-grid-data-manager-adapter.directive';\nimport { SkyAgGridRowDeleteDirective } from './ag-grid-row-delete.directive';\nimport { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';\n\n@NgModule({\n imports: [\n AgGridAngular,\n CommonModule,\n SkyAgGridDataManagerAdapterDirective,\n SkyAgGridResourcesModule,\n SkyAgGridRowDeleteDirective,\n SkyAgGridWrapperComponent,\n ],\n exports: [\n SkyAgGridDataManagerAdapterDirective,\n SkyAgGridRowDeleteDirective,\n SkyAgGridWrapperComponent,\n ],\n})\nexport class SkyAgGridModule {}\n","import { SkyAgGridLookupProperties } from './types/lookup-properties';\n\n/**\n * @internal\n */\nexport function applySkyLookupPropertiesDefaults(\n skyLookupProperties: SkyAgGridLookupProperties | undefined,\n): SkyAgGridLookupProperties {\n /* istanbul ignore if */\n if (!skyLookupProperties) {\n return {};\n }\n\n return {\n addClick: skyLookupProperties.addClick,\n ariaLabel: skyLookupProperties.ariaLabel || '',\n autocompleteAttribute: skyLookupProperties.autocompleteAttribute || 'off',\n data: skyLookupProperties.data || [],\n debounceTime: skyLookupProperties.debounceTime || 0,\n descriptorProperty: skyLookupProperties.descriptorProperty || 'name',\n disabled: skyLookupProperties.disabled || false,\n enableShowMore: skyLookupProperties.enableShowMore || false,\n idProperty: skyLookupProperties.idProperty,\n placeholderText: skyLookupProperties.placeholderText || '',\n propertiesToSearch: skyLookupProperties.propertiesToSearch,\n search: skyLookupProperties.search,\n searchAsync: skyLookupProperties.searchAsync,\n searchFilters: skyLookupProperties.searchFilters || [],\n searchResultsLimit: skyLookupProperties.searchResultsLimit,\n searchResultTemplate: skyLookupProperties.searchResultTemplate,\n searchTextMinimumCharacters:\n skyLookupProperties.searchTextMinimumCharacters || 1,\n selectMode: skyLookupProperties.selectMode,\n showAddButton: skyLookupProperties.showAddButton || false,\n showMoreConfig: skyLookupProperties.showMoreConfig || {},\n wrapperClass: 'ag-custom-component-popup',\n };\n}\n","/** The initial action that a cell editor should take when initialized. */\nexport enum SkyAgGridCellEditorInitialAction {\n /** The cell should be cleared. */\n Delete = 0,\n /** The cell value should be highlighted. */\n Highlighted = 1,\n /** The cell value should be replaced with the initializing value. */\n Replace = 2,\n /** The cell should not be modified and the cursor is placed at the end of the value. */\n Untouched = 3,\n}\n","import { ICellEditorParams, KeyCode } from 'ag-grid-community';\n\nimport { SkyAgGridCellEditorInitialAction } from './cell-editor-initial-action';\n\nexport class SkyAgGridCellEditorUtils {\n /**\n * Gets the initial action that a cell editor should take when initialized.\n * @param params The editor's initializing parameters.\n */\n public static getEditorInitialAction(\n params: ICellEditorParams | undefined,\n ): SkyAgGridCellEditorInitialAction {\n if (params?.cellStartedEdit) {\n if (\n params.eventKey === KeyCode.BACKSPACE ||\n params.eventKey === KeyCode.DELETE\n ) {\n return SkyAgGridCellEditorInitialAction.Delete;\n } else if (params.eventKey?.length === 1) {\n return SkyAgGridCellEditorInitialAction.Replace;\n } else {\n if (params.eventKey !== KeyCode.F2) {\n return SkyAgGridCellEditorInitialAction.Highlighted;\n } else {\n return SkyAgGridCellEditorInitialAction.Untouched;\n }\n }\n } else {\n return SkyAgGridCellEditorInitialAction.Untouched;\n }\n }\n\n public static subtractOrZero(\n minuend: number | null | undefined,\n subtrahend: number,\n ): number {\n // Swapping minuend with subtrahend when minuend is null or undefined results in\n // the subtrahend being subtracted from itself, which will always be 0.\n return (minuend ?? subtrahend) - subtrahend;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyAutocompleteModule } from '@skyux/lookup';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { SkyAgGridAutocompleteProperties } from '../../types/autocomplete-properties';\nimport { SkyCellEditorAutocompleteParams } from '../../types/cell-editor-autocomplete-params';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-autocomplete',\n templateUrl: './cell-editor-autocomplete.component.html',\n styleUrls: ['./cell-editor-autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyI18nModule,\n ],\n})\nexport class SkyAgGridCellEditorAutocompleteComponent\n implements ICellEditorAngularComp\n{\n public columnHeader: string | undefined;\n public editorForm = new UntypedFormGroup({\n selection: new UntypedFormControl(),\n });\n public rowNumber: number | undefined;\n public skyComponentProperties: SkyAgGridAutocompleteProperties = {};\n\n #autocompleteOpen = false;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n #params: SkyCellEditorAutocompleteParams | undefined;\n #elementRef = inject(ElementRef) as ElementRef<HTMLElement>;\n\n @ViewChild('skyCellEditorAutocomplete', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onBlur(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else {\n this.#stopEditingOnBlur();\n }\n }\n\n public agInit(params: SkyCellEditorAutocompleteParams): void {\n this.#params = params;\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('selection');\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n }\n\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.rowNumber = (this.#params.node?.rowIndex ?? 0) + 1;\n this.skyComponentProperties = this.#params.skyComponentProperties || {};\n }\n\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n if (this.input) {\n this.input.nativeElement.focus();\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n const charPress = this.#params?.eventKey as string;\n\n this.input.nativeElement.select();\n this.input.nativeElement.setRangeText(charPress);\n // Ensure the cursor is at the end of the text.\n this.input.nativeElement.setSelectionRange(\n charPress.length,\n charPress.length,\n );\n this.input.nativeElement.dispatchEvent(new Event('input'));\n }\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n this.input.nativeElement.select();\n }\n }\n });\n }\n\n public getValue(): any | undefined {\n const val = this.editorForm.get('selection')?.value;\n return val !== undefined && val !== null ? val : undefined;\n }\n\n public onAutocompleteOpenChange($event: boolean): void {\n this.#autocompleteOpen = $event;\n this.#stopEditingOnBlur();\n }\n\n #stopEditingOnBlur(): void {\n if (\n !this.#autocompleteOpen &&\n this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus') &&\n !this.#elementRef.nativeElement.matches(':focus-within')\n ) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","<div class=\"sky-ag-grid-cell-editor-autocomplete\" [formGroup]=\"editorForm\">\n <sky-autocomplete\n [allowAnyValue]=\"skyComponentProperties.allowAnyValue\"\n [data]=\"skyComponentProperties.data\"\n [debounceTime]=\"skyComponentProperties.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties.descriptorProperty\"\n [highlightSearchText]=\"skyComponentProperties.highlightSearchText ?? true\"\n [propertiesToSearch]=\"skyComponentProperties.propertiesToSearch\"\n [search]=\"skyComponentProperties.search\"\n [searchFilters]=\"skyComponentProperties.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties.searchTextMinimumCharacters\n \"\n (selectionChange)=\"\n skyComponentProperties.selectionChange &&\n skyComponentProperties.selectionChange($event)\n \"\n (openChange)=\"onAutocompleteOpenChange($event)\"\n >\n <input\n #skyCellEditorAutocomplete\n formControlName=\"selection\"\n skyAutocomplete\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_autocomplete_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n />\n </sky-autocomplete>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyAutonumericModule } from '@skyux/autonumeric';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellEditorCurrencyParams } from '../../types/cell-editor-currency-params';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\nimport { SkyAgGridCurrencyProperties } from '../../types/currency-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-currency',\n templateUrl: './cell-editor-currency.component.html',\n styleUrls: ['./cell-editor-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n SkyAutonumericModule,\n SkyI18nModule,\n ],\n})\nexport class SkyAgGridCellEditorCurrencyComponent\n implements ICellEditorAngularComp\n{\n public skyComponentProperties: SkyAgGridCurrencyProperties & {\n isCancellable: boolean;\n } = {\n isCancellable: false,\n };\n public columnHeader: string | undefined;\n public columnWidth: number | undefined;\n public currency = new UntypedFormControl();\n public editorForm = new UntypedFormGroup({\n currency: this.currency,\n });\n public params: SkyCellEditorCurrencyParams | undefined;\n public rowHeightWithoutBorders: number | undefined;\n public rowNumber: number | undefined;\n\n @ViewChild('skyCellEditorCurrency', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (event.relatedTarget && event.relatedTarget === this.params?.eGridCell) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n }\n }\n\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n readonly #changeDetector = inject(ChangeDetectorRef);\n #initialized = false;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorCurrencyParams): void {\n this.params = params;\n this.columnHeader = this.params.api.getDisplayNameForColumn(\n this.params.column,\n 'header',\n );\n this.rowNumber = this.params.rowIndex + 1;\n this.columnWidth = this.params.column.getActualWidth();\n this.rowHeightWithoutBorders = SkyAgGridCellEditorUtils.subtractOrZero(\n this.params.node?.rowHeight,\n 4,\n );\n this.skyComponentProperties = {\n ...(this.params.skyComponentProperties || {\n decimalPlaces: 2,\n currencySymbol: '$',\n }),\n isCancellable: false,\n };\n }\n\n public refresh(params: SkyCellEditorCurrencyParams): void {\n this.agInit(params);\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n this.input?.nativeElement.focus();\n\n // This setup is in `afterGuiAttached` due to the lifecycle of autonumeric which will highlight the initial value if it is in place when it renders.\n // Since we don't want that, we set the initial value after autonumeric initializes.\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(\n this.params,\n );\n const control = this.currency;\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(\n parseFloat(String(this.params?.eventKey)) || undefined,\n );\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(parseFloat(String(this.params?.value)));\n break;\n }\n }\n\n this.#changeDetector.markForCheck();\n\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted &&\n (this.params?.value ?? '') !== ''\n ) {\n this.input?.nativeElement.select();\n }\n\n // When the cell is initialized with the Enter key, we need to suppress the first `onPressEnter`.\n this.#initialized = this.params?.eventKey !== 'Enter';\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): number | undefined {\n return this.currency.value ?? undefined;\n }\n\n /**\n * The autoNumeric library's event handler suppresses the escape key event. This additional handler re-enables AG Grid's default functionality.\n */\n public onPressEscape(): void {\n if (this.params) {\n this.params.api.stopEditing(true);\n this.params.api.setFocusedCell(this.params.rowIndex, this.params.column);\n }\n }\n\n public onPressEnter(): void {\n if (this.params && this.#initialized) {\n this.params.stopEditing();\n }\n this.#initialized = true;\n }\n}\n","<ng-container [formGroup]=\"editorForm\">\n <input\n #skyCellEditorCurrency\n type=\"text\"\n [formControl]=\"currency\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_currency_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [skyAutonumeric]=\"skyComponentProperties\"\n [skyAutonumericFormChangesUnformatted]=\"params?.eventKey?.length === 1\"\n (keyup.enter)=\"onPressEnter()\"\n (keyup.escape)=\"onPressEscape()\"\n />\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyDatepickerModule } from '@skyux/datetime';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { PopupComponent } from 'ag-grid-community';\nimport { fromEvent } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { SkyCellEditorDatepickerParams } from '../../types/cell-editor-datepicker-params';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\nimport { SkyAgGridDatepickerProperties } from '../../types/datepicker-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-datepicker',\n templateUrl: './cell-editor-datepicker.component.html',\n styleUrls: ['./cell-editor-datepicker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n SkyDatepickerModule,\n SkyI18nModule,\n ],\n})\nexport class SkyAgGridCellEditorDatepickerComponent\n extends PopupComponent\n implements ICellEditorAngularComp\n{\n public columnHeader: string | undefined;\n public columnWidth: number | undefined;\n public columnWidthWithoutBorders: number | undefined;\n public editorForm = new UntypedFormGroup({\n date: new UntypedFormControl(),\n });\n public rowHeightWithoutBorders: number | null | undefined;\n public rowNumber: number | undefined;\n public skyComponentProperties: SkyAgGridDatepickerProperties = {};\n\n @ViewChild('skyCellEditorDatepickerInput', { read: ElementRef })\n public datepickerInput: ElementRef | undefined;\n\n protected resolvedDateFormat = '';\n\n #calendarOpen = false;\n #params: SkyCellEditorDatepickerParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n\n #elementRef = inject(ElementRef) as ElementRef<HTMLElement>;\n #changeDetector = inject(ChangeDetectorRef);\n #themeSvc = inject(SkyThemeService, { optional: true }) || undefined;\n\n constructor() {\n super();\n }\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the datepicker input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else if (event.target === this.datepickerInput?.nativeElement) {\n this.#stopEditingOnBlur();\n }\n }\n\n public onCalendarOpenChange(isOpen: boolean): void {\n this.#calendarOpen = isOpen;\n this.#stopEditingOnBlur();\n }\n\n public onDateFormatChange(dateFormat: string): void {\n this.resolvedDateFormat = dateFormat;\n this.#changeDetector.markForCheck();\n }\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorDatepickerParams): void {\n this.#params = params;\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('date');\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(params.eventKey);\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n if (this.#params.skyComponentProperties?.disabled) {\n control.disable();\n }\n }\n this.#changeDetector.markForCheck();\n\n this.skyComponentProperties = this.#params.skyComponentProperties || {};\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.columnWidth = this.#params.column.getActualWidth();\n this.columnWidthWithoutBorders = this.columnWidth - 2;\n this.rowHeightWithoutBorders = (this.#params.node.rowHeight as number) - 3;\n this.rowNumber = this.#params.rowIndex + 1;\n this.#themeSvc?.settingsChange.subscribe((themeSettings) => {\n if (themeSettings.currentSettings.theme.name === 'modern') {\n this.columnWidthWithoutBorders = this.columnWidth;\n this.rowHeightWithoutBorders = this.#params?.node?.rowHeight;\n } else {\n this.columnWidthWithoutBorders =\n this.columnWidth === undefined ? undefined : this.columnWidth - 2;\n this.rowHeightWithoutBorders = SkyAgGridCellEditorUtils.subtractOrZero(\n this.#params?.node.rowHeight,\n 3,\n );\n }\n });\n }\n\n public getPopupPosition(): 'over' | 'under' | undefined {\n return 'over';\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n const datepickerInputEl = this.datepickerInput?.nativeElement as\n | HTMLInputElement\n | undefined;\n\n if (datepickerInputEl) {\n datepickerInputEl.focus();\n\n // programmatically set the value of in the input; however, do not do this via the form control so that the value is not formatted when editing starts.\n // Watch for the first blur and fire a 'change' event as programmatic changes won't queue a change event, but we need to do this so that formatting happens if the user tabs to the calendar button.\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n fromEvent(datepickerInputEl, 'blur')\n .pipe(first())\n .subscribe(() => {\n datepickerInputEl.dispatchEvent(new Event('change'));\n });\n datepickerInputEl.select();\n\n const charPress = this.#params?.eventKey as string;\n\n if (charPress) {\n datepickerInputEl.setRangeText(charPress);\n // Ensure the cursor is at the end of the text.\n datepickerInputEl.setSelectionRange(\n charPress.length,\n charPress.length,\n );\n }\n }\n\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n datepickerInputEl.select();\n }\n }\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): Date {\n this.datepickerInput?.nativeElement.blur();\n return this.editorForm.get('date')?.value;\n }\n\n #stopEditingOnBlur(): void {\n if (\n !this.#calendarOpen &&\n this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus') &&\n !this.#elementRef.nativeElement.matches(':focus-within')\n ) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","<div\n class=\"sky-ag-grid-cell-editor-datepicker\"\n [formGroup]=\"editorForm\"\n [style.width.px]=\"columnWidthWithoutBorders\"\n>\n <sky-datepicker\n data-sky-id=\"cell-datepicker\"\n pickerClass=\"ag-custom-component-popup\"\n (dateFormatChange)=\"onDateFormatChange($event)\"\n (openChange)=\"onCalendarOpenChange($event)\"\n >\n <input\n #skyCellEditorDatepickerInput\n formControlName=\"date\"\n skyDatepickerInput\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_datepicker_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [attr.title]=\"\n resolvedDateFormat\n ? ('skyux_datepicker_format_hint_text'\n | skyLibResources: resolvedDateFormat)\n : null\n \"\n [minDate]=\"skyComponentProperties.minDate\"\n [maxDate]=\"skyComponentProperties.maxDate\"\n [dateFormat]=\"skyComponentProperties.dateFormat\"\n [startingDay]=\"skyComponentProperties.startingDay\"\n [skyDatepickerNoValidate]=\"skyComponentProperties.skyDatepickerNoValidate\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n />\n </sky-datepicker>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyInputBoxModule } from '@skyux/forms';\nimport { SkyLookupModule } from '@skyux/lookup';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { ColumnResizedEvent } from 'ag-grid-community';\n\nimport { applySkyLookupPropertiesDefaults } from '../../apply-lookup-properties-defaults';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyCellEditorLookupParams } from '../../types/cell-editor-lookup-params';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\nimport { SkyAgGridLookupProperties } from '../../types/lookup-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-lookup',\n templateUrl: './cell-editor-lookup.component.html',\n styleUrls: ['./cell-editor-lookup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n SkyInputBoxModule,\n FormsModule,\n ReactiveFormsModule,\n SkyLookupModule,\n SkyIdModule,\n ],\n})\nexport class SkyAgGridCellEditorLookupComponent\n implements ICellEditorAngularComp\n{\n @HostBinding('style.width.px')\n public width: number | undefined;\n\n public skyComponentProperties?: SkyAgGridLookupProperties;\n public isAlive = false;\n public editorForm = new UntypedFormGroup({\n selection: new UntypedFormControl({\n value: [],\n disabled: false,\n }),\n });\n public useAsyncSearch = false;\n\n protected labelText: string | undefined = undefined;\n\n #lookupOpen = false;\n #params: SkyCellEditorLookupParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n #changeDetector = inject(ChangeDetectorRef);\n #elementRef = inject(ElementRef<HTMLElement>);\n\n @HostListener('focusout', ['$event'])\n public onBlur(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else {\n this.#stopEditingOnBlur();\n }\n }\n\n public agInit(params: SkyCellEditorLookupParams): void {\n this.#params = params;\n if (!Array.isArray(this.#params.value)) {\n throw new Error(`Lookup value must be an array`);\n }\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('selection');\n this.labelText = params.skyComponentProperties?.ariaLabelledBy\n ? undefined\n : params.skyComponentProperties?.ariaLabel ||\n params.colDef.headerName ||\n params.colDef.headerTooltip ||\n params.colDef.field ||\n params.colDef.colId;\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue([]);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n\n if (this.#params.skyComponentProperties?.disabled) {\n control.disable();\n } else {\n control.enable();\n }\n }\n\n this.skyComponentProperties = this.#updateComponentProperties(this.#params);\n this.useAsyncSearch =\n typeof this.skyComponentProperties.searchAsync === 'function';\n this.isAlive = true;\n this.width = this.#params.column.getActualWidth();\n this.#params.api.addEventListener(\n 'columnResized',\n (event: ColumnResizedEvent) => {\n if (event.column?.getColId() === this.#params?.column.getColId()) {\n this.width = event.column?.getActualWidth();\n this.#changeDetector.markForCheck();\n }\n },\n );\n this.#changeDetector.markForCheck();\n }\n\n public isCancelAfterEnd(): boolean {\n // Shut down components to commit values before final value syncs to grid.\n this.isAlive = false;\n return false;\n }\n\n public getGui(): HTMLElement {\n return this.#elementRef.nativeElement;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getValue(): any[] {\n return this.editorForm.get('selection')?.value;\n }\n\n public isPopup(): boolean {\n return true;\n }\n\n public getPopupPosition(): 'over' | 'under' | undefined {\n return 'over';\n }\n\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n const lookupInput: HTMLTextAreaElement =\n this.#elementRef.nativeElement.querySelector('.sky-lookup-input');\n lookupInput.focus();\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n lookupInput.setRangeText(`${this.#params?.eventKey}`);\n // Ensure the cursor is at the end of the text.\n lookupInput.setSelectionRange(\n lookupInput.value.length,\n lookupInput.value.length,\n );\n lookupInput.dispatchEvent(new Event('input'));\n } else if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Untouched\n ) {\n // Ensure the cursor is at the end of the text.\n lookupInput.setSelectionRange(\n lookupInput.value.length,\n lookupInput.value.length,\n );\n }\n });\n }\n\n public onLookupOpenChange(isOpen: boolean): void {\n this.#lookupOpen = isOpen;\n this.#stopEditingOnBlur();\n }\n\n #updateComponentProperties(\n params: SkyCellEditorLookupParams,\n ): SkyAgGridLookupProperties {\n const skyLookupProperties = params.skyComponentProperties;\n return applySkyLookupPropertiesDefaults(skyLookupProperties);\n }\n\n #stopEditingOnBlur(): void {\n if (\n !this.#lookupOpen &&\n this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus') &&\n !this.#elementRef.nativeElement.matches(':focus-within')\n ) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","@if (isAlive && useAsyncSearch) {\n <sky-input-box\n [disabled]=\"skyComponentProperties?.disabled\"\n [formGroup]=\"editorForm\"\n >\n <sky-lookup\n formControlName=\"selection\"\n [ariaLabelledBy]=\"\n skyComponentProperties?.ariaLabelledBy ?? screenReaderLabel.id\n \"\n [autocompleteAttribute]=\"skyComponentProperties?.autocompleteAttribute\"\n [data]=\"skyComponentProperties?.data\"\n [debounceTime]=\"skyComponentProperties?.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties?.descriptorProperty\"\n [enableShowMore]=\"skyComponentProperties?.enableShowMore\"\n [idProperty]=\"skyComponentProperties?.idProperty\"\n [placeholderText]=\"skyComponentProperties?.placeholderText\"\n [propertiesToSearch]=\"skyComponentProperties?.propertiesToSearch\"\n [search]=\"skyComponentProperties?.search\"\n [searchFilters]=\"skyComponentProperties?.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties?.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties?.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties?.searchTextMinimumCharacters\n \"\n [selectMode]=\"skyComponentProperties?.selectMode\"\n [showAddButton]=\"skyComponentProperties?.showAddButton\"\n [showMoreConfig]=\"skyComponentProperties?.showMoreConfig\"\n [wrapperClass]=\"skyComponentProperties?.wrapperClass\"\n (searchAsync)=\"skyComponentProperties?.searchAsync?.($event)\"\n (addClick)=\"skyComponentProperties?.addClick?.($event)\"\n (openChange)=\"onLookupOpenChange($event)\"\n />\n </sky-input-box>\n}\n@if (isAlive && !useAsyncSearch) {\n <sky-input-box\n [disabled]=\"skyComponentProperties?.disabled\"\n [formGroup]=\"editorForm\"\n >\n <sky-lookup\n formControlName=\"selection\"\n [ariaLabelledBy]=\"\n skyComponentProperties?.ariaLabelledBy ?? screenReaderLabel.id\n \"\n [autocompleteAttribute]=\"skyComponentProperties?.autocompleteAttribute\"\n [data]=\"skyComponentProperties?.data\"\n [debounceTime]=\"skyComponentProperties?.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties?.descriptorProperty\"\n [enableShowMore]=\"skyComponentProperties?.enableShowMore\"\n [idProperty]=\"skyComponentProperties?.idProperty\"\n [placeholderText]=\"skyComponentProperties?.placeholderText\"\n [propertiesToSearch]=\"skyComponentProperties?.propertiesToSearch\"\n [search]=\"skyComponentProperties?.search\"\n [searchFilters]=\"skyComponentProperties?.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties?.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties?.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties?.searchTextMinimumCharacters\n \"\n [selectMode]=\"skyComponentProperties?.selectMode\"\n [showAddButton]=\"skyComponentProperties?.showAddButton\"\n [showMoreConfig]=\"skyComponentProperties?.showMoreConfig\"\n [wrapperClass]=\"skyComponentProperties?.wrapperClass\"\n (addClick)=\"skyComponentProperties?.addClick?.($event)\"\n (openChange)=\"onLookupOpenChange($event)\"\n />\n </sky-input-box>\n}\n<div #screenReaderLabel=\"skyId\" class=\"sky-screen-reader-only\" skyId>\n {{ labelText }}\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { ICellEditorParams } from 'ag-grid-community';\n\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyCellEditorNumberParams } from '../../types/cell-editor-number-params';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-number',\n templateUrl: './cell-editor-number.component.html',\n styleUrls: ['./cell-editor-number.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule, SkyI18nModule],\n})\nexport class SkyAgGridCellEditorNumberComponent\n implements ICellEditorAngularComp\n{\n public columnHeader: string | undefined;\n public columnWidth: number | undefined;\n public editorForm = new UntypedFormGroup({\n number: new UntypedFormControl(),\n });\n public rowHeightWithoutBorders: number | undefined;\n public rowNumber: number | undefined;\n public max: number | undefined;\n public min: number | undefined;\n\n @ViewChild('skyCellEditorNumber', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n }\n }\n\n #params: ICellEditorParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorNumberParams): void {\n this.#params = params;\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('number');\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(\n parseFloat(this.#params?.eventKey as string) || undefined,\n );\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n }\n\n this.max = params.skyComponentProperties?.max;\n this.min = params.skyComponentProperties?.min;\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.rowNumber = this.#params.rowIndex + 1;\n this.columnWidth = this.#params.column.getActualWidth();\n this.rowHeightWithoutBorders = (this.#params.node.rowHeight as number) - 4;\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n if (this.input) {\n this.input.nativeElement.focus();\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n this.input.nativeElement.select();\n }\n }\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): number | undefined {\n const val = this.editorForm.get('number')?.value;\n return val !== undefined && val !== null ? val : undefined;\n }\n}\n","<ng-container [formGroup]=\"editorForm\">\n <input\n #skyCellEditorNumber\n formControlName=\"number\"\n type=\"number\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_number_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [max]=\"max ?? null\"\n [min]=\"min ?? null\"\n />\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { ICellEditorParams } from 'ag-grid-community';\n\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyCellEditorTextParams } from '../../types/cell-editor-text-params';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-text',\n templateUrl: './cell-editor-text.component.html',\n styleUrls: ['./cell-editor-text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule, SkyI18nModule],\n})\nexport class SkyAgGridCellEditorTextComponent\n implements ICellEditorAngularComp\n{\n public textInputLabel: string | undefined;\n public columnHeader: string | undefined;\n public editorForm = new UntypedFormGroup({\n text: new UntypedFormControl(),\n });\n public rowNumber: number | undefined;\n public maxlength: number | undefined;\n\n @ViewChild('skyCellEditorText', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n }\n }\n\n #params: ICellEditorParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorTextParams): void {\n this.#params = params;\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('text');\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(params.eventKey);\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n }\n\n this.maxlength = params.skyComponentProperties?.maxlength;\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.rowNumber = this.#params.rowIndex + 1;\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n if (this.input) {\n this.input.nativeElement.focus();\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n this.input.nativeElement.select();\n }\n }\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): string | undefined {\n return this.editorForm.get('text')?.value || undefined;\n }\n}\n","<ng-container [formGroup]=\"editorForm\">\n <input\n #skyCellEditorText\n formControlName=\"text\"\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_text_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [style.width]=\"'100%'\"\n [style.height]=\"'100%'\"\n [maxlength]=\"maxlength ?? null\"\n />\n</ng-container>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n inject,\n signal,\n} from '@angular/core';\nimport { SkyStatusIndicatorModule } from '@skyux/indicators';\nimport { SkyPopoverMessage, SkyPopoverMessageType } from '@skyux/popovers';\nimport { SkyPopoverModule } from '@skyux/popovers';\n\nimport { AgColumn, CellFocusedEvent } from 'ag-grid-community';\nimport { Subject } from 'rxjs';\n\nimport { SkyCellRendererValidatorParams } from '../types/cell-renderer-validator-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-validator-tooltip',\n styleUrls: ['ag-grid-cell-validator-tooltip.component.scss'],\n templateUrl: 'ag-grid-cell-validator-tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, SkyPopoverModule, SkyStatusIndicatorModule],\n})\nexport class SkyAgGridCellValidatorTooltipComponent {\n @Input()\n public set params(value: SkyCellRendererValidatorParams | undefined) {\n this.cellRendererParams = value;\n\n if (value?.api && !this.#listenersAdded) {\n this.#listenersAdded = true;\n\n value.api.addEventListener(\n 'cellFocused',\n (eventParams: CellFocusedEvent) => {\n // We want to close any popovers that are opened when other cells are focused, but open a popover if the current cell is focused.\n if (\n (eventParams.column as AgColumn).getColId() ===\n value.column?.getColId() &&\n eventParams.rowIndex === value.node?.rowIndex\n ) {\n this.showPopover();\n } else {\n this.hidePopover();\n }\n },\n );\n\n value.api.addEventListener('cellEditingStarted', () => {\n this.hidePopover();\n });\n }\n\n if (typeof value?.skyComponentProperties?.validatorMessage === 'function') {\n this.validatorMessage = value.skyComponentProperties.validatorMessage(\n value.value,\n value.data,\n value?.node?.rowIndex,\n );\n } else {\n this.validatorMessage = value?.skyComponentProperties?.validatorMessage;\n }\n\n this.showValidatorMessage.set(this.#showValidatorMessage());\n this.#changeDetector.markForCheck();\n }\n\n public popoverMessageStream = new Subject<SkyPopoverMessage>();\n public validatorMessage: string | undefined;\n public cellRendererParams: SkyCellRendererValidatorParams | undefined;\n\n protected readonly showValidatorMessage = signal(false);\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n #listenersAdded = false;\n\n public hidePopover(): void {\n this.popoverMessageStream.next({ type: SkyPopoverMessageType.Close });\n }\n\n public showPopover(): void {\n if (this.#shouldShowPopover()) {\n this.popoverMessageStream.next({ type: SkyPopoverMessageType.Open });\n }\n }\n\n #showValidatorMessage(): boolean {\n if (!this.validatorMessage) {\n return false;\n }\n if (\n typeof this.cellRendererParams?.skyComponentProperties?.validator ===\n 'function'\n ) {\n return !this.cellRendererParams.skyComponentProperties.validator(\n this.cellRendererParams.value,\n this.cellRendererParams.data,\n this.cellRendererParams.node?.rowIndex,\n );\n } else {\n return true;\n }\n }\n\n #shouldShowPopover(): boolean {\n if (!this.showValidatorMessage()) {\n return false;\n }\n const editingCells = this.cellRendererParams?.api.getEditingCells() ?? [];\n return editingCells.length === 0;\n }\n}\n","<ng-template #displayValue>\n <ng-content />\n</ng-template>\n\n@if (showValidatorMessage()) {\n <div\n skyPopoverTrigger=\"mouseenter\"\n class=\"sky-validator-cell\"\n [skyPopover]=\"validatorPopover\"\n [skyPopoverMessageStream]=\"popoverMessageStream\"\n >\n <ng-container *ngTemplateOutlet=\"displayValue\" />\n <sky-status-indicator\n descriptionType=\"none\"\n indicatorType=\"danger\"\n class=\"sky-pull-right\"\n />\n </div>\n <sky-popover\n #validatorPopover\n data-sky-id=\"validatorPopover\"\n popoverType=\"danger\"\n >\n {{ validatorMessage }}\n </sky-popover>\n} @else {\n <ng-container *ngTemplateOutlet=\"displayValue\" />\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { SkyNumericOptions } from '@skyux/core';\nimport { SkyNumericModule } from '@skyux/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellRendererCurrencyParams } from '../../types/cell-renderer-currency-params';\nimport { SkyAgGridValidatorProperties } from '../../types/validator-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-currency',\n templateUrl: './cell-renderer-currency.component.html',\n styleUrls: ['./cell-renderer-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyNumericModule],\n})\nexport class SkyAgGridCellRendererCurrencyComponent\n implements ICellRendererAngularComp\n{\n @Input()\n public set params(value: SkyCellRendererCurrencyParams) {\n this.agInit(value);\n }\n\n public columnWidth: number | undefined;\n public rowHeightWithoutBorders: number | undefined;\n public skyComponentProperties: SkyNumericOptions &\n SkyAgGridValidatorProperties = {};\n public numericOptions: SkyNumericOptions = {};\n public value: number | undefined;\n\n /**\n * agInit is called by AG Grid once after the renderer is created and provides the renderer with the information it needs.\n */\n public agInit(params: SkyCellRendererCurrencyParams): void {\n this.#updateProperties(params);\n }\n\n /**\n * refresh is called by AG Grid to update the cell without destroying and recreating the component.\n */\n public refresh(params: SkyCellRendererCurrencyParams): boolean {\n this.agInit(params);\n return false;\n }\n\n #updateProperties(params: SkyCellRendererCurrencyParams): void {\n this.value = params.value;\n this.skyComponentProperties = params.skyComponentProperties || {};\n this.skyComponentProperties.format = 'currency';\n this.skyComponentProperties.minDigits = 2;\n this.skyComponentProperties.truncate = false;\n }\n}\n","{{\n value === undefined ? undefined : (value | skyNumeric: skyComponentProperties)\n}}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyAgGridCellValidatorTooltipComponent } from '../../cell-validator/ag-grid-cell-validator-tooltip.component';\nimport { SkyCellRendererCurrencyParams } from '../../types/cell-renderer-currency-params';\n\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderer-currency.component';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-currency-validator',\n styles: `\n :host {\n display: contents;\n }\n `,\n templateUrl: 'cell-renderer-currency-validator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n SkyAgGridCellValidatorTooltipComponent,\n SkyAgGridCellRendererCurrencyComponent,\n ],\n})\nexport class SkyAgGridCellRendererCurrencyValidatorComponent\n implements ICellRendererAngularComp\n{\n @Input()\n public set parameters(value: SkyCellRendererCurrencyParams) {\n this.agInit(value);\n }\n\n protected cellRendererParams: SkyCellRendererCurrencyParams | undefined;\n\n #changeDetector: ChangeDetectorRef;\n\n constructor(changeDetector: ChangeDetectorRef) {\n this.#changeDetector = changeDetector;\n }\n\n /**\n * agInit is called by agGrid once after the renderer is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellRendererCurrencyParams): void {\n this.cellRendererParams = params;\n this.#changeDetector.markForCheck();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public isNumeric(value: any): boolean {\n return !isNaN(parseFloat(value));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public refresh(params: SkyCellRendererCurrencyParams): boolean {\n return false;\n }\n}\n","@if (cellRendererParams) {\n <sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n @if (isNumeric(cellRendererParams.value)) {\n <sky-ag-grid-cell-renderer-currency [params]=\"cellRendererParams\" />\n } @else {\n {{ cellRendererParams.value }}\n }\n </sky-ag-grid-cell-validator-tooltip>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellRendererLookupParams } from '../../types/cell-renderer-lookup-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-cell-renderer-lookup',\n templateUrl: './cell-renderer-lookup.component.html',\n styleUrls: ['./cell-renderer-lookup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyI18nModule],\n})\nexport class SkyAgGridCellRendererLookupComponent\n implements ICellRendererAngularComp\n{\n protected value = '';\n protected summaryCount = 0;\n\n #changeDetector: ChangeDetectorRef;\n\n constructor(changeDetector: ChangeDetectorRef) {\n this.#changeDetector = changeDetector;\n }\n\n public agInit(params: SkyCellRendererLookupParams): void {\n this.summaryCount = params.value?.length || 0;\n this.value = `${params.valueFormatted}`;\n this.#changeDetector.markForCheck();\n }\n\n public refresh(params: SkyCellRendererLookupParams): boolean {\n this.agInit(params);\n return true;\n }\n}\n","@if (summaryCount > 5) {\n {{ 'skyux_lookup_tokens_summary' | skyLibResources: summaryCount }}\n} @else {\n {{ value }}\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport {\n ICellRendererParams,\n IRowNode,\n RowNodeSelectedEvent,\n} from 'ag-grid-community';\nimport {\n BehaviorSubject,\n Subscription,\n fromEventPattern,\n isObservable,\n} from 'rxjs';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-row-selector',\n templateUrl: './cell-renderer-row-selector.component.html',\n styleUrls: ['./cell-renderer-row-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [SkyThemeComponentClassDirective, SkyCheckboxModule, AsyncPipe],\n})\nexport class SkyAgGridCellRendererRowSelectorComponent\n implements ICellRendererAngularComp, OnDestroy\n{\n public dataField: string | undefined;\n public rowNode: IRowNode | undefined;\n public rowNumber: number | undefined;\n\n protected checked = new BehaviorSubject(false);\n protected readonly disabled = new BehaviorSubject(false);\n protected readonly label = new BehaviorSubject('');\n\n readonly #labelResourceKey = 'sky_ag_grid_row_selector_aria_label';\n #params: ICellRendererParams | undefined;\n readonly #resources = inject(SkyLibResourcesService);\n #subscription = new Subscription();\n\n constructor() {\n this.#setLabel();\n }\n\n public ngOnDestroy(): void {\n this.#subscription.unsubscribe();\n }\n\n /**\n * agInit is called by agGrid once after the cell is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: ICellRendererParams): void {\n this.#setParameters(params);\n }\n\n /**\n * Used by agGrid to update cell value after a user triggers a refresh.\n * Returning true tells agGrid that the refresh was successful.\n */\n public refresh(params: ICellRendererParams): boolean {\n this.#setParameters(params);\n return true;\n }\n\n public updateRow(rowChecked: boolean): void {\n this.checked.next(rowChecked);\n if (this.rowNode) {\n const rowSelected = this.rowNode.isSelected();\n if (rowSelected !== rowChecked) {\n this.rowNode.setSelected(rowChecked, undefined, 'checkboxSelected');\n }\n if (this.dataField) {\n this.rowNode.data[this.dataField] = this.checked.value;\n }\n }\n }\n\n #setParameters(params: ICellRendererParams): void {\n this.#params = params;\n this.disabled.next(this.#params?.node?.selectable === false);\n this.dataField = this.#params?.colDef?.field;\n this.rowNode = this.#params?.node as IRowNode | undefined;\n const rowIndex = this.rowNode?.rowIndex ?? NaN;\n this.rowNumber = Number.isNaN(rowIndex) ? undefined : rowIndex + 1;\n\n this.#subscription.unsubscribe();\n this.#subscription = new Subscription();\n this.#setLabel();\n\n const rowSelected = !!this.#params.node?.isSelected();\n\n if (this.dataField) {\n this.checked.next(!!this.#params.value);\n if (rowSelected !== this.checked.value) {\n this.rowNode?.setSelected(this.checked.value);\n }\n } else {\n this.checked.next(rowSelected);\n }\n\n this.#subscription.add(\n fromEventPattern<RowNodeSelectedEvent>(\n (handler) => this.rowNode?.addEventListener('rowSelected', handler),\n (handler) => this.rowNode?.removeEventListener('rowSelected', handler),\n ).subscribe((event) => this.#rowSelectedListener(event)),\n );\n }\n\n #setLabel(): void {\n const cellRendererParamLabel =\n this.#params?.colDef?.cellRendererParams?.label;\n if (this.#params?.colDef && typeof cellRendererParamLabel === 'string') {\n this.label.next(this.#params.colDef.cellRendererParams.label);\n } else if (\n this.#params?.colDef &&\n typeof cellRendererParamLabel === 'function'\n ) {\n const label = this.#params.colDef.cellRendererParams.label(\n this.#params.data,\n );\n if (isObservable(label)) {\n this.#subscription.add(\n label.subscribe((value: unknown) => this.label.next(String(value))),\n );\n } else {\n this.label.next(label);\n }\n } else {\n this.#subscription.add(\n this.#resources\n .getString(this.#labelResourceKey, this.rowNumber ?? '')\n .subscribe((value) => this.label.next(value)),\n );\n }\n }\n\n #rowSelectedListener(event: RowNodeSelectedEvent): void {\n this.checked.next(!!event.node.isSelected());\n if (this.rowNode && this.dataField) {\n this.rowNode.data[this.dataField] = this.checked.value;\n }\n }\n}\n","<sky-checkbox\n data-sky-id=\"row-checkbox\"\n [disabled]=\"(disabled | async) || false\"\n [tabindex]=\"0\"\n [labelHidden]=\"true\"\n [labelText]=\"(label | async) || ''\"\n [checked]=\"(checked | async) || false\"\n (change)=\"updateRow(!!$event.checked)\"\n/>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, TemplateRef } from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ICellRendererParams } from 'ag-grid-community';\n\nimport { CellRendererTemplateContext } from './cell-renderer-template-context.type';\n\ntype CellState =\n | {\n hasTemplate: true;\n template: TemplateRef<CellRendererTemplateContext>;\n context: CellRendererTemplateContext;\n }\n | {\n hasTemplate: false;\n template: undefined;\n context?: unknown;\n };\n\n@Component({\n selector: 'sky-ag-grid-cell-renderer-template',\n template: `@if (state.hasTemplate) {\n <ng-container *ngTemplateOutlet=\"state.template; context: state.context\" />\n }`,\n imports: [NgTemplateOutlet],\n})\nexport class SkyAgGridCellRendererTemplateComponent\n implements ICellRendererAngularComp\n{\n protected state: CellState = {\n hasTemplate: false,\n template: undefined,\n context: { value: undefined, data: undefined },\n };\n\n public agInit(params: ICellRendererParams): void {\n const hasTemplate = !!(\n params.colDef?.cellRendererParams &&\n 'template' in params.colDef.cellRendererParams &&\n params.colDef.cellRendererParams.template\n );\n const template: TemplateRef<CellRendererTemplateContext> | undefined =\n hasTemplate\n ? (params.colDef?.cellRendererParams\n .template as TemplateRef<CellRendererTemplateContext>)\n : undefined;\n this.state = {\n hasTemplate,\n template,\n context: { value: params.value, row: params.data },\n } as CellState;\n }\n\n public refresh(params: ICellRendererParams): boolean {\n this.agInit(params);\n return false;\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n inject,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { SkyAgGridCellValidatorTooltipComponent } from '../../cell-validator/ag-grid-cell-validator-tooltip.component';\nimport { SkyCellRendererValidatorParams } from '../../types/cell-renderer-validator-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-validator-tooltip',\n templateUrl: 'cell-renderer-validator-tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyAgGridCellValidatorTooltipComponent, AsyncPipe],\n})\nexport class SkyAgGridCellRendererValidatorTooltipComponent\n implements ICellRendererAngularComp, OnDestroy\n{\n @Input()\n public set params(value: SkyCellRendererValidatorParams) {\n this.agInit(value);\n }\n\n public cellRendererParams: SkyCellRendererValidatorParams | undefined;\n public value: unknown;\n\n protected valueObservable = new BehaviorSubject('');\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n #valueSubscription: Subscription | undefined;\n\n public ngOnDestroy(): void {\n this.#valueSubscription?.unsubscribe();\n this.valueObservable.complete();\n }\n\n public agInit(params: SkyCellRendererValidatorParams): void {\n this.cellRendererParams = params;\n this.#valueSubscription?.unsubscribe();\n this.#valueSubscription = new Subscription();\n if (\n typeof params.skyComponentProperties?.valueResourceObservable ===\n 'function'\n ) {\n this.#valueSubscription.add(\n params.skyComponentProperties\n .valueResourceObservable(\n params.value,\n params.data,\n params.node?.rowIndex,\n )\n .subscribe((result) => {\n this.valueObservable.next(result);\n }),\n );\n } else {\n this.valueObservable.next(params.valueFormatted ?? params.value);\n }\n this.#changeDetector.markForCheck();\n }\n\n public refresh(params: SkyCellRendererValidatorParams): boolean {\n this.agInit(params);\n return false;\n }\n}\n","<sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n {{ valueObservable | async }}\n</sky-ag-grid-cell-validator-tooltip>\n","import { Injectable } from '@angular/core';\n\nimport { ColumnGroup } from 'ag-grid-community';\n\n/**\n * To display a help button beside the column group header, create a component containing\n * [`sky-help-inline`](https://developer.blackbaud.com/skyux/components/help-inline),\n * and inject SkyAgGridHeaderGroupInfo to access the column group\n * information, such as display name.\n * Add the component to the `headerGroupComponentParams.inlineHelpComponent`\n * property of the [column group definition](https://www.ag-grid.com/angular-data-grid/column-groups/).\n * @see SkyAgGridHeaderGroupParams\n */\n@Injectable()\nexport class SkyAgGridHeaderGroupInfo {\n /**\n * [Column group information from AG Grid](https://www.ag-grid.com/angular-data-grid/column-object-group/).\n */\n public columnGroup: ColumnGroup | undefined;\n /**\n * Display name of the column group.\n */\n public displayName: string | undefined;\n /**\n * AG Grid's [`context` field](https://www.ag-grid.com/angular-data-grid/context/).\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public context: any;\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EnvironmentInjector,\n OnDestroy,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n SkyDynamicComponentLocation,\n SkyDynamicComponentService,\n} from '@skyux/core';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { IHeaderGroupAngularComp } from 'ag-grid-angular';\nimport { ColumnGroupOpenedEvent, ProvidedColumnGroup } from 'ag-grid-community';\nimport {\n BehaviorSubject,\n Observable,\n Subscription,\n fromEventPattern,\n} from 'rxjs';\n\nimport { SkyAgGridHeaderGroupInfo } from '../types/header-group-info';\nimport { SkyAgGridHeaderGroupParams } from '../types/header-group-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-header-group',\n templateUrl: './header-group.component.html',\n styleUrls: ['./header-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyThemeModule, SkyIconModule, AsyncPipe, SkyI18nModule],\n})\nexport class SkyAgGridHeaderGroupComponent\n implements IHeaderGroupAngularComp, OnDestroy, AfterViewInit\n{\n @ViewChild('inlineHelpContainer', { read: ElementRef, static: true })\n public inlineHelpContainer: ElementRef | undefined;\n\n protected params: SkyAgGridHeaderGroupParams | undefined = undefined;\n protected isExpandable$: Observable<boolean>;\n protected isExpanded$: Observable<boolean>;\n\n #columnGroup: ProvidedColumnGroup | undefined = undefined;\n #isExpandableSubject = new BehaviorSubject<boolean>(false);\n #isExpandedSubject = new BehaviorSubject<boolean>(false);\n #subscriptions = new Subscription();\n #viewInitialized = false;\n #agInitialized = false;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #dynamicComponentService = inject(SkyDynamicComponentService);\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n constructor() {\n this.isExpandable$ = this.#isExpandableSubject.asObservable();\n this.isExpanded$ = this.#isExpandedSubject.asObservable();\n }\n\n public ngAfterViewInit(): void {\n this.#viewInitialized = true;\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public ngOnDestroy(): void {\n this.#subscriptions.unsubscribe();\n }\n\n public agInit(params: SkyAgGridHeaderGroupParams | undefined): void {\n this.#agInitialized = true;\n this.params = params;\n this.#subscriptions.unsubscribe();\n if (!params) {\n return;\n }\n this.#subscriptions = new Subscription();\n this.#columnGroup = params.columnGroup.getProvidedColumnGroup();\n this.#isExpandableSubject.next(this.#columnGroup.isExpandable());\n if (this.#isExpandableSubject.getValue()) {\n this.#subscriptions.add(\n fromEventPattern<ColumnGroupOpenedEvent>(\n (handler) =>\n params.api.addEventListener('columnGroupOpened', handler),\n (handler) =>\n params.api.removeEventListener('columnGroupOpened', handler),\n ).subscribe((event) => {\n if (\n this.#columnGroup &&\n event.columnGroups.includes(this.#columnGroup)\n ) {\n this.#isExpandedSubject.next(this.#columnGroup.isExpanded());\n }\n }),\n );\n }\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public setExpanded($event: boolean): void {\n this.params?.setExpanded($event);\n }\n\n #updateInlineHelp(): void {\n if (!this.#viewInitialized || !this.#agInitialized) {\n return;\n }\n\n const colGroupDef = this.params?.columnGroup?.getColGroupDef();\n const inlineHelpComponent =\n colGroupDef?.headerGroupComponentParams?.inlineHelpComponent;\n\n if (inlineHelpComponent) {\n const headerGroupInfo = new SkyAgGridHeaderGroupInfo();\n headerGroupInfo.columnGroup = this.params?.columnGroup;\n headerGroupInfo.context = this.params?.context;\n headerGroupInfo.displayName = this.params?.displayName;\n\n this.#dynamicComponentService.createComponent(inlineHelpComponent, {\n providers: [\n {\n provide: SkyAgGridHeaderGroupInfo,\n useValue: headerGroupInfo,\n },\n ],\n environmentInjector: this.#environmentInjector,\n referenceEl: this.inlineHelpContainer?.nativeElement,\n location: SkyDynamicComponentLocation.ElementBottom,\n });\n }\n }\n}\n","@if (params?.displayName) {\n <span\n class=\"header-group-text\"\n role=\"presentation\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n >{{ params?.displayName }}</span\n >\n}\n@if (isExpandable$ | async) {\n @if (isExpanded$ | async) {\n <button\n class=\"sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n [attr.aria-label]=\"\n 'sky_ag_grid_column_group_header_collapse_aria_label'\n | skyLibResources: params?.displayName\n \"\n (click)=\"setExpanded(false)\"\n >\n <sky-icon iconName=\"chevron-double-left\" />\n </button>\n } @else {\n <button\n class=\"sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n [attr.aria-label]=\"\n 'sky_ag_grid_column_group_header_expand_aria_label'\n | skyLibResources: params?.displayName\n \"\n (click)=\"setExpanded(true)\"\n >\n <sky-icon iconName=\"chevron-double-right\" />\n </button>\n }\n}\n<span #inlineHelpContainer class=\"sky-control-help-container\"></span>\n","import { Injectable } from '@angular/core';\n\nimport { Column } from 'ag-grid-community';\n\n/**\n * To display a help button beside the column header, create a component containing\n * [`sky-help-inline`](https://developer.blackbaud.com/skyux/components/help-inline),\n * and inject SkyAgGridHeaderInfo to access the column information, such\n * as display name.\n * Add the component to the `headerComponentParams.inlineHelpComponent`\n * property of the [column definition](https://www.ag-grid.com/angular-data-grid/column-definitions/).\n * @see SkyAgGridHeaderParams\n */\n@Injectable()\nexport class SkyAgGridHeaderInfo {\n /**\n * [Column information from AG Grid](https://www.ag-grid.com/angular-data-grid/column-object/).\n */\n public column: Column | undefined;\n /**\n * Display name of the column.\n */\n public displayName: string | undefined;\n /**\n * AG Grid's [`context` field](https://www.ag-grid.com/angular-data-grid/context/).\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public context: any;\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EnvironmentInjector,\n OnDestroy,\n ViewChild,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport {\n SkyDynamicComponentLocation,\n SkyDynamicComponentService,\n} from '@skyux/core';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { IHeaderAngularComp } from 'ag-grid-angular';\nimport { ColumnMovedEvent } from 'ag-grid-community';\nimport { BehaviorSubject, Subscription, fromEventPattern } from 'rxjs';\n\nimport { SkyAgGridHeaderInfo } from '../types/header-info';\nimport { SkyAgGridHeaderParams } from '../types/header-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.title]': 'accessibleHeaderText()',\n '[attr.aria-label]': 'displayName() || accessibleHeaderText()',\n '[attr.role]': '\"note\"',\n },\n imports: [SkyIconModule, SkyThemeModule, AsyncPipe, SkyI18nModule],\n})\nexport class SkyAgGridHeaderComponent\n implements IHeaderAngularComp, OnDestroy, AfterViewInit\n{\n public readonly filterEnabled$ = new BehaviorSubject<boolean>(false);\n\n // For accessibility, we need to set the title attribute on the header element if there is no visible header text.\n // https://dequeuniversity.com/rules/axe/4.5/empty-table-header?application=axeAPI\n protected readonly accessibleHeaderText = computed(() => {\n const params = this.params();\n if (\n params?.displayName &&\n !params?.column.getColDef().headerComponentParams?.headerHidden\n ) {\n return undefined;\n } else {\n return params?.displayName || params?.column.getColDef().field;\n }\n });\n\n @ViewChild('inlineHelpContainer', { read: ElementRef, static: true })\n protected inlineHelpContainer: ElementRef | undefined;\n\n protected readonly params = signal<SkyAgGridHeaderParams | undefined>(\n undefined,\n );\n protected sorted = '';\n protected readonly sortOrder$ = new BehaviorSubject<\n 'asc' | 'desc' | undefined\n >(undefined);\n protected readonly sortIndexDisplay$ = new BehaviorSubject<string>('');\n\n protected displayName = computed<string | undefined>(() => {\n const params = this.params();\n if (\n params?.displayName &&\n !params?.column.getColDef().headerComponentParams?.headerHidden\n ) {\n return params.displayName;\n } else {\n return undefined;\n }\n });\n\n #subscriptions = new Subscription();\n #inlineHelpComponentRef: ComponentRef<unknown> | undefined;\n #viewInitialized = false;\n #agInitialized = false;\n #leftPosition = 0;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #dynamicComponentService = inject(SkyDynamicComponentService);\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n public ngAfterViewInit(): void {\n this.#viewInitialized = true;\n this.#updateInlineHelp();\n }\n\n public ngOnDestroy(): void {\n this.#subscriptions.unsubscribe();\n }\n\n public agInit(params: SkyAgGridHeaderParams | undefined): void {\n this.#agInitialized = true;\n this.params.set(params);\n this.#subscriptions.unsubscribe();\n if (!params) {\n return;\n }\n this.#leftPosition = params.column.getLeft() ?? 0;\n this.#subscriptions = new Subscription();\n if (params.column.isFilterAllowed()) {\n this.#subscriptions.add(\n fromEventPattern(\n (handler) => params.column.addEventListener('filterChanged', handler),\n (handler) =>\n params.column.removeEventListener('filterChanged', handler),\n ).subscribe(() => {\n const isFilterActive = params.column.isFilterActive();\n if (isFilterActive !== this.filterEnabled$.getValue()) {\n this.filterEnabled$.next(isFilterActive);\n }\n }),\n );\n }\n if (params.enableSorting) {\n // Column sort state changes\n this.#subscriptions.add(\n fromEventPattern(\n (handler) => params.column.addEventListener('sortChanged', handler),\n (handler) =>\n params.column.removeEventListener('sortChanged', handler),\n ).subscribe(() => {\n this.#updateSort();\n }),\n );\n // Other column sort state changes, for multi-column sorting\n this.#subscriptions.add(\n fromEventPattern(\n (handler) => params.api.addEventListener('sortChanged', handler),\n (handler) => params.api.removeEventListener('sortChanged', handler),\n ).subscribe(() => {\n this.#updateSortIndex();\n }),\n );\n this.#updateSort();\n this.#updateSortIndex();\n }\n\n // When the column is moved left via the keyboard, the element is detached\n // and reattached to the DOM to maintain DOM order, and its focus is lost.\n this.#subscriptions.add(\n fromEventPattern<ColumnMovedEvent>(\n (handler) => params.api.addEventListener('columnMoved', handler),\n (handler) => params.api.removeEventListener('columnMoved', handler),\n ).subscribe((event) => {\n const left = event.column?.getLeft() ?? 0;\n const oldLeft = this.#leftPosition;\n if (\n event.column === params.column &&\n event.source === 'uiColumnMoved' &&\n left < oldLeft\n ) {\n params.eGridHeader.focus();\n }\n this.#leftPosition = left;\n }),\n );\n\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public onMenuClick($event: Event): void {\n this.params()?.showColumnMenu($event.target as HTMLElement);\n }\n\n public onSortRequested(event: MouseEvent): void {\n if (this.params()?.enableSorting) {\n this.params()?.progressSort(event.shiftKey);\n }\n }\n\n public refresh(params: SkyAgGridHeaderParams): boolean {\n this.agInit(params);\n return false;\n }\n\n #updateInlineHelp(): void {\n if (!this.#viewInitialized || !this.#agInitialized) {\n return;\n }\n\n const inlineHelpComponent = this.params()?.inlineHelpComponent;\n\n if (\n inlineHelpComponent &&\n (!this.#inlineHelpComponentRef ||\n this.#inlineHelpComponentRef.componentType !== inlineHelpComponent)\n ) {\n this.#dynamicComponentService.removeComponent(\n this.#inlineHelpComponentRef,\n );\n\n const headerInfo = new SkyAgGridHeaderInfo();\n headerInfo.column = this.params()?.column;\n headerInfo.context = this.params()?.context;\n headerInfo.displayName = this.params()?.displayName;\n\n this.#inlineHelpComponentRef =\n this.#dynamicComponentService.createComponent(inlineHelpComponent, {\n providers: [\n {\n provide: SkyAgGridHeaderInfo,\n useValue: headerInfo,\n },\n ],\n environmentInjector: this.#environmentInjector,\n referenceEl: this.inlineHelpContainer?.nativeElement,\n location: SkyDynamicComponentLocation.ElementBottom,\n });\n } else if (!inlineHelpComponent) {\n this.#dynamicComponentService.removeComponent(\n this.#inlineHelpComponentRef,\n );\n }\n }\n\n #updateSort(): void {\n this.sortOrder$.next(this.params()?.column.getSort() || undefined);\n }\n\n #updateSortIndex(): void {\n const sortIndex = this.params()?.column.getSortIndex();\n const otherSortColumns = this.params()\n ?.api?.getColumns()\n ?.some(\n (column) =>\n column.getColId() !== this.params()?.column.getColId() &&\n !!column.getSort(),\n );\n if (sortIndex !== undefined && sortIndex !== null && otherSortColumns) {\n this.sortIndexDisplay$.next(`${sortIndex + 1}`);\n } else {\n this.sortIndexDisplay$.next('');\n }\n }\n}\n","<div class=\"ag-cell-label-container\" role=\"presentation\">\n @if (params()?.enableMenu) {\n <span\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon iconName=\"more-actions\" />\n </span>\n }\n <div class=\"ag-header-cell-label\" role=\"presentation\">\n <span class=\"ag-header-cell-label-and-icons\">\n @if (params()?.enableSorting) {\n <button\n aria-hidden=\"true\"\n class=\"ag-header-cell-text ag-header-cell-label-sortable sky-btn-link-inline\"\n tabindex=\"-1\"\n type=\"button\"\n [attr.aria-label]=\"accessibleHeaderText()\"\n [innerText]=\"displayName() ?? ''\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n (click)=\"onSortRequested($event)\"\n ></button>\n } @else if (displayName()) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-cell-text\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n >{{ displayName() }}</span\n >\n }\n @if (filterEnabled$ | async) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n ><sky-icon iconName=\"filter\"\n /></span>\n }\n @if (params()?.enableSorting) {\n @if (sortOrder$ | async; as sortDirection) {\n <button\n class=\"ag-sort-indicator-container sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n (click)=\"onSortRequested($event)\"\n >\n @if (sortDirection === 'desc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon iconName=\"chevron-down\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_desc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n @if (sortDirection === 'asc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon iconName=\"chevron-up\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_asc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n\n @if (sortIndexDisplay$ | async; as sortIndexDisplay) {\n <span\n aria-hidden=\"true\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n >{{ sortIndexDisplay }}</span\n >\n }\n </button>\n } @else {\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span>\n }\n }\n </span>\n <span #inlineHelpContainer class=\"sky-control-help-container\"></span>\n </div>\n</div>\n","export const iconMap: Record<\n string,\n {\n name: string;\n size: number;\n }\n> = {\n sortDescending: {\n name: 'chevron-down',\n size: 16,\n },\n sortAscending: {\n name: 'chevron-up',\n size: 16,\n },\n columnMoveMove: {\n name: 'arrow-move',\n size: 20,\n },\n columnMoveHide: {\n name: 'eye-off',\n size: 16,\n },\n columnMoveLeft: {\n name: 'arrow-move',\n size: 20,\n },\n columnMoveRight: {\n name: 'arrow-move',\n size: 20,\n },\n columnMovePin: {\n name: 'arrow-move',\n size: 20,\n },\n};\nexport type IconMapType = typeof iconMap;\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { SkyWaitModule } from '@skyux/indicators';\n\nimport { ILoadingOverlayAngularComp } from 'ag-grid-angular';\nimport { ILoadingOverlayParams } from 'ag-grid-community';\n\n@Component({\n selector: 'sky-ag-grid-loading',\n imports: [SkyWaitModule],\n templateUrl: './loading.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridLoadingComponent implements ILoadingOverlayAngularComp {\n public agInit(_params: ILoadingOverlayParams): void {\n // Do nothing.\n }\n\n public refresh(_params: ILoadingOverlayParams): void {\n // Do nothing.\n }\n}\n","<sky-wait [isWaiting]=\"true\" />\n","/**\n * @internal\n */\nexport enum SkyCellClass {\n Autocomplete = 'sky-ag-grid-cell-autocomplete',\n Currency = 'sky-ag-grid-cell-currency',\n Date = 'sky-ag-grid-cell-date',\n Editable = 'sky-ag-grid-cell-editable',\n Invalid = 'sky-ag-grid-cell-invalid',\n Lookup = 'sky-ag-grid-cell-lookup',\n Number = 'sky-ag-grid-cell-number',\n RightAligned = 'sky-ag-grid-cell-right-aligned',\n RowSelector = 'sky-ag-grid-cell-row-selector',\n Template = 'sky-ag-grid-cell-template',\n Text = 'sky-ag-grid-cell-text',\n Uneditable = 'sky-ag-grid-cell-uneditable',\n Validator = 'sky-ag-grid-cell-validator',\n}\n","/**\n * @internal\n */\nexport enum SkyHeaderClass {\n Resizable = 'sky-ag-grid-header-resizable',\n RightAligned = 'sky-ag-grid-header-right-aligned',\n}\n","import { Injectable, OnDestroy, Optional, inject } from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\nimport { SkyDateService } from '@skyux/datetime';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyThemeService, SkyThemeSettings } from '@skyux/theme';\n\nimport {\n CellClassParams,\n CellRendererSelectorFunc,\n CellRendererSelectorResult,\n ColDef,\n EditableCallbackParams,\n GridOptions,\n HeaderClassParams,\n ICellRendererParams,\n RowClassParams,\n RowSelectionOptions,\n SuppressHeaderKeyboardEventParams,\n SuppressKeyboardEventParams,\n ValueFormatterParams,\n} from 'ag-grid-community';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { getSkyAgGridTheme } from '../../styles/ag-grid-theme';\n\nimport { SkyAgGridAdapterService } from './ag-grid-adapter.service';\nimport { applySkyLookupPropertiesDefaults } from './apply-lookup-properties-defaults';\nimport { SkyAgGridCellEditorAutocompleteComponent } from './cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\nimport { SkyAgGridCellEditorCurrencyComponent } from './cell-editors/cell-editor-currency/cell-editor-currency.component';\nimport { SkyAgGridCellEditorDatepickerComponent } from './cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\nimport { SkyAgGridCellEditorLookupComponent } from './cell-editors/cell-editor-lookup/cell-editor-lookup.component';\nimport { SkyAgGridCellEditorNumberComponent } from './cell-editors/cell-editor-number/cell-editor-number.component';\nimport { SkyAgGridCellEditorTextComponent } from './cell-editors/cell-editor-text/cell-editor-text.component';\nimport { SkyAgGridCellRendererCurrencyValidatorComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\nimport { SkyAgGridCellRendererLookupComponent } from './cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component';\nimport { SkyAgGridCellRendererRowSelectorComponent } from './cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\nimport { SkyAgGridCellRendererTemplateComponent } from './cell-renderers/cell-renderer-template/cell-renderer-template.component';\nimport { SkyAgGridCellRendererValidatorTooltipComponent } from './cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\nimport { SkyAgGridHeaderGroupComponent } from './header/header-group.component';\nimport { SkyAgGridHeaderComponent } from './header/header.component';\nimport { IconMapType, iconMap } from './icons/icon-map';\nimport { SkyAgGridLoadingComponent } from './loading/loading.component';\nimport { SkyCellClass } from './types/cell-class';\nimport { SkyCellType } from './types/cell-type';\nimport { SkyHeaderClass } from './types/header-class';\nimport { LastFocusedCell } from './types/last-focused.cell';\nimport { SkyGetGridOptionsArgs } from './types/sky-grid-options';\n\nfunction autocompleteComparator(\n value1: { name: string },\n value2: { name: string },\n): number {\n if (value1 && value2) {\n if (value1.name > value2.name) {\n return 1;\n }\n\n if (value1.name < value2.name) {\n return -1;\n }\n\n return 0;\n }\n\n return value1 ? 1 : -1;\n}\n\nfunction autocompleteFormatter(params: ValueFormatterParams): string {\n return params.value && params.value.name;\n}\n\nfunction dateComparator(date1: Date | string, date2: Date | string): number {\n let date1value = date1;\n let date2value = date2;\n\n if (typeof date1value === 'string') {\n date1value = new Date(date1);\n }\n\n if (typeof date2value === 'string') {\n date2value = new Date(date2);\n }\n\n if (date1value && date2value) {\n if (date1value > date2value) {\n return 1;\n }\n\n if (date1value < date2value) {\n return -1;\n }\n\n return 0;\n }\n\n return date1value ? 1 : -1;\n}\n\nfunction getValidatorCellRendererSelector(\n component: string,\n fallback?: CellRendererSelectorResult,\n): CellRendererSelectorFunc {\n return (params: ICellRendererParams) => {\n if (\n params.colDef &&\n typeof params.colDef.cellRendererParams?.skyComponentProperties\n ?.validator === 'function'\n ) {\n if (\n params.column?.isCellEditable(params.node) ||\n !params.colDef.cellRendererParams.skyComponentProperties.validator(\n params.value,\n params.data,\n params?.node?.rowIndex,\n )\n ) {\n return {\n component,\n params: {\n ...params.colDef.cellRendererParams,\n },\n };\n }\n }\n return fallback;\n };\n}\n\nlet rowNodeId = -1;\n\n/**\n * `SkyAgGridService` provides methods to get AG Grid `gridOptions` to ensure grids match SKY UX functionality. The `gridOptions` can be overridden, and include registered SKY UX column types.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAgGridService implements OnDestroy {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #keyMap = new WeakMap<any, string>();\n #ngUnsubscribe = new Subject<void>();\n #currentTheme: SkyThemeSettings | undefined = undefined;\n #agGridAdapterService: SkyAgGridAdapterService;\n #resources: SkyLibResourcesService | undefined;\n #dateService = inject(SkyDateService);\n #logService = inject(SkyLogService);\n\n constructor(\n agGridAdapterService: SkyAgGridAdapterService,\n @Optional() themeSvc?: SkyThemeService,\n @Optional() resources?: SkyLibResourcesService,\n ) {\n this.#agGridAdapterService = agGridAdapterService;\n this.#resources = resources;\n\n /*istanbul ignore else*/\n if (themeSvc) {\n themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((settingsChange) => {\n this.#currentTheme = settingsChange.currentSettings;\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n /**\n * Returns [AG Grid `gridOptions`](https://www.ag-grid.com/javascript-grid-properties/) with default SKY UX options, styling, and cell renderers registered for read-only grids.\n * @param args\n * @returns\n */\n public getGridOptions(args: SkyGetGridOptionsArgs): GridOptions {\n const defaultGridOptions = this.#getDefaultGridOptions(args);\n const mergedGridOptions = this.#mergeGridOptions(\n defaultGridOptions,\n args.gridOptions,\n );\n\n return mergedGridOptions;\n }\n\n /**\n * Returns [AG Grid `gridOptions`](https://www.ag-grid.com/javascript-grid-properties/) with default SKY UX options, styling, and cell editors registered for editable grids.\n * @param args\n * @returns\n */\n public getEditableGridOptions(args: SkyGetGridOptionsArgs): GridOptions {\n const defaultGridOptions = this.#getDefaultEditableGridOptions(args);\n const mergedGridOptions = this.#mergeGridOptions(\n defaultGridOptions,\n args.gridOptions,\n );\n\n return mergedGridOptions;\n }\n\n #mergeGridOptions(\n defaultGridOptions: GridOptions & {\n getRowClass: (params: RowClassParams) => string[];\n },\n providedGridOptions: GridOptions,\n ): GridOptions {\n if ('enableRangeSelection' in providedGridOptions) {\n if (providedGridOptions.enableRangeSelection) {\n providedGridOptions.cellSelection = true;\n }\n delete providedGridOptions.enableRangeSelection;\n }\n if (\n providedGridOptions.rowSelection === 'single' ||\n providedGridOptions.rowSelection === 'multiple'\n ) {\n const rowSelectionOptions: Record<string, RowSelectionOptions> = {\n single: { mode: 'singleRow', checkboxes: false },\n multiple: { mode: 'multiRow', checkboxes: false },\n };\n providedGridOptions.rowSelection =\n rowSelectionOptions[providedGridOptions.rowSelection];\n }\n if (providedGridOptions.rowSelection?.mode) {\n providedGridOptions.rowSelection = {\n ...((defaultGridOptions.rowSelection as RowSelectionOptions) ?? {\n checkboxes: false,\n }),\n ...providedGridOptions.rowSelection,\n } as RowSelectionOptions;\n }\n if ('enableCellChangeFlash' in providedGridOptions) {\n providedGridOptions.defaultColDef ??= {};\n providedGridOptions.defaultColDef.enableCellChangeFlash ??=\n !!providedGridOptions.enableCellChangeFlash;\n delete providedGridOptions.enableCellChangeFlash;\n }\n\n const mergedGridOptions: GridOptions = {\n ...defaultGridOptions,\n ...providedGridOptions,\n components: {\n ...providedGridOptions.components,\n // Apply default components last to prevent consumers from overwriting our component types.\n ...defaultGridOptions.components,\n },\n context: {\n ...defaultGridOptions.context,\n ...providedGridOptions.context,\n },\n columnTypes: {\n ...providedGridOptions.columnTypes,\n // apply default second to prevent consumers from overwriting our default column types\n ...defaultGridOptions.columnTypes,\n },\n defaultColDef: {\n ...defaultGridOptions.defaultColDef,\n ...providedGridOptions.defaultColDef,\n // allow consumers to override all defaultColDef properties except cellClassRules, which we reserve for styling\n cellClassRules: defaultGridOptions.defaultColDef?.cellClassRules,\n headerClass: defaultGridOptions.defaultColDef?.headerClass,\n },\n defaultColGroupDef: {\n ...defaultGridOptions.defaultColGroupDef,\n ...providedGridOptions.defaultColGroupDef,\n headerClass: defaultGridOptions.defaultColGroupDef?.headerClass,\n },\n getRowClass: (params): string[] => {\n const defaultClasses = defaultGridOptions.getRowClass(\n params,\n ) as string[];\n const providedClasses = providedGridOptions.getRowClass?.(params) ?? [];\n const providedClassesArray = Array.isArray(providedClasses)\n ? providedClasses\n : [providedClasses];\n return [...defaultClasses, ...providedClassesArray];\n },\n onCellFocused: (event): void => {\n defaultGridOptions.onCellFocused?.(event);\n providedGridOptions.onCellFocused?.(event);\n },\n };\n\n // Enable text selection unless explicitly disabled or conflicting with another setting.\n if (\n mergedGridOptions.enableCellTextSelection ||\n (!('enableCellTextSelection' in mergedGridOptions) &&\n !mergedGridOptions.cellSelection &&\n !mergedGridOptions.columnDefs?.some((col: ColDef) => col.editable))\n ) {\n mergedGridOptions.context ||= {};\n mergedGridOptions.enableCellTextSelection ??= true;\n mergedGridOptions.context.enableCellTextSelection =\n mergedGridOptions.enableCellTextSelection;\n }\n\n return mergedGridOptions;\n }\n\n #getDefaultGridOptions(args: SkyGetGridOptionsArgs): GridOptions & {\n getRowClass: (params: RowClassParams) => string[];\n } {\n // cellClassRules can be functions or string expressions\n const cellClassRuleTrueExpression = (): boolean => true;\n\n function getEditableFn(\n isUneditable?: boolean,\n ): (params: CellClassParams) => boolean {\n return function (params: CellClassParams): boolean {\n let isEditable = params.colDef.editable;\n\n if (typeof isEditable === 'function') {\n const column = params.api.getColumn(params.colDef);\n isEditable = isEditable({\n ...params,\n column,\n } as EditableCallbackParams);\n }\n\n return isUneditable ? !isEditable : !!isEditable;\n };\n }\n\n const editableCellClassRules = {\n [SkyCellClass.Editable]: getEditableFn(),\n [SkyCellClass.Uneditable]: getEditableFn(true),\n };\n\n function getValidatorFn(): (params: CellClassParams) => boolean {\n return function (param: CellClassParams) {\n if (\n param.colDef &&\n typeof param.colDef.cellRendererParams?.skyComponentProperties\n ?.validator === 'function'\n ) {\n return !param.colDef.cellRendererParams.skyComponentProperties.validator(\n param.value,\n param.data,\n param.node?.rowIndex,\n );\n }\n return false;\n };\n }\n\n const validatorCellClassRules = {\n [SkyCellClass.Invalid]: getValidatorFn(),\n [SkyCellClass.Validator]: cellClassRuleTrueExpression,\n };\n\n function getHeaderClass(\n ...classNames: string[]\n ): (params: HeaderClassParams) => string | string[] | undefined {\n return (params: HeaderClassParams): string | string[] | undefined => {\n // istanbul ignore next\n const minWidth = params.column?.getMinWidth() ?? 0;\n // istanbul ignore next\n const maxWidth = params.column?.getMaxWidth() ?? Infinity;\n if (\n (params.columnGroup?.isResizable() || params.column?.isResizable()) &&\n minWidth < maxWidth\n ) {\n return [...classNames, SkyHeaderClass.Resizable];\n }\n return classNames;\n };\n }\n\n const defaultSkyGridOptions: GridOptions & {\n getRowClass: (params: RowClassParams) => string[];\n } = {\n columnTypes: {\n [SkyCellType.Autocomplete]: {\n cellClassRules: {\n [SkyCellClass.Autocomplete]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorAutocompleteComponent,\n valueFormatter: autocompleteFormatter,\n comparator: autocompleteComparator,\n minWidth: 185,\n },\n [SkyCellType.Currency]: {\n cellClassRules: {\n [SkyCellClass.Currency]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-currency-validator',\n { component: 'sky-ag-grid-cell-renderer-currency' },\n ),\n cellEditor: SkyAgGridCellEditorCurrencyComponent,\n headerClass: getHeaderClass(SkyHeaderClass.RightAligned),\n minWidth: 185,\n sortingOrder: [null, 'desc', 'asc'],\n suppressKeyboardEvent: (params) =>\n this.#suppressEnter(params) || this.#suppressTab(params),\n },\n [SkyCellType.Date]: {\n cellClassRules: {\n [SkyCellClass.Date]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorDatepickerComponent,\n comparator: dateComparator,\n minWidth: this.#currentTheme?.theme?.name === 'modern' ? 180 : 160,\n valueFormatter: (params: ValueFormatterParams) => {\n try {\n return (\n this.#dateService.format(\n params.value,\n args.locale,\n args.dateFormat || 'shortDate',\n ) || ''\n );\n } catch (err) {\n /* istanbul ignore else */\n if ((err as Error).stack) {\n this.#logService.error(`${(err as Error).stack}`);\n } else {\n this.#logService.error(`${err}`);\n }\n return '';\n }\n },\n },\n [SkyCellType.Lookup]: {\n cellClassRules: {\n [SkyCellClass.Lookup]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorLookupComponent,\n cellRenderer: SkyAgGridCellRendererLookupComponent,\n valueFormatter: (params) => {\n const lookupProperties = applySkyLookupPropertiesDefaults(\n params.colDef?.cellRendererParams?.skyComponentProperties ??\n params.colDef?.cellEditorParams?.skyComponentProperties ??\n {},\n );\n return (params.value || [])\n .map((value: Record<string, unknown>) => {\n return value[lookupProperties.descriptorProperty as string];\n })\n .filter((value: unknown) => value !== '' && value !== undefined)\n .join('; ');\n },\n minWidth: 185,\n },\n [SkyCellType.Number]: {\n cellClassRules: {\n [SkyCellClass.Number]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip',\n ),\n cellEditor: SkyAgGridCellEditorNumberComponent,\n headerClass: getHeaderClass(SkyHeaderClass.RightAligned),\n sortingOrder: [null, 'desc', 'asc'],\n },\n [SkyCellType.RightAligned]: {\n cellClassRules: {\n [SkyCellClass.RightAligned]: cellClassRuleTrueExpression,\n },\n headerClass: getHeaderClass(SkyHeaderClass.RightAligned),\n },\n [SkyCellType.RowSelector]: {\n cellClassRules: {\n [SkyCellClass.RowSelector]: cellClassRuleTrueExpression,\n [SkyCellClass.Uneditable]: cellClassRuleTrueExpression,\n },\n cellRenderer: SkyAgGridCellRendererRowSelectorComponent,\n headerComponentParams: {\n headerHidden: true,\n },\n headerName: 'Row selection',\n minWidth: 55,\n maxWidth: 55,\n resizable: false,\n sortable: false,\n width: 55,\n },\n [SkyCellType.Template]: {\n cellClassRules: {\n [SkyCellClass.Template]: cellClassRuleTrueExpression,\n },\n cellRenderer: SkyAgGridCellRendererTemplateComponent,\n cellEditor: SkyAgGridCellRendererTemplateComponent,\n },\n [SkyCellType.Text]: {\n cellClassRules: {\n [SkyCellClass.Text]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorTextComponent,\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip',\n ),\n },\n [SkyCellType.Validator]: {\n cellClassRules: {\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip',\n ),\n },\n },\n defaultColDef: {\n cellClassRules: editableCellClassRules,\n headerClass: getHeaderClass(),\n headerComponent: SkyAgGridHeaderComponent,\n minWidth: 100,\n suppressHeaderKeyboardEvent: (\n keypress: SuppressHeaderKeyboardEventParams,\n ) => keypress.event.code === 'Tab',\n suppressKeyboardEvent: (keypress: SuppressKeyboardEventParams) =>\n this.#suppressTab(keypress),\n },\n defaultColGroupDef: {\n headerGroupComponent: SkyAgGridHeaderGroupComponent,\n },\n domLayout: 'autoHeight',\n ensureDomOrder: true,\n components: {\n 'sky-ag-grid-cell-renderer-currency':\n SkyAgGridCellRendererCurrencyComponent,\n 'sky-ag-grid-cell-renderer-currency-validator':\n SkyAgGridCellRendererCurrencyValidatorComponent,\n 'sky-ag-grid-cell-renderer-validator-tooltip':\n SkyAgGridCellRendererValidatorTooltipComponent,\n },\n focusGridInnerElement: (params) => {\n const lastFocusedCell = params.context?.['lastFocusedCell'] as\n | LastFocusedCell\n | undefined;\n if (lastFocusedCell) {\n if (lastFocusedCell.rowIndex !== null) {\n params.api.setFocusedCell(\n lastFocusedCell.rowIndex,\n lastFocusedCell.column,\n );\n } else {\n params.api.setFocusedHeader(lastFocusedCell.column);\n }\n return true;\n }\n return false;\n },\n getRowId: (params) => {\n const dataId = params.data.id;\n if (dataId !== undefined) {\n return `${params.data.id}`;\n }\n if (!this.#keyMap.has(params.data)) {\n this.#keyMap.set(params.data, `${rowNodeId--}`);\n }\n return this.#keyMap.get(params.data) as string;\n },\n getRowClass: (params: RowClassParams): string[] => {\n if (params.node.id) {\n return [`sky-ag-grid-row-${params.node.id}`];\n } else {\n return [];\n }\n },\n icons: {\n sortDescending: this.#getIconTemplate('sortDescending'),\n sortAscending: this.#getIconTemplate('sortAscending'),\n columnMoveMove: this.#getIconTemplate('columnMoveMove'),\n columnMoveHide: this.#getIconTemplate('columnMoveHide'),\n columnMoveLeft: this.#getIconTemplate('columnMoveLeft'),\n columnMoveRight: this.#getIconTemplate('columnMoveRight'),\n columnMovePin: this.#getIconTemplate('columnMovePin'),\n },\n loadingOverlayComponent: SkyAgGridLoadingComponent,\n onCellFocused: () => this.#onCellFocused(),\n rowModelType: 'clientSide',\n rowSelection: {\n mode: 'multiRow',\n enableClickSelection: false,\n enableSelectionWithoutKeys: true,\n checkboxes: false,\n headerCheckbox: false,\n },\n singleClickEdit: true,\n suppressDragLeaveHidesColumns: true,\n theme: getSkyAgGridTheme(\n 'data-grid',\n this.#currentTheme?.theme?.name,\n this.#currentTheme?.mode?.name,\n this.#currentTheme?.spacing?.name,\n ),\n };\n\n const columnTypes = defaultSkyGridOptions.columnTypes as Record<\n string,\n ColDef\n >;\n\n columnTypes[SkyCellType.CurrencyValidator] = {\n ...columnTypes[SkyCellType.Currency],\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: string): boolean => {\n return !!`${value || ''}`.match(/^[^0-9]*(\\d+[,.]?)+\\d*[^0-9]*$/);\n },\n validatorMessage: 'Please enter a valid currency',\n },\n },\n };\n /*istanbul ignore else*/\n if (this.#resources) {\n this.#resources\n .getString('sky_ag_grid_cell_renderer_currency_validator_message')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n columnTypes[\n SkyCellType.CurrencyValidator\n ].cellRendererParams.skyComponentProperties.validatorMessage = value;\n });\n }\n\n columnTypes[SkyCellType.NumberValidator] = {\n ...columnTypes[SkyCellType.Validator],\n ...columnTypes[SkyCellType.Number],\n cellClassRules: {\n ...columnTypes[SkyCellType.Validator].cellClassRules,\n ...columnTypes[SkyCellType.Number].cellClassRules,\n },\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: string): boolean => {\n return !!value && !isNaN(parseFloat(value));\n },\n validatorMessage: 'Please enter a valid number',\n },\n },\n };\n /*istanbul ignore else*/\n if (this.#resources) {\n this.#resources\n .getString('sky_ag_grid_cell_renderer_number_validator_message')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n columnTypes[\n SkyCellType.NumberValidator\n ].cellRendererParams.skyComponentProperties.validatorMessage = value;\n });\n this.#resources\n .getString('sky_ag_grid_row_selector_column_heading')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n columnTypes[SkyCellType.RowSelector].headerName = value;\n });\n }\n\n return defaultSkyGridOptions;\n }\n\n #onCellFocused(): void {\n const currentElement = this.#agGridAdapterService.getFocusedElement();\n\n this.#agGridAdapterService.focusOnFocusableChildren(currentElement);\n }\n\n #getDefaultEditableGridOptions(args: SkyGetGridOptionsArgs): GridOptions & {\n getRowClass: (params: RowClassParams) => string[];\n } {\n const defaultGridOptions = this.#getDefaultGridOptions(args);\n defaultGridOptions.rowSelection = undefined;\n defaultGridOptions.theme = getSkyAgGridTheme(\n 'data-entry-grid',\n this.#currentTheme?.theme?.name,\n this.#currentTheme?.mode?.name,\n this.#currentTheme?.spacing?.name,\n );\n return defaultGridOptions;\n }\n\n #getIconTemplate(iconKey: keyof IconMapType): () => string {\n return () => {\n const iconInfo = iconMap[iconKey];\n return `<svg height=\"16\" width=\"16\"><use xlink:href=\"#sky-i-${iconInfo.name}-${iconInfo.size}-solid\"></use></svg>`;\n };\n }\n\n #suppressTab(params: SuppressKeyboardEventParams): boolean {\n if (params.event.code === 'Tab') {\n if (params.editing) {\n const currentlyFocusedEl =\n this.#agGridAdapterService.getFocusedElement();\n // inline cell editors have the 'ag-cell' class, while popup editors have the 'ag-popup-editor' class\n const cellEl = this.#agGridAdapterService.getElementOrParentWithClass(\n currentlyFocusedEl,\n 'ag-cell',\n );\n const popupEl = this.#agGridAdapterService.getElementOrParentWithClass(\n currentlyFocusedEl,\n 'ag-popup-editor',\n );\n const parentEl = cellEl || popupEl;\n\n const nextFocusableElementInCell =\n this.#agGridAdapterService.getNextFocusableElement(\n currentlyFocusedEl,\n parentEl,\n params.event.shiftKey,\n );\n return !!nextFocusableElementInCell;\n }\n return true;\n }\n return false;\n }\n\n #suppressEnter(params: SuppressKeyboardEventParams): boolean {\n if (params.event.code === 'Enter') {\n return params.editing;\n }\n return false;\n }\n}\n","// Export any types that should be included in the root.\nexport { SkyAgGridModule } from './lib/modules/ag-grid/ag-grid.module';\nexport { SkyAgGridService } from './lib/modules/ag-grid/ag-grid.service';\nexport { SkyAgGridRowDeleteCancelArgs } from './lib/modules/ag-grid/types/ag-grid-row-delete-cancel-args';\nexport { SkyAgGridRowDeleteConfirmArgs } from './lib/modules/ag-grid/types/ag-grid-row-delete-confirm-args';\nexport {\n SkyAgGridAutocompleteProperties,\n SkyAutocompleteProperties,\n} from './lib/modules/ag-grid/types/autocomplete-properties';\nexport { SkyCellClass } from './lib/modules/ag-grid/types/cell-class';\nexport { SkyAgGridCellEditorInitialAction } from './lib/modules/ag-grid/types/cell-editor-initial-action';\nexport { SkyAgGridCellEditorUtils } from './lib/modules/ag-grid/types/cell-editor-utils';\nexport { SkyCellType } from './lib/modules/ag-grid/types/cell-type';\nexport { SkyAgGridCurrencyProperties } from './lib/modules/ag-grid/types/currency-properties';\nexport {\n SkyAgGridDatepickerProperties,\n SkyDatepickerProperties,\n} from './lib/modules/ag-grid/types/datepicker-properties';\nexport { SkyHeaderClass } from './lib/modules/ag-grid/types/header-class';\nexport { SkyAgGridHeaderGroupInfo } from './lib/modules/ag-grid/types/header-group-info';\nexport { SkyAgGridHeaderGroupParams } from './lib/modules/ag-grid/types/header-group-params';\nexport { SkyAgGridHeaderInfo } from './lib/modules/ag-grid/types/header-info';\nexport { SkyAgGridHeaderParams } from './lib/modules/ag-grid/types/header-params';\nexport { SkyAgGridLookupProperties } from './lib/modules/ag-grid/types/lookup-properties';\nexport { SkyAgGridNumberProperties } from './lib/modules/ag-grid/types/number-properties';\nexport { SkyGetGridOptionsArgs } from './lib/modules/ag-grid/types/sky-grid-options';\nexport { SkyAgGridTextProperties } from './lib/modules/ag-grid/types/text-properties';\nexport { SkyAgGridValidatorProperties } from './lib/modules/ag-grid/types/validator-properties';\n\n// Components and directives must be exported to support Angular's \"partial\" Ivy compiler.\n// Obscure names are used to indicate types are not part of the public API.\nexport { SkyAgGridDataManagerAdapterDirective as λ14 } from './lib/modules/ag-grid/ag-grid-data-manager-adapter.directive';\nexport { SkyAgGridRowDeleteComponent as λ6 } from './lib/modules/ag-grid/ag-grid-row-delete.component';\nexport { SkyAgGridRowDeleteDirective as λ13 } from './lib/modules/ag-grid/ag-grid-row-delete.directive';\nexport { SkyAgGridWrapperComponent as λ12 } from './lib/modules/ag-grid/ag-grid-wrapper.component';\nexport { SkyAgGridCellEditorAutocompleteComponent as λ1 } from './lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\nexport { SkyAgGridCellEditorCurrencyComponent as λ3 } from './lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component';\nexport { SkyAgGridCellEditorDatepickerComponent as λ5 } from './lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\nexport { SkyAgGridCellEditorLookupComponent as λ15 } from './lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component';\nexport { SkyAgGridCellEditorNumberComponent as λ4 } from './lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component';\nexport { SkyAgGridCellEditorTextComponent as λ2 } from './lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component';\nexport { SkyAgGridCellRendererCurrencyValidatorComponent as λ8 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\nexport { SkyAgGridCellRendererCurrencyComponent as λ9 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\nexport { SkyAgGridCellRendererLookupComponent as λ16 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component';\nexport { SkyAgGridCellRendererRowSelectorComponent as λ7 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\nexport { SkyAgGridCellRendererValidatorTooltipComponent as λ10 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\nexport { SkyAgGridCellValidatorTooltipComponent as λ11 } from './lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component';\nexport { SkyAgGridHeaderGroupComponent as λ18 } from './lib/modules/ag-grid/header/header-group.component';\nexport { SkyAgGridHeaderComponent as λ17 } from './lib/modules/ag-grid/header/header.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil","i1","filter","i2","i3","i4","i1.SkyAgGridAdapterService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;;;;;AAKG;AAQH,MAAM,SAAS,GAAoC;AACjD,IAAA,OAAO,EAAE;AACP,QAAA,mCAAmC,EAAE;AACnC,YAAA,OAAO,EAAE,0BAA0B;AACpC,SAAA;AACD,QAAA,uCAAuC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;AACrE,QAAA,6CAA6C,EAAE;AAC7C,YAAA,OAAO,EAAE,+BAA+B;AACzC,SAAA;AACD,QAAA,4CAA4C,EAAE;AAC5C,YAAA,OAAO,EAAE,qBAAqB;AAC/B,SAAA;AACD,QAAA,yCAAyC,EAAE;AACzC,YAAA,OAAO,EAAE,iCAAiC;AAC3C,SAAA;AACD,QAAA,uCAAuC,EAAE;AACvC,YAAA,OAAO,EAAE,+BAA+B;AACzC,SAAA;AACD,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,uCAAuC;AACjD,SAAA;AACD,QAAA,kDAAkD,EAAE;AAClD,YAAA,OAAO,EAAE,uBAAuB;AACjC,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,yBAAyB;AACnC,SAAA;AACD,QAAA,2BAA2B,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;AAC9D,QAAA,2CAA2C,EAAE;AAC3C,YAAA,OAAO,EAAE,mCAAmC;AAC7C,SAAA;AACD,QAAA,8DAA8D,EAAE;AAC9D,YAAA,OAAO,EAAE,sCAAsC;AAChD,SAAA;AACD,QAAA,+DAA+D,EAAE;AAC/D,YAAA,OAAO,EAAE,uCAAuC;AACjD,SAAA;AACD,QAAA,qEAAqE,EAAE;AACrE,YAAA,OAAO,EAAE,uCAAuC;AACjD,SAAA;AACD,QAAA,iDAAiD,EAAE;AACjD,YAAA,OAAO,EAAE,yBAAyB;AACnC,SAAA;AACD,QAAA,mDAAmD,EAAE;AACnD,YAAA,OAAO,EAAE,2BAA2B;AACrC,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,mCAAmC,EAAE;AACnC,YAAA,OAAO,EAAE,sCAAsC;AAChD,SAAA;AACD,QAAA,uCAAuC,EAAE;AACvC,YAAA,OAAO,EAAE,uBAAuB;AACjC,SAAA;AACD,QAAA,6CAA6C,EAAE;AAC7C,YAAA,OAAO,EAAE,uCAAuC;AACjD,SAAA;AACD,QAAA,4CAA4C,EAAE;AAC5C,YAAA,OAAO,EAAE,yBAAyB;AACnC,SAAA;AACD,QAAA,yCAAyC,EAAE;AACzC,YAAA,OAAO,EAAE,yCAAyC;AACnD,SAAA;AACD,QAAA,uCAAuC,EAAE;AACvC,YAAA,OAAO,EAAE,wCAAwC;AAClD,SAAA;AACD,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,qDAAqD;AAC/D,SAAA;AACD,QAAA,kDAAkD,EAAE;AAClD,YAAA,OAAO,EAAE,0BAA0B;AACpC,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,2BAA2B;AACrC,SAAA;AACD,QAAA,2BAA2B,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE;AACrE,QAAA,2CAA2C,EAAE;AAC3C,YAAA,OAAO,EAAE,yCAAyC;AACnD,SAAA;AACD,QAAA,8DAA8D,EAAE;AAC9D,YAAA,OAAO,EAAE,uDAAuD;AACjE,SAAA;AACD,QAAA,+DAA+D,EAAE;AAC/D,YAAA,OAAO,EAAE,yDAAyD;AACnE,SAAA;AACD,QAAA,qEAAqE,EAAE;AACrE,YAAA,OAAO,EAAE,8CAA8C;AACxD,SAAA;AACD,QAAA,iDAAiD,EAAE;AACjD,YAAA,OAAO,EAAE,oCAAoC;AAC9C,SAAA;AACD,QAAA,mDAAmD,EAAE;AACnD,YAAA,OAAO,EAAE,mCAAmC;AAC7C,SAAA;AACF,KAAA;CACF;AAED,sBAAsB,CAAC,YAAY,CAAC,SAAS,CAAC;AAE9C;;AAEG;MAIU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAFzB,aAAa,CAAA,EAAA,CAAA,CAAA;AAEZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAFzB,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAEZ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,aAAa,CAAC;AACzB,iBAAA;;;AC5GD,MAAM,oBAAoB,GAAG;AAC3B,IAAA,eAAe,EAAE,0CAA0C;AAC3D,IAAA,WAAW,EAAE,wCAAwC;AACrD,IAAA,YAAY,EAAE,iCAAiC;AAC/C,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,iBAAiB,EAAE,MAAM;AACzB,IAAA,qBAAqB,EAAE,EAAE;AACzB,IAAA,8BAA8B,EAC5B,qGAAqG;AACvG,IAAA,0BAA0B,EAAE,EAAE,GAAG,EAAE,2BAA2B,EAAE;AAChE,IAAA,yBAAyB,EACvB,wGAAwG;AAC1G,IAAA,oCAAoC,EAClC,sFAAsF;AACxF,IAAA,gCAAgC,EAAE,aAAa;AAC/C,IAAA,4BAA4B,EAAE,CAAA;;;AAG5B,GAAA,CAAA;AACF,IAAA,yBAAyB,EAAE;AACzB,QAAA,GAAG,EAAE,CAAiP,+OAAA,CAAA;AACvP,KAAA;;IAED,UAAU,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,CAAC;AAClE,IAAA,eAAe,EAAE,+BAA+B;AAChD,IAAA,qBAAqB,EAAE,0CAA0C;AACjE,IAAA,kBAAkB,EAAE;AAClB,QAAA,KAAK,EAAE,OAAgB;AACvB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,KAAK,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE;AAC9B,KAAA;AACD,IAAA,wBAAwB,EAAE,MAAM;AAChC,IAAA,6BAA6B,EAAE,wCAAwC;AACvE,IAAA,8BAA8B,EAAE,MAAM;AACtC,IAAA,6BAA6B,EAAE,CAAC;AAChC,IAAA,gBAAgB,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE;AACvC,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,4BAA4B,EAAE,aAAa;AAC3C,IAAA,gBAAgB,EAAE,aAAa;AAC/B,IAAA,gBAAgB,EAAE,MAAM;AACxB,IAAA,YAAY,EAAE,yCAAyC;AACvD,IAAA,cAAc,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;AACpC,IAAA,qBAAqB,EAAE,0CAA0C;AACjE,IAAA,yBAAyB,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE;AACrD,IAAA,WAAW,EAAE,iCAAiC;AAC9C,IAAA,cAAc,EAAE,wCAAwC;AACxD,IAAA,aAAa,EAAE,aAAa;AAC5B,IAAA,wBAAwB,EAAE,oCAAoC;AAC9D,IAAA,0BAA0B,EAAE,sCAAsC;AAClE,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,SAAS,EAAE,+BAA+B;AAC1C,IAAA,sBAAsB,EAAE,2CAA2C;AACnE,IAAA,mBAAmB,EAAE,CAAC;CACvB;AACD,MAAM,wBAAwB,GAAG;AAC/B,IAAA,eAAe,EAAE,0CAA0C;AAC3D,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,WAAW,EAAE,MAAM;CACpB;AACD,MAAM,gBAAgB,GAAG;AACvB,IAAA,GAAG,oBAAoB;IACvB,eAAe,EAAE,SAAS;AAC1B,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,qBAAqB,EAAE,iCAAiC;AACxD,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,yBAAyB,EAAE,iCAAiC;CAC7D;AACD,MAAM,eAAe,GAAG;AACtB,IAAA,GAAG,oBAAoB;AACvB,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,kBAAkB,EAAE;AAClB,QAAA,KAAK,EAAE,OAAgB;AACvB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,KAAK,EAAE,aAAa;AACrB,KAAA;AACD,IAAA,6BAA6B,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE;AAC/D,IAAA,0BAA0B,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE;AAC5D,IAAA,YAAY,EAAE,EAAE;IAChB,qBAAqB,EAAE,SAAS;AAChC,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,yBAAyB,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE;CAC5D;AACD,MAAM,sBAAsB,GAAG;AAC7B,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,SAAS,EAAE,EAAE;CACd;AACD,MAAM,mBAAmB,GAAG;AAC1B,IAAA,GAAG,oBAAoB;AACvB,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,SAAS,EAAE,EAAE;CACd;AAED,MAAM,wBAAwB,GAAG;KAC9B,QAAQ,CAAC,gBAAgB;KACzB,QAAQ,CAAC,aAAa;KACtB,UAAU,CAAC,gBAAgB,CAAC;AAE/B,MAAM,6BAA6B,GAAG,wBAAwB,CAAC,UAAU,CACvE,wBAAwB,CACzB,CAAC,UAAU,CAAC;AACX,IAAA,qBAAqB,EAAE,MAAM;AAC7B,IAAA,YAAY,EAAE;AACZ,QAAA,KAAK,EAAE,OAAgB;AACvB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,KAAK,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE;AAC9B,KAAA;AACF,CAAA,CAAC;AAEF,MAAM,4BAA4B,GAAG;KAClC,QAAQ,CAAC,gBAAgB;KACzB,QAAQ,CAAC,aAAa;KACtB,UAAU,CAAC,eAAe,CAAC;AAE9B,MAAM,mCAAmC,GACvC,4BAA4B,CAAC,UAAU,CAAC,sBAAsB,CAAC;AAEjE,MAAM,2BAA2B,GAAG;KACjC,QAAQ,CAAC,eAAe;KACxB,QAAQ,CAAC,aAAa;KACtB,UAAU,CAAC,mBAAmB,CAAC;AAElC,MAAM,kCAAkC,GACtC,2BAA2B,CAAC,UAAU,CAAC,sBAAsB,CAAC;AAEhE,MAAM,iCAAiC,GACrC,4BAA4B,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,UAAU,CAAC;AAC3E,IAAA,eAAe,EAAE,SAAS;AAC3B,CAAA,CAAC;AAEJ,MAAM,wCAAwC,GAC5C,mCAAmC,CAAC,UAAU,CAAC,wBAAwB,CAAC;AAE1E,MAAM,gCAAgC,GAAG,2BAA2B,CAAC,UAAU,CAC7E,wBAAwB,CACzB;AAED,MAAM,uCAAuC,GAC3C,kCAAkC,CAAC,UAAU,CAAC,wBAAwB,CAAC;AAEnE,SAAU,iBAAiB,CAC/B,IAAqC,EACrC,KAAyB,EACzB,IAAwB,EACxB,OAA2B,EAAA;AAE3B,IAAA,IAAI,IAAI,KAAK,WAAW,EAAE;AACxB,QAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACtB,YAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACnB,gBAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACzB,oBAAA,OAAO,kCAAkC;;qBACpC;AACL,oBAAA,OAAO,2BAA2B;;;iBAE/B;AACL,gBAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACzB,oBAAA,OAAO,mCAAmC;;qBACrC;AACL,oBAAA,OAAO,4BAA4B;;;;aAGlC;AACL,YAAA,OAAO,wBAAwB;;;SAE5B;AACL,QAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACtB,YAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACnB,gBAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACzB,oBAAA,OAAO,uCAAuC;;qBACzC;AACL,oBAAA,OAAO,gCAAgC;;;iBAEpC;AACL,gBAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACzB,oBAAA,OAAO,wCAAwC;;qBAC1C;AACL,oBAAA,OAAO,iCAAiC;;;;aAGvC;AACL,YAAA,OAAO,6BAA6B;;;AAG1C;AAKgB,SAAA,oBAAoB,CAClC,aAA2C,EAC3C,aAAsB,EAAA;AAEtB,IAAA,QACE,aAAa,EAAE,KAAK,CAAC,IAAI,KAAK,QAAQ;SACrC,aAAa,IAAI,aAAa,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;AAEhE;SAEgB,0BAA0B,CACxC,QAAiB,EACjB,aAA2C,EAC3C,aAAsB,EAAA;AAEtB,IAAA,IAAI,KAAK,GAAG,CAAgB,aAAA,EAAA,QAAQ,GAAG,iBAAiB,GAAG,WAAW,GAAG;IACzE,IAAI,aAAa,EAAE,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC1C,KAAK,IAAI,UAAU,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE;AAC5C,QAAA,IAAI,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE;YACtD,KAAK,IAAI,UAAU;;;SAEhB;QACL,KAAK,IAAI,SAAS;;AAEpB,IAAA,OAAO,KAA2B;AACpC;;AC7NA;;AAEG;MAIU,uBAAuB,CAAA;AAClC,IAAA,kBAAkB;AAElB,IAAA,WAAA,CAAY,iBAAwC,EAAA;AAClD,QAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB;;IAGtC,2BAA2B,CAChC,OAAoB,EACpB,SAAiB,EAAA;QAEjB,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACpD,YAAA,OAAO,OAAO;;AACT,aAAA,IAAI,OAAO,CAAC,aAAa,EAAE;YAChC,OAAO,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC;;AAG3E,QAAA,OAAO,SAAS;;IAGX,qBAAqB,CAAC,QAAqB,EAAE,QAAgB,EAAA;QAClE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAI,CAAA,EAAA,QAAQ,CAAE,CAAA,CAAgB;;QAGrE,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,KAAK,EAAE;;;IAIZ,iBAAiB,GAAA;QACtB,OAAO,QAAQ,CAAC,aAA4B;;AAGvC,IAAA,uBAAuB,CAC5B,SAAsB,EACtB,QAAsB,EACtB,aAAuB,EAAA;QAEvB,IAAI,QAAQ,EAAE;YACZ,MAAM,iBAAiB,GACrB,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YACxD,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC;YAChE,MAAM,SAAS,GAAG;kBACd,mBAAmB,GAAG;AACxB,kBAAE,mBAAmB,GAAG,CAAC;YAE3B,IACE,CAAC,CAAC,aAAa,IAAI,iBAAiB,CAAC,MAAM,IAAI,SAAS;AACxD,iBAAC,aAAa,IAAI,SAAS,IAAI,CAAC,CAAC,EACjC;AACA,gBAAA,OAAO,iBAAiB,CAAC,SAAS,CAAC;;;AAIvC,QAAA,OAAO,SAAS;;AAGX,IAAA,wBAAwB,CAAC,OAAoB,EAAA;QAClD,MAAM,iBAAiB,GACrB,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,CAAC;AAEvD,QAAA,IAAI,iBAAiB,CAAC,MAAM,EAAE;AAC5B,YAAA,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;;;8GA9DrB,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACRD;;;AAGG;IACS;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB;;;;;;;;AAQG;AACH,IAAA,WAAA,CAAA,cAAA,CAAA,GAAA,qBAAoC;AACpC;;;;;;;;AAQG;AACH,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,iBAA4B;AAC5B;;;;AAIG;AACH,IAAA,WAAA,CAAA,mBAAA,CAAA,GAAA,0BAA8C;AAC9C;;;;;;;;AAQG;AACH,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,aAAoB;AACpB;;;;;;;;AAQG;AACH,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,eAAwB;AACxB;;;;;;;;AAQG;AACH,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,eAAwB;AACxB;;;;AAIG;AACH,IAAA,WAAA,CAAA,iBAAA,CAAA,GAAA,wBAA0C;AAC1C;;;;AAIG;AACH,IAAA,WAAA,CAAA,cAAA,CAAA,GAAA,qBAAoC;AACpC;;;;AAIG;AACH,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,oBAAkC;AAClC;;;;AAIG;AACH,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,iBAA4B;AAC5B;;;;;;;;AAQG;AACH,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,aAAoB;AACpB;;;;AAIG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,kBAA8B;AAChC,CAAC,EAjGW,WAAW,KAAX,WAAW,GAiGtB,EAAA,CAAA,CAAA;;AChDD,IAAI,OAAO,GAAG,CAAC;MAQF,yBAAyB,CAAA;AAWpC;;;AAGG;IACH,IACW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;AAe7B,IAAA,IAAW,iBAAiB,GAAA;QAC1B,OAAO,IAAI,CAAC,mBAAmB;;IAGjC,IAAW,iBAAiB,CAAC,KAAe,EAAA;AAC1C,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;AAGrC,IAAA,IAAI,aAAa,GAAA;QACf,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AAClC,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC;YACvE,IAAI,kBAAkB,EAAE;AACtB,gBAAA,OAAO,IAAI;;iBACN,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE;gBACxD,IAAI,YAAY,GAAG,KAAK;gBACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,UAAU,KAAI;AACnD,oBAAA,IAAI,UAAU,EAAE,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;wBAClE,YAAY,GAAG,IAAI;;AAEvB,iBAAC,CAAC;AAEF,gBAAA,OAAO,YAAY;;;AAGvB,QAAA,OAAO,KAAK;;AAOd,IAAA,mBAAmB;AACV,IAAA,cAAc;AACd,IAAA,SAAS;AAGT,IAAA,eAAe;AAGf,IAAA,eAAe;AACf,IAAA,eAAe;AACf,IAAA,qBAAqB;AAIrB,IAAA,WAAW;AACX,IAAA,SAAS;AACT,IAAA,wBAAwB;AACxB,IAAA,UAAU;AACV,IAAA,iBAAiB;AAE1B,IAAA,WAAA,GAAA;QA3EO,IAAc,CAAA,cAAA,GAAG,KAAK;AAW7B;;AAEG;AACa,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAkB,EAAE,EAAE;AACrD,YAAA,SAAS,EAAE,eAAe;AAC3B,SAAA,CAAC;AAmCiB,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,YAAA,OAAO,6BAA6B,IAAI,CAAC,SAAS,EAAE,KAAK;AAC3D,SAAC,CAAC;QAEF,IAAmB,CAAA,mBAAA,GAAa,EAAE;AACzB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;AACpC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,eAAe,EAAE;AAC3C,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC;QACO,IAAe,CAAA,eAAA,GAAG,IAAI,eAAe,CAAW;YACvD,CAAgC,8BAAA,CAAA;AACjC,SAAA,CAAC;AACO,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACjD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3C,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,iBAAiB,EAAE;AACzD,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC;AACO,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;AAC7C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC7D,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAChD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,aAAa,CAAU,CAAC,CAAC;AAGxD,QAAA,OAAO,EAAE;AACT,QAAA,IAAI,CAAC,aAAa,GAAG,+BAA+B,GAAG,OAAO;AAC9D,QAAA,IAAI,CAAC,cAAc,GAAG,gCAAgC,GAAG,OAAO;AAChE,QAAA,IAAI,CAAC,MAAM,GAAG,cAAc,GAAG,OAAO;QACtC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;IAGrD,kBAAkB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS;AACpD,YAAA,IAAI,SAAS,KAAK,YAAY,EAAE;gBAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE;oBACrD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB,YAAY,EACZ,4BAA4B,CAC7B;;qBACI;AACL,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC;;;AAEtC,iBAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;AACjC,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,gBAAA,IAAI,CAAC,qBAAqB,EAAE,aAAa,EAAE;;YAE7C,IAAI,CAAC,MAAM,CAAC;AACT,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;iBACnC,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,qBAAqB,EAAE;AAC9B,aAAC,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC;AACT,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;iBACnC,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,qBAAqB,EAAE;AAC9B,aAAC,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC;AACT,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;iBACnC,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,qBAAqB,EAAE;AAC9B,aAAC,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC;AACT,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,MAA+B,KAAI;AAC7C,gBAAA,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;oBACtB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;AAC5C,0BAAE,MAAM,CAAC,MAAM,CAAC;0BACd,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACxB,oBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAC1B,CAAC,CAAC,KAAK,CAAA,yBAAA,EAA4B,CAAC,CAAA,CAAE,CACvC;AACD,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,wBAAA,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AAClC,wBAAA,GAAG,UAAU;AACd,qBAAA,CAAC;AACF,oBAAA,IACE,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC;AACpC,wBAAA,MAAM,CAAC,QAAQ,KAAK,IAAI,EACxB;AACA,wBAAA,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;;;AAGrE,aAAC,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC;AACT,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;iBACnC,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,IAAI,CAAC;AACF,qBAAA,QAAQ;AACR,qBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAC7D;AACH,aAAC,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC;AACT,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,KAAuB,KAAI;AACrC,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE;gBAEnC,OAAO,CAAC,iBAAiB,CAAC,GAAG;oBAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;AACxB,oBAAA,MAAM,EACJ,OAAO,KAAK,CAAC,MAAM,KAAK;AACtB,0BAAE,KAAK,CAAC,MAAM,EAAE,QAAQ;AACxB,0BAAE,CAAA,EAAG,KAAK,CAAC,MAAM,CAAE,CAAA;iBACxB;gBAED,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC;AAC9C,aAAC,CAAC;YAEJ,IAAI,CAAC,MAAM,CAAC;AACT,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,KAAyB,KAAI;AACvC,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE;gBAEnC,OAAO,CAAC,iBAAiB,CAAC,GAAG;AAC3B,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;AACpB,0BAAE,KAAK,CAAC,MAAM,CAAC,WAAW;AAC1B,0BAAE,CAAA,EAAG,KAAK,CAAC,MAAM,CAAE,CAAA;iBACtB;gBAED,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC;AAC9C,aAAC,CAAC;;;IAID,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;;IAG1B,QAAQ,GAAA;AACb,QAAA,aAAa,CAAyD;AACpE,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACnD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,EAAE,cAAc,IAAI,EAAE,CAAC,SAAS,CAAC;SAChD;AACE,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;aACnC,SAAS,CAAC,CAAC,CAAC,gBAAgB,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAI;YACrD,IAAI,CAAC,gBAAgB,CACnB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EAAE,eAAe,CAC1B;AACH,SAAC,CAAC;;IAGC,eAAe,GAAA;AACpB,QAAA,MAAM,aAAa,GACjB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC;QACjE,MAAM,QAAQ,GAAG,MAAW;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAC5D;AACH,SAAC;QACD,IAAI,aAAa,EAAE;YACjB,MAAM,mBAAmB,GACvB,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC;AAChD,YAAA,mBAAmB,CAAC,OAAO,CAAC,aAAa,EAAE;AACzC,gBAAA,UAAU,EAAE,IAAI;gBAChB,eAAe,EAAE,CAAC,OAAO,CAAC;AAC3B,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;gBAC/C,mBAAmB,CAAC,UAAU,EAAE;AAClC,aAAC,CAAC;;AAEJ,QAAA,QAAQ,EAAE;;AAGZ;;AAEG;AACI,IAAA,aAAa,CAAC,MAAa,EAAA;QAChC,MAAM,CAAC,eAAe,EAAE;QACxB,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;;AAG7B,IAAA,aAAa,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AAC7D,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC;kBACpB,IAAI,CAAC;AACP,kBAAE,IAAI,CAAC,aAAa;AACtB,YAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,CACxC,IAAI,CAAC,WAAW,CAAC,aAAa,EAC9B,SAAS,CACV;;;AAIE,IAAA,aAAa,CAAC,KAAiB,EAAA;AACpC,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,aAAwC;AACpE,QAAA,MAAM,eAAe,GACnB,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;AAEzE,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE;YACnC,IAAI,CAAC,WAAW,CAAC;iBACd,aAAa,CAAC,gCAAgC;kBAC7C,KAAK,EAAE;;;IAIf,qBAAqB,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe;AAClE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC;QACrE,MAAM,MAAM,GAAG,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC;QAChD,MAAM,cAAc,GAAG,IAAI,EAAE,aAAa,CAAC,qBAAqB,CAAC;QACjE,MAAM,SAAS,GAAG,IAAI,EAAE,aAAa,CAAC,4BAA4B,CAAC;QACnE,IAAI,IAAI,IAAI,MAAM,IAAI,cAAc,IAAI,SAAS,EAAE;AACjD,YAAA,IACE,SAAS,CAAC,KAAK,CAAC,MAAM;gBACtB,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAC9B,uCAAuC,CACxC,EACD;AACA,gBAAA,SAAS,CAAC,KAAK,CAAC,WAAW,CACzB,uCAAuC,EACvC,SAAS,CAAC,KAAK,CAAC,MAAM,CACvB;;AAEH,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC;AACpE,YAAA,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;gBACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACxD,gBAAA,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC;AAC/B,gBAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;;AACjB,iBAAA,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE;gBAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACxD,gBAAA,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC;AAC/B,gBAAA,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC;;;;AAKpC,IAAA,gBAAgB,CACd,gBAAyB,EACzB,SAAkB,EAClB,aAAgC,EAAA;AAEhC,QAAA,MAAM,cAAc,GAAG,iBAAiB,CACtC,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,EAClD,aAAa,EAAE,KAAK,EAAE,IAAI,EAC1B,aAAa,EAAE,IAAI,EAAE,IAAI,EACzB,SAAS,GAAG,SAAS,GAAG,aAAa,EAAE,OAAO,EAAE,IAAI,CACrD;QACD,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC;QACvD,MAAM,uBAAuB,GAAG,0BAA0B,CACxD,gBAAgB,EAChB,aAAa,EACb,SAAS,CACV;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AACrD,QAAA,IAAI,KAAK,GAAG;AACV,YAAA,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC1D,uBAAuB;SACxB;QACD,MAAM,kBAAkB,GAAG,4BAA4B;AACvD,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE;AAC5C,YAAA,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;;aACzB;AACL,YAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,kBAAkB,CAAC;;AAEvD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;;AAGhD,IAAA,iBAAiB,CAAC,gBAAyB,EAAA;QACzC,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,uBAAuB,EAAE;YAC9D,OAAO,CAAC,gBAAgB;;aACnB;AACL,YAAA,OAAO,KAAK;;;8GA3UL,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAehB,gBAAgB,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iCAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAZtB,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChE7B,6qBA8BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,ED6BY,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEtC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;+BACE,qBAAqB,EAAA,eAAA,EAEd,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,SAAS,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,6qBAAA,EAAA;wDAQ3C,MAAM,EAAA,CAAA;sBAHZ,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE;AAC3B,wBAAA,MAAM,EAAE,IAAI;AACb,qBAAA;gBAIM,cAAc,EAAA,CAAA;sBADpB,WAAW;uBAAC,iCAAiC;gBAQnC,OAAO,EAAA,CAAA;sBADjB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;AE1CxC,SAAS,iBAAiB,CAAC,UAAyB,EAAA;IAClD,OAAO,UAAU,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI;AAC1C;AAEA;;AAEG;MAEU,oCAAoC,CAAA;AAc/C,IAAA,cAAc;AACd,IAAA,iBAAiB;AACjB,IAAA,wBAAwB;AACxB,IAAA,aAAa;AACb,IAAA,WAAW;AACX,IAAA,cAAc;AACd,IAAA,eAAe;AACf,IAAA,eAAe;AAEN,IAAA,WAAW;IAIpB,WACE,CAAA,cAAiC,EACjC,cAAqC,EAAA;AAvBvB,QAAA,IAAA,CAAA,UAAU,GAAG,eAAe,CAAgB,aAAa,EAAE;AACzE,YAAA,WAAW,EAAE,IAAI;AAClB,SAAA,CAAC;AAEK,QAAA,IAAA,CAAA,oBAAoB,GAAG,eAAe,CAAC,yBAAyB,EAAE;AACvE,YAAA,WAAW,EAAE,IAAI;AAClB,SAAA,CAAC;AAOF,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;QAI3B,IAAW,CAAA,WAAA,GAAG,QAAQ,CAC7B,MAAM,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,CAC9C;AAMC,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;AACrC,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;QAErC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAE9B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC5B,SAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAExC,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;AACtC,SAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;YAErC,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;;AAEvC,SAAC,CAAC;;IAGG,kBAAkB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;;;IAI7D,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;;AAGhC,IAAA,eAAe,CAAC,UAAoC,EAAA;AAClD,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;AAC5B,QAAA,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM;QAErC,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,MAAM,KAAK,IAAI,CAAC,cAAc,EAAE;AAClC,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;;AAG9B,YAAA,IAAI,WAAW,GAAG,CAAC,EAAE;AACnB,gBAAA,OAAO,CAAC,IAAI,CACV,2EAA2E,CAC5E;;;;AAKP,IAAA,yBAAyB,CACvB,QAA8C,EAAA;AAE9C,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM;AAC7B,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC;;AAG3B,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,wBAAwB,EAAE;AAC7C,YAAA,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC;;AAGzC,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,OAAO,CAAC,IAAI,CACV,2EAA2E,CAC5E;;;IAIL,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;;AAG/B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;;;IAIpC,2BAA2B,GAAA;AACzB,QAAA,IAAI,CAAC,wBAAwB,GAAG,SAAS;;AAG3C,IAAA,yBAAyB,CAAC,OAAkC,EAAA;QAC1D,IAAI,CAAC,2BAA2B,EAAE;AAClC,QAAA,IAAI,CAAC,wBAAwB,GAAG,OAAO;QAEvC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,gBAAA,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,GAAG,EAAE;;AAExD,SAAC,CAAC;;AAGJ,IAAA,eAAe,CAAC,MAAqB,EAAA;QACnC,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM;QAE5B,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,SAAS,CAAC,IAAI,CAACA,WAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;gBACnE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE;AACnC,oBAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;AAChE,oBAAA,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE;oBACjE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;AACvD,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AACvB,yBAAA,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACvC,yBAAA,IAAI,CAACA,WAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,yBAAA,SAAS,CAAC,CAAC,SAA8B,KAAI;AAC5C,wBAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;AAClC,wBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AAC/B,wBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC5B,qBAAC,CAAC;oBAEJ,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE;wBAChD,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE;4BACrD,YAAY;4BACZ,4BAA4B;AAC7B,yBAAA,CAAC;;oBAGJ,IAAI,CAAC,kBAAkB,EAAE;;AAE7B,aAAC,CAAC;AAEF,YAAA,MAAM,CAAC;AACJ,iBAAA,IAAI,CACHA,WAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAC9B,MAAM,CACJ,CAAC,KAAuB,KACtB,CAAC;gBACC,kBAAkB;gBAClB,iBAAiB;gBACjB,iBAAiB;gBACjB,KAAK;AACN,aAAA,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAC3B;AAEF,iBAAA,SAAS,CAAC,CAAC,KAAuB,KAAI;AACrC,gBAAA,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,GAAG,CAAC;AAClD,aAAC,CAAC;AAEJ,YAAA,MAAM,CAAC;iBACJ,IAAI,CACHA,WAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAC9B,MAAM,CACJ,CAAC,KAAyB,KAAK,KAAK,CAAC,MAAM,KAAK,iBAAiB,CAClE;AAEF,iBAAA,SAAS,CAAC,CAAC,KAAyB,KAAI;gBACvC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE;gBACtC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE;AAC5C,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;AAErC,gBAAA,IAAI,KAAK,IAAI,KAAK,IAAI,UAAU,EAAE;oBAChC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC;;AAErD,aAAC,CAAC;AAEJ,YAAA,MAAM,CAAC;AACJ,iBAAA,IAAI,CAACA,WAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,KAAuB,KAAI;AACrC,gBAAA,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,GAAG,CAAC;AAClD,aAAC,CAAC;AAEJ,YAAA,MAAM,CAAC;AACJ,iBAAA,IAAI,CAACA,WAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,KAAuB,KAAI;gBACrC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC9C,oBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI;oBACtB,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,IAAI,EAAE;AAC5D,oBAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAEjD,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;wBACvC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;;yBACxB,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;AAC/C,wBAAA,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;;AAGjC,oBAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,WAAW;AAChD,oBAAA,IAAI,CAAC,eAAe,CAAC,eAAe,CAClC,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,WAAW,CAAC,EAAE,CACpB;AAED,oBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;AAEvC,aAAC,CAAC;AAEJ,YAAA,MAAM,CAAC,WAAW,CAAC,IAAI,CAACA,WAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;gBACrE,MAAM,gBAAgB,GAAkB,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;AAEnE,gBAAA,MAAM,qBAAqB,GACzB,gBAAgB,EAAE,IAAI,CACpB,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,SAAS,KAAK,CAAC,CACvD;AACD,oBAAA,gBAAgB,EAAE,IAAI,CAAC,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,IAAI,CAAC;gBAErE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBAC9C,IAAI,qBAAqB,EAAE;AACzB,wBAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CACjD,qBAAqB,CAAC,KAAK,CAC5B;AACD,wBAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG;AACxC,4BAAA,UAAU,EAAE,qBAAqB,CAAC,IAAI,KAAK,MAAM;4BACjD,EAAE,EAAE,qBAAqB,CAAC,KAAK;AAC/B,4BAAA,YAAY,EAAE,mBAAmB,EAAE,KAAK,IAAI,EAAE;AAC9C,4BAAA,KAAK,EAAE,mBAAmB,EAAE,UAAU,IAAI,EAAE;yBAC7C;;yBACI;AACL,wBAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,SAAS;;AAErD,oBAAA,IAAI,CAAC,eAAe,CAAC,eAAe,CAClC,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,WAAW,CAAC,EAAE,CACpB;;AAEL,aAAC,CAAC;;;AAIN,IAAA,gCAAgC,CAAC,GAAY,EAAA;QAC3C,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;AAE7C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CACvD,IAAI,CAAC,WAAW,CAAC,EAAE,CACpB;AAED,YAAA,IACE,SAAS;iBACR,SAAS,CAAC,kBAAkB,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;oBACzD,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EACxE;AACA,gBAAA,SAAS,CAAC,kBAAkB,GAAG,WAAW;gBAE1C,IAAI,CAAC,eAAe,CAAC,eAAe,CAClC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpC,IAAI,CAAC,WAAW,CAAC,EAAE,EACnB,SAAS,CACV,EACD,IAAI,CAAC,WAAW,CAAC,EAAE,CACpB;;;;AAKP,IAAA,eAAe,CAAC,GAAY,EAAA;AAC1B,QAAA,OAAO;AACJ,aAAA,cAAc;aACd,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI;aAC7B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;;AAGhC,IAAA,eAAe,CAAC,SAA8B,EAAA;AAC5C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc;AAElC,QAAA,IAAI,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACjE,IAAI,kBAAkB,GAAa,EAAE;;AAGrC,YAAA,IAAI,SAAS,EAAE,kBAAkB,EAAE;AACjC,gBAAA,kBAAkB,GAAG,SAAS,CAAC,kBAAkB;;YAGnD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC;AAEpD,YAAA,IACE,kBAAkB,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;AAChD,gBAAA,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,EAC3D;AACA,gBAAA,MAAM,WAAW,GAAG,MAAM,CAAC;AACxB,qBAAA,cAAc;qBACd,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK;AACtB,qBAAA,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAEzD,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC;gBAChD,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC;gBACtD,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;;;;AAK3C,IAAA,UAAU,CAAC,SAA8B,EAAA;AACvC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc;AAClC,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,gBAAgB;QAE7C,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC;AAC3B,gBAAA,KAAK,EAAE;AACL,oBAAA;wBACE,KAAK,EAAE,UAAU,CAAC,EAAE;wBACpB,IAAI,EAAE,UAAU,CAAC,UAAU,GAAG,MAAM,GAAG,KAAK;AAC7C,qBAAA;AACF,iBAAA;AACD,gBAAA,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAC7B,aAAA,CAAC;;;AAIN,IAAA,kBAAkB,CAChB,KAAa,EACb,KAAa,EACb,UAAyB,EAAA;AAEzB,QAAA,MAAM,SAAS,GACb,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;QACtE,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACtD,YAAA,MAAM,aAAa,GAAG,SAAS,EAAE,YAAY;YAE7C,aAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK;AAE3D,YAAA,SAAS,CAAC,YAAY,GAAG,aAAa;YACtC,IAAI,CAAC,eAAe,CAAC,eAAe,CAClC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAC9D,IAAI,CAAC,MAAM,CACZ;;;AAIL,IAAA,mBAAmB,CAAC,MAAgB,EAAA;AAClC,QAAA,MAAM,SAAS,GACb,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;QAEtE,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACtD,YAAA,MAAM,aAAa,GAAG,SAAS,EAAE,YAAY;AAE7C,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,gBAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACjC,gBAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;;AAGnC,YAAA,SAAS,CAAC,YAAY,GAAG,aAAa;YACtC,IAAI,CAAC,eAAe,CAAC,eAAe,CAClC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAC9D,IAAI,CAAC,MAAM,CACZ;;;AAIL,IAAA,kBAAkB,CAAC,UAA0B,EAAA;AAC3C,QAAA,UAAU,KAAK,IAAI,CAAC,WAAW,EAAE;QAEjC,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,SAAS,GACb,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;YAEtE,IAAI,SAAS,IAAI,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,kBAAkB,EAAE;AACvE,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAC5C,SAAS,CAAC,kBAAkB,EAC5B,SAAS,CAAC,YAAY,EACtB,iBAAiB,CAAC,UAAU,CAAC,CAC9B;gBAED,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;;;;AAKjE,IAAA,oBAAoB,CAClB,gBAA0B,EAC1B,aAAsC,EACtC,cAA6C,EAAA;QAE7C,MAAM,gBAAgB,GAAmB,EAAE;AAE3C,QAAA,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;YACrC,MAAM,WAAW,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;YAEzD,IAAI,WAAW,EAAE;gBACf,gBAAgB,CAAC,IAAI,CAAC;AACpB,oBAAA,GAAG,EAAE,MAAM;AACX,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE,WAAW;AACtB,iBAAA,CAAC;;;AAGN,QAAA,OAAO,gBAAgB;;8GA3Zd,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAMa,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,SAAA,EAI3B,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAV5D,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBADhD,SAAS;mBAAC,EAAE,QAAQ,EAAE,+BAA+B,EAAE;4HAK/C,MAAM,EAAA,CAAA;sBADZ;;;ACnCH;;;AAGG;MAiCU,2BAA2B,CAAA;AAhCxC,IAAA,WAAA,GAAA;AAiCkB,QAAA,IAAA,CAAA,gBAAgB,GAC9B,YAAY,CAA6B,iBAAiB,CAAC;AAE7C,QAAA,IAAA,CAAA,uBAAuB,GAAG,SAAS,CACjD,yBAAyB,CAC1B;AACF;8GAPY,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,QAAA,EAAA,IAAA,EAAA,2BAA2B,EA9B5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BT,EACS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,0EAAE,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE7B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAhCvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BT,EAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,qBAAqB,CAAC;AAC1C,iBAAA;;;MCMY,2BAA2B,CAAA;AAuB7B,IAAA,cAAc;AACvB,IAAA,mBAAmB;AACnB,IAAA,iBAAiB;AACR,IAAA,kBAAkB;AAC3B,IAAA,uBAAuB;AAId,IAAA,wBAAwB;AACxB,IAAA,qBAAqB;AASrB,IAAA,SAAS;AACT,IAAA,OAAO;AACP,IAAA,aAAa;AACb,IAAA,oBAAoB;AACpB,IAAA,WAAW;AACX,IAAA,oBAAoB;AACpB,IAAA,eAAe;AACf,IAAA,sBAAsB;AACtB,IAAA,gBAAgB;AAChB,IAAA,iBAAiB;AACjB,IAAA,WAAW;AAEpB,IAAA,WAAA,GAAA;AAlDA;;AAEG;AACa,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAoB,EAAE,EAAE;YAC1D,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AACtE,SAAA,CAAC;QACc,IAAkB,CAAA,kBAAA,GAAG,MAAM,EAAY;AAEvD;;AAEG;QACI,IAAe,CAAA,eAAA,GAAG,MAAM,EAAgC;AAE/D;;AAEG;QACI,IAAgB,CAAA,gBAAA,GAAG,MAAM,EAAiC;AAE9C,QAAA,IAAA,CAAA,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC;AAE9C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;QAE7C,IAAiB,CAAA,iBAAA,GAA+B,EAAE;QACzC,IAAkB,CAAA,kBAAA,GAAiC,EAAE;QAC9D,IAAuB,CAAA,uBAAA,GAGjB,EAAE;AACC,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,OAAO,EAAQ;QAC9C,IAAqB,CAAA,qBAAA,GAAG,YAAY,CAAsB;YACjE,MAAM,EAAE,IAAI,CAAC,YAAY;AACzB,YAAA,WAAW,EAAE,CAAC,KAAK,KACjB,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;iBACf,MAAM,CAAC,OAAO;iBACd,GAAG,CAAC,MAAM;AACV,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACvC,YAAA,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,SAAA,CAAC;AACO,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAqB,SAAS,CAAC;AAC9D,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACvC,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,0BAA0B,CAAC;AACzD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;AAC7C,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAClD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3C,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC;QACzD,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACnE,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAQ;AAGxC,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC;AACnB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,aAAC,CAAC;;QAEN,MAAM,YAAY,GAAG,YAAY,CAAW,IAAI,CAAC,qBAAqB,CAAC;AACvE,QAAA,YAAY,CAAC,IAAI,CAAC,MAAM;AACrB,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAC9BC,QAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,EAC5B,SAAS,CAAC,CAAC,MAAqB,KAC9B,KAAK,CACH,MAAM,CAAC,qBAAqB,EAC5B,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EACvC,MAAM,CAAC,cAAc,CAAC,IAAI,CACxB,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAC9B,GAAG,CAAC,CAAC,GAAG,KAAI;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,EAAE;YACxC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC5B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAC3C;AACH,SAAC,CAAC,CACH,EACD,MAAM,CAAC,WAAW,EAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EACjC,YAAY,CAAC,IAAI,CACf,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAC9B,GAAG,CAAC,CAAC,KAAK,KAAI;YACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CACpD,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CACtC;AAED,YAAA,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE;AACtB,gBAAA,IACE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAC1D;AACA,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;wBAC1B,EAAE;AACF,wBAAA,OAAO,EAAE,KAAK;AACf,qBAAA,CAAC;;;AAIN,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;SACpC,CAAC,CACH,CACF,CAAC,IAAI,CACJ,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;;QAE9B,SAAS,CAAC,aAAa,CAAC;;AAExB,QAAA,MAAM,CAAC,eAAe,EAAE,CAAC,EACzB,GAAG,CAAC,MAAM,SAAS,CAAC,CACrB,CACF;aAEF,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,sBAAsB,EAAE;AAC/B,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;;QAE9B,SAAS,CAAC,aAAa,CAAC;;AAExB,QAAA,MAAM,CAAC,eAAe,EAAE,CAAC;aAE1B,SAAS,CAAC,MAAK;YACd,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC;AAC/C,YAAA,IAAI,CAAC,uBAAuB,GAAG,EAAE;YACjC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAI;AAChC,gBAAA,IACE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAC/B,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,EAAE,CAC/B,KAAK,CAAC,CAAC;oBACR,IAAI,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EACzC;AACA,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC;AAC3B,0BAAE,gBAAgB;AACjB,yBAAA,IAAI,CACH,CAAC,KAAK,KAAK,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,iBAAiB,GAAG,EAAE,CAC7D;AACH,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;AACjD,oBAAA,IAAI,OAAO,IAAI,eAAe,EAAE;wBAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC;AACjE,wBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;AAC7B,wBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;wBACtD;;;AAGJ,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC;AACrC,aAAC,CAAC;AACJ,SAAC,CAAC;;IAGC,kBAAkB,GAAA;QACvB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAClE,2BAA2B,EAC3B;YACE,mBAAmB,EAAE,IAAI,CAAC,oBAAoB;YAC9C,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;SACzC,CACF,CAAC,QAAQ;;IAGL,eAAe,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC;AACF,iBAAA,kCAAkC,CAAC,IAAI,CAAC,WAAW;AACnD,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;AACtB,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC/B,aAAC,CAAC;;AAEN,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;IAGlB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;QAE9B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAI;AACzC,YAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;AAC5B,SAAC,CAAC;;AAGG,IAAA,eAAe,CAAC,GAAa,EAAA;AAClC,QAAA,IAAI,GAAG,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAC3D;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;;;AAItC,IAAA,gBAAgB,CAAC,GAAa,EAAA;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAC3C,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CACjC;AACD,QAAA,IAAI,GAAG,CAAC,EAAE,IAAI,SAAS,EAAE;AACvB,YAAA,SAAS,CAAC,OAAO,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;;;AAIvC,IAAA,gBAAgB,CAAC,GAAa,EAAA;QACnC,QACE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI;AAC/D,YAAA,EAAE,EAAE,CAAA,EAAG,GAAG,CAAC,EAAE,CAAE,CAAA;AACf,YAAA,OAAO,EAAE,KAAK;AACf,SAAA;;IAIL,WAAW,CAAC,OAAmB,EAAE,EAAU,EAAA;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC;iBACnD,EAAE,CAAA;gCACa,EAAE,CAAA;AAC7B,IAAA,CAAA,CAAC;AACF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE;QAE3C,IAAI,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrC,YAAA,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;gBAC1B,cAAc,EAAE,sBAAsB,CAAC,QAAQ;AAC/C,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,SAAS,EAAE,OAAO;AAClB,gBAAA,iBAAiB,EAAE,KAAK;AACxB,gBAAA,mBAAmB,EAAE,MAAM;AAC3B,gBAAA,aAAa,EAAE,KAAK;AACrB,aAAA,CAAC;;;AAIN,IAAA,iBAAiB,CAAC,EAAU,EAAA;AAC1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAC3C,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,EAAE,CAC/B;AACD,QAAA,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;YACpD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;AAC9C,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YAChE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;;;IAI1C,sBAAsB,GAAA;QACpB,MAAM,iBAAiB,GACrB,IAAI,CAAC,mBAAmB,EAAE,uBAAuB,EAAE;AACrD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAE1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC;AACvE,QAAA,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;;;AAI9B,QAAA,IAAI,iBAAiB,IAAI,MAAM,EAAE;AAC/B,YAAA,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE;gBACtB,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,iBAAiB,CAAC;;;;AAKlE,IAAA,wBAAwB,CACtB,EAAU,EACV,MAAqB,EACrB,iBAAuC,EAAA;QAEvC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;AACzC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAC3C,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,EAAE,CAC/B;AACD,QAAA,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;AACZ,YAAA,IAAI,OAAO,EAAE,SAAS,EAAE;;;AAGtB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;;iBACrD;AACL,gBAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;;;aAEvB,IAAI,OAAO,EAAE;AAClB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC1C,gBAAA,YAAY,EAAE,IAAI;gBAClB,mBAAmB,EAAE,IAAI,CAAC,oBAAoB;AAC9C,gBAAA,YAAY,EAAE,KAAK;AACnB,gBAAA,iBAAiB,EAAE,IAAI;AACvB,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,mBAAmB,EAAE,IAAI;AAC1B,aAAA,CAAC;AAEF,YAAA,OAAO,CAAC,cAAc,CAAC,iBAAiB,EAAE;AACxC,gBAAA,SAAS,EAAE,OAAO;AAClB,gBAAA,UAAU,EAAE,MACV,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc;qBACxD,WAAW;gBAChB,gBAAgB,EAAE,CAAC,GAAa,KAAK,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;gBAC/D,eAAe,EAAE,CAAC,GAAa,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;gBAC7D,gBAAgB,EAAE,CAAC,GAAa,KAAK,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAChE,aAAA,CAAC;AAEF;;;;;AAKG;AACH,YAAA,IAAI,CAAC;AACF,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9D,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,gBAAA,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5D,aAAC,CAAC;AACJ,YAAA,IAAI,CAAC;AACF,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9D,iBAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;gBACtB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC;AACxD,aAAC,CAAC;YACJ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;AAClD,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE;;;8GA/T7B,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,QAAA,EAAA,IAAA,EAAA,2BAA2B,8YAqBG,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FArB3C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;mBAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE;;;MCxBlC,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAbxB,aAAa;YACb,YAAY;YACZ,oCAAoC;YACpC,wBAAwB;YACxB,2BAA2B;AAC3B,YAAA,yBAAyB,aAGzB,oCAAoC;YACpC,2BAA2B;YAC3B,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAGhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAbxB,aAAa;YACb,YAAY;YAEZ,wBAAwB;YAExB,yBAAyB,CAAA,EAAA,CAAA,CAAA;;2FAQhB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAf3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,aAAa;wBACb,YAAY;wBACZ,oCAAoC;wBACpC,wBAAwB;wBACxB,2BAA2B;wBAC3B,yBAAyB;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oCAAoC;wBACpC,2BAA2B;wBAC3B,yBAAyB;AAC1B,qBAAA;AACF,iBAAA;;;ACvBD;;AAEG;AACG,SAAU,gCAAgC,CAC9C,mBAA0D,EAAA;;IAG1D,IAAI,CAAC,mBAAmB,EAAE;AACxB,QAAA,OAAO,EAAE;;IAGX,OAAO;QACL,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;AACtC,QAAA,SAAS,EAAE,mBAAmB,CAAC,SAAS,IAAI,EAAE;AAC9C,QAAA,qBAAqB,EAAE,mBAAmB,CAAC,qBAAqB,IAAI,KAAK;AACzE,QAAA,IAAI,EAAE,mBAAmB,CAAC,IAAI,IAAI,EAAE;AACpC,QAAA,YAAY,EAAE,mBAAmB,CAAC,YAAY,IAAI,CAAC;AACnD,QAAA,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB,IAAI,MAAM;AACpE,QAAA,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,IAAI,KAAK;AAC/C,QAAA,cAAc,EAAE,mBAAmB,CAAC,cAAc,IAAI,KAAK;QAC3D,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,QAAA,eAAe,EAAE,mBAAmB,CAAC,eAAe,IAAI,EAAE;QAC1D,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB;QAC1D,MAAM,EAAE,mBAAmB,CAAC,MAAM;QAClC,WAAW,EAAE,mBAAmB,CAAC,WAAW;AAC5C,QAAA,aAAa,EAAE,mBAAmB,CAAC,aAAa,IAAI,EAAE;QACtD,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB;QAC1D,oBAAoB,EAAE,mBAAmB,CAAC,oBAAoB;AAC9D,QAAA,2BAA2B,EACzB,mBAAmB,CAAC,2BAA2B,IAAI,CAAC;QACtD,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,QAAA,aAAa,EAAE,mBAAmB,CAAC,aAAa,IAAI,KAAK;AACzD,QAAA,cAAc,EAAE,mBAAmB,CAAC,cAAc,IAAI,EAAE;AACxD,QAAA,YAAY,EAAE,2BAA2B;KAC1C;AACH;;ACrCA;IACY;AAAZ,CAAA,UAAY,gCAAgC,EAAA;;AAE1C,IAAA,gCAAA,CAAA,gCAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;;AAEV,IAAA,gCAAA,CAAA,gCAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAe;;AAEf,IAAA,gCAAA,CAAA,gCAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;;AAEX,IAAA,gCAAA,CAAA,gCAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACf,CAAC,EATW,gCAAgC,KAAhC,gCAAgC,GAS3C,EAAA,CAAA,CAAA;;MCNY,wBAAwB,CAAA;AACnC;;;AAGG;IACI,OAAO,sBAAsB,CAClC,MAAqC,EAAA;AAErC,QAAA,IAAI,MAAM,EAAE,eAAe,EAAE;AAC3B,YAAA,IACE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,SAAS;AACrC,gBAAA,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,MAAM,EAClC;gBACA,OAAO,gCAAgC,CAAC,MAAM;;iBACzC,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAE;gBACxC,OAAO,gCAAgC,CAAC,OAAO;;iBAC1C;gBACL,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,EAAE,EAAE;oBAClC,OAAO,gCAAgC,CAAC,WAAW;;qBAC9C;oBACL,OAAO,gCAAgC,CAAC,SAAS;;;;aAGhD;YACL,OAAO,gCAAgC,CAAC,SAAS;;;AAI9C,IAAA,OAAO,cAAc,CAC1B,OAAkC,EAClC,UAAkB,EAAA;;;AAIlB,QAAA,OAAO,CAAC,OAAO,IAAI,UAAU,IAAI,UAAU;;AAE9C;;AChBD;;AAEG;MAaU,wCAAwC,CAAA;AAZrD,IAAA,WAAA,GAAA;QAgBS,IAAU,CAAA,UAAA,GAAG,IAAI,gBAAgB,CAAC;YACvC,SAAS,EAAE,IAAI,kBAAkB,EAAE;AACpC,SAAA,CAAC;QAEK,IAAsB,CAAA,sBAAA,GAAoC,EAAE;QAEnE,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAGzB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAA4B;AA0F5D;AA7FC,IAAA,iBAAiB;AACjB,IAAA,YAAY;AACZ,IAAA,OAAO;AACP,IAAA,WAAW;AAMJ,IAAA,MAAM,CAAC,KAAiB,EAAA;QAC7B,IACE,KAAK,CAAC,aAAa;YACnB,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE,SAAS,EAC/C;;;YAGA,IAAI,CAAC,gBAAgB,EAAE;;aAClB;YACL,IAAI,CAAC,kBAAkB,EAAE;;;AAItB,IAAA,MAAM,CAAC,MAAuC,EAAA;AACnD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QACrB,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,MAAM,CAAC;QAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;QAChD,IAAI,OAAO,EAAE;AACX,YAAA,QAAQ,IAAI,CAAC,YAAY;gBACvB,KAAK,gCAAgC,CAAC,MAAM;AAC1C,oBAAA,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC3B;gBACF,KAAK,gCAAgC,CAAC,OAAO;gBAC7C,KAAK,gCAAgC,CAAC,WAAW;gBACjD,KAAK,gCAAgC,CAAC,SAAS;AAC/C,gBAAA;AACE,oBAAA,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC9B;;;AAIN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,QAAQ,CACT;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC;QACvD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,EAAE;;IAGlE,gBAAgB,GAAA;;QAErB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;gBAChC,IAAI,IAAI,CAAC,YAAY,KAAK,gCAAgC,CAAC,OAAO,EAAE;AAClE,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,QAAkB;AAElD,oBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;oBACjC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC;;AAEhD,oBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,iBAAiB,CACxC,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,MAAM,CACjB;AACD,oBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;;gBAE5D,IACE,IAAI,CAAC,YAAY,KAAK,gCAAgC,CAAC,WAAW,EAClE;AACA,oBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;;;AAGvC,SAAC,CAAC;;IAGG,QAAQ,GAAA;AACb,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK;AACnD,QAAA,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,GAAG,GAAG,GAAG,SAAS;;AAGrD,IAAA,wBAAwB,CAAC,MAAe,EAAA;AAC7C,QAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM;QAC/B,IAAI,CAAC,kBAAkB,EAAE;;IAG3B,kBAAkB,GAAA;QAChB,IACE,CAAC,IAAI,CAAC,iBAAiB;YACvB,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,+BAA+B,CAAC;YAChE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,EACxD;AACA,YAAA,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;;;8GApGxB,wCAAwC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxC,wCAAwC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAeH,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtD5D,+1CAiCA,EAAA,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAI,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGJ,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBAZpD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sCAAsC,EAG/B,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,+1CAAA,EAAA,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA;8BAkBM,KAAK,EAAA,CAAA;sBADX,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,2BAA2B,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAIrD,MAAM,EAAA,CAAA;sBADZ,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;;AEhCtC;;AAEG;MAaU,oCAAoC,CAAA;AAZjD,IAAA,WAAA,GAAA;AAeS,QAAA,IAAA,CAAA,sBAAsB,GAEzB;AACF,YAAA,aAAa,EAAE,KAAK;SACrB;AAGM,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,kBAAkB,EAAE;QACnC,IAAU,CAAA,UAAA,GAAG,IAAI,gBAAgB,CAAC;YACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,SAAA,CAAC;AAkBO,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACpD,IAAY,CAAA,YAAA,GAAG,KAAK;AAqGrB;AA/GQ,IAAA,UAAU,CAAC,KAAiB,EAAA;AACjC,QAAA,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE;;;YAGzE,IAAI,CAAC,gBAAgB,EAAE;;;AAI3B,IAAA,YAAY;AACH,IAAA,eAAe;AACxB,IAAA,YAAY;AAEZ;;;AAGG;AACI,IAAA,MAAM,CAAC,MAAmC,EAAA;AAC/C,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CACzD,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,QAAQ,CACT;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AACtD,QAAA,IAAI,CAAC,uBAAuB,GAAG,wBAAwB,CAAC,cAAc,CACpE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAC3B,CAAC,CACF;QACD,IAAI,CAAC,sBAAsB,GAAG;AAC5B,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI;AACxC,gBAAA,aAAa,EAAE,CAAC;AAChB,gBAAA,cAAc,EAAE,GAAG;aACpB,CAAC;AACF,YAAA,aAAa,EAAE,KAAK;SACrB;;AAGI,IAAA,OAAO,CAAC,MAAmC,EAAA;AAChD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;;AAGrB;;AAEG;IACI,gBAAgB,GAAA;;QAErB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;;;YAIjC,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC,sBAAsB,CACjE,IAAI,CAAC,MAAM,CACZ;AACD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;YAE7B,IAAI,OAAO,EAAE;AACX,gBAAA,QAAQ,IAAI,CAAC,YAAY;oBACvB,KAAK,gCAAgC,CAAC,MAAM;AAC1C,wBAAA,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;wBAC3B;oBACF,KAAK,gCAAgC,CAAC,OAAO;AAC3C,wBAAA,OAAO,CAAC,QAAQ,CACd,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,SAAS,CACvD;wBACD;oBACF,KAAK,gCAAgC,CAAC,WAAW;oBACjD,KAAK,gCAAgC,CAAC,SAAS;AAC/C,oBAAA;AACE,wBAAA,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;wBACxD;;;AAIN,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AAEnC,YAAA,IACE,IAAI,CAAC,YAAY,KAAK,gCAAgC,CAAC,WAAW;gBAClE,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,EAAE,EACjC;AACA,gBAAA,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE;;;YAIpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO;AACvD,SAAC,CAAC;;AAGJ;;AAEG;IACI,QAAQ,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,SAAS;;AAGzC;;AAEG;IACI,aAAa,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;;;IAIrE,YAAY,GAAA;QACjB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;;AAE3B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;8GAnIf,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAkBH,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1DxD,glBAiBA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDiBI,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,sCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGJ,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAZhD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,EAG3B,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,WAAW;wBACX,mBAAmB;wBACnB,oBAAoB;wBACpB,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,glBAAA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA;8BAqBM,KAAK,EAAA,CAAA;sBADX,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAIjD,UAAU,EAAA,CAAA;sBADhB,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;;AE/BtC;;AAEG;AAcG,MAAO,sCACX,SAAQ,cAAc,CAAA;AAkBtB,IAAA,aAAa;AACb,IAAA,OAAO;AACP,IAAA,YAAY;AAEZ,IAAA,WAAW;AACX,IAAA,eAAe;AACf,IAAA,SAAS;AAET,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QArBF,IAAU,CAAA,UAAA,GAAG,IAAI,gBAAgB,CAAC;YACvC,IAAI,EAAE,IAAI,kBAAkB,EAAE;AAC/B,SAAA,CAAC;QAGK,IAAsB,CAAA,sBAAA,GAAkC,EAAE;QAKvD,IAAkB,CAAA,kBAAA,GAAG,EAAE;QAEjC,IAAa,CAAA,aAAA,GAAG,KAAK;AAIrB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAA4B;AAC3D,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,SAAS;;AAO7D,IAAA,UAAU,CAAC,KAAiB,EAAA;QACjC,IACE,KAAK,CAAC,aAAa;YACnB,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE,SAAS,EAC/C;;;YAGA,IAAI,CAAC,gBAAgB,EAAE;;aAClB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE;YAC/D,IAAI,CAAC,kBAAkB,EAAE;;;AAItB,IAAA,oBAAoB,CAAC,MAAe,EAAA;AACzC,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM;QAC3B,IAAI,CAAC,kBAAkB,EAAE;;AAGpB,IAAA,kBAAkB,CAAC,UAAkB,EAAA;AAC1C,QAAA,IAAI,CAAC,kBAAkB,GAAG,UAAU;AACpC,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;AAGrC;;;AAGG;AACI,IAAA,MAAM,CAAC,MAAqC,EAAA;AACjD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QAErB,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,MAAM,CAAC;QAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;QAE3C,IAAI,OAAO,EAAE;AACX,YAAA,QAAQ,IAAI,CAAC,YAAY;gBACvB,KAAK,gCAAgC,CAAC,MAAM;AAC1C,oBAAA,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC3B;gBACF,KAAK,gCAAgC,CAAC,OAAO;AAC3C,oBAAA,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACjC;gBACF,KAAK,gCAAgC,CAAC,WAAW;gBACjD,KAAK,gCAAgC,CAAC,SAAS;AAC/C,gBAAA;AACE,oBAAA,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC9B;;YAEJ,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,QAAQ,EAAE;gBACjD,OAAO,CAAC,OAAO,EAAE;;;AAGrB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;QAEnC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,EAAE;AACvE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,QAAQ,CACT;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;QACvD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC;AACrD,QAAA,IAAI,CAAC,uBAAuB,GAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAoB,GAAG,CAAC;QAC1E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC;QAC1C,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,aAAa,KAAI;YACzD,IAAI,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AACzD,gBAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,WAAW;gBACjD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS;;iBACvD;AACL,gBAAA,IAAI,CAAC,yBAAyB;AAC5B,oBAAA,IAAI,CAAC,WAAW,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC;AACnE,gBAAA,IAAI,CAAC,uBAAuB,GAAG,wBAAwB,CAAC,cAAc,CACpE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAC5B,CAAC,CACF;;AAEL,SAAC,CAAC;;IAGG,gBAAgB,GAAA;AACrB,QAAA,OAAO,MAAM;;AAGf;;AAEG;IACI,gBAAgB,GAAA;;QAErB,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE,aAEnC;YAEb,IAAI,iBAAiB,EAAE;gBACrB,iBAAiB,CAAC,KAAK,EAAE;;;gBAIzB,IAAI,IAAI,CAAC,YAAY,KAAK,gCAAgC,CAAC,OAAO,EAAE;AAClE,oBAAA,SAAS,CAAC,iBAAiB,EAAE,MAAM;yBAChC,IAAI,CAAC,KAAK,EAAE;yBACZ,SAAS,CAAC,MAAK;wBACd,iBAAiB,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtD,qBAAC,CAAC;oBACJ,iBAAiB,CAAC,MAAM,EAAE;AAE1B,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,QAAkB;oBAElD,IAAI,SAAS,EAAE;AACb,wBAAA,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC;;wBAEzC,iBAAiB,CAAC,iBAAiB,CACjC,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,MAAM,CACjB;;;gBAIL,IACE,IAAI,CAAC,YAAY,KAAK,gCAAgC,CAAC,WAAW,EAClE;oBACA,iBAAiB,CAAC,MAAM,EAAE;;;AAGhC,SAAC,CAAC;;AAGJ;;AAEG;IACI,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,IAAI,EAAE;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK;;IAG3C,kBAAkB,GAAA;QAChB,IACE,CAAC,IAAI,CAAC,aAAa;YACnB,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,+BAA+B,CAAC;YAChE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,EACxD;AACA,YAAA,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;;;8GA3KxB,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtC,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAcE,UAAU,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5D/D,mqCAkCA,EAAA,MAAA,EAAA,CAAA,olCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDMI,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGJ,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAblD,SAAS;+BACE,oCAAoC,EAAA,eAAA,EAG7B,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAC5B,OAAA,EAAA;wBACP,WAAW;wBACX,mBAAmB;wBACnB,mBAAmB;wBACnB,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,mqCAAA,EAAA,MAAA,EAAA,CAAA,olCAAA,CAAA,EAAA;wDAiBM,eAAe,EAAA,CAAA;sBADrB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,8BAA8B,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAkBxD,UAAU,EAAA,CAAA;sBADhB,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;;AEjDtC;;AAEG;MAcU,kCAAkC,CAAA;AAb/C,IAAA,WAAA,GAAA;QAoBS,IAAO,CAAA,OAAA,GAAG,KAAK;QACf,IAAU,CAAA,UAAA,GAAG,IAAI,gBAAgB,CAAC;YACvC,SAAS,EAAE,IAAI,kBAAkB,CAAC;AAChC,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,QAAQ,EAAE,KAAK;aAChB,CAAC;AACH,SAAA,CAAC;QACK,IAAc,CAAA,cAAA,GAAG,KAAK;QAEnB,IAAS,CAAA,SAAA,GAAuB,SAAS;QAEnD,IAAW,CAAA,WAAA,GAAG,KAAK;AAGnB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;AA2I9C;AA/IC,IAAA,WAAW;AACX,IAAA,OAAO;AACP,IAAA,YAAY;AACZ,IAAA,eAAe;AACf,IAAA,WAAW;AAGJ,IAAA,MAAM,CAAC,KAAiB,EAAA;QAC7B,IACE,KAAK,CAAC,aAAa;YACnB,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE,SAAS,EAC/C;;;YAGA,IAAI,CAAC,gBAAgB,EAAE;;aAClB;YACL,IAAI,CAAC,kBAAkB,EAAE;;;AAItB,IAAA,MAAM,CAAC,MAAiC,EAAA;AAC7C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,6BAAA,CAA+B,CAAC;;QAGlD,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,MAAM,CAAC;QAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;AAChD,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,sBAAsB,EAAE;AAC9C,cAAE;AACF,cAAE,MAAM,CAAC,sBAAsB,EAAE,SAAS;gBACxC,MAAM,CAAC,MAAM,CAAC,UAAU;gBACxB,MAAM,CAAC,MAAM,CAAC,aAAa;gBAC3B,MAAM,CAAC,MAAM,CAAC,KAAK;AACnB,gBAAA,MAAM,CAAC,MAAM,CAAC,KAAK;QAEvB,IAAI,OAAO,EAAE;AACX,YAAA,QAAQ,IAAI,CAAC,YAAY;gBACvB,KAAK,gCAAgC,CAAC,MAAM;AAC1C,oBAAA,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpB;gBACF,KAAK,gCAAgC,CAAC,OAAO;gBAC7C,KAAK,gCAAgC,CAAC,WAAW;gBACjD,KAAK,gCAAgC,CAAC,SAAS;AAC/C,gBAAA;AACE,oBAAA,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC9B;;YAGJ,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,QAAQ,EAAE;gBACjD,OAAO,CAAC,OAAO,EAAE;;iBACZ;gBACL,OAAO,CAAC,MAAM,EAAE;;;QAIpB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3E,QAAA,IAAI,CAAC,cAAc;AACjB,YAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,KAAK,UAAU;AAC/D,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;AACjD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAC/B,eAAe,EACf,CAAC,KAAyB,KAAI;AAC5B,YAAA,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE;gBAChE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE;AAC3C,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;AAEvC,SAAC,CACF;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;IAG9B,gBAAgB,GAAA;;AAErB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,OAAO,KAAK;;IAGP,MAAM,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa;;;IAIhC,QAAQ,GAAA;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK;;IAGzC,OAAO,GAAA;AACZ,QAAA,OAAO,IAAI;;IAGN,gBAAgB,GAAA;AACrB,QAAA,OAAO,MAAM;;IAGR,gBAAgB,GAAA;;QAErB,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,WAAW,GACf,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;YACnE,WAAW,CAAC,KAAK,EAAE;YACnB,IAAI,IAAI,CAAC,YAAY,KAAK,gCAAgC,CAAC,OAAO,EAAE;gBAClE,WAAW,CAAC,YAAY,CAAC,CAAG,EAAA,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAE,CAAA,CAAC;;AAErD,gBAAA,WAAW,CAAC,iBAAiB,CAC3B,WAAW,CAAC,KAAK,CAAC,MAAM,EACxB,WAAW,CAAC,KAAK,CAAC,MAAM,CACzB;gBACD,WAAW,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;;iBACxC,IACL,IAAI,CAAC,YAAY,KAAK,gCAAgC,CAAC,SAAS,EAChE;;AAEA,gBAAA,WAAW,CAAC,iBAAiB,CAC3B,WAAW,CAAC,KAAK,CAAC,MAAM,EACxB,WAAW,CAAC,KAAK,CAAC,MAAM,CACzB;;AAEL,SAAC,CAAC;;AAGG,IAAA,kBAAkB,CAAC,MAAe,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM;QACzB,IAAI,CAAC,kBAAkB,EAAE;;AAG3B,IAAA,0BAA0B,CACxB,MAAiC,EAAA;AAEjC,QAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,sBAAsB;AACzD,QAAA,OAAO,gCAAgC,CAAC,mBAAmB,CAAC;;IAG9D,kBAAkB,GAAA;QAChB,IACE,CAAC,IAAI,CAAC,WAAW;YACjB,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,+BAA+B,CAAC;YAChE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,EACxD;AACA,YAAA,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;;;8GA9JxB,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5C/C,g2GAwEA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnCI,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGF,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAb9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,EAGzB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,iBAAiB;wBACjB,WAAW;wBACX,mBAAmB;wBACnB,eAAe;wBACf,WAAW;AACZ,qBAAA,EAAA,QAAA,EAAA,g2GAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;8BAMM,KAAK,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAsBtB,MAAM,EAAA,CAAA;sBADZ,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;;AE9CtC;;AAEG;MAQU,kCAAkC,CAAA;AAP/C,IAAA,WAAA,GAAA;QAYS,IAAU,CAAA,UAAA,GAAG,IAAI,gBAAgB,CAAC;YACvC,MAAM,EAAE,IAAI,kBAAkB,EAAE;AACjC,SAAA,CAAC;AAsFH;AA5EQ,IAAA,UAAU,CAAC,KAAiB,EAAA;QACjC,IACE,KAAK,CAAC,aAAa;YACnB,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE,SAAS,EAC/C;;;YAGA,IAAI,CAAC,gBAAgB,EAAE;;;AAI3B,IAAA,OAAO;AACP,IAAA,YAAY;AAEZ;;;AAGG;AACI,IAAA,MAAM,CAAC,MAAiC,EAAA;AAC7C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QAErB,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,MAAM,CAAC;QAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC7C,IAAI,OAAO,EAAE;AACX,YAAA,QAAQ,IAAI,CAAC,YAAY;gBACvB,KAAK,gCAAgC,CAAC,MAAM;AAC1C,oBAAA,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC3B;gBACF,KAAK,gCAAgC,CAAC,OAAO;AAC3C,oBAAA,OAAO,CAAC,QAAQ,CACd,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,QAAkB,CAAC,IAAI,SAAS,CAC1D;oBACD;gBACF,KAAK,gCAAgC,CAAC,WAAW;gBACjD,KAAK,gCAAgC,CAAC,SAAS;AAC/C,gBAAA;AACE,oBAAA,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC9B;;;QAIN,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,sBAAsB,EAAE,GAAG;QAC7C,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,sBAAsB,EAAE,GAAG;AAC7C,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,QAAQ,CACT;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;AACvD,QAAA,IAAI,CAAC,uBAAuB,GAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAoB,GAAG,CAAC;;AAG5E;;AAEG;IACI,gBAAgB,GAAA;;QAErB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;gBAChC,IACE,IAAI,CAAC,YAAY,KAAK,gCAAgC,CAAC,WAAW,EAClE;AACA,oBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;;;AAGvC,SAAC,CAAC;;AAGJ;;AAEG;IACI,QAAQ,GAAA;AACb,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK;AAChD,QAAA,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,GAAG,GAAG,GAAG,SAAS;;8GA3FjD,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAaH,UAAU,EC7CtD,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,sbAeA,8FDeY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE9C,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAP9C,SAAS;+BACE,gCAAgC,EAAA,eAAA,EAGzB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,WAAW,EAAE,mBAAmB,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,sbAAA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA;8BAgBnD,KAAK,EAAA,CAAA;sBADX,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAI/C,UAAU,EAAA,CAAA;sBADhB,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;;AE1BtC;;AAEG;MAQU,gCAAgC,CAAA;AAP7C,IAAA,WAAA,GAAA;QAYS,IAAU,CAAA,UAAA,GAAG,IAAI,gBAAgB,CAAC;YACvC,IAAI,EAAE,IAAI,kBAAkB,EAAE;AAC/B,SAAA,CAAC;AA+EH;AAvEQ,IAAA,UAAU,CAAC,KAAiB,EAAA;QACjC,IACE,KAAK,CAAC,aAAa;YACnB,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE,SAAS,EAC/C;;;YAGA,IAAI,CAAC,gBAAgB,EAAE;;;AAI3B,IAAA,OAAO;AACP,IAAA,YAAY;AAEZ;;;AAGG;AACI,IAAA,MAAM,CAAC,MAA+B,EAAA;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QAErB,IAAI,CAAC,YAAY,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,MAAM,CAAC;QAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;QAE3C,IAAI,OAAO,EAAE;AACX,YAAA,QAAQ,IAAI,CAAC,YAAY;gBACvB,KAAK,gCAAgC,CAAC,MAAM;AAC1C,oBAAA,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC3B;gBACF,KAAK,gCAAgC,CAAC,OAAO;AAC3C,oBAAA,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACjC;gBACF,KAAK,gCAAgC,CAAC,WAAW;gBACjD,KAAK,gCAAgC,CAAC,SAAS;AAC/C,gBAAA;AACE,oBAAA,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC9B;;;QAIN,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,sBAAsB,EAAE,SAAS;AACzD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,QAAQ,CACT;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC;;AAG5C;;AAEG;IACI,gBAAgB,GAAA;;QAErB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;gBAChC,IACE,IAAI,CAAC,YAAY,KAAK,gCAAgC,CAAC,WAAW,EAClE;AACA,oBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;;;AAGvC,SAAC,CAAC;;AAGJ;;AAEG;IACI,QAAQ,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,SAAS;;8GApF7C,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAWH,UAAU,EC3CpD,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,mYAcA,yIDgBY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE9C,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAP5C,SAAS;+BACE,8BAA8B,EAAA,eAAA,EAGvB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,WAAW,EAAE,mBAAmB,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,mYAAA,EAAA,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA;8BAcnD,KAAK,EAAA,CAAA;sBADX,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAI7C,UAAU,EAAA,CAAA;sBADhB,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;;AE5BtC;;AAEG;MAQU,sCAAsC,CAAA;AAPnD,IAAA,WAAA,GAAA;AAkDS,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAqB;AAI3C,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,KAAK,CAAC;AAE9C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACpD,IAAe,CAAA,eAAA,GAAG,KAAK;AAqCxB;IAtFC,IACW,MAAM,CAAC,KAAiD,EAAA;AACjE,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;QAE/B,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAE3B,KAAK,CAAC,GAAG,CAAC,gBAAgB,CACxB,aAAa,EACb,CAAC,WAA6B,KAAI;;AAEhC,gBAAA,IACG,WAAW,CAAC,MAAmB,CAAC,QAAQ,EAAE;AACzC,oBAAA,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE;oBAC1B,WAAW,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,EAAE,QAAQ,EAC7C;oBACA,IAAI,CAAC,WAAW,EAAE;;qBACb;oBACL,IAAI,CAAC,WAAW,EAAE;;AAEtB,aAAC,CACF;YAED,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,MAAK;gBACpD,IAAI,CAAC,WAAW,EAAE;AACpB,aAAC,CAAC;;QAGJ,IAAI,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,KAAK,UAAU,EAAE;YACzE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,sBAAsB,CAAC,gBAAgB,CACnE,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,EAAE,IAAI,EAAE,QAAQ,CACtB;;aACI;YACL,IAAI,CAAC,gBAAgB,GAAG,KAAK,EAAE,sBAAsB,EAAE,gBAAgB;;QAGzE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC3D,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;AAS5B,IAAA,eAAe;AACxB,IAAA,eAAe;IAER,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,KAAK,EAAE,CAAC;;IAGhE,WAAW,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC7B,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,IAAI,EAAE,CAAC;;;IAIxE,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAA,OAAO,KAAK;;AAEd,QAAA,IACE,OAAO,IAAI,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,SAAS;AACjE,YAAA,UAAU,EACV;AACA,YAAA,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,SAAS,CAC9D,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAC7B,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAC5B,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CACvC;;aACI;AACL,YAAA,OAAO,IAAI;;;IAIf,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,OAAO,KAAK;;AAEd,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE;AACzE,QAAA,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC;;8GArFvB,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sCAAsC,4HC5BnD,8rBA4BA,EAAA,MAAA,EAAA,CAAA,+JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFY,gBAAgB,EAAE,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,mYAAE,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE3D,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAPlD,SAAS;+BACE,oCAAoC,EAAA,eAAA,EAG7B,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,wBAAwB,CAAC,EAAA,QAAA,EAAA,8rBAAA,EAAA,MAAA,EAAA,CAAA,+JAAA,CAAA,EAAA;8BAI5D,MAAM,EAAA,CAAA;sBADhB;;;AEpBH;;AAEG;MAQU,sCAAsC,CAAA;AAPnD,IAAA,WAAA,GAAA;QAiBS,IAAsB,CAAA,sBAAA,GACI,EAAE;QAC5B,IAAc,CAAA,cAAA,GAAsB,EAAE;AAyB9C;IAlCC,IACW,MAAM,CAAC,KAAoC,EAAA;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;AAUpB;;AAEG;AACI,IAAA,MAAM,CAAC,MAAqC,EAAA;AACjD,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;;AAGhC;;AAEG;AACI,IAAA,OAAO,CAAC,MAAqC,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACnB,QAAA,OAAO,KAAK;;AAGd,IAAA,iBAAiB,CAAC,MAAqC,EAAA;AACrD,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;QACzB,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,IAAI,EAAE;AACjE,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,GAAG,UAAU;AAC/C,QAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,GAAG,CAAC;AACzC,QAAA,IAAI,CAAC,sBAAsB,CAAC,QAAQ,GAAG,KAAK;;8GAnCnC,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtC,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBnD,4FAGA,EAAA,MAAA,EAAA,CAAA,+DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDcY,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEf,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAPlD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,mBAG7B,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,4FAAA,EAAA,MAAA,EAAA,CAAA,+DAAA,CAAA,EAAA;8BAMhB,MAAM,EAAA,CAAA;sBADhB;;;AERH;;AAEG;MAeU,+CAA+C,CAAA;IAG1D,IACW,UAAU,CAAC,KAAoC,EAAA;AACxD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;AAKpB,IAAA,eAAe;AAEf,IAAA,WAAA,CAAY,cAAiC,EAAA;AAC3C,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;;AAGvC;;;AAGG;AACI,IAAA,MAAM,CAAC,MAAqC,EAAA;AACjD,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;;AAI9B,IAAA,SAAS,CAAC,KAAU,EAAA;QACzB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;;;AAI3B,IAAA,OAAO,CAAC,MAAqC,EAAA;AAClD,QAAA,OAAO,KAAK;;8GAhCH,+CAA+C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+CAA+C,EC/B5D,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6UASA,EDkBI,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sCAAsC,mGACtC,sCAAsC,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG7B,+CAA+C,EAAA,UAAA,EAAA,CAAA;kBAd3D,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8CAA8C,EAOvC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,sCAAsC;wBACtC,sCAAsC;AACvC,qBAAA,EAAA,QAAA,EAAA,6UAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;sFAMU,UAAU,EAAA,CAAA;sBADpB;;;AEvBH;;AAEG;MAQU,oCAAoC,CAAA;AAM/C,IAAA,eAAe;AAEf,IAAA,WAAA,CAAY,cAAiC,EAAA;QALnC,IAAK,CAAA,KAAA,GAAG,EAAE;QACV,IAAY,CAAA,YAAA,GAAG,CAAC;AAKxB,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;;AAGhC,IAAA,MAAM,CAAC,MAAmC,EAAA;QAC/C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,CAAA,EAAG,MAAM,CAAC,cAAc,EAAE;AACvC,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;AAG9B,IAAA,OAAO,CAAC,MAAmC,EAAA;AAChD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACnB,QAAA,OAAO,IAAI;;8GApBF,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBjD,gIAKA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDcY,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEZ,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAPhD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,mBAGnB,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA,CAAC,aAAa,CAAC,EAAA,QAAA,EAAA,gIAAA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA;;;AEM1B;;AAEG;MASU,yCAAyC,CAAA;AAW3C,IAAA,iBAAiB;AAC1B,IAAA,OAAO;AACE,IAAA,UAAU;AACnB,IAAA,aAAa;AAEb,IAAA,WAAA,GAAA;AATU,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AACrC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC;QAEzC,IAAiB,CAAA,iBAAA,GAAG,qCAAqC;AAEzD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACpD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE;QAGhC,IAAI,CAAC,SAAS,EAAE;;IAGX,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;;AAGlC;;;AAGG;AACI,IAAA,MAAM,CAAC,MAA2B,EAAA;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;;AAG7B;;;AAGG;AACI,IAAA,OAAO,CAAC,MAA2B,EAAA;AACxC,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC3B,QAAA,OAAO,IAAI;;AAGN,IAAA,SAAS,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAC7C,YAAA,IAAI,WAAW,KAAK,UAAU,EAAE;gBAC9B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,SAAS,EAAE,kBAAkB,CAAC;;AAErE,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;;;;AAK5D,IAAA,cAAc,CAAC,MAA2B,EAAA;AACxC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,KAAK,KAAK,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAA4B;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,GAAG;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,SAAS,GAAG,QAAQ,GAAG,CAAC;AAElE,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE;QACvC,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE;AAErD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACvC,IAAI,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBACtC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;;aAE1C;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;;QAGhC,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,gBAAgB,CACd,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,EACnE,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CACvE,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CACzD;;IAGH,SAAS,GAAA;QACP,MAAM,sBAAsB,GAC1B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK;QACjD,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,OAAO,sBAAsB,KAAK,QAAQ,EAAE;AACtE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC;;AACxD,aAAA,IACL,IAAI,CAAC,OAAO,EAAE,MAAM;AACpB,YAAA,OAAO,sBAAsB,KAAK,UAAU,EAC5C;AACA,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAClB;AACD,YAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;gBACvB,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,KAAK,CAAC,SAAS,CAAC,CAAC,KAAc,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACpE;;iBACI;AACL,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;;aAEnB;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC;iBACF,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;AACtD,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAChD;;;AAIL,IAAA,oBAAoB,CAAC,KAA2B,EAAA;AAC9C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;;;8GApH/C,yCAAyC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yCAAyC,ECpCtD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,kRASA,EDyB6C,MAAA,EAAA,CAAA,gEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,oaAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAE5D,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBARrD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wCAAwC,EAGjC,eAAA,EAAA,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,CAAC,+BAA+B,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,kRAAA,EAAA,MAAA,EAAA,CAAA,gEAAA,CAAA,EAAA;;;MEP7D,sCAAsC,CAAA;AAPnD,IAAA,WAAA,GAAA;AAUY,QAAA,IAAA,CAAA,KAAK,GAAc;AAC3B,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;SAC/C;AAwBF;AAtBQ,IAAA,MAAM,CAAC,MAA2B,EAAA;QACvC,MAAM,WAAW,GAAG,CAAC,EACnB,MAAM,CAAC,MAAM,EAAE,kBAAkB;AACjC,YAAA,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB;AAC9C,YAAA,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAC1C;QACD,MAAM,QAAQ,GACZ;AACE,cAAG,MAAM,CAAC,MAAM,EAAE;iBACb;cACH,SAAS;QACf,IAAI,CAAC,KAAK,GAAG;YACX,WAAW;YACX,QAAQ;AACR,YAAA,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE;SACtC;;AAGT,IAAA,OAAO,CAAC,MAA2B,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACnB,QAAA,OAAO,KAAK;;8GA7BH,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sCAAsC,EALvC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAER,GAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACQ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEf,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAPlD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,QAAQ,EAAE,CAAA;;AAER,GAAA,CAAA;oBACF,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA;;;ACVD;;AAEG;MAOU,8CAA8C,CAAA;AAN3D,IAAA,WAAA,GAAA;AAiBY,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC;AAE1C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAqCrD;IA/CC,IACW,MAAM,CAAC,KAAqC,EAAA;AACrD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;AAQX,IAAA,eAAe;AACxB,IAAA,kBAAkB;IAEX,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,kBAAkB,EAAE,WAAW,EAAE;AACtC,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;;AAG1B,IAAA,MAAM,CAAC,MAAsC,EAAA;AAClD,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM;AAChC,QAAA,IAAI,CAAC,kBAAkB,EAAE,WAAW,EAAE;AACtC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,YAAY,EAAE;AAC5C,QAAA,IACE,OAAO,MAAM,CAAC,sBAAsB,EAAE,uBAAuB;AAC7D,YAAA,UAAU,EACV;AACA,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CACzB,MAAM,CAAC;AACJ,iBAAA,uBAAuB,CACtB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,IAAI,EAAE,QAAQ;AAEtB,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;aAClC,CAAC,CACL;;aACI;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK,CAAC;;AAElE,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;AAG9B,IAAA,OAAO,CAAC,MAAsC,EAAA;AACnD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACnB,QAAA,OAAO,KAAK;;8GAhDH,8CAA8C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8CAA8C,ECzB3D,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,gJAGA,EDoBY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sCAAsC,8FAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEhD,8CAA8C,EAAA,UAAA,EAAA,CAAA;kBAN1D,SAAS;+BACE,6CAA6C,EAAA,eAAA,EAEtC,uBAAuB,CAAC,MAAM,WACtC,CAAC,sCAAsC,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,gJAAA,EAAA;8BAMjD,MAAM,EAAA,CAAA;sBADhB;;;AExBH;;;;;;;;AAQG;MAEU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;ACmBD;;AAEG;MAQU,6BAA6B,CAAA;AAUxC,IAAA,YAAY;AACZ,IAAA,oBAAoB;AACpB,IAAA,kBAAkB;AAClB,IAAA,cAAc;AACd,IAAA,gBAAgB;AAChB,IAAA,cAAc;AAEL,IAAA,eAAe;AACf,IAAA,wBAAwB;AACxB,IAAA,oBAAoB;AAE7B,IAAA,WAAA,GAAA;QAfU,IAAM,CAAA,MAAA,GAA2C,SAAS;QAIpE,IAAY,CAAA,YAAA,GAAoC,SAAS;AACzD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC1D,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACxD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QACnC,IAAgB,CAAA,gBAAA,GAAG,KAAK;QACxB,IAAc,CAAA,cAAA,GAAG,KAAK;AAEb,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3C,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC7D,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAGzD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;QAC7D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;;IAGpD,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC5B,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;IAG9B,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;AAG5B,IAAA,MAAM,CAAC,MAA8C,EAAA;AAC1D,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;QACjC,IAAI,CAAC,MAAM,EAAE;YACX;;AAEF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,EAAE;QACxC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,sBAAsB,EAAE;AAC/D,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,EAAE;YACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,gBAAgB,CACd,CAAC,OAAO,KACN,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAC3D,CAAC,OAAO,KACN,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAC/D,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;gBACpB,IACE,IAAI,CAAC,YAAY;oBACjB,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAC9C;AACA,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;;aAE/D,CAAC,CACH;;QAEH,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;AAG9B,IAAA,WAAW,CAAC,MAAe,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;;IAGlC,iBAAiB,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAClD;;QAGF,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE;AAC9D,QAAA,MAAM,mBAAmB,GACvB,WAAW,EAAE,0BAA0B,EAAE,mBAAmB;QAE9D,IAAI,mBAAmB,EAAE;AACvB,YAAA,MAAM,eAAe,GAAG,IAAI,wBAAwB,EAAE;YACtD,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW;YACtD,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO;YAC9C,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW;AAEtD,YAAA,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,mBAAmB,EAAE;AACjE,gBAAA,SAAS,EAAE;AACT,oBAAA;AACE,wBAAA,OAAO,EAAE,wBAAwB;AACjC,wBAAA,QAAQ,EAAE,eAAe;AAC1B,qBAAA;AACF,iBAAA;gBACD,mBAAmB,EAAE,IAAI,CAAC,oBAAoB;AAC9C,gBAAA,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa;gBACpD,QAAQ,EAAE,2BAA2B,CAAC,aAAa;AACpD,aAAA,CAAC;;;8GAhGK,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAGE,UAAU,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7CtD,kiCAoCA,EAAA,MAAA,EAAA,CAAA,0PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIY,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEtD,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAGX,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA,CAAC,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,kiCAAA,EAAA,MAAA,EAAA,CAAA,0PAAA,CAAA,EAAA;wDAM3D,mBAAmB,EAAA,CAAA;sBADzB,SAAS;uBAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;;;AEzCtE;;;;;;;;AAQG;MAEU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACiBD;;AAEG;MAaU,wBAAwB,CAAA;AAZrC,IAAA,WAAA,GAAA;AAekB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;;;AAIjD,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACtD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,IACE,MAAM,EAAE,WAAW;gBACnB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,qBAAqB,EAAE,YAAY,EAC/D;AACA,gBAAA,OAAO,SAAS;;iBACX;AACL,gBAAA,OAAO,MAAM,EAAE,WAAW,IAAI,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK;;AAElE,SAAC,CAAC;AAKiB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAChC,SAAS,CACV;QACS,IAAM,CAAA,MAAA,GAAG,EAAE;AACF,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAEjD,SAAS,CAAC;AACO,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAE5D,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAqB,MAAK;AACxD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,IACE,MAAM,EAAE,WAAW;gBACnB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,qBAAqB,EAAE,YAAY,EAC/D;gBACA,OAAO,MAAM,CAAC,WAAW;;iBACpB;AACL,gBAAA,OAAO,SAAS;;AAEpB,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QAEnC,IAAgB,CAAA,gBAAA,GAAG,KAAK;QACxB,IAAc,CAAA,cAAA,GAAG,KAAK;QACtB,IAAa,CAAA,aAAA,GAAG,CAAC;AAER,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3C,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC7D,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AA4J5D;AApKC,IAAA,cAAc;AACd,IAAA,uBAAuB;AACvB,IAAA,gBAAgB;AAChB,IAAA,cAAc;AACd,IAAA,aAAa;AAEJ,IAAA,eAAe;AACf,IAAA,wBAAwB;AACxB,IAAA,oBAAoB;IAEtB,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC5B,IAAI,CAAC,iBAAiB,EAAE;;IAGnB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;AAG5B,IAAA,MAAM,CAAC,MAAyC,EAAA;AACrD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;QACjC,IAAI,CAAC,MAAM,EAAE;YACX;;QAEF,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;AACjD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,EAAE;AACxC,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE;AACnC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,gBAAgB,CACd,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,EACrE,CAAC,OAAO,KACN,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,OAAO,CAAC,CAC9D,CAAC,SAAS,CAAC,MAAK;gBACf,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;gBACrD,IAAI,cAAc,KAAK,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE;AACrD,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC;;aAE3C,CAAC,CACH;;AAEH,QAAA,IAAI,MAAM,CAAC,aAAa,EAAE;;AAExB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,gBAAgB,CACd,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,EACnE,CAAC,OAAO,KACN,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CAC5D,CAAC,SAAS,CAAC,MAAK;gBACf,IAAI,CAAC,WAAW,EAAE;aACnB,CAAC,CACH;;AAED,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,gBAAgB,CACd,CAAC,OAAO,KAAK,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,EAChE,CAAC,OAAO,KAAK,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CACpE,CAAC,SAAS,CAAC,MAAK;gBACf,IAAI,CAAC,gBAAgB,EAAE;aACxB,CAAC,CACH;YACD,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,gBAAgB,EAAE;;;;QAKzB,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,gBAAgB,CACd,CAAC,OAAO,KAAK,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,EAChE,CAAC,OAAO,KAAK,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CACpE,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YACpB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AACzC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa;AAClC,YAAA,IACE,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;gBAC9B,KAAK,CAAC,MAAM,KAAK,eAAe;gBAChC,IAAI,GAAG,OAAO,EACd;AACA,gBAAA,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE;;AAE5B,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;SAC1B,CAAC,CACH;QAED,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;AAG9B,IAAA,WAAW,CAAC,MAAa,EAAA;QAC9B,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,MAAqB,CAAC;;AAGtD,IAAA,eAAe,CAAC,KAAiB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE;YAChC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC;;;AAIxC,IAAA,OAAO,CAAC,MAA6B,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACnB,QAAA,OAAO,KAAK;;IAGd,iBAAiB,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAClD;;QAGF,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB;AAE9D,QAAA,IACE,mBAAmB;aAClB,CAAC,IAAI,CAAC,uBAAuB;gBAC5B,IAAI,CAAC,uBAAuB,CAAC,aAAa,KAAK,mBAAmB,CAAC,EACrE;YACA,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAC3C,IAAI,CAAC,uBAAuB,CAC7B;AAED,YAAA,MAAM,UAAU,GAAG,IAAI,mBAAmB,EAAE;YAC5C,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM;YACzC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO;YAC3C,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW;AAEnD,YAAA,IAAI,CAAC,uBAAuB;AAC1B,gBAAA,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,mBAAmB,EAAE;AACjE,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,mBAAmB;AAC5B,4BAAA,QAAQ,EAAE,UAAU;AACrB,yBAAA;AACF,qBAAA;oBACD,mBAAmB,EAAE,IAAI,CAAC,oBAAoB;AAC9C,oBAAA,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa;oBACpD,QAAQ,EAAE,2BAA2B,CAAC,aAAa;AACpD,iBAAA,CAAC;;aACC,IAAI,CAAC,mBAAmB,EAAE;YAC/B,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAC3C,IAAI,CAAC,uBAAuB,CAC7B;;;IAIL,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC;;IAGpE,gBAAgB,GAAA;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,YAAY,EAAE;AACtD,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM;cAChC,GAAG,EAAE,UAAU;cACf,IAAI,CACJ,CAAC,MAAM,KACL,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE;AACtD,YAAA,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CACrB;QACH,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,IAAI,gBAAgB,EAAE;YACrE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAG,EAAA,SAAS,GAAG,CAAC,CAAE,CAAA,CAAC;;aAC1C;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;;;8GA5MxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,yCAAA,EAAA,WAAA,EAAA,UAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAmBO,UAAU,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChEtD,qqGAmFA,EAAA,MAAA,EAAA,CAAA,m/DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxCY,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEtD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAZpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAGb,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,cAAc,EAAE,wBAAwB;AACxC,wBAAA,mBAAmB,EAAE,yCAAyC;AAC9D,wBAAA,aAAa,EAAE,QAAQ;qBACxB,EACQ,OAAA,EAAA,CAAC,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,qqGAAA,EAAA,MAAA,EAAA,CAAA,m/DAAA,CAAA,EAAA;8BAsBxD,mBAAmB,EAAA,CAAA;sBAD5B,SAAS;uBAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;;;AEhE/D,MAAM,OAAO,GAMhB;AACF,IAAA,cAAc,EAAE;AACd,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,IAAI,EAAE,EAAE;AACT,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,EAAE;AACT,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,EAAE;AACT,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,EAAE;AACT,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,EAAE;AACT,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,EAAE;AACT,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,EAAE;AACT,KAAA;CACF;;MCvBY,yBAAyB,CAAA;AAC7B,IAAA,MAAM,CAAC,OAA8B,EAAA;;;AAIrC,IAAA,OAAO,CAAC,OAA8B,EAAA;;;8GALlC,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZtC,qCACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDOY,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIZ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,WACtB,CAAC,aAAa,CAAC,EAEP,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qCAAA,EAAA;;;AEVjD;;AAEG;IACS;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,cAAA,CAAA,GAAA,+BAA8C;AAC9C,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,2BAAsC;AACtC,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,uBAA8B;AAC9B,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,2BAAsC;AACtC,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,0BAAoC;AACpC,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,yBAAkC;AAClC,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,yBAAkC;AAClC,IAAA,YAAA,CAAA,cAAA,CAAA,GAAA,gCAA+C;AAC/C,IAAA,YAAA,CAAA,aAAA,CAAA,GAAA,+BAA6C;AAC7C,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,2BAAsC;AACtC,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,uBAA8B;AAC9B,IAAA,YAAA,CAAA,YAAA,CAAA,GAAA,6BAA0C;AAC1C,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,4BAAwC;AAC1C,CAAC,EAdW,YAAY,KAAZ,YAAY,GAcvB,EAAA,CAAA,CAAA;;ACjBD;;AAEG;IACS;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,8BAA0C;AAC1C,IAAA,cAAA,CAAA,cAAA,CAAA,GAAA,kCAAiD;AACnD,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA;;AC2CD,SAAS,sBAAsB,CAC7B,MAAwB,EACxB,MAAwB,EAAA;AAExB,IAAA,IAAI,MAAM,IAAI,MAAM,EAAE;QACpB,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE;AAC7B,YAAA,OAAO,CAAC;;QAGV,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE;YAC7B,OAAO,CAAC,CAAC;;AAGX,QAAA,OAAO,CAAC;;IAGV,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB;AAEA,SAAS,qBAAqB,CAAC,MAA4B,EAAA;IACzD,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI;AAC1C;AAEA,SAAS,cAAc,CAAC,KAAoB,EAAE,KAAoB,EAAA;IAChE,IAAI,UAAU,GAAG,KAAK;IACtB,IAAI,UAAU,GAAG,KAAK;AAEtB,IAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAClC,QAAA,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;;AAG9B,IAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAClC,QAAA,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;;AAG9B,IAAA,IAAI,UAAU,IAAI,UAAU,EAAE;AAC5B,QAAA,IAAI,UAAU,GAAG,UAAU,EAAE;AAC3B,YAAA,OAAO,CAAC;;AAGV,QAAA,IAAI,UAAU,GAAG,UAAU,EAAE;YAC3B,OAAO,CAAC,CAAC;;AAGX,QAAA,OAAO,CAAC;;IAGV,OAAO,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B;AAEA,SAAS,gCAAgC,CACvC,SAAiB,EACjB,QAAqC,EAAA;IAErC,OAAO,CAAC,MAA2B,KAAI;QACrC,IACE,MAAM,CAAC,MAAM;AACb,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE;AACvC,kBAAE,SAAS,KAAK,UAAU,EAC5B;YACA,IACE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC1C,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,SAAS,CAChE,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,IAAI,EACX,MAAM,EAAE,IAAI,EAAE,QAAQ,CACvB,EACD;gBACA,OAAO;oBACL,SAAS;AACT,oBAAA,MAAM,EAAE;AACN,wBAAA,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB;AACpC,qBAAA;iBACF;;;AAGL,QAAA,OAAO,QAAQ;AACjB,KAAC;AACH;AAEA,IAAI,SAAS,GAAG,CAAC,CAAC;AAElB;;AAEG;MAIU,gBAAgB,CAAA;;AAE3B,IAAA,OAAO,GAAG,IAAI,OAAO,EAAe;AACpC,IAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;IACpC,aAAa,GAAiC,SAAS;AACvD,IAAA,qBAAqB;AACrB,IAAA,UAAU;AACV,IAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,IAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;AAEnC,IAAA,WAAA,CACE,oBAA6C,EACjC,QAA0B,EAC1B,SAAkC,EAAA;AAE9C,QAAA,IAAI,CAAC,qBAAqB,GAAG,oBAAoB;AACjD,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;;QAG3B,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,CAAC;AACN,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,cAAc,KAAI;AAC5B,gBAAA,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,eAAe;AACrD,aAAC,CAAC;;;IAID,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;;AAGhC;;;;AAIG;AACI,IAAA,cAAc,CAAC,IAA2B,EAAA;QAC/C,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAC5D,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAC9C,kBAAkB,EAClB,IAAI,CAAC,WAAW,CACjB;AAED,QAAA,OAAO,iBAAiB;;AAG1B;;;;AAIG;AACI,IAAA,sBAAsB,CAAC,IAA2B,EAAA;QACvD,MAAM,kBAAkB,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC;AACpE,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAC9C,kBAAkB,EAClB,IAAI,CAAC,WAAW,CACjB;AAED,QAAA,OAAO,iBAAiB;;IAG1B,iBAAiB,CACf,kBAEC,EACD,mBAAgC,EAAA;AAEhC,QAAA,IAAI,sBAAsB,IAAI,mBAAmB,EAAE;AACjD,YAAA,IAAI,mBAAmB,CAAC,oBAAoB,EAAE;AAC5C,gBAAA,mBAAmB,CAAC,aAAa,GAAG,IAAI;;YAE1C,OAAO,mBAAmB,CAAC,oBAAoB;;AAEjD,QAAA,IACE,mBAAmB,CAAC,YAAY,KAAK,QAAQ;AAC7C,YAAA,mBAAmB,CAAC,YAAY,KAAK,UAAU,EAC/C;AACA,YAAA,MAAM,mBAAmB,GAAwC;gBAC/D,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE;gBAChD,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE;aAClD;AACD,YAAA,mBAAmB,CAAC,YAAY;AAC9B,gBAAA,mBAAmB,CAAC,mBAAmB,CAAC,YAAY,CAAC;;AAEzD,QAAA,IAAI,mBAAmB,CAAC,YAAY,EAAE,IAAI,EAAE;YAC1C,mBAAmB,CAAC,YAAY,GAAG;AACjC,gBAAA,IAAK,kBAAkB,CAAC,YAAoC,IAAI;AAC9D,oBAAA,UAAU,EAAE,KAAK;iBAClB,CAAC;gBACF,GAAG,mBAAmB,CAAC,YAAY;aACb;;AAE1B,QAAA,IAAI,uBAAuB,IAAI,mBAAmB,EAAE;AAClD,YAAA,mBAAmB,CAAC,aAAa,KAAK,EAAE;YACxC,mBAAmB,CAAC,aAAa,CAAC,qBAAqB;AACrD,gBAAA,CAAC,CAAC,mBAAmB,CAAC,qBAAqB;YAC7C,OAAO,mBAAmB,CAAC,qBAAqB;;AAGlD,QAAA,MAAM,iBAAiB,GAAgB;AACrC,YAAA,GAAG,kBAAkB;AACrB,YAAA,GAAG,mBAAmB;AACtB,YAAA,UAAU,EAAE;gBACV,GAAG,mBAAmB,CAAC,UAAU;;gBAEjC,GAAG,kBAAkB,CAAC,UAAU;AACjC,aAAA;AACD,YAAA,OAAO,EAAE;gBACP,GAAG,kBAAkB,CAAC,OAAO;gBAC7B,GAAG,mBAAmB,CAAC,OAAO;AAC/B,aAAA;AACD,YAAA,WAAW,EAAE;gBACX,GAAG,mBAAmB,CAAC,WAAW;;gBAElC,GAAG,kBAAkB,CAAC,WAAW;AAClC,aAAA;AACD,YAAA,aAAa,EAAE;gBACb,GAAG,kBAAkB,CAAC,aAAa;gBACnC,GAAG,mBAAmB,CAAC,aAAa;;AAEpC,gBAAA,cAAc,EAAE,kBAAkB,CAAC,aAAa,EAAE,cAAc;AAChE,gBAAA,WAAW,EAAE,kBAAkB,CAAC,aAAa,EAAE,WAAW;AAC3D,aAAA;AACD,YAAA,kBAAkB,EAAE;gBAClB,GAAG,kBAAkB,CAAC,kBAAkB;gBACxC,GAAG,mBAAmB,CAAC,kBAAkB;AACzC,gBAAA,WAAW,EAAE,kBAAkB,CAAC,kBAAkB,EAAE,WAAW;AAChE,aAAA;AACD,YAAA,WAAW,EAAE,CAAC,MAAM,KAAc;gBAChC,MAAM,cAAc,GAAG,kBAAkB,CAAC,WAAW,CACnD,MAAM,CACK;gBACb,MAAM,eAAe,GAAG,mBAAmB,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE;AACvE,gBAAA,MAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe;AACxD,sBAAE;AACF,sBAAE,CAAC,eAAe,CAAC;AACrB,gBAAA,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,oBAAoB,CAAC;aACpD;AACD,YAAA,aAAa,EAAE,CAAC,KAAK,KAAU;AAC7B,gBAAA,kBAAkB,CAAC,aAAa,GAAG,KAAK,CAAC;AACzC,gBAAA,mBAAmB,CAAC,aAAa,GAAG,KAAK,CAAC;aAC3C;SACF;;QAGD,IACE,iBAAiB,CAAC,uBAAuB;AACzC,aAAC,EAAE,yBAAyB,IAAI,iBAAiB,CAAC;gBAChD,CAAC,iBAAiB,CAAC,aAAa;AAChC,gBAAA,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,GAAW,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,EACrE;AACA,YAAA,iBAAiB,CAAC,OAAO,KAAK,EAAE;AAChC,YAAA,iBAAiB,CAAC,uBAAuB,KAAK,IAAI;YAClD,iBAAiB,CAAC,OAAO,CAAC,uBAAuB;gBAC/C,iBAAiB,CAAC,uBAAuB;;AAG7C,QAAA,OAAO,iBAAiB;;AAG1B,IAAA,sBAAsB,CAAC,IAA2B,EAAA;;AAIhD,QAAA,MAAM,2BAA2B,GAAG,MAAe,IAAI;QAEvD,SAAS,aAAa,CACpB,YAAsB,EAAA;AAEtB,YAAA,OAAO,UAAU,MAAuB,EAAA;AACtC,gBAAA,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ;AAEvC,gBAAA,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;AACpC,oBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;oBAClD,UAAU,GAAG,UAAU,CAAC;AACtB,wBAAA,GAAG,MAAM;wBACT,MAAM;AACmB,qBAAA,CAAC;;AAG9B,gBAAA,OAAO,YAAY,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;AAClD,aAAC;;AAGH,QAAA,MAAM,sBAAsB,GAAG;AAC7B,YAAA,CAAC,YAAY,CAAC,QAAQ,GAAG,aAAa,EAAE;YACxC,CAAC,YAAY,CAAC,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC;SAC/C;AAED,QAAA,SAAS,cAAc,GAAA;AACrB,YAAA,OAAO,UAAU,KAAsB,EAAA;gBACrC,IACE,KAAK,CAAC,MAAM;AACZ,oBAAA,OAAO,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE;AACtC,0BAAE,SAAS,KAAK,UAAU,EAC5B;oBACA,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,SAAS,CACtE,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,EAAE,QAAQ,CACrB;;AAEH,gBAAA,OAAO,KAAK;AACd,aAAC;;AAGH,QAAA,MAAM,uBAAuB,GAAG;AAC9B,YAAA,CAAC,YAAY,CAAC,OAAO,GAAG,cAAc,EAAE;AACxC,YAAA,CAAC,YAAY,CAAC,SAAS,GAAG,2BAA2B;SACtD;QAED,SAAS,cAAc,CACrB,GAAG,UAAoB,EAAA;YAEvB,OAAO,CAAC,MAAyB,KAAmC;;gBAElE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC;;gBAElD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,QAAQ;AACzD,gBAAA,IACE,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE;oBAClE,QAAQ,GAAG,QAAQ,EACnB;oBACA,OAAO,CAAC,GAAG,UAAU,EAAE,cAAc,CAAC,SAAS,CAAC;;AAElD,gBAAA,OAAO,UAAU;AACnB,aAAC;;AAGH,QAAA,MAAM,qBAAqB,GAEvB;AACF,YAAA,WAAW,EAAE;AACX,gBAAA,CAAC,WAAW,CAAC,YAAY,GAAG;AAC1B,oBAAA,cAAc,EAAE;AACd,wBAAA,CAAC,YAAY,CAAC,YAAY,GAAG,2BAA2B;AACxD,wBAAA,GAAG,sBAAsB;AAC1B,qBAAA;AACD,oBAAA,UAAU,EAAE,wCAAwC;AACpD,oBAAA,cAAc,EAAE,qBAAqB;AACrC,oBAAA,UAAU,EAAE,sBAAsB;AAClC,oBAAA,QAAQ,EAAE,GAAG;AACd,iBAAA;AACD,gBAAA,CAAC,WAAW,CAAC,QAAQ,GAAG;AACtB,oBAAA,cAAc,EAAE;AACd,wBAAA,CAAC,YAAY,CAAC,QAAQ,GAAG,2BAA2B;AACpD,wBAAA,GAAG,uBAAuB;AAC1B,wBAAA,GAAG,sBAAsB;AAC1B,qBAAA;oBACD,oBAAoB,EAAE,gCAAgC,CACpD,8CAA8C,EAC9C,EAAE,SAAS,EAAE,oCAAoC,EAAE,CACpD;AACD,oBAAA,UAAU,EAAE,oCAAoC;AAChD,oBAAA,WAAW,EAAE,cAAc,CAAC,cAAc,CAAC,YAAY,CAAC;AACxD,oBAAA,QAAQ,EAAE,GAAG;AACb,oBAAA,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;AACnC,oBAAA,qBAAqB,EAAE,CAAC,MAAM,KAC5B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC3D,iBAAA;AACD,gBAAA,CAAC,WAAW,CAAC,IAAI,GAAG;AAClB,oBAAA,cAAc,EAAE;AACd,wBAAA,CAAC,YAAY,CAAC,IAAI,GAAG,2BAA2B;AAChD,wBAAA,GAAG,sBAAsB;AAC1B,qBAAA;AACD,oBAAA,UAAU,EAAE,sCAAsC;AAClD,oBAAA,UAAU,EAAE,cAAc;AAC1B,oBAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,KAAK,QAAQ,GAAG,GAAG,GAAG,GAAG;AAClE,oBAAA,cAAc,EAAE,CAAC,MAA4B,KAAI;AAC/C,wBAAA,IAAI;4BACF,QACE,IAAI,CAAC,YAAY,CAAC,MAAM,CACtB,MAAM,CAAC,KAAK,EACZ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,IAAI,WAAW,CAC/B,IAAI,EAAE;;wBAET,OAAO,GAAG,EAAE;;AAEZ,4BAAA,IAAK,GAAa,CAAC,KAAK,EAAE;gCACxB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAI,EAAA,GAAa,CAAC,KAAK,CAAE,CAAA,CAAC;;iCAC5C;gCACL,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAG,EAAA,GAAG,CAAE,CAAA,CAAC;;AAElC,4BAAA,OAAO,EAAE;;qBAEZ;AACF,iBAAA;AACD,gBAAA,CAAC,WAAW,CAAC,MAAM,GAAG;AACpB,oBAAA,cAAc,EAAE;AACd,wBAAA,CAAC,YAAY,CAAC,MAAM,GAAG,2BAA2B;AAClD,wBAAA,GAAG,sBAAsB;AAC1B,qBAAA;AACD,oBAAA,UAAU,EAAE,kCAAkC;AAC9C,oBAAA,YAAY,EAAE,oCAAoC;AAClD,oBAAA,cAAc,EAAE,CAAC,MAAM,KAAI;wBACzB,MAAM,gBAAgB,GAAG,gCAAgC,CACvD,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,sBAAsB;AACvD,4BAAA,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,sBAAsB;AACvD,4BAAA,EAAE,CACL;AACD,wBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;AACvB,6BAAA,GAAG,CAAC,CAAC,KAA8B,KAAI;AACtC,4BAAA,OAAO,KAAK,CAAC,gBAAgB,CAAC,kBAA4B,CAAC;AAC7D,yBAAC;AACA,6BAAA,MAAM,CAAC,CAAC,KAAc,KAAK,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS;6BAC9D,IAAI,CAAC,IAAI,CAAC;qBACd;AACD,oBAAA,QAAQ,EAAE,GAAG;AACd,iBAAA;AACD,gBAAA,CAAC,WAAW,CAAC,MAAM,GAAG;AACpB,oBAAA,cAAc,EAAE;AACd,wBAAA,CAAC,YAAY,CAAC,MAAM,GAAG,2BAA2B;AAClD,wBAAA,GAAG,uBAAuB;AAC1B,wBAAA,GAAG,sBAAsB;AAC1B,qBAAA;AACD,oBAAA,oBAAoB,EAAE,gCAAgC,CACpD,6CAA6C,CAC9C;AACD,oBAAA,UAAU,EAAE,kCAAkC;AAC9C,oBAAA,WAAW,EAAE,cAAc,CAAC,cAAc,CAAC,YAAY,CAAC;AACxD,oBAAA,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;AACpC,iBAAA;AACD,gBAAA,CAAC,WAAW,CAAC,YAAY,GAAG;AAC1B,oBAAA,cAAc,EAAE;AACd,wBAAA,CAAC,YAAY,CAAC,YAAY,GAAG,2BAA2B;AACzD,qBAAA;AACD,oBAAA,WAAW,EAAE,cAAc,CAAC,cAAc,CAAC,YAAY,CAAC;AACzD,iBAAA;AACD,gBAAA,CAAC,WAAW,CAAC,WAAW,GAAG;AACzB,oBAAA,cAAc,EAAE;AACd,wBAAA,CAAC,YAAY,CAAC,WAAW,GAAG,2BAA2B;AACvD,wBAAA,CAAC,YAAY,CAAC,UAAU,GAAG,2BAA2B;AACvD,qBAAA;AACD,oBAAA,YAAY,EAAE,yCAAyC;AACvD,oBAAA,qBAAqB,EAAE;AACrB,wBAAA,YAAY,EAAE,IAAI;AACnB,qBAAA;AACD,oBAAA,UAAU,EAAE,eAAe;AAC3B,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,SAAS,EAAE,KAAK;AAChB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,KAAK,EAAE,EAAE;AACV,iBAAA;AACD,gBAAA,CAAC,WAAW,CAAC,QAAQ,GAAG;AACtB,oBAAA,cAAc,EAAE;AACd,wBAAA,CAAC,YAAY,CAAC,QAAQ,GAAG,2BAA2B;AACrD,qBAAA;AACD,oBAAA,YAAY,EAAE,sCAAsC;AACpD,oBAAA,UAAU,EAAE,sCAAsC;AACnD,iBAAA;AACD,gBAAA,CAAC,WAAW,CAAC,IAAI,GAAG;AAClB,oBAAA,cAAc,EAAE;AACd,wBAAA,CAAC,YAAY,CAAC,IAAI,GAAG,2BAA2B;AAChD,wBAAA,GAAG,uBAAuB;AAC1B,wBAAA,GAAG,sBAAsB;AAC1B,qBAAA;AACD,oBAAA,UAAU,EAAE,gCAAgC;AAC5C,oBAAA,oBAAoB,EAAE,gCAAgC,CACpD,6CAA6C,CAC9C;AACF,iBAAA;AACD,gBAAA,CAAC,WAAW,CAAC,SAAS,GAAG;AACvB,oBAAA,cAAc,EAAE;AACd,wBAAA,GAAG,uBAAuB;AAC1B,wBAAA,GAAG,sBAAsB;AAC1B,qBAAA;AACD,oBAAA,oBAAoB,EAAE,gCAAgC,CACpD,6CAA6C,CAC9C;AACF,iBAAA;AACF,aAAA;AACD,YAAA,aAAa,EAAE;AACb,gBAAA,cAAc,EAAE,sBAAsB;gBACtC,WAAW,EAAE,cAAc,EAAE;AAC7B,gBAAA,eAAe,EAAE,wBAAwB;AACzC,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,2BAA2B,EAAE,CAC3B,QAA2C,KACxC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK;gBAClC,qBAAqB,EAAE,CAAC,QAAqC,KAC3D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC9B,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,oBAAoB,EAAE,6BAA6B;AACpD,aAAA;AACD,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,UAAU,EAAE;AACV,gBAAA,oCAAoC,EAClC,sCAAsC;AACxC,gBAAA,8CAA8C,EAC5C,+CAA+C;AACjD,gBAAA,6CAA6C,EAC3C,8CAA8C;AACjD,aAAA;AACD,YAAA,qBAAqB,EAAE,CAAC,MAAM,KAAI;gBAChC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,GAAG,iBAAiB,CAE7C;gBACb,IAAI,eAAe,EAAE;AACnB,oBAAA,IAAI,eAAe,CAAC,QAAQ,KAAK,IAAI,EAAE;AACrC,wBAAA,MAAM,CAAC,GAAG,CAAC,cAAc,CACvB,eAAe,CAAC,QAAQ,EACxB,eAAe,CAAC,MAAM,CACvB;;yBACI;wBACL,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,eAAe,CAAC,MAAM,CAAC;;AAErD,oBAAA,OAAO,IAAI;;AAEb,gBAAA,OAAO,KAAK;aACb;AACD,YAAA,QAAQ,EAAE,CAAC,MAAM,KAAI;AACnB,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE;AAC7B,gBAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,oBAAA,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE;;AAE5B,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAClC,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAG,EAAA,SAAS,EAAE,CAAA,CAAE,CAAC;;gBAEjD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAW;aAC/C;AACD,YAAA,WAAW,EAAE,CAAC,MAAsB,KAAc;AAChD,gBAAA,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE;oBAClB,OAAO,CAAC,mBAAmB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAE,CAAA,CAAC;;qBACvC;AACL,oBAAA,OAAO,EAAE;;aAEZ;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AACvD,gBAAA,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;AACrD,gBAAA,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AACvD,gBAAA,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AACvD,gBAAA,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AACvD,gBAAA,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;AACzD,gBAAA,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;AACtD,aAAA;AACD,YAAA,uBAAuB,EAAE,yBAAyB;AAClD,YAAA,aAAa,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE;AAC1C,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,YAAY,EAAE;AACZ,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,oBAAoB,EAAE,KAAK;AAC3B,gBAAA,0BAA0B,EAAE,IAAI;AAChC,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,cAAc,EAAE,KAAK;AACtB,aAAA;AACD,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,6BAA6B,EAAE,IAAI;AACnC,YAAA,KAAK,EAAE,iBAAiB,CACtB,WAAW,EACX,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAC/B,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAC9B,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAClC;SACF;AAED,QAAA,MAAM,WAAW,GAAG,qBAAqB,CAAC,WAGzC;AAED,QAAA,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG;AAC3C,YAAA,GAAG,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC;AACpC,YAAA,kBAAkB,EAAE;AAClB,gBAAA,sBAAsB,EAAE;AACtB,oBAAA,SAAS,EAAE,CAAC,KAAa,KAAa;AACpC,wBAAA,OAAO,CAAC,CAAC,CAAG,EAAA,KAAK,IAAI,EAAE,CAAE,CAAA,CAAC,KAAK,CAAC,gCAAgC,CAAC;qBAClE;AACD,oBAAA,gBAAgB,EAAE,+BAA+B;AAClD,iBAAA;AACF,aAAA;SACF;;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC;iBACF,SAAS,CAAC,sDAAsD;AAChE,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,WAAW,CACT,WAAW,CAAC,iBAAiB,CAC9B,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,gBAAgB,GAAG,KAAK;AACtE,aAAC,CAAC;;AAGN,QAAA,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG;AACzC,YAAA,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC;AACrC,YAAA,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC;AAClC,YAAA,cAAc,EAAE;AACd,gBAAA,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,cAAc;AACpD,gBAAA,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,cAAc;AAClD,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,sBAAsB,EAAE;AACtB,oBAAA,SAAS,EAAE,CAAC,KAAa,KAAa;AACpC,wBAAA,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;qBAC5C;AACD,oBAAA,gBAAgB,EAAE,6BAA6B;AAChD,iBAAA;AACF,aAAA;SACF;;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC;iBACF,SAAS,CAAC,oDAAoD;AAC9D,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,WAAW,CACT,WAAW,CAAC,eAAe,CAC5B,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,gBAAgB,GAAG,KAAK;AACtE,aAAC,CAAC;AACJ,YAAA,IAAI,CAAC;iBACF,SAAS,CAAC,yCAAyC;AACnD,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;gBACnB,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,UAAU,GAAG,KAAK;AACzD,aAAC,CAAC;;AAGN,QAAA,OAAO,qBAAqB;;IAG9B,cAAc,GAAA;QACZ,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE;AAErE,QAAA,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,cAAc,CAAC;;AAGrE,IAAA,8BAA8B,CAAC,IAA2B,EAAA;QAGxD,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAC5D,QAAA,kBAAkB,CAAC,YAAY,GAAG,SAAS;AAC3C,QAAA,kBAAkB,CAAC,KAAK,GAAG,iBAAiB,CAC1C,iBAAiB,EACjB,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAC/B,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAC9B,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAClC;AACD,QAAA,OAAO,kBAAkB;;AAG3B,IAAA,gBAAgB,CAAC,OAA0B,EAAA;AACzC,QAAA,OAAO,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;YACjC,OAAO,CAAA,oDAAA,EAAuD,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAA,oBAAA,CAAsB;AACpH,SAAC;;AAGH,IAAA,YAAY,CAAC,MAAmC,EAAA;QAC9C,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;AAC/B,YAAA,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,MAAM,kBAAkB,GACtB,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE;;AAEhD,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,2BAA2B,CACnE,kBAAkB,EAClB,SAAS,CACV;AACD,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,2BAA2B,CACpE,kBAAkB,EAClB,iBAAiB,CAClB;AACD,gBAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO;AAElC,gBAAA,MAAM,0BAA0B,GAC9B,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAChD,kBAAkB,EAClB,QAAQ,EACR,MAAM,CAAC,KAAK,CAAC,QAAQ,CACtB;gBACH,OAAO,CAAC,CAAC,0BAA0B;;AAErC,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,KAAK;;AAGd,IAAA,cAAc,CAAC,MAAmC,EAAA;QAChD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YACjC,OAAO,MAAM,CAAC,OAAO;;AAEvB,QAAA,OAAO,KAAK;;8GA3kBH,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BAaI;;0BACA;;;ACtJL;;ACAA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"skyux-ag-grid.mjs","sources":["../../../../../libs/components/ag-grid/src/lib/modules/shared/sky-ag-grid-resources.module.ts","../../../../../libs/components/ag-grid/src/lib/styles/ag-grid-theme.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-adapter.service.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-type.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-wrapper.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-wrapper.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-row-delete.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-row-delete.directive.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid.module.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/apply-lookup-properties-defaults.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-editor-initial-action.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-editor-utils.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-template/cell-renderer-template.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/header-group-info.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header-group.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header-group.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/header-info.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/header/header.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/icons/icon-map.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/loading/loading.component.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/loading/loading.component.html","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/cell-class.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/types/header-class.ts","../../../../../libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid.service.ts","../../../../../libs/components/ag-grid/src/index.ts","../../../../../libs/components/ag-grid/src/skyux-ag-grid.ts"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-ag-grid' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n sky_ag_grid_row_selector_aria_label: {\n message: 'Row selector for row {0}',\n },\n sky_ag_grid_row_selector_column_heading: { message: 'Row selection' },\n sky_ag_grid_cell_editor_datepicker_aria_label: {\n message: 'Editable date {0} for row {1}',\n },\n sky_ag_grid_cell_editor_datepicker_hint_text: {\n message: 'Use the format {0}.',\n },\n sky_ag_grid_cell_editor_number_aria_label: {\n message: 'Editable number {0} for row {1}',\n },\n sky_ag_grid_cell_editor_text_aria_label: {\n message: 'Editable text {0} for row {1}',\n },\n sky_ag_grid_cell_editor_autocomplete_aria_label: {\n message: 'Editable autocomplete {0} for row {1}',\n },\n sky_ag_grid_cell_renderer_number_validator_message: {\n message: 'Enter a valid number.',\n },\n sky_ag_grid_cell_renderer_currency_validator_message: {\n message: 'Enter a valid currency.',\n },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\n sky_ag_grid_cell_editor_currency_aria_label: {\n message: 'Editable currency {0} for row {1}',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_asc: {\n message: 'Sort column {0}, currently ascending',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_desc: {\n message: 'Sort column {0}, currently descending',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted: {\n message: 'Sort column {0}, not currently sorted',\n },\n sky_ag_grid_column_group_header_expand_aria_label: {\n message: 'Expand column group {0}',\n },\n sky_ag_grid_column_group_header_collapse_aria_label: {\n message: 'Collapse column group {0}',\n },\n },\n 'FR-CA': {\n sky_ag_grid_row_selector_aria_label: {\n message: 'Sélecteur de ligne pour la ligne {0}',\n },\n sky_ag_grid_row_selector_column_heading: {\n message: 'Sélection d’une ligne',\n },\n sky_ag_grid_cell_editor_datepicker_aria_label: {\n message: 'Date modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_editor_datepicker_hint_text: {\n message: 'Utilisez le format {0}.',\n },\n sky_ag_grid_cell_editor_number_aria_label: {\n message: 'Numéro modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_editor_text_aria_label: {\n message: 'Texte modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_editor_autocomplete_aria_label: {\n message: 'Saisie automatique modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_cell_renderer_number_validator_message: {\n message: 'Entrez un numéro valide.',\n },\n sky_ag_grid_cell_renderer_currency_validator_message: {\n message: 'Entrez une devise valide.',\n },\n skyux_lookup_tokens_summary: { message: '{0} articles sélectionnés' },\n sky_ag_grid_cell_editor_currency_aria_label: {\n message: 'Devise modifiable {0} pour la ligne {1}',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_asc: {\n message: 'Trier la colonne {0}, actuellement en ordre croissant',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_desc: {\n message: 'Trier la colonne {0}, actuellement en ordre décroissant',\n },\n sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted: {\n message: 'Trier la colonne {0}, actuellement non triée',\n },\n sky_ag_grid_column_group_header_expand_aria_label: {\n message: 'Agrandir le groupe de colonnes {0}',\n },\n sky_ag_grid_column_group_header_collapse_aria_label: {\n message: 'Réduire le groupe de colonnes {0}',\n },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyAgGridResourcesModule {}\n","import { SkyThemeSettings } from '@skyux/theme';\n\nimport {\n Theme,\n colorSchemeDark,\n colorSchemeLight,\n iconSetQuartz,\n themeQuartz,\n} from 'ag-grid-community';\n\nconst defaultsForAllThemes = {\n backgroundColor: 'var(--sky-background-color-page-default)',\n borderColor: 'var(--sky-border-color-neutral-medium)',\n borderRadius: 'var(--sky-border-radius-s, 3px)',\n cardShadow: 'none',\n cellEditingBorder: 'none',\n cellHorizontalPadding: 12,\n checkboxCheckedBackgroundColor:\n 'var(--sky-color-background-selected-heavy, var(--sky-background-color-input-selected, transparent))',\n checkboxCheckedBorderColor: { ref: 'checkboxCheckedShapeColor' },\n checkboxCheckedShapeColor:\n 'var(--sky-override-switch-checked-color, var(--sky-color-icon-inverse, var(--sky-text-color-default)))',\n checkboxIndeterminateBackgroundColor:\n 'var(--sky-override-switch-checked-color, var(--sky-color-icon-inverse, transparent))',\n checkboxUncheckedBackgroundColor: 'transparent',\n checkboxUncheckedBorderColor: `var(\n --sky-border-color-neutral-medium-dark,\n var(--sky-border-color-neutral-medium)\n )`,\n checkboxCheckedShapeImage: {\n svg: `<svg width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m8.5 16.586-3.793-3.793a1 1 0 0 0-1.414 1.414l4.5 4.5a1 1 0 0 0 1.414 0l11-11a1 1 0 0 0-1.414-1.414L8.5 16.586Z\" fill=\"#212121\"/></svg>`,\n },\n // eslint-disable-next-line @cspell/spellchecker\n fontFamily: ['BLKB Sans', 'Helvetica Neue', 'Arial', 'sans-serif'],\n foregroundColor: 'var(--sky-text-color-default)',\n headerBackgroundColor: 'var(--sky-background-color-page-default)',\n headerColumnBorder: {\n style: 'solid' as const,\n width: 1,\n color: { ref: 'borderColor' },\n },\n headerColumnBorderHeight: '100%',\n headerColumnResizeHandleColor: 'var(--sky-border-color-neutral-medium)',\n headerColumnResizeHandleHeight: '100%',\n headerColumnResizeHandleWidth: 1,\n headerFontFamily: { ref: 'fontFamily' },\n iconSize: 12,\n inputDisabledBackgroundColor: 'transparent',\n inputFocusBorder: 'transparent',\n inputFocusShadow: 'none',\n invalidColor: 'var(--sky-background-color-danger-dark)',\n listItemHeight: { ref: 'rowHeight' },\n oddRowBackgroundColor: 'var(--sky-background-color-page-default)',\n pickerListBackgroundColor: { ref: 'backgroundColor' },\n popupShadow: '5px 5px 10px rgba(0, 0, 0, 0.3)',\n rowBorderColor: 'var(--sky-border-color-neutral-medium)',\n rowHoverColor: 'transparent',\n secondaryForegroundColor: 'var(--sky-text-color-deemphasized)',\n selectedRowBackgroundColor: 'var(--sky-background-color-selected)',\n spacing: 4,\n textColor: 'var(--sky-text-color-default)',\n tooltipBackgroundColor: 'var(--sky-background-color-neutral-light)',\n wrapperBorderRadius: 0,\n};\nconst defaultsForDataEntryGrid = {\n backgroundColor: 'var(--sky-background-color-page-default)',\n columnBorder: true,\n popupShadow: 'none',\n};\nconst defaultThemeBase = {\n ...defaultsForAllThemes,\n backgroundColor: '#fbfbfb', //SkyDefaultDesignTokens.color.gray['01'],\n fontSize: 15,\n headerHeight: 37,\n inputFocusBorderColor: 'var(--sky-highlight-color-info)',\n rowHeight: 38,\n rangeSelectionBorderColor: 'var(--sky-highlight-color-info)',\n};\nconst modernThemeBase = {\n ...defaultsForAllThemes,\n fontSize: 16,\n headerColumnBorder: {\n style: 'solid' as const,\n width: 1,\n color: 'transparent',\n },\n headerColumnResizeHandleColor: { ref: 'headerBackgroundColor' },\n headerColumnSeparatorColor: { ref: 'headerBackgroundColor' },\n headerHeight: 60,\n inputFocusBorderColor: '#1870B8', // SkyModernDesignTokens['border-color']['primary-dark'],\n rowHeight: 60,\n rangeSelectionBorderColor: { ref: 'inputFocusBorderColor' },\n};\nconst modernCompactThemeBase = {\n headerHeight: 32,\n rowHeight: 32,\n};\nconst modernThemeDarkBase = {\n ...defaultsForAllThemes,\n fontSize: 16,\n headerHeight: 60,\n rowHeight: 60,\n};\n\nconst SkyAgGridDataGridDefault = themeQuartz\n .withPart(colorSchemeLight)\n .withPart(iconSetQuartz)\n .withParams(defaultThemeBase);\n\nconst SkyAgGridDataEntryGridDefault = SkyAgGridDataGridDefault.withParams(\n defaultsForDataEntryGrid,\n).withParams({\n cellHorizontalPadding: '11px',\n columnBorder: {\n style: 'solid' as const,\n width: 1,\n color: { ref: 'borderColor' },\n },\n});\n\nconst SkyAgGridDataGridModernLight = themeQuartz\n .withPart(colorSchemeLight)\n .withPart(iconSetQuartz)\n .withParams(modernThemeBase);\n\nconst SkyAgGridDataGridModernLightCompact =\n SkyAgGridDataGridModernLight.withParams(modernCompactThemeBase);\n\nconst SkyAgGridDataGridModernDark = themeQuartz\n .withPart(colorSchemeDark)\n .withPart(iconSetQuartz)\n .withParams(modernThemeDarkBase);\n\nconst SkyAgGridDataGridModernDarkCompact =\n SkyAgGridDataGridModernDark.withParams(modernCompactThemeBase);\n\nconst SkyAgGridDataEntryGridModernLight =\n SkyAgGridDataGridModernLight.withParams(defaultsForDataEntryGrid).withParams({\n backgroundColor: '#ffffff',\n });\n\nconst SkyAgGridDataEntryGridModernLightCompact =\n SkyAgGridDataGridModernLightCompact.withParams(defaultsForDataEntryGrid);\n\nconst SkyAgGridDataEntryGridModernDark = SkyAgGridDataGridModernDark.withParams(\n defaultsForDataEntryGrid,\n);\n\nconst SkyAgGridDataEntryGridModernDarkCompact =\n SkyAgGridDataGridModernDarkCompact.withParams(defaultsForDataEntryGrid);\n\nexport function getSkyAgGridTheme(\n grid: 'data-entry-grid' | 'data-grid',\n theme: string | undefined,\n mode: string | undefined,\n spacing: string | undefined,\n): Theme {\n if (grid === 'data-grid') {\n if (theme === 'modern') {\n if (mode === 'dark') {\n if (spacing === 'compact') {\n return SkyAgGridDataGridModernDarkCompact;\n } else {\n return SkyAgGridDataGridModernDark;\n }\n } else {\n if (spacing === 'compact') {\n return SkyAgGridDataGridModernLightCompact;\n } else {\n return SkyAgGridDataGridModernLight;\n }\n }\n } else {\n return SkyAgGridDataGridDefault;\n }\n } else {\n if (theme === 'modern') {\n if (mode === 'dark') {\n if (spacing === 'compact') {\n return SkyAgGridDataEntryGridModernDarkCompact;\n } else {\n return SkyAgGridDataEntryGridModernDark;\n }\n } else {\n if (spacing === 'compact') {\n return SkyAgGridDataEntryGridModernLightCompact;\n } else {\n return SkyAgGridDataEntryGridModernLight;\n }\n }\n } else {\n return SkyAgGridDataEntryGridDefault;\n }\n }\n}\n\ntype SkyAgGridThemeType =\n `ag-theme-sky-${'data-entry-grid' | 'data-grid'}-${'default' | 'modern-light' | 'modern-dark' | 'modern-light-compact' | 'modern-dark-compact'}`;\n\nexport function agGridThemeIsCompact(\n themeSettings: SkyThemeSettings | undefined,\n compactLayout: boolean,\n): boolean {\n return (\n themeSettings?.theme.name === 'modern' &&\n (compactLayout || themeSettings?.spacing.name === 'compact')\n );\n}\n\nexport function getSkyAgGridThemeClassName(\n editable: boolean,\n themeSettings: SkyThemeSettings | undefined,\n compactLayout: boolean,\n): SkyAgGridThemeType {\n let theme = `ag-theme-sky-${editable ? 'data-entry-grid' : 'data-grid'}-`;\n if (themeSettings?.theme.name === 'modern') {\n theme += `modern-${themeSettings.mode.name}`;\n if (agGridThemeIsCompact(themeSettings, compactLayout)) {\n theme += `-compact`;\n }\n } else {\n theme += 'default';\n }\n return theme as SkyAgGridThemeType;\n}\n","import { Injectable } from '@angular/core';\nimport { SkyCoreAdapterService } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAgGridAdapterService {\n #skyAdapterService: SkyCoreAdapterService;\n\n constructor(skyAdapterService: SkyCoreAdapterService) {\n this.#skyAdapterService = skyAdapterService;\n }\n\n public getElementOrParentWithClass(\n element: HTMLElement,\n className: string,\n ): HTMLElement | undefined {\n if (element && element.classList.contains(className)) {\n return element;\n } else if (element.parentElement) {\n return this.getElementOrParentWithClass(element.parentElement, className);\n }\n\n return undefined;\n }\n\n public setFocusedElementById(parentEl: HTMLElement, selector: string): void {\n const element = parentEl.querySelector(`#${selector}`) as HTMLElement;\n\n /* istanbul ignore else */\n if (element) {\n element.focus();\n }\n }\n\n public getFocusedElement(): HTMLElement {\n return document.activeElement as HTMLElement;\n }\n\n public getNextFocusableElement(\n currentEl: HTMLElement,\n parentEl?: HTMLElement,\n moveFocusLeft?: boolean,\n ): HTMLElement | undefined {\n if (parentEl) {\n const focusableChildren =\n this.#skyAdapterService.getFocusableChildren(parentEl);\n const currentElementIndex = focusableChildren.indexOf(currentEl);\n const nextIndex = moveFocusLeft\n ? currentElementIndex - 1\n : currentElementIndex + 1;\n\n if (\n (!moveFocusLeft && focusableChildren.length >= nextIndex) ||\n (moveFocusLeft && nextIndex >= 0)\n ) {\n return focusableChildren[nextIndex];\n }\n }\n\n return undefined;\n }\n\n public focusOnFocusableChildren(element: HTMLElement): void {\n const focusableChildren =\n this.#skyAdapterService.getFocusableChildren(element);\n\n if (focusableChildren.length) {\n focusableChildren[0].focus();\n }\n }\n}\n","/**\n * These column types can be used by setting the AG Grid [column definition `type`](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing) to one of the following values.\n * Any [SKY UX component](https://developer.blackbaud.com/skyux/components) can be made into a [cell editor](https://www.ag-grid.com/javascript-grid-cell-editor/) or [cell renderer](https://www.ag-grid.com/javascript-grid-cell-rendering-components/) component. If you would like to use a component that does not have a column definition yet, please consider [contributing it](https://developer.blackbaud.com/skyux/contribute/contribution-process) to the SKY UX data entry grid module, or [file an issue](https://developer.blackbaud.com/skyux/contribute/contribution-process/file-issue) in the [`@skyux/ag-grid` repo](https://github.com/blackbaud/skyux-ag-grid).\n */\nexport enum SkyCellType {\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as [SKY UX autocomplete components](https://developer.blackbaud.com/skyux/components/autocomplete). You can set any of the autocomplete component's properties by passing `SkyCellEditorAutocompleteParams` in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/javascript-grid-cell-editing/#dynamic-parameters) based on other cell values. See the demo for an example. Text can be entered and a value selected from the provided list.\n *\n * **Read-only mode**\n *\n * Cells the column will display the currently selected value's name property by default. If the autocomplete needs to show a different property or needs to be formatted in any way, you can [define a `valueFormatter`](https://www.ag-grid.com/javascript-grid-value-formatters/) on the column definition.\n */\n Autocomplete = 'skyCellAutocomplete',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as a currency amount.\n *\n * **Read-only mode**\n *\n * Formats the display as currency using [SKY UX numeric components](https://developer.blackbaud.com/skyux/components/numeric).\n */\n Currency = 'skyCellCurrency',\n /**\n * **Edit and read-only modes**\n *\n * Combines SkyCellType.Currency and SkyCellType.Validator, where the value is displayed as a currency and passed to a validator function.\n */\n CurrencyValidator = 'skyCellCurrencyValidator',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as [SKY UX datepicker components](https://developer.blackbaud.com/skyux/components/datepicker). You can set any of the datepicker component's properties by passing `SkyCellEditorDatepickerParams` in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/javascript-grid-cell-editing/#dynamic-parameters) based on other cell values. See the demo for an example. Date values can be entered.\n *\n * **Read-only mode**\n *\n * Cells in the column will display the currently selected date formatted as `MM-DD-YYYY`, or the date format of the locale passed to `getGridOptions()`. If you would like to overwrite this format, you can [define a `valueFormatter`](https://www.ag-grid.com/javascript-grid-value-formatters/) on the column definition. See the demo for an example.\n */\n Date = 'skyCellDate',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as [SKY UX lookup components](https://developer.blackbaud.com/skyux-v5/components/lookup). You can set any of the lookup component's properties by passing `SkyCellEditorLookupParams` in the [column definition's `cellEditorParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing). These params can be updated as other cell edits are made or [provided dynamically](https://www.ag-grid.com/javascript-grid-cell-editing/#dynamic-parameters) based on other cell values. See the demo for an example. Text can be entered and a value selected from the provided list.\n *\n * **Read-only mode**\n *\n * Cells the column will display, by default, either: the name(s) of the selected value(s) if there are less than 6, or a summary count of the values if there are more than 5. If the lookup needs to show a different property or needs to be formatted in any way, you can [define a `valueFormatter`](https://www.ag-grid.com/javascript-grid-value-formatters/) on the column definition.\n */\n Lookup = 'skyCellLookup',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as HTML number `inputs`. Only numbers can be entered.\n *\n * **Read-only mode**\n *\n * Cells in the column will render as the number value.\n */\n Number = 'skyCellNumber',\n /**\n * **Edit and read-only modes**\n *\n * Combines SkyCellType.Number and SkyCellType.Validator, where the value is displayed as a number and passed to a validator function.\n */\n NumberValidator = 'skyCellNumberValidator',\n /**\n * **Edit and read-only modes**\n *\n * The header and cells in the column will render right aligned.\n */\n RightAligned = 'skyCellRightAligned',\n /**\n * **Edit and read-only modes**\n *\n * Cells in the column will render as [SKY UX checkbox components](https://developer.blackbaud.com/skyux/components/checkbox). It allows the user to select multiple rows, and adds a highlight to selected rows. The [Ag Grid `rowNode`](https://www.ag-grid.com/javascript-grid-row-node/) will be updated to reflect the selected state.\n */\n RowSelector = 'skyCellRowSelector',\n /**\n * **Read-only mode**\n *\n * Cells in the column will render in a `TemplateRef` passed in the column definition's `cellRendererParams.template` property, with `value` and `row` context. See the demo for an example.\n */\n Template = 'skyCellTemplate',\n /**\n * **Edit mode**\n *\n * Cells in the column will be edited as HTML text `inputs`. Any characters can be entered.\n *\n * **Read-only mode**\n *\n * Cells in the column will render as their string value.\n */\n Text = 'skyCellText',\n /**\n * **Edit and read-only modes**\n *\n * Cells in the column will be passed to a validator function that flags erroneous entries. You can set the validator function and message by passing a `SkyAgGridValidatorProperties` object as `skyComponentProperties` to [column definition's `cellRendererParams` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing), like `skyComponentProperties.validator` and `skyComponentProperties.validatorMessage`. SkyCellType.Validator can be combined with other cell types, such as SkyCellType.Autocomplete or SkyCellType.Date, by using the array syntax for the [column definition's `type` property](https://www.ag-grid.com/angular-data-grid/column-properties/#reference-editing).\n */\n Validator = 'skyCellValidator',\n}\n","import { AsyncPipe, DOCUMENT, NgClass } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n booleanAttribute,\n computed,\n inject,\n input,\n numberAttribute,\n} from '@angular/core';\nimport { SkyMutationObserverService } from '@skyux/core';\nimport { SkyViewkeeperModule } from '@skyux/core';\nimport {\n SkyThemeService,\n SkyThemeSettings,\n SkyThemeSettingsChange,\n} from '@skyux/theme';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport {\n CellEditingStartedEvent,\n CellFocusedEvent,\n HeaderFocusedEvent,\n} from 'ag-grid-community';\nimport {\n BehaviorSubject,\n Observable,\n ReplaySubject,\n Subject,\n combineLatest,\n distinctUntilChanged,\n of,\n take,\n takeUntil,\n} from 'rxjs';\n\nimport {\n getSkyAgGridTheme,\n getSkyAgGridThemeClassName,\n} from '../../styles/ag-grid-theme';\n\nimport { SkyAgGridAdapterService } from './ag-grid-adapter.service';\nimport { SkyCellType } from './types/cell-type';\n\nlet idIndex = 0;\n\n@Component({\n selector: 'sky-ag-grid-wrapper',\n templateUrl: './ag-grid-wrapper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, NgClass, SkyViewkeeperModule],\n})\nexport class SkyAgGridWrapperComponent\n implements AfterContentInit, AfterViewInit, OnDestroy, OnInit\n{\n @ContentChild(AgGridAngular, {\n static: true,\n })\n public agGrid: AgGridAngular | undefined;\n\n @HostBinding('class.sky-ag-grid-layout-normal')\n public isNormalLayout = false;\n\n /**\n * Enable a compact layout for the grid when using modern theme. Compact layout uses\n * a smaller font size and row height to display more data in a smaller space.\n */\n @Input({ transform: booleanAttribute })\n public set compact(value: boolean) {\n this.#isCompact.next(value);\n }\n\n /**\n * The minimum height of the grid in pixels. The default value is `50`.\n */\n public readonly minHeight = input<number, unknown>(50, {\n transform: numberAttribute,\n });\n\n public afterAnchorId: string;\n public beforeAnchorId: string;\n public gridId: string;\n public wrapperClasses$: Observable<string[]>;\n\n public get viewkeeperClasses(): string[] {\n return this.#_viewkeeperClasses;\n }\n\n public set viewkeeperClasses(value: string[]) {\n this.#_viewkeeperClasses = value;\n this.#changeDetector.markForCheck();\n }\n\n get #isInEditMode(): boolean {\n if (this.agGrid && this.agGrid.api) {\n const primaryGridEditing = this.agGrid.api.getEditingCells().length > 0;\n if (primaryGridEditing) {\n return true;\n } else if (this.agGrid.api.getGridOption('masterDetail')) {\n let innerEditing = false;\n this.agGrid.api.forEachDetailGridInfo((detailGrid) => {\n if (detailGrid?.api && detailGrid.api.getEditingCells().length > 0) {\n innerEditing = true;\n }\n });\n\n return innerEditing;\n }\n }\n return false;\n }\n\n protected readonly minHeightStyle = computed(() => {\n return `--sky-ag-grid-min-height: ${this.minHeight()}px;`;\n });\n\n #_viewkeeperClasses: string[] = [];\n readonly #ngUnsubscribe = new Subject<void>();\n readonly #themeSvc = inject(SkyThemeService, {\n optional: true,\n });\n readonly #wrapperClasses = new BehaviorSubject<string[]>([\n `ag-theme-sky-data-grid-default`,\n ]);\n readonly #adapterService = inject(SkyAgGridAdapterService);\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #parentChangeDetector = inject(ChangeDetectorRef, {\n optional: true,\n skipSelf: true,\n });\n readonly #elementRef = inject(ElementRef<HTMLElement>);\n readonly #document = inject(DOCUMENT);\n readonly #mutationObserverService = inject(SkyMutationObserverService);\n readonly #isCompact = new BehaviorSubject<boolean>(false);\n readonly #hasEditableClass = new ReplaySubject<boolean>(1);\n\n constructor() {\n idIndex++;\n this.afterAnchorId = 'sky-ag-grid-nav-anchor-after-' + idIndex;\n this.beforeAnchorId = 'sky-ag-grid-nav-anchor-before-' + idIndex;\n this.gridId = 'sky-ag-grid-' + idIndex;\n this.wrapperClasses$ = this.#wrapperClasses.asObservable();\n }\n\n public ngAfterContentInit(): void {\n if (this.agGrid) {\n const domLayout = this.agGrid.gridOptions?.domLayout;\n if (domLayout === 'autoHeight') {\n if (this.agGrid.gridOptions?.context?.enableTopScroll) {\n this.viewkeeperClasses.push(\n '.ag-header',\n '.ag-body-horizontal-scroll',\n );\n } else {\n this.viewkeeperClasses.push('.ag-header');\n }\n } else if (domLayout === 'normal') {\n this.isNormalLayout = true;\n this.#parentChangeDetector?.detectChanges();\n }\n this.agGrid.gridReady\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#moveHorizontalScroll();\n });\n this.agGrid.firstDataRendered\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#moveHorizontalScroll();\n });\n this.agGrid.rowDataUpdated\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#moveHorizontalScroll();\n });\n this.agGrid.cellEditingStarted\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((params: CellEditingStartedEvent) => {\n if (params.colDef.type) {\n const types = Array.isArray(params.colDef.type)\n ? params.colDef.type\n : [params.colDef.type];\n const addClasses = types.map(\n (t) => `sky-ag-grid-cell-editing-${t}`,\n );\n this.#wrapperClasses.next([\n ...this.#wrapperClasses.getValue(),\n ...addClasses,\n ]);\n if (\n types.includes(SkyCellType.Template) &&\n params.rowIndex !== null\n ) {\n this.agGrid?.api.setFocusedCell(params.rowIndex, params.column);\n }\n }\n });\n this.agGrid.cellEditingStopped\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#wrapperClasses.next(\n this.#wrapperClasses\n .getValue()\n .filter((c) => !c.startsWith('sky-ag-grid-cell-editing-')),\n );\n });\n this.agGrid.cellFocused\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event: CellFocusedEvent) => {\n const context = event.context || {};\n\n context['lastFocusedCell'] = {\n rowIndex: event.rowIndex,\n column:\n typeof event.column === 'object'\n ? event.column?.getColId()\n : `${event.column}`,\n };\n\n event.api?.setGridOption('context', context);\n });\n\n this.agGrid.headerFocused\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event: HeaderFocusedEvent) => {\n const context = event.context || {};\n\n context['lastFocusedCell'] = {\n rowIndex: null,\n column: event.column?.getUniqueId\n ? event.column.getUniqueId()\n : `${event.column}`,\n };\n\n event.api?.setGridOption('context', context);\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#hasEditableClass.complete();\n this.#isCompact.complete();\n this.#wrapperClasses.complete();\n }\n\n public ngOnInit(): void {\n combineLatest<[boolean, boolean, SkyThemeSettingsChange | undefined]>([\n this.#hasEditableClass.pipe(distinctUntilChanged()),\n this.#isCompact.pipe(distinctUntilChanged()),\n this.#themeSvc?.settingsChange ?? of(undefined),\n ])\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(([hasEditableClass, isCompact, settings]) => {\n this.#updateGridTheme(\n hasEditableClass,\n isCompact,\n settings?.currentSettings,\n );\n });\n }\n\n public ngAfterViewInit(): void {\n const agGridElement: HTMLElement | undefined =\n this.#elementRef.nativeElement.querySelector('ag-grid-angular');\n const callback = (): void => {\n this.#hasEditableClass.next(\n !!agGridElement?.classList.contains('sky-ag-grid-editable'),\n );\n };\n if (agGridElement) {\n const agGridClassObserver =\n this.#mutationObserverService.create(callback);\n agGridClassObserver.observe(agGridElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n this.#ngUnsubscribe.pipe(take(1)).subscribe(() => {\n agGridClassObserver.disconnect();\n });\n }\n callback();\n }\n\n /**\n * Prevent closing a modal when focused in AG Grid.\n */\n public onKeyUpEscape($event: Event): void {\n $event.stopPropagation();\n this.agGrid?.api.stopEditing(true);\n }\n\n public onGridKeydown(event: KeyboardEvent): void {\n if (this.agGrid && !this.#isInEditMode && event.key === 'Tab') {\n const idToFocus = event.shiftKey\n ? this.beforeAnchorId\n : this.afterAnchorId;\n this.#adapterService.setFocusedElementById(\n this.#elementRef.nativeElement,\n idToFocus,\n );\n }\n }\n\n public onAnchorFocus(event: FocusEvent): void {\n const relatedTarget = event.relatedTarget as HTMLElement | undefined;\n const previousWasGrid =\n relatedTarget && this.#elementRef.nativeElement.contains(relatedTarget);\n\n if (this.agGrid && !previousWasGrid) {\n this.#elementRef.nativeElement\n .querySelector('.ag-tab-guard.ag-tab-guard-top')\n ?.focus();\n }\n }\n\n #moveHorizontalScroll(): void {\n const toTop = !!this.agGrid?.gridOptions?.context?.enableTopScroll;\n const root = this.#elementRef.nativeElement.querySelector('.ag-root');\n const header = root?.querySelector('.ag-header');\n const floatingBottom = root?.querySelector('.ag-floating-bottom');\n const scrollbar = root?.querySelector('.ag-body-horizontal-scroll');\n if (root && header && floatingBottom && scrollbar) {\n if (\n scrollbar.style.height !==\n scrollbar.style.getPropertyValue(\n '--sky-ag-body-horizontal-scroll-width',\n )\n ) {\n scrollbar.style.setProperty(\n '--sky-ag-body-horizontal-scroll-width',\n scrollbar.style.height,\n );\n }\n const isTop = root.children[1].matches('.ag-body-horizontal-scroll');\n if (toTop && !isTop) {\n const fragment = this.#document.createDocumentFragment();\n fragment.appendChild(scrollbar);\n header.after(fragment);\n } else if (!toTop && isTop) {\n const fragment = this.#document.createDocumentFragment();\n fragment.appendChild(scrollbar);\n floatingBottom.after(fragment);\n }\n }\n }\n\n #updateGridTheme(\n hasEditableClass: boolean,\n isCompact: boolean,\n themeSettings?: SkyThemeSettings,\n ): void {\n const skyAgGridTheme = getSkyAgGridTheme(\n hasEditableClass ? 'data-entry-grid' : 'data-grid',\n themeSettings?.theme?.name,\n themeSettings?.mode?.name,\n isCompact ? 'compact' : themeSettings?.spacing?.name,\n );\n this.agGrid?.api.setGridOption('theme', skyAgGridTheme);\n const skyAgGridThemeClassName = getSkyAgGridThemeClassName(\n hasEditableClass,\n themeSettings,\n isCompact,\n );\n const previousValue = this.#wrapperClasses.getValue();\n let value = [\n ...previousValue.filter((c) => !c.startsWith('ag-theme-')),\n skyAgGridThemeClassName,\n ];\n const textSelectionClass = 'sky-ag-grid-text-selection';\n if (this.#getTextSelection(hasEditableClass)) {\n value.push(textSelectionClass);\n } else {\n value = value.filter((c) => c !== textSelectionClass);\n }\n this.#wrapperClasses.next([...new Set(value)]);\n }\n\n #getTextSelection(hasEditableClass: boolean): boolean {\n if (this.agGrid?.gridOptions?.context?.enableCellTextSelection) {\n return !hasEditableClass;\n } else {\n return false;\n }\n }\n}\n","<span\n class=\"nav-anchor\"\n tabindex=\"0\"\n [id]=\"beforeAnchorId\"\n (focusin)=\"onAnchorFocus($event)\"\n>\n</span>\n<div\n class=\"sky-ag-grid\"\n tabindex=\"0\"\n [class.sky-ag-grid-top-scrollbar]=\"\n agGrid?.gridOptions?.context &&\n agGrid?.gridOptions?.context['enableTopScroll']\n \"\n [ngClass]=\"wrapperClasses$ | async\"\n [id]=\"gridId\"\n [skyViewkeeper]=\"viewkeeperClasses\"\n [style]=\"minHeightStyle()\"\n (keydown)=\"onGridKeydown($event)\"\n (keyup.escape)=\"onKeyUpEscape($event)\"\n>\n <ng-content />\n</div>\n<span\n tabindex=\"0\"\n class=\"nav-anchor\"\n [id]=\"afterAnchorId\"\n (focusin)=\"onAnchorFocus($event)\"\n>\n</span>\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Directive,\n Input,\n OnDestroy,\n contentChildren,\n effect,\n inject,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { SkyBreakpoint, SkyMediaQueryService } from '@skyux/core';\nimport {\n SkyDataManagerService,\n SkyDataManagerState,\n SkyDataViewColumnWidths,\n SkyDataViewConfig,\n} from '@skyux/data-manager';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport {\n ColumnMovedEvent,\n ColumnResizedEvent,\n ColumnState,\n DragStoppedEvent,\n GridApi,\n IColumnLimit,\n RowSelectedEvent,\n} from 'ag-grid-community';\nimport { Subject, Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';\n\nfunction toColumnWidthName(breakpoint: SkyBreakpoint): 'xs' | 'sm' {\n return breakpoint === 'xs' ? 'xs' : 'sm';\n}\n\n/**\n * @internal\n */\n@Directive({ selector: '[skyAgGridDataManagerAdapter]' })\nexport class SkyAgGridDataManagerAdapterDirective\n implements AfterContentInit, OnDestroy\n{\n @Input()\n public viewId: string | undefined;\n\n public readonly agGridList = contentChildren<AgGridAngular>(AgGridAngular, {\n descendants: true,\n });\n\n public skyAgGridWrapperList = contentChildren(SkyAgGridWrapperComponent, {\n descendants: true,\n });\n\n #currentAgGrid: AgGridAngular | undefined;\n #currentDataState: SkyDataManagerState | undefined;\n #currentSkyAgGridWrapper: SkyAgGridWrapperComponent | undefined;\n #dataStateSub: Subscription | undefined;\n #viewConfig: SkyDataViewConfig | undefined;\n #ngUnsubscribe = new Subject<void>();\n #changeDetector: ChangeDetectorRef;\n #dataManagerSvc: SkyDataManagerService;\n\n readonly #breakpoint = toSignal(\n inject(SkyMediaQueryService).breakpointChange,\n );\n\n constructor(\n changeDetector: ChangeDetectorRef,\n dataManagerSvc: SkyDataManagerService,\n ) {\n this.#changeDetector = changeDetector;\n this.#dataManagerSvc = dataManagerSvc;\n\n effect(() => {\n const list = this.agGridList();\n\n this.#checkForAgGrid(list);\n });\n\n effect(() => {\n const list = this.skyAgGridWrapperList();\n\n this.#checkForSkyAgGridWrapper(list);\n });\n\n effect(() => {\n const breakpoint = this.#breakpoint();\n\n if (breakpoint) {\n this.#applyColumnWidths(breakpoint);\n }\n });\n }\n\n public ngAfterContentInit(): void {\n if (this.viewId) {\n this.#dataManagerSvc.setViewkeeperClasses(this.viewId, ['.ag-header']);\n this.#viewConfig = this.#dataManagerSvc.getViewById(this.viewId);\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n #checkForAgGrid(agGridList: readonly AgGridAngular[]): void {\n const agGrid = agGridList[0];\n const agGridCount = agGridList.length;\n\n if (agGrid) {\n if (agGrid !== this.#currentAgGrid) {\n this.#registerAgGrid(agGrid);\n }\n\n if (agGridCount > 1) {\n console.warn(\n 'More than one ag-grid child component was found. Using the first ag-Grid.',\n );\n }\n }\n }\n\n #checkForSkyAgGridWrapper(\n wrappers: readonly SkyAgGridWrapperComponent[],\n ): void {\n const count = wrappers.length;\n const wrapper = wrappers[0];\n\n /* istanbul ignore else */\n if (wrapper !== this.#currentSkyAgGridWrapper) {\n this.#registerSkyAgGridWrapper(wrapper);\n }\n\n if (count > 1) {\n console.warn(\n 'More than one ag-grid child component was found. Using the first ag-Grid.',\n );\n }\n }\n\n #unregisterAgGrid(): void {\n this.#currentAgGrid = undefined;\n\n /* istanbul ignore if */\n if (this.#dataStateSub) {\n this.#dataStateSub.unsubscribe();\n }\n }\n\n #unregisterSkyAgGridWrapper(): void {\n this.#currentSkyAgGridWrapper = undefined;\n }\n\n #registerSkyAgGridWrapper(wrapper: SkyAgGridWrapperComponent): void {\n this.#unregisterSkyAgGridWrapper();\n this.#currentSkyAgGridWrapper = wrapper;\n\n setTimeout(() => {\n if (this.#currentSkyAgGridWrapper) {\n this.#currentSkyAgGridWrapper.viewkeeperClasses = [];\n }\n });\n }\n\n #registerAgGrid(agGrid: AgGridAngular): void {\n this.#unregisterAgGrid();\n\n this.#currentAgGrid = agGrid;\n\n if (agGrid) {\n agGrid.gridReady.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {\n if (this.#viewConfig && this.viewId) {\n this.#viewConfig.onSelectAllClick = () => agGrid.api.selectAll();\n this.#viewConfig.onClearAllClick = () => agGrid.api.deselectAll();\n this.#dataManagerSvc.updateViewConfig(this.#viewConfig);\n this.#dataStateSub = this.#dataManagerSvc\n .getDataStateUpdates(this.#viewConfig.id)\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((dataState: SkyDataManagerState) => {\n this.#currentDataState = dataState;\n this.#displayColumns(dataState);\n this.#applySort(dataState);\n });\n\n if (agGrid.gridOptions?.context?.enableTopScroll) {\n this.#dataManagerSvc.setViewkeeperClasses(this.viewId, [\n '.ag-header',\n '.ag-body-horizontal-scroll',\n ]);\n }\n\n this.#applyColumnWidths();\n }\n });\n\n agGrid.columnMoved\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n filter(\n (event: ColumnMovedEvent) =>\n ![\n 'gridInitializing',\n 'uiColumnResized',\n 'uiColumnDragged',\n 'api',\n ].includes(event.source),\n ),\n )\n .subscribe((value: ColumnMovedEvent) => {\n this.#updateColumnsInCurrentDataState(value.api);\n });\n\n agGrid.columnResized\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n filter(\n (event: ColumnResizedEvent) => event.source === 'uiColumnResized',\n ),\n )\n .subscribe((event: ColumnResizedEvent) => {\n const colId = event.column?.getColId();\n const width = event.column?.getActualWidth();\n const breakpoint = this.#breakpoint();\n\n if (colId && width && breakpoint) {\n this.#updateColumnWidth(colId, width, breakpoint);\n }\n });\n\n agGrid.dragStopped\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value: DragStoppedEvent) => {\n this.#updateColumnsInCurrentDataState(value.api);\n });\n\n agGrid.rowSelected\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event: RowSelectedEvent) => {\n if (this.#viewConfig && this.#currentDataState) {\n const row = event.node;\n const selectedIds = this.#currentDataState.selectedIds || [];\n const rowIndex = selectedIds.indexOf(row.data.id);\n\n if (row.isSelected() && rowIndex === -1) {\n selectedIds.push(row.data.id);\n } else if (!row.isSelected() && rowIndex !== -1) {\n selectedIds.splice(rowIndex, 1);\n }\n\n this.#currentDataState.selectedIds = selectedIds;\n this.#dataManagerSvc.updateDataState(\n this.#currentDataState,\n this.#viewConfig.id,\n );\n\n this.#changeDetector.markForCheck();\n }\n });\n\n agGrid.sortChanged.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {\n const gridColumnStates: ColumnState[] = agGrid.api.getColumnState();\n\n const activeSortColumnState =\n gridColumnStates?.find(\n (aGridColumnState) => aGridColumnState.sortIndex === 0,\n ) ??\n gridColumnStates?.find((aGridColumnState) => aGridColumnState.sort);\n\n if (this.#viewConfig && this.#currentDataState) {\n if (activeSortColumnState) {\n const activeSortColumnDef = agGrid.api.getColumnDef(\n activeSortColumnState.colId,\n );\n this.#currentDataState.activeSortOption = {\n descending: activeSortColumnState.sort === 'desc',\n id: activeSortColumnState.colId,\n propertyName: activeSortColumnDef?.field || '',\n label: activeSortColumnDef?.headerName || '',\n };\n } else {\n this.#currentDataState.activeSortOption = undefined;\n }\n this.#dataManagerSvc.updateDataState(\n this.#currentDataState,\n this.#viewConfig.id,\n );\n }\n });\n }\n }\n\n #updateColumnsInCurrentDataState(api: GridApi): void {\n if (this.#viewConfig && this.#currentDataState) {\n const columnOrder = this.#getColumnOrder(api);\n\n const viewState = this.#currentDataState.getViewStateById(\n this.#viewConfig.id,\n );\n\n if (\n viewState &&\n (viewState.displayedColumnIds.length !== columnOrder.length ||\n viewState.displayedColumnIds.some((col, i) => col !== columnOrder[i]))\n ) {\n viewState.displayedColumnIds = columnOrder;\n\n this.#dataManagerSvc.updateDataState(\n this.#currentDataState.addOrUpdateView(\n this.#viewConfig.id,\n viewState,\n ),\n this.#viewConfig.id,\n );\n }\n }\n }\n\n #getColumnOrder(api: GridApi): string[] {\n return api\n .getColumnState()\n .filter((state) => !state.hide)\n .map((state) => state.colId);\n }\n\n #displayColumns(dataState: SkyDataManagerState): void {\n const agGrid = this.#currentAgGrid;\n\n if (agGrid && this.#viewConfig) {\n const viewState = dataState.getViewStateById(this.#viewConfig.id);\n let displayedColumnIds: string[] = [];\n\n /*istanbul ignore else*/\n if (viewState?.displayedColumnIds) {\n displayedColumnIds = viewState.displayedColumnIds;\n }\n\n const columnOrder = this.#getColumnOrder(agGrid.api);\n\n if (\n displayedColumnIds.length !== columnOrder.length ||\n displayedColumnIds.some((col, i) => col !== columnOrder[i])\n ) {\n const hideColumns = agGrid.api\n .getColumnState()\n .map((col) => col.colId)\n .filter((colId) => !displayedColumnIds.includes(colId));\n\n agGrid.api.setColumnsVisible(hideColumns, false);\n agGrid.api.setColumnsVisible(displayedColumnIds, true);\n agGrid.api.moveColumns(displayedColumnIds, 0);\n this.#removeColumnWidths(hideColumns);\n }\n }\n }\n\n #applySort(dataState: SkyDataManagerState): void {\n const agGrid = this.#currentAgGrid;\n const activeSort = dataState.activeSortOption;\n\n if (activeSort) {\n agGrid?.api.applyColumnState({\n state: [\n {\n colId: activeSort.id,\n sort: activeSort.descending ? 'desc' : 'asc',\n },\n ],\n defaultState: { sort: null },\n });\n }\n }\n\n #updateColumnWidth(\n colId: string,\n width: number,\n breakpoint: SkyBreakpoint,\n ): void {\n const viewState =\n this.viewId && this.#currentDataState?.getViewStateById(this.viewId);\n if (viewState && this.viewId && this.#currentDataState) {\n const currentWidths = viewState?.columnWidths;\n\n currentWidths[toColumnWidthName(breakpoint)][colId] = width;\n\n viewState.columnWidths = currentWidths;\n this.#dataManagerSvc.updateDataState(\n this.#currentDataState.addOrUpdateView(this.viewId, viewState),\n this.viewId,\n );\n }\n }\n\n #removeColumnWidths(colIds: string[]): void {\n const viewState =\n this.viewId && this.#currentDataState?.getViewStateById(this.viewId);\n\n if (viewState && this.viewId && this.#currentDataState) {\n const currentWidths = viewState?.columnWidths;\n\n for (const colId of colIds) {\n delete currentWidths['xs'][colId];\n delete currentWidths['sm'][colId];\n }\n\n viewState.columnWidths = currentWidths;\n this.#dataManagerSvc.updateDataState(\n this.#currentDataState.addOrUpdateView(this.viewId, viewState),\n this.viewId,\n );\n }\n }\n\n #applyColumnWidths(breakpoint?: SkyBreakpoint): void {\n breakpoint ??= this.#breakpoint();\n\n if (breakpoint) {\n const viewState =\n this.viewId && this.#currentDataState?.getViewStateById(this.viewId);\n\n if (viewState && viewState.columnWidths && viewState.displayedColumnIds) {\n const columnLimits = this.#getGridColumnLimits(\n viewState.displayedColumnIds,\n viewState.columnWidths,\n toColumnWidthName(breakpoint),\n );\n\n this.#currentAgGrid?.api.sizeColumnsToFit({ columnLimits });\n }\n }\n }\n\n #getGridColumnLimits(\n displayedColumns: string[],\n currentWidths: SkyDataViewColumnWidths,\n breakpointName: keyof SkyDataViewColumnWidths,\n ): IColumnLimit[] {\n const gridColumnLimits: IColumnLimit[] = [];\n\n for (const column of displayedColumns) {\n const columnWidth = currentWidths[breakpointName][column];\n\n if (columnWidth) {\n gridColumnLimits.push({\n key: column,\n minWidth: columnWidth,\n maxWidth: columnWidth,\n });\n }\n }\n return gridColumnLimits;\n }\n}\n","import { NgStyle } from '@angular/common';\nimport {\n Component,\n ElementRef,\n TemplateRef,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { SkyInlineDeleteModule } from '@skyux/layout';\n\n/**\n * Component for rendering the inline delete template in the overlay.\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-row-delete',\n template: `\n <ng-template\n #inlineDeleteTemplateRef\n let-row\n let-tableWidth=\"tableWidth()\"\n let-getRowDeleteItem=\"getRowDeleteItem\"\n let-cancelRowDelete=\"cancelRowDelete\"\n let-confirmRowDelete=\"confirmRowDelete\"\n >\n <div\n #inlineDeleteRef\n class=\"sky-ag-grid-row-delete\"\n [id]=\"'row-delete-ref-' + row.id\"\n [ngStyle]=\"{\n height: row.rowHeight + 'px',\n position: 'fixed',\n top: '-100vh',\n width: tableWidth + 'px',\n }\"\n >\n <sky-inline-delete\n [pending]=\"getRowDeleteItem(row).pending\"\n (cancelTriggered)=\"cancelRowDelete(row)\"\n (deleteTriggered)=\"confirmRowDelete(row)\"\n />\n </div>\n </ng-template>\n `,\n imports: [NgStyle, SkyInlineDeleteModule],\n})\nexport class SkyAgGridRowDeleteComponent {\n public readonly inlineDeleteRefs =\n viewChildren<ElementRef<HTMLDivElement>>('inlineDeleteRef');\n\n public readonly inlineDeleteTemplateRef = viewChild<TemplateRef<unknown>>(\n 'inlineDeleteTemplateRef',\n );\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n Directive,\n ElementRef,\n EnvironmentInjector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n contentChild,\n inject,\n input,\n linkedSignal,\n output,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport {\n SKY_STACKING_CONTEXT,\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAffixer,\n SkyDynamicComponentService,\n SkyOverlayService,\n SkyScrollableHostService,\n} from '@skyux/core';\n\nimport { AgGridAngular } from 'ag-grid-angular';\nimport { IRowNode } from 'ag-grid-community';\nimport {\n BehaviorSubject,\n Subject,\n animationFrames,\n asapScheduler,\n delay,\n filter,\n map,\n merge,\n observeOn,\n sample,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\n\nimport { SkyAgGridRowDeleteComponent } from './ag-grid-row-delete.component';\nimport { SkyAgGridRowDeleteCancelArgs } from './types/ag-grid-row-delete-cancel-args';\nimport { SkyAgGridRowDeleteConfig } from './types/ag-grid-row-delete-config';\nimport { SkyAgGridRowDeleteConfirmArgs } from './types/ag-grid-row-delete-confirm-args';\nimport { SkyAgGridRowDeleteContents } from './types/ag-grid-row-delete-contents';\n\n@Directive({ selector: '[skyAgGridRowDelete]' })\nexport class SkyAgGridRowDeleteDirective\n implements AfterContentInit, AfterViewInit, OnDestroy\n{\n /**\n * The IDs of the data in the rows where the inline delete appears.\n */\n public readonly rowDeleteIds = input<string[], unknown>([], {\n transform: (value) => (Array.isArray(value) ? value.map(String) : []),\n });\n public readonly rowDeleteIdsChange = output<string[]>();\n\n /**\n * Emits a `SkyAgGridRowDeleteCancelArgs` object when a row's inline delete is cancelled.\n */\n public rowDeleteCancel = output<SkyAgGridRowDeleteCancelArgs>();\n\n /**\n * Emits a `SkyAgGridRowDeleteConfirmArgs` object when a row's inline delete is confirmed.\n */\n public rowDeleteConfirm = output<SkyAgGridRowDeleteConfirmArgs>();\n\n protected readonly agGrid = contentChild(AgGridAngular);\n\n readonly #ngUnsubscribe = new Subject<void>();\n #rowDeleteComponent: SkyAgGridRowDeleteComponent | undefined;\n #rowDeleteConfigs: SkyAgGridRowDeleteConfig[] = [];\n readonly #rowDeleteContents: SkyAgGridRowDeleteContents[] = [];\n #rowDeleteContentsQueue: Pick<\n SkyAgGridRowDeleteContents,\n 'id' | 'overlay'\n >[] = [];\n readonly #rowDeleteContentsQueued = new Subject<void>();\n readonly #rowDeleteIdsInternal = linkedSignal<unknown[], string[]>({\n source: this.rowDeleteIds,\n computation: (value) =>\n [...new Set(value)]\n .filter(Boolean)\n .map(String)\n .sort((a, b) => a.localeCompare(b)),\n equal: (a, b) => a.length === b.length && a.every((v, i) => v === b[i]),\n });\n readonly #clipPath = new BehaviorSubject<string | undefined>(undefined);\n readonly #zIndex = new BehaviorSubject(998);\n readonly #affixService = inject(SkyAffixService);\n readonly #dynamicComponentSvc = inject(SkyDynamicComponentService);\n readonly #elementRef = inject(ElementRef<HTMLElement>);\n readonly #environmentInjector = inject(EnvironmentInjector);\n readonly #overlayService = inject(SkyOverlayService);\n readonly #scrollableHostService = inject(SkyScrollableHostService);\n readonly #stackingContext = inject(SKY_STACKING_CONTEXT, { optional: true });\n readonly #viewContainerRef = inject(ViewContainerRef);\n readonly #viewUpdate = new Subject<void>();\n\n constructor() {\n if (this.#stackingContext) {\n this.#stackingContext.zIndex\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((zIndex) => {\n this.#zIndex.next(zIndex);\n });\n }\n const rowDeleteIds = toObservable<string[]>(this.#rowDeleteIdsInternal);\n toObservable(this.agGrid)\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n filter((agGrid) => !!agGrid),\n switchMap((agGrid: AgGridAngular) =>\n merge(\n agGrid.componentStateChanged,\n agGrid.filterChanged,\n agGrid.firstDataRendered,\n agGrid.gridReady,\n agGrid.gridSizeChanged.pipe(delay(500)),\n agGrid.rowDataUpdated.pipe(\n takeUntil(this.#ngUnsubscribe),\n tap((evt) => {\n const ids = this.#rowDeleteIdsInternal();\n this.#rowDeleteIdsInternal.set(\n ids.filter((id) => evt.api.getRowNode(id)),\n );\n }),\n ),\n agGrid.sortChanged,\n this.#viewUpdate.pipe(delay(200)),\n rowDeleteIds.pipe(\n takeUntil(this.#ngUnsubscribe),\n tap((value) => {\n this.#rowDeleteConfigs = this.#rowDeleteConfigs.filter(\n (config) => value.includes(config.id),\n );\n\n for (const id of value) {\n if (\n !this.#rowDeleteConfigs.some((config) => config.id === id)\n ) {\n this.#rowDeleteConfigs.push({\n id,\n pending: false,\n });\n }\n }\n\n this.rowDeleteIdsChange.emit(value);\n }),\n ),\n ).pipe(\n takeUntil(this.#ngUnsubscribe),\n // After change detection.\n observeOn(asapScheduler),\n // Wait for a render cycle.\n sample(animationFrames()),\n map(() => undefined),\n ),\n ),\n )\n .subscribe(() => {\n this.#updateRowDeleteStates();\n });\n\n this.#rowDeleteContentsQueued\n .pipe(\n takeUntil(this.#ngUnsubscribe),\n // After change detection.\n observeOn(asapScheduler),\n // Wait for a render cycle.\n sample(animationFrames()),\n )\n .subscribe(() => {\n const queue = [...this.#rowDeleteContentsQueue];\n this.#rowDeleteContentsQueue = [];\n queue.forEach(({ id, overlay }) => {\n if (\n this.#rowDeleteContents.findIndex(\n (content) => content.id === id,\n ) === -1 &&\n this.#rowDeleteIdsInternal().includes(id)\n ) {\n const inlineDeleteRef = this.#rowDeleteComponent\n ?.inlineDeleteRefs()\n .find(\n (elRef) => elRef.nativeElement.id === 'row-delete-ref-' + id,\n );\n const rowNode = this.agGrid()?.api.getRowNode(id);\n if (rowNode && inlineDeleteRef) {\n const affixer = this.#affixService.createAffixer(inlineDeleteRef);\n this.#affixToRow(affixer, id);\n this.#rowDeleteContents.push({ id, affixer, overlay });\n return;\n }\n }\n this.#overlayService.close(overlay);\n });\n });\n }\n\n public ngAfterContentInit(): void {\n this.#rowDeleteComponent = this.#dynamicComponentSvc.createComponent(\n SkyAgGridRowDeleteComponent,\n {\n environmentInjector: this.#environmentInjector,\n viewContainerRef: this.#viewContainerRef,\n },\n ).instance;\n }\n\n public ngAfterViewInit(): void {\n if (this.#stackingContext) {\n this.#scrollableHostService\n .watchScrollableHostClipPathChanges(this.#elementRef)\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((clipPath) => {\n this.#clipPath.next(clipPath);\n });\n }\n this.#viewUpdate.next();\n }\n\n public ngOnDestroy(): void {\n this.#viewUpdate.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n this.#rowDeleteContents.forEach(({ id }) => {\n this.#destroyRowDelete(id);\n });\n }\n\n public cancelRowDelete(row: IRowNode): void {\n if (row.id) {\n this.#rowDeleteIdsInternal.set(\n this.#rowDeleteIdsInternal().filter((id) => id !== row.id),\n );\n this.rowDeleteCancel.emit({ id: row.id });\n }\n }\n\n public confirmRowDelete(row: IRowNode): void {\n const rowConfig = this.#rowDeleteConfigs.find(\n (config) => config.id === row.id,\n );\n if (row.id && rowConfig) {\n rowConfig.pending = true;\n this.rowDeleteConfirm.emit({ id: row.id });\n }\n }\n\n public getRowDeleteItem(row: IRowNode): SkyAgGridRowDeleteConfig {\n return (\n this.#rowDeleteConfigs.find((config) => config.id === row.id) ?? {\n id: `${row.id}`,\n pending: false,\n }\n );\n }\n\n #affixToRow(affixer: SkyAffixer, id: string): void {\n const rowElement = this.#elementRef.nativeElement.querySelector(`\n [row-id=\"${id}\"] div[aria-colindex],\n .ag-row.sky-ag-grid-row-${id} div[aria-colindex]\n `);\n const values = this.#rowDeleteIdsInternal();\n\n if (rowElement && values.includes(id)) {\n affixer.affixTo(rowElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n isSticky: true,\n placement: 'above',\n verticalAlignment: 'top',\n horizontalAlignment: 'left',\n enableAutoFit: false,\n });\n }\n }\n\n #destroyRowDelete(id: string): void {\n const idx = this.#rowDeleteContents.findIndex(\n (content) => content.id === id,\n );\n if (idx > -1 && this.#rowDeleteContents[idx].overlay) {\n this.#rowDeleteContents[idx].affixer.destroy();\n this.#overlayService.close(this.#rowDeleteContents[idx].overlay);\n this.#rowDeleteContents.splice(idx, 1);\n }\n }\n\n #updateRowDeleteStates(): void {\n const deleteTemplateRef =\n this.#rowDeleteComponent?.inlineDeleteTemplateRef();\n const agGrid = this.agGrid();\n const value = this.#rowDeleteIdsInternal();\n\n const contentIds = this.#rowDeleteContents.map((content) => content.id);\n for (const id of contentIds) {\n if (!value.includes(id)) {\n this.#destroyRowDelete(id);\n }\n }\n\n if (deleteTemplateRef && agGrid) {\n for (const id of value) {\n this.#updateOneRowDeleteState(id, agGrid, deleteTemplateRef);\n }\n }\n }\n\n #updateOneRowDeleteState(\n id: string,\n agGrid: AgGridAngular,\n deleteTemplateRef: TemplateRef<unknown>,\n ): void {\n const rowNode = agGrid.api.getRowNode(id);\n const idx = this.#rowDeleteContents.findIndex(\n (content) => content.id === id,\n );\n if (idx > -1) {\n if (rowNode?.displayed) {\n // We must reaffix things when the data changes because the rows rerender and the previous element that the delete was affixed\n // to is destroyed.\n this.#affixToRow(this.#rowDeleteContents[idx].affixer, id);\n } else {\n this.#destroyRowDelete(id);\n }\n } else if (rowNode) {\n const overlay = this.#overlayService.create({\n enableScroll: true,\n environmentInjector: this.#environmentInjector,\n showBackdrop: false,\n closeOnNavigation: true,\n enableClose: false,\n enablePointerEvents: true,\n });\n\n overlay.attachTemplate(deleteTemplateRef, {\n $implicit: rowNode,\n tableWidth: () =>\n this.#elementRef.nativeElement.querySelector('.sky-ag-grid')\n .offsetWidth,\n getRowDeleteItem: (row: IRowNode) => this.getRowDeleteItem(row),\n cancelRowDelete: (row: IRowNode) => this.cancelRowDelete(row),\n confirmRowDelete: (row: IRowNode) => this.confirmRowDelete(row),\n });\n\n /**\n * We are manually setting the z-index here because overlays will always be on top of\n * the omnibar. The default manual setting is 2 less than the omnibar's z-index of 1000 and one less than\n * the header row's viewkeeper which is 999. We discussed changing the overlay service to allow for this\n * but decided against that change at this time due to its niche nature.\n */\n this.#zIndex\n .pipe(takeUntil(this.#ngUnsubscribe), takeUntil(overlay.closed))\n .subscribe((zIndex) => {\n overlay.componentRef.instance.zIndex = zIndex.toString(10);\n });\n this.#clipPath\n .pipe(takeUntil(this.#ngUnsubscribe), takeUntil(overlay.closed))\n .subscribe((clipPath) => {\n overlay.componentRef.instance.updateClipPath(clipPath);\n });\n this.#rowDeleteContentsQueue.push({ id, overlay });\n this.#rowDeleteContentsQueued.next();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AgGridAngular } from 'ag-grid-angular';\n\nimport { SkyAgGridResourcesModule } from '../shared/sky-ag-grid-resources.module';\n\nimport { SkyAgGridDataManagerAdapterDirective } from './ag-grid-data-manager-adapter.directive';\nimport { SkyAgGridRowDeleteDirective } from './ag-grid-row-delete.directive';\nimport { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';\n\n@NgModule({\n imports: [\n AgGridAngular,\n CommonModule,\n SkyAgGridDataManagerAdapterDirective,\n SkyAgGridResourcesModule,\n SkyAgGridRowDeleteDirective,\n SkyAgGridWrapperComponent,\n ],\n exports: [\n SkyAgGridDataManagerAdapterDirective,\n SkyAgGridRowDeleteDirective,\n SkyAgGridWrapperComponent,\n ],\n})\nexport class SkyAgGridModule {}\n","import { SkyAgGridLookupProperties } from './types/lookup-properties';\n\n/**\n * @internal\n */\nexport function applySkyLookupPropertiesDefaults(\n skyLookupProperties: SkyAgGridLookupProperties | undefined,\n): SkyAgGridLookupProperties {\n /* istanbul ignore if */\n if (!skyLookupProperties) {\n return {};\n }\n\n return {\n addClick: skyLookupProperties.addClick,\n ariaLabel: skyLookupProperties.ariaLabel || '',\n autocompleteAttribute: skyLookupProperties.autocompleteAttribute || 'off',\n data: skyLookupProperties.data || [],\n debounceTime: skyLookupProperties.debounceTime || 0,\n descriptorProperty: skyLookupProperties.descriptorProperty || 'name',\n disabled: skyLookupProperties.disabled || false,\n enableShowMore: skyLookupProperties.enableShowMore || false,\n idProperty: skyLookupProperties.idProperty,\n placeholderText: skyLookupProperties.placeholderText || '',\n propertiesToSearch: skyLookupProperties.propertiesToSearch,\n search: skyLookupProperties.search,\n searchAsync: skyLookupProperties.searchAsync,\n searchFilters: skyLookupProperties.searchFilters || [],\n searchResultsLimit: skyLookupProperties.searchResultsLimit,\n searchResultTemplate: skyLookupProperties.searchResultTemplate,\n searchTextMinimumCharacters:\n skyLookupProperties.searchTextMinimumCharacters || 1,\n selectMode: skyLookupProperties.selectMode,\n showAddButton: skyLookupProperties.showAddButton || false,\n showMoreConfig: skyLookupProperties.showMoreConfig || {},\n wrapperClass: 'ag-custom-component-popup',\n };\n}\n","/** The initial action that a cell editor should take when initialized. */\nexport enum SkyAgGridCellEditorInitialAction {\n /** The cell should be cleared. */\n Delete = 0,\n /** The cell value should be highlighted. */\n Highlighted = 1,\n /** The cell value should be replaced with the initializing value. */\n Replace = 2,\n /** The cell should not be modified and the cursor is placed at the end of the value. */\n Untouched = 3,\n}\n","import { ICellEditorParams, KeyCode } from 'ag-grid-community';\n\nimport { SkyAgGridCellEditorInitialAction } from './cell-editor-initial-action';\n\nexport class SkyAgGridCellEditorUtils {\n /**\n * Gets the initial action that a cell editor should take when initialized.\n * @param params The editor's initializing parameters.\n */\n public static getEditorInitialAction(\n params: ICellEditorParams | undefined,\n ): SkyAgGridCellEditorInitialAction {\n if (params?.cellStartedEdit) {\n if (\n params.eventKey === KeyCode.BACKSPACE ||\n params.eventKey === KeyCode.DELETE\n ) {\n return SkyAgGridCellEditorInitialAction.Delete;\n } else if (params.eventKey?.length === 1) {\n return SkyAgGridCellEditorInitialAction.Replace;\n } else {\n if (params.eventKey !== KeyCode.F2) {\n return SkyAgGridCellEditorInitialAction.Highlighted;\n } else {\n return SkyAgGridCellEditorInitialAction.Untouched;\n }\n }\n } else {\n return SkyAgGridCellEditorInitialAction.Untouched;\n }\n }\n\n public static subtractOrZero(\n minuend: number | null | undefined,\n subtrahend: number,\n ): number {\n // Swapping minuend with subtrahend when minuend is null or undefined results in\n // the subtrahend being subtracted from itself, which will always be 0.\n return (minuend ?? subtrahend) - subtrahend;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyAutocompleteModule } from '@skyux/lookup';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { SkyAgGridAutocompleteProperties } from '../../types/autocomplete-properties';\nimport { SkyCellEditorAutocompleteParams } from '../../types/cell-editor-autocomplete-params';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-autocomplete',\n templateUrl: './cell-editor-autocomplete.component.html',\n styleUrls: ['./cell-editor-autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyI18nModule,\n ],\n})\nexport class SkyAgGridCellEditorAutocompleteComponent\n implements ICellEditorAngularComp\n{\n public columnHeader: string | undefined;\n public editorForm = new UntypedFormGroup({\n selection: new UntypedFormControl(),\n });\n public rowNumber: number | undefined;\n public skyComponentProperties: SkyAgGridAutocompleteProperties = {};\n\n #autocompleteOpen = false;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n #params: SkyCellEditorAutocompleteParams | undefined;\n #elementRef = inject(ElementRef) as ElementRef<HTMLElement>;\n\n @ViewChild('skyCellEditorAutocomplete', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onBlur(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else {\n this.#stopEditingOnBlur();\n }\n }\n\n public agInit(params: SkyCellEditorAutocompleteParams): void {\n this.#params = params;\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('selection');\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n }\n\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.rowNumber = (this.#params.node?.rowIndex ?? 0) + 1;\n this.skyComponentProperties = this.#params.skyComponentProperties || {};\n }\n\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n if (this.input) {\n this.input.nativeElement.focus();\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n const charPress = this.#params?.eventKey as string;\n\n this.input.nativeElement.select();\n this.input.nativeElement.setRangeText(charPress);\n // Ensure the cursor is at the end of the text.\n this.input.nativeElement.setSelectionRange(\n charPress.length,\n charPress.length,\n );\n this.input.nativeElement.dispatchEvent(new Event('input'));\n }\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n this.input.nativeElement.select();\n }\n }\n });\n }\n\n public getValue(): any | undefined {\n const val = this.editorForm.get('selection')?.value;\n return val !== undefined && val !== null ? val : undefined;\n }\n\n public onAutocompleteOpenChange($event: boolean): void {\n this.#autocompleteOpen = $event;\n this.#stopEditingOnBlur();\n }\n\n #stopEditingOnBlur(): void {\n if (\n !this.#autocompleteOpen &&\n this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus') &&\n !this.#elementRef.nativeElement.matches(':focus-within')\n ) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","<div class=\"sky-ag-grid-cell-editor-autocomplete\" [formGroup]=\"editorForm\">\n <sky-autocomplete\n [allowAnyValue]=\"skyComponentProperties.allowAnyValue\"\n [data]=\"skyComponentProperties.data\"\n [debounceTime]=\"skyComponentProperties.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties.descriptorProperty\"\n [highlightSearchText]=\"skyComponentProperties.highlightSearchText ?? true\"\n [propertiesToSearch]=\"skyComponentProperties.propertiesToSearch\"\n [search]=\"skyComponentProperties.search\"\n [searchFilters]=\"skyComponentProperties.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties.searchTextMinimumCharacters\n \"\n (selectionChange)=\"\n skyComponentProperties.selectionChange &&\n skyComponentProperties.selectionChange($event)\n \"\n (openChange)=\"onAutocompleteOpenChange($event)\"\n >\n <input\n #skyCellEditorAutocomplete\n formControlName=\"selection\"\n skyAutocomplete\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_autocomplete_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n />\n </sky-autocomplete>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyAutonumericModule } from '@skyux/autonumeric';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellEditorCurrencyParams } from '../../types/cell-editor-currency-params';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\nimport { SkyAgGridCurrencyProperties } from '../../types/currency-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-currency',\n templateUrl: './cell-editor-currency.component.html',\n styleUrls: ['./cell-editor-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n SkyAutonumericModule,\n SkyI18nModule,\n ],\n})\nexport class SkyAgGridCellEditorCurrencyComponent\n implements ICellEditorAngularComp\n{\n public skyComponentProperties: SkyAgGridCurrencyProperties & {\n isCancellable: boolean;\n } = {\n isCancellable: false,\n };\n public columnHeader: string | undefined;\n public columnWidth: number | undefined;\n public currency = new UntypedFormControl();\n public editorForm = new UntypedFormGroup({\n currency: this.currency,\n });\n public params: SkyCellEditorCurrencyParams | undefined;\n public rowHeightWithoutBorders: number | undefined;\n public rowNumber: number | undefined;\n\n @ViewChild('skyCellEditorCurrency', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (event.relatedTarget && event.relatedTarget === this.params?.eGridCell) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n }\n }\n\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n readonly #changeDetector = inject(ChangeDetectorRef);\n #initialized = false;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorCurrencyParams): void {\n this.params = params;\n this.columnHeader = this.params.api.getDisplayNameForColumn(\n this.params.column,\n 'header',\n );\n this.rowNumber = this.params.rowIndex + 1;\n this.columnWidth = this.params.column.getActualWidth();\n this.rowHeightWithoutBorders = SkyAgGridCellEditorUtils.subtractOrZero(\n this.params.node?.rowHeight,\n 4,\n );\n this.skyComponentProperties = {\n ...(this.params.skyComponentProperties || {\n decimalPlaces: 2,\n currencySymbol: '$',\n }),\n isCancellable: false,\n };\n }\n\n public refresh(params: SkyCellEditorCurrencyParams): void {\n this.agInit(params);\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n this.input?.nativeElement.focus();\n\n // This setup is in `afterGuiAttached` due to the lifecycle of autonumeric which will highlight the initial value if it is in place when it renders.\n // Since we don't want that, we set the initial value after autonumeric initializes.\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(\n this.params,\n );\n const control = this.currency;\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(\n parseFloat(String(this.params?.eventKey)) || undefined,\n );\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(parseFloat(String(this.params?.value)));\n break;\n }\n }\n\n this.#changeDetector.markForCheck();\n\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted &&\n (this.params?.value ?? '') !== ''\n ) {\n this.input?.nativeElement.select();\n }\n\n // When the cell is initialized with the Enter key, we need to suppress the first `onPressEnter`.\n this.#initialized = this.params?.eventKey !== 'Enter';\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): number | undefined {\n return this.currency.value ?? undefined;\n }\n\n /**\n * The autoNumeric library's event handler suppresses the escape key event. This additional handler re-enables AG Grid's default functionality.\n */\n public onPressEscape(): void {\n if (this.params) {\n this.params.api.stopEditing(true);\n this.params.api.setFocusedCell(this.params.rowIndex, this.params.column);\n }\n }\n\n public onPressEnter(): void {\n if (this.params && this.#initialized) {\n this.params.stopEditing();\n }\n this.#initialized = true;\n }\n}\n","<ng-container [formGroup]=\"editorForm\">\n <input\n #skyCellEditorCurrency\n type=\"text\"\n [formControl]=\"currency\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_currency_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [skyAutonumeric]=\"skyComponentProperties\"\n [skyAutonumericFormChangesUnformatted]=\"params?.eventKey?.length === 1\"\n (keyup.enter)=\"onPressEnter()\"\n (keyup.escape)=\"onPressEscape()\"\n />\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyDatepickerModule } from '@skyux/datetime';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { PopupComponent } from 'ag-grid-community';\nimport { fromEvent } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { SkyCellEditorDatepickerParams } from '../../types/cell-editor-datepicker-params';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\nimport { SkyAgGridDatepickerProperties } from '../../types/datepicker-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-datepicker',\n templateUrl: './cell-editor-datepicker.component.html',\n styleUrls: ['./cell-editor-datepicker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n FormsModule,\n ReactiveFormsModule,\n SkyDatepickerModule,\n SkyI18nModule,\n ],\n})\nexport class SkyAgGridCellEditorDatepickerComponent\n extends PopupComponent\n implements ICellEditorAngularComp\n{\n public columnHeader: string | undefined;\n public columnWidth: number | undefined;\n public columnWidthWithoutBorders: number | undefined;\n public editorForm = new UntypedFormGroup({\n date: new UntypedFormControl(),\n });\n public rowHeightWithoutBorders: number | null | undefined;\n public rowNumber: number | undefined;\n public skyComponentProperties: SkyAgGridDatepickerProperties = {};\n\n @ViewChild('skyCellEditorDatepickerInput', { read: ElementRef })\n public datepickerInput: ElementRef | undefined;\n\n protected resolvedDateFormat = '';\n\n #calendarOpen = false;\n #params: SkyCellEditorDatepickerParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n\n #elementRef = inject(ElementRef) as ElementRef<HTMLElement>;\n #changeDetector = inject(ChangeDetectorRef);\n #themeSvc = inject(SkyThemeService, { optional: true }) || undefined;\n\n constructor() {\n super();\n }\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the datepicker input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else if (event.target === this.datepickerInput?.nativeElement) {\n this.#stopEditingOnBlur();\n }\n }\n\n public onCalendarOpenChange(isOpen: boolean): void {\n this.#calendarOpen = isOpen;\n this.#stopEditingOnBlur();\n }\n\n public onDateFormatChange(dateFormat: string): void {\n this.resolvedDateFormat = dateFormat;\n this.#changeDetector.markForCheck();\n }\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorDatepickerParams): void {\n this.#params = params;\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('date');\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(params.eventKey);\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n if (this.#params.skyComponentProperties?.disabled) {\n control.disable();\n }\n }\n this.#changeDetector.markForCheck();\n\n this.skyComponentProperties = this.#params.skyComponentProperties || {};\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.columnWidth = this.#params.column.getActualWidth();\n this.columnWidthWithoutBorders = this.columnWidth - 2;\n this.rowHeightWithoutBorders = (this.#params.node.rowHeight as number) - 3;\n this.rowNumber = this.#params.rowIndex + 1;\n this.#themeSvc?.settingsChange.subscribe((themeSettings) => {\n if (themeSettings.currentSettings.theme.name === 'modern') {\n this.columnWidthWithoutBorders = this.columnWidth;\n this.rowHeightWithoutBorders = this.#params?.node?.rowHeight;\n } else {\n this.columnWidthWithoutBorders =\n this.columnWidth === undefined ? undefined : this.columnWidth - 2;\n this.rowHeightWithoutBorders = SkyAgGridCellEditorUtils.subtractOrZero(\n this.#params?.node.rowHeight,\n 3,\n );\n }\n });\n }\n\n public getPopupPosition(): 'over' | 'under' | undefined {\n return 'over';\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n const datepickerInputEl = this.datepickerInput?.nativeElement as\n | HTMLInputElement\n | undefined;\n\n if (datepickerInputEl) {\n datepickerInputEl.focus();\n\n // programmatically set the value of in the input; however, do not do this via the form control so that the value is not formatted when editing starts.\n // Watch for the first blur and fire a 'change' event as programmatic changes won't queue a change event, but we need to do this so that formatting happens if the user tabs to the calendar button.\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n fromEvent(datepickerInputEl, 'blur')\n .pipe(first())\n .subscribe(() => {\n datepickerInputEl.dispatchEvent(new Event('change'));\n });\n datepickerInputEl.select();\n\n const charPress = this.#params?.eventKey as string;\n\n if (charPress) {\n datepickerInputEl.setRangeText(charPress);\n // Ensure the cursor is at the end of the text.\n datepickerInputEl.setSelectionRange(\n charPress.length,\n charPress.length,\n );\n }\n }\n\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n datepickerInputEl.select();\n }\n }\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): Date {\n this.datepickerInput?.nativeElement.blur();\n return this.editorForm.get('date')?.value;\n }\n\n #stopEditingOnBlur(): void {\n if (\n !this.#calendarOpen &&\n this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus') &&\n !this.#elementRef.nativeElement.matches(':focus-within')\n ) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","<div\n class=\"sky-ag-grid-cell-editor-datepicker\"\n [formGroup]=\"editorForm\"\n [style.width.px]=\"columnWidthWithoutBorders\"\n>\n <sky-datepicker\n data-sky-id=\"cell-datepicker\"\n pickerClass=\"ag-custom-component-popup\"\n (dateFormatChange)=\"onDateFormatChange($event)\"\n (openChange)=\"onCalendarOpenChange($event)\"\n >\n <input\n #skyCellEditorDatepickerInput\n formControlName=\"date\"\n skyDatepickerInput\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_datepicker_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [attr.title]=\"\n resolvedDateFormat\n ? ('skyux_datepicker_format_hint_text'\n | skyLibResources: resolvedDateFormat)\n : null\n \"\n [minDate]=\"skyComponentProperties.minDate\"\n [maxDate]=\"skyComponentProperties.maxDate\"\n [dateFormat]=\"skyComponentProperties.dateFormat\"\n [startingDay]=\"skyComponentProperties.startingDay\"\n [skyDatepickerNoValidate]=\"skyComponentProperties.skyDatepickerNoValidate\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n />\n </sky-datepicker>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyInputBoxModule } from '@skyux/forms';\nimport { SkyLookupModule } from '@skyux/lookup';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { ColumnResizedEvent } from 'ag-grid-community';\n\nimport { applySkyLookupPropertiesDefaults } from '../../apply-lookup-properties-defaults';\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyCellEditorLookupParams } from '../../types/cell-editor-lookup-params';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\nimport { SkyAgGridLookupProperties } from '../../types/lookup-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-lookup',\n templateUrl: './cell-editor-lookup.component.html',\n styleUrls: ['./cell-editor-lookup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n SkyInputBoxModule,\n FormsModule,\n ReactiveFormsModule,\n SkyLookupModule,\n SkyIdModule,\n ],\n})\nexport class SkyAgGridCellEditorLookupComponent\n implements ICellEditorAngularComp\n{\n @HostBinding('style.width.px')\n public width: number | undefined;\n\n public skyComponentProperties?: SkyAgGridLookupProperties;\n public isAlive = false;\n public editorForm = new UntypedFormGroup({\n selection: new UntypedFormControl({\n value: [],\n disabled: false,\n }),\n });\n public useAsyncSearch = false;\n\n protected labelText: string | undefined = undefined;\n\n #lookupOpen = false;\n #params: SkyCellEditorLookupParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n #changeDetector = inject(ChangeDetectorRef);\n #elementRef = inject(ElementRef<HTMLElement>);\n\n @HostListener('focusout', ['$event'])\n public onBlur(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n } else {\n this.#stopEditingOnBlur();\n }\n }\n\n public agInit(params: SkyCellEditorLookupParams): void {\n this.#params = params;\n if (!Array.isArray(this.#params.value)) {\n throw new Error(`Lookup value must be an array`);\n }\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('selection');\n this.labelText = params.skyComponentProperties?.ariaLabelledBy\n ? undefined\n : params.skyComponentProperties?.ariaLabel ||\n params.colDef.headerName ||\n params.colDef.headerTooltip ||\n params.colDef.field ||\n params.colDef.colId;\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue([]);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n\n if (this.#params.skyComponentProperties?.disabled) {\n control.disable();\n } else {\n control.enable();\n }\n }\n\n this.skyComponentProperties = this.#updateComponentProperties(this.#params);\n this.useAsyncSearch =\n typeof this.skyComponentProperties.searchAsync === 'function';\n this.isAlive = true;\n this.width = this.#params.column.getActualWidth();\n this.#params.api.addEventListener(\n 'columnResized',\n (event: ColumnResizedEvent) => {\n if (event.column?.getColId() === this.#params?.column.getColId()) {\n this.width = event.column?.getActualWidth();\n this.#changeDetector.markForCheck();\n }\n },\n );\n this.#changeDetector.markForCheck();\n }\n\n public isCancelAfterEnd(): boolean {\n // Shut down components to commit values before final value syncs to grid.\n this.isAlive = false;\n return false;\n }\n\n public getGui(): HTMLElement {\n return this.#elementRef.nativeElement;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getValue(): any[] {\n return this.editorForm.get('selection')?.value;\n }\n\n public isPopup(): boolean {\n return true;\n }\n\n public getPopupPosition(): 'over' | 'under' | undefined {\n return 'over';\n }\n\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n const lookupInput: HTMLTextAreaElement =\n this.#elementRef.nativeElement.querySelector('.sky-lookup-input');\n lookupInput.focus();\n if (this.#triggerType === SkyAgGridCellEditorInitialAction.Replace) {\n lookupInput.setRangeText(`${this.#params?.eventKey}`);\n // Ensure the cursor is at the end of the text.\n lookupInput.setSelectionRange(\n lookupInput.value.length,\n lookupInput.value.length,\n );\n lookupInput.dispatchEvent(new Event('input'));\n } else if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Untouched\n ) {\n // Ensure the cursor is at the end of the text.\n lookupInput.setSelectionRange(\n lookupInput.value.length,\n lookupInput.value.length,\n );\n }\n });\n }\n\n public onLookupOpenChange(isOpen: boolean): void {\n this.#lookupOpen = isOpen;\n this.#stopEditingOnBlur();\n }\n\n #updateComponentProperties(\n params: SkyCellEditorLookupParams,\n ): SkyAgGridLookupProperties {\n const skyLookupProperties = params.skyComponentProperties;\n return applySkyLookupPropertiesDefaults(skyLookupProperties);\n }\n\n #stopEditingOnBlur(): void {\n if (\n !this.#lookupOpen &&\n this.#params?.api.getGridOption('stopEditingWhenCellsLoseFocus') &&\n !this.#elementRef.nativeElement.matches(':focus-within')\n ) {\n this.#params?.api.stopEditing();\n }\n }\n}\n","@if (isAlive && useAsyncSearch) {\n <sky-input-box\n [disabled]=\"skyComponentProperties?.disabled\"\n [formGroup]=\"editorForm\"\n >\n <sky-lookup\n formControlName=\"selection\"\n [ariaLabelledBy]=\"\n skyComponentProperties?.ariaLabelledBy ?? screenReaderLabel.id\n \"\n [autocompleteAttribute]=\"skyComponentProperties?.autocompleteAttribute\"\n [data]=\"skyComponentProperties?.data\"\n [debounceTime]=\"skyComponentProperties?.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties?.descriptorProperty\"\n [enableShowMore]=\"skyComponentProperties?.enableShowMore\"\n [idProperty]=\"skyComponentProperties?.idProperty\"\n [placeholderText]=\"skyComponentProperties?.placeholderText\"\n [propertiesToSearch]=\"skyComponentProperties?.propertiesToSearch\"\n [search]=\"skyComponentProperties?.search\"\n [searchFilters]=\"skyComponentProperties?.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties?.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties?.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties?.searchTextMinimumCharacters\n \"\n [selectMode]=\"skyComponentProperties?.selectMode\"\n [showAddButton]=\"skyComponentProperties?.showAddButton\"\n [showMoreConfig]=\"skyComponentProperties?.showMoreConfig\"\n [wrapperClass]=\"skyComponentProperties?.wrapperClass\"\n (searchAsync)=\"skyComponentProperties?.searchAsync?.($event)\"\n (addClick)=\"skyComponentProperties?.addClick?.($event)\"\n (openChange)=\"onLookupOpenChange($event)\"\n />\n </sky-input-box>\n}\n@if (isAlive && !useAsyncSearch) {\n <sky-input-box\n [disabled]=\"skyComponentProperties?.disabled\"\n [formGroup]=\"editorForm\"\n >\n <sky-lookup\n formControlName=\"selection\"\n [ariaLabelledBy]=\"\n skyComponentProperties?.ariaLabelledBy ?? screenReaderLabel.id\n \"\n [autocompleteAttribute]=\"skyComponentProperties?.autocompleteAttribute\"\n [data]=\"skyComponentProperties?.data\"\n [debounceTime]=\"skyComponentProperties?.debounceTime\"\n [descriptorProperty]=\"skyComponentProperties?.descriptorProperty\"\n [enableShowMore]=\"skyComponentProperties?.enableShowMore\"\n [idProperty]=\"skyComponentProperties?.idProperty\"\n [placeholderText]=\"skyComponentProperties?.placeholderText\"\n [propertiesToSearch]=\"skyComponentProperties?.propertiesToSearch\"\n [search]=\"skyComponentProperties?.search\"\n [searchFilters]=\"skyComponentProperties?.searchFilters\"\n [searchResultsLimit]=\"skyComponentProperties?.searchResultsLimit\"\n [searchResultTemplate]=\"skyComponentProperties?.searchResultTemplate\"\n [searchTextMinimumCharacters]=\"\n skyComponentProperties?.searchTextMinimumCharacters\n \"\n [selectMode]=\"skyComponentProperties?.selectMode\"\n [showAddButton]=\"skyComponentProperties?.showAddButton\"\n [showMoreConfig]=\"skyComponentProperties?.showMoreConfig\"\n [wrapperClass]=\"skyComponentProperties?.wrapperClass\"\n (addClick)=\"skyComponentProperties?.addClick?.($event)\"\n (openChange)=\"onLookupOpenChange($event)\"\n />\n </sky-input-box>\n}\n<div #screenReaderLabel=\"skyId\" class=\"sky-screen-reader-only\" skyId>\n {{ labelText }}\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { ICellEditorParams } from 'ag-grid-community';\n\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyCellEditorNumberParams } from '../../types/cell-editor-number-params';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-number',\n templateUrl: './cell-editor-number.component.html',\n styleUrls: ['./cell-editor-number.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule, SkyI18nModule],\n})\nexport class SkyAgGridCellEditorNumberComponent\n implements ICellEditorAngularComp\n{\n public columnHeader: string | undefined;\n public columnWidth: number | undefined;\n public editorForm = new UntypedFormGroup({\n number: new UntypedFormControl(),\n });\n public rowHeightWithoutBorders: number | undefined;\n public rowNumber: number | undefined;\n public max: number | undefined;\n public min: number | undefined;\n\n @ViewChild('skyCellEditorNumber', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n }\n }\n\n #params: ICellEditorParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorNumberParams): void {\n this.#params = params;\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('number');\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(\n parseFloat(this.#params?.eventKey as string) || undefined,\n );\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n }\n\n this.max = params.skyComponentProperties?.max;\n this.min = params.skyComponentProperties?.min;\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.rowNumber = this.#params.rowIndex + 1;\n this.columnWidth = this.#params.column.getActualWidth();\n this.rowHeightWithoutBorders = (this.#params.node.rowHeight as number) - 4;\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n if (this.input) {\n this.input.nativeElement.focus();\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n this.input.nativeElement.select();\n }\n }\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): number | undefined {\n const val = this.editorForm.get('number')?.value;\n return val !== undefined && val !== null ? val : undefined;\n }\n}\n","<ng-container [formGroup]=\"editorForm\">\n <input\n #skyCellEditorNumber\n formControlName=\"number\"\n type=\"number\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_number_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n [max]=\"max ?? null\"\n [min]=\"min ?? null\"\n />\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewChild,\n} from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\nimport { ICellEditorParams } from 'ag-grid-community';\n\nimport { SkyAgGridCellEditorInitialAction } from '../../types/cell-editor-initial-action';\nimport { SkyCellEditorTextParams } from '../../types/cell-editor-text-params';\nimport { SkyAgGridCellEditorUtils } from '../../types/cell-editor-utils';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-editor-text',\n templateUrl: './cell-editor-text.component.html',\n styleUrls: ['./cell-editor-text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule, SkyI18nModule],\n})\nexport class SkyAgGridCellEditorTextComponent\n implements ICellEditorAngularComp\n{\n public textInputLabel: string | undefined;\n public columnHeader: string | undefined;\n public editorForm = new UntypedFormGroup({\n text: new UntypedFormControl(),\n });\n public rowNumber: number | undefined;\n public maxlength: number | undefined;\n\n @ViewChild('skyCellEditorText', { read: ElementRef })\n public input: ElementRef | undefined;\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (\n event.relatedTarget &&\n event.relatedTarget === this.#params?.eGridCell\n ) {\n // If focus is being set to the grid cell, schedule focus on the input.\n // This happens when the refreshCells API is called.\n this.afterGuiAttached();\n }\n }\n\n #params: ICellEditorParams | undefined;\n #triggerType: SkyAgGridCellEditorInitialAction | undefined;\n\n /**\n * agInit is called by agGrid once after the editor is created and provides the editor with the information it needs.\n * @param params The cell editor params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellEditorTextParams): void {\n this.#params = params;\n\n this.#triggerType = SkyAgGridCellEditorUtils.getEditorInitialAction(params);\n const control = this.editorForm.get('text');\n\n if (control) {\n switch (this.#triggerType) {\n case SkyAgGridCellEditorInitialAction.Delete:\n control.setValue(undefined);\n break;\n case SkyAgGridCellEditorInitialAction.Replace:\n control.setValue(params.eventKey);\n break;\n case SkyAgGridCellEditorInitialAction.Highlighted:\n case SkyAgGridCellEditorInitialAction.Untouched:\n default:\n control.setValue(params.value);\n break;\n }\n }\n\n this.maxlength = params.skyComponentProperties?.maxlength;\n this.columnHeader = this.#params.api.getDisplayNameForColumn(\n this.#params.column,\n 'header',\n );\n this.rowNumber = this.#params.rowIndex + 1;\n }\n\n /**\n * afterGuiAttached is called by agGrid after the editor is rendered in the DOM. Once it is attached the editor is ready to be focused on.\n */\n public afterGuiAttached(): void {\n // AG Grid sets focus to the cell via setTimeout, and this queues the input to focus after that.\n setTimeout(() => {\n if (this.input) {\n this.input.nativeElement.focus();\n if (\n this.#triggerType === SkyAgGridCellEditorInitialAction.Highlighted\n ) {\n this.input.nativeElement.select();\n }\n }\n });\n }\n\n /**\n * getValue is called by agGrid when editing is stopped to get the new value of the cell.\n */\n public getValue(): string | undefined {\n return this.editorForm.get('text')?.value || undefined;\n }\n}\n","<ng-container [formGroup]=\"editorForm\">\n <input\n #skyCellEditorText\n formControlName=\"text\"\n type=\"text\"\n [attr.aria-label]=\"\n 'sky_ag_grid_cell_editor_text_aria_label'\n | skyLibResources: columnHeader : rowNumber\n \"\n [style.width]=\"'100%'\"\n [style.height]=\"'100%'\"\n [maxlength]=\"maxlength ?? null\"\n />\n</ng-container>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n inject,\n signal,\n} from '@angular/core';\nimport { SkyStatusIndicatorModule } from '@skyux/indicators';\nimport { SkyPopoverMessage, SkyPopoverMessageType } from '@skyux/popovers';\nimport { SkyPopoverModule } from '@skyux/popovers';\n\nimport { AgColumn, CellFocusedEvent } from 'ag-grid-community';\nimport { Subject } from 'rxjs';\n\nimport { SkyCellRendererValidatorParams } from '../types/cell-renderer-validator-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-validator-tooltip',\n styleUrls: ['ag-grid-cell-validator-tooltip.component.scss'],\n templateUrl: 'ag-grid-cell-validator-tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, SkyPopoverModule, SkyStatusIndicatorModule],\n})\nexport class SkyAgGridCellValidatorTooltipComponent {\n @Input()\n public set params(value: SkyCellRendererValidatorParams | undefined) {\n this.cellRendererParams = value;\n\n if (value?.api && !this.#listenersAdded) {\n this.#listenersAdded = true;\n\n value.api.addEventListener(\n 'cellFocused',\n (eventParams: CellFocusedEvent) => {\n // We want to close any popovers that are opened when other cells are focused, but open a popover if the current cell is focused.\n if (\n (eventParams.column as AgColumn).getColId() ===\n value.column?.getColId() &&\n eventParams.rowIndex === value.node?.rowIndex\n ) {\n this.showPopover();\n } else {\n this.hidePopover();\n }\n },\n );\n\n value.api.addEventListener('cellEditingStarted', () => {\n this.hidePopover();\n });\n }\n\n if (typeof value?.skyComponentProperties?.validatorMessage === 'function') {\n this.validatorMessage = value.skyComponentProperties.validatorMessage(\n value.value,\n value.data,\n value?.node?.rowIndex,\n );\n } else {\n this.validatorMessage = value?.skyComponentProperties?.validatorMessage;\n }\n\n this.showValidatorMessage.set(this.#showValidatorMessage());\n this.#changeDetector.markForCheck();\n }\n\n public popoverMessageStream = new Subject<SkyPopoverMessage>();\n public validatorMessage: string | undefined;\n public cellRendererParams: SkyCellRendererValidatorParams | undefined;\n\n protected readonly showValidatorMessage = signal(false);\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n #listenersAdded = false;\n\n public hidePopover(): void {\n this.popoverMessageStream.next({ type: SkyPopoverMessageType.Close });\n }\n\n public showPopover(): void {\n if (this.#shouldShowPopover()) {\n this.popoverMessageStream.next({ type: SkyPopoverMessageType.Open });\n }\n }\n\n #showValidatorMessage(): boolean {\n if (!this.validatorMessage) {\n return false;\n }\n if (\n typeof this.cellRendererParams?.skyComponentProperties?.validator ===\n 'function'\n ) {\n return !this.cellRendererParams.skyComponentProperties.validator(\n this.cellRendererParams.value,\n this.cellRendererParams.data,\n this.cellRendererParams.node?.rowIndex,\n );\n } else {\n return true;\n }\n }\n\n #shouldShowPopover(): boolean {\n if (!this.showValidatorMessage()) {\n return false;\n }\n const editingCells = this.cellRendererParams?.api.getEditingCells() ?? [];\n return editingCells.length === 0;\n }\n}\n","<ng-template #displayValue>\n <ng-content />\n</ng-template>\n\n@if (showValidatorMessage()) {\n <div\n skyPopoverTrigger=\"mouseenter\"\n class=\"sky-validator-cell\"\n [skyPopover]=\"validatorPopover\"\n [skyPopoverMessageStream]=\"popoverMessageStream\"\n >\n <ng-container *ngTemplateOutlet=\"displayValue\" />\n <sky-status-indicator\n descriptionType=\"none\"\n indicatorType=\"danger\"\n class=\"sky-pull-right\"\n />\n </div>\n <sky-popover\n #validatorPopover\n data-sky-id=\"validatorPopover\"\n popoverType=\"danger\"\n >\n {{ validatorMessage }}\n </sky-popover>\n} @else {\n <ng-container *ngTemplateOutlet=\"displayValue\" />\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { SkyNumericOptions } from '@skyux/core';\nimport { SkyNumericModule } from '@skyux/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellRendererCurrencyParams } from '../../types/cell-renderer-currency-params';\nimport { SkyAgGridValidatorProperties } from '../../types/validator-properties';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-currency',\n templateUrl: './cell-renderer-currency.component.html',\n styleUrls: ['./cell-renderer-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyNumericModule],\n})\nexport class SkyAgGridCellRendererCurrencyComponent\n implements ICellRendererAngularComp\n{\n @Input()\n public set params(value: SkyCellRendererCurrencyParams) {\n this.agInit(value);\n }\n\n public columnWidth: number | undefined;\n public rowHeightWithoutBorders: number | undefined;\n public skyComponentProperties: SkyNumericOptions &\n SkyAgGridValidatorProperties = {};\n public numericOptions: SkyNumericOptions = {};\n public value: number | undefined;\n\n /**\n * agInit is called by AG Grid once after the renderer is created and provides the renderer with the information it needs.\n */\n public agInit(params: SkyCellRendererCurrencyParams): void {\n this.#updateProperties(params);\n }\n\n /**\n * refresh is called by AG Grid to update the cell without destroying and recreating the component.\n */\n public refresh(params: SkyCellRendererCurrencyParams): boolean {\n this.agInit(params);\n return false;\n }\n\n #updateProperties(params: SkyCellRendererCurrencyParams): void {\n this.value = params.value;\n this.skyComponentProperties = params.skyComponentProperties || {};\n this.skyComponentProperties.format = 'currency';\n this.skyComponentProperties.minDigits = 2;\n this.skyComponentProperties.truncate = false;\n }\n}\n","{{\n value === undefined ? undefined : (value | skyNumeric: skyComponentProperties)\n}}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyAgGridCellValidatorTooltipComponent } from '../../cell-validator/ag-grid-cell-validator-tooltip.component';\nimport { SkyCellRendererCurrencyParams } from '../../types/cell-renderer-currency-params';\n\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderer-currency.component';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-currency-validator',\n styles: `\n :host {\n display: contents;\n }\n `,\n templateUrl: 'cell-renderer-currency-validator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n SkyAgGridCellValidatorTooltipComponent,\n SkyAgGridCellRendererCurrencyComponent,\n ],\n})\nexport class SkyAgGridCellRendererCurrencyValidatorComponent\n implements ICellRendererAngularComp\n{\n @Input()\n public set parameters(value: SkyCellRendererCurrencyParams) {\n this.agInit(value);\n }\n\n protected cellRendererParams: SkyCellRendererCurrencyParams | undefined;\n\n #changeDetector: ChangeDetectorRef;\n\n constructor(changeDetector: ChangeDetectorRef) {\n this.#changeDetector = changeDetector;\n }\n\n /**\n * agInit is called by agGrid once after the renderer is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: SkyCellRendererCurrencyParams): void {\n this.cellRendererParams = params;\n this.#changeDetector.markForCheck();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public isNumeric(value: any): boolean {\n return !isNaN(parseFloat(value));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public refresh(params: SkyCellRendererCurrencyParams): boolean {\n return false;\n }\n}\n","@if (cellRendererParams) {\n <sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n @if (isNumeric(cellRendererParams.value)) {\n <sky-ag-grid-cell-renderer-currency [params]=\"cellRendererParams\" />\n } @else {\n {{ cellRendererParams.value }}\n }\n </sky-ag-grid-cell-validator-tooltip>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\n\nimport { SkyCellRendererLookupParams } from '../../types/cell-renderer-lookup-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-cell-renderer-lookup',\n templateUrl: './cell-renderer-lookup.component.html',\n styleUrls: ['./cell-renderer-lookup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyI18nModule],\n})\nexport class SkyAgGridCellRendererLookupComponent\n implements ICellRendererAngularComp\n{\n protected value = '';\n protected summaryCount = 0;\n\n #changeDetector: ChangeDetectorRef;\n\n constructor(changeDetector: ChangeDetectorRef) {\n this.#changeDetector = changeDetector;\n }\n\n public agInit(params: SkyCellRendererLookupParams): void {\n this.summaryCount = params.value?.length || 0;\n this.value = `${params.valueFormatted}`;\n this.#changeDetector.markForCheck();\n }\n\n public refresh(params: SkyCellRendererLookupParams): boolean {\n this.agInit(params);\n return true;\n }\n}\n","@if (summaryCount > 5) {\n {{ 'skyux_lookup_tokens_summary' | skyLibResources: summaryCount }}\n} @else {\n {{ value }}\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport {\n ICellRendererParams,\n IRowNode,\n RowNodeSelectedEvent,\n} from 'ag-grid-community';\nimport {\n BehaviorSubject,\n Subscription,\n fromEventPattern,\n isObservable,\n} from 'rxjs';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-row-selector',\n templateUrl: './cell-renderer-row-selector.component.html',\n styleUrls: ['./cell-renderer-row-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [SkyThemeComponentClassDirective, SkyCheckboxModule, AsyncPipe],\n})\nexport class SkyAgGridCellRendererRowSelectorComponent\n implements ICellRendererAngularComp, OnDestroy\n{\n public dataField: string | undefined;\n public rowNode: IRowNode | undefined;\n public rowNumber: number | undefined;\n\n protected checked = new BehaviorSubject(false);\n protected readonly disabled = new BehaviorSubject(false);\n protected readonly label = new BehaviorSubject('');\n\n readonly #labelResourceKey = 'sky_ag_grid_row_selector_aria_label';\n #params: ICellRendererParams | undefined;\n readonly #resources = inject(SkyLibResourcesService);\n #subscription = new Subscription();\n\n constructor() {\n this.#setLabel();\n }\n\n public ngOnDestroy(): void {\n this.#subscription.unsubscribe();\n }\n\n /**\n * agInit is called by agGrid once after the cell is created and provides the renderer with the information it needs.\n * @param params The cell renderer params that include data about the cell, column, row, and grid.\n */\n public agInit(params: ICellRendererParams): void {\n this.#setParameters(params);\n }\n\n /**\n * Used by agGrid to update cell value after a user triggers a refresh.\n * Returning true tells agGrid that the refresh was successful.\n */\n public refresh(params: ICellRendererParams): boolean {\n this.#setParameters(params);\n return true;\n }\n\n public updateRow(rowChecked: boolean): void {\n this.checked.next(rowChecked);\n if (this.rowNode) {\n const rowSelected = this.rowNode.isSelected();\n if (rowSelected !== rowChecked) {\n this.rowNode.setSelected(rowChecked, undefined, 'checkboxSelected');\n }\n if (this.dataField) {\n this.rowNode.data[this.dataField] = this.checked.value;\n }\n }\n }\n\n #setParameters(params: ICellRendererParams): void {\n this.#params = params;\n this.disabled.next(this.#params?.node?.selectable === false);\n this.dataField = this.#params?.colDef?.field;\n this.rowNode = this.#params?.node as IRowNode | undefined;\n const rowIndex = this.rowNode?.rowIndex ?? NaN;\n this.rowNumber = Number.isNaN(rowIndex) ? undefined : rowIndex + 1;\n\n this.#subscription.unsubscribe();\n this.#subscription = new Subscription();\n this.#setLabel();\n\n const rowSelected = !!this.#params.node?.isSelected();\n\n if (this.dataField) {\n this.checked.next(!!this.#params.value);\n if (rowSelected !== this.checked.value) {\n this.rowNode?.setSelected(this.checked.value);\n }\n } else {\n this.checked.next(rowSelected);\n }\n\n this.#subscription.add(\n fromEventPattern<RowNodeSelectedEvent>(\n (handler) => this.rowNode?.addEventListener('rowSelected', handler),\n (handler) => this.rowNode?.removeEventListener('rowSelected', handler),\n ).subscribe((event) => this.#rowSelectedListener(event)),\n );\n }\n\n #setLabel(): void {\n const cellRendererParamLabel =\n this.#params?.colDef?.cellRendererParams?.label;\n if (this.#params?.colDef && typeof cellRendererParamLabel === 'string') {\n this.label.next(this.#params.colDef.cellRendererParams.label);\n } else if (\n this.#params?.colDef &&\n typeof cellRendererParamLabel === 'function'\n ) {\n const label = this.#params.colDef.cellRendererParams.label(\n this.#params.data,\n );\n if (isObservable(label)) {\n this.#subscription.add(\n label.subscribe((value: unknown) => this.label.next(String(value))),\n );\n } else {\n this.label.next(label);\n }\n } else {\n this.#subscription.add(\n this.#resources\n .getString(this.#labelResourceKey, this.rowNumber ?? '')\n .subscribe((value) => this.label.next(value)),\n );\n }\n }\n\n #rowSelectedListener(event: RowNodeSelectedEvent): void {\n this.checked.next(!!event.node.isSelected());\n if (this.rowNode && this.dataField) {\n this.rowNode.data[this.dataField] = this.checked.value;\n }\n }\n}\n","<sky-checkbox\n data-sky-id=\"row-checkbox\"\n [disabled]=\"(disabled | async) || false\"\n [tabindex]=\"0\"\n [labelHidden]=\"true\"\n [labelText]=\"(label | async) || ''\"\n [checked]=\"(checked | async) || false\"\n (change)=\"updateRow(!!$event.checked)\"\n/>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, TemplateRef } from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ICellRendererParams } from 'ag-grid-community';\n\nimport { CellRendererTemplateContext } from './cell-renderer-template-context.type';\n\ntype CellState =\n | {\n hasTemplate: true;\n template: TemplateRef<CellRendererTemplateContext>;\n context: CellRendererTemplateContext;\n }\n | {\n hasTemplate: false;\n template: undefined;\n context?: unknown;\n };\n\n@Component({\n selector: 'sky-ag-grid-cell-renderer-template',\n template: `@if (state.hasTemplate) {\n <ng-container *ngTemplateOutlet=\"state.template; context: state.context\" />\n }`,\n imports: [NgTemplateOutlet],\n})\nexport class SkyAgGridCellRendererTemplateComponent\n implements ICellRendererAngularComp\n{\n protected state: CellState = {\n hasTemplate: false,\n template: undefined,\n context: { value: undefined, data: undefined },\n };\n\n public agInit(params: ICellRendererParams): void {\n const hasTemplate = !!(\n params.colDef?.cellRendererParams &&\n 'template' in params.colDef.cellRendererParams &&\n params.colDef.cellRendererParams.template\n );\n const template: TemplateRef<CellRendererTemplateContext> | undefined =\n hasTemplate\n ? (params.colDef?.cellRendererParams\n .template as TemplateRef<CellRendererTemplateContext>)\n : undefined;\n this.state = {\n hasTemplate,\n template,\n context: { value: params.value, row: params.data },\n } as CellState;\n }\n\n public refresh(params: ICellRendererParams): boolean {\n this.agInit(params);\n return false;\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n inject,\n} from '@angular/core';\n\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { SkyAgGridCellValidatorTooltipComponent } from '../../cell-validator/ag-grid-cell-validator-tooltip.component';\nimport { SkyCellRendererValidatorParams } from '../../types/cell-renderer-validator-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-cell-renderer-validator-tooltip',\n templateUrl: 'cell-renderer-validator-tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyAgGridCellValidatorTooltipComponent, AsyncPipe],\n})\nexport class SkyAgGridCellRendererValidatorTooltipComponent\n implements ICellRendererAngularComp, OnDestroy\n{\n @Input()\n public set params(value: SkyCellRendererValidatorParams) {\n this.agInit(value);\n }\n\n public cellRendererParams: SkyCellRendererValidatorParams | undefined;\n public value: unknown;\n\n protected valueObservable = new BehaviorSubject('');\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n #valueSubscription: Subscription | undefined;\n\n public ngOnDestroy(): void {\n this.#valueSubscription?.unsubscribe();\n this.valueObservable.complete();\n }\n\n public agInit(params: SkyCellRendererValidatorParams): void {\n this.cellRendererParams = params;\n this.#valueSubscription?.unsubscribe();\n this.#valueSubscription = new Subscription();\n if (\n typeof params.skyComponentProperties?.valueResourceObservable ===\n 'function'\n ) {\n this.#valueSubscription.add(\n params.skyComponentProperties\n .valueResourceObservable(\n params.value,\n params.data,\n params.node?.rowIndex,\n )\n .subscribe((result) => {\n this.valueObservable.next(result);\n }),\n );\n } else {\n this.valueObservable.next(params.valueFormatted ?? params.value);\n }\n this.#changeDetector.markForCheck();\n }\n\n public refresh(params: SkyCellRendererValidatorParams): boolean {\n this.agInit(params);\n return false;\n }\n}\n","<sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n {{ valueObservable | async }}\n</sky-ag-grid-cell-validator-tooltip>\n","import { Injectable } from '@angular/core';\n\nimport { ColumnGroup } from 'ag-grid-community';\n\n/**\n * To display a help button beside the column group header, create a component containing\n * [`sky-help-inline`](https://developer.blackbaud.com/skyux/components/help-inline),\n * and inject SkyAgGridHeaderGroupInfo to access the column group\n * information, such as display name.\n * Add the component to the `headerGroupComponentParams.inlineHelpComponent`\n * property of the [column group definition](https://www.ag-grid.com/angular-data-grid/column-groups/).\n * @see SkyAgGridHeaderGroupParams\n */\n@Injectable()\nexport class SkyAgGridHeaderGroupInfo {\n /**\n * [Column group information from AG Grid](https://www.ag-grid.com/angular-data-grid/column-object-group/).\n */\n public columnGroup: ColumnGroup | undefined;\n /**\n * Display name of the column group.\n */\n public displayName: string | undefined;\n /**\n * AG Grid's [`context` field](https://www.ag-grid.com/angular-data-grid/context/).\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public context: any;\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EnvironmentInjector,\n OnDestroy,\n ViewChild,\n inject,\n} from '@angular/core';\nimport {\n SkyDynamicComponentLocation,\n SkyDynamicComponentService,\n} from '@skyux/core';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { IHeaderGroupAngularComp } from 'ag-grid-angular';\nimport { ColumnGroupOpenedEvent, ProvidedColumnGroup } from 'ag-grid-community';\nimport {\n BehaviorSubject,\n Observable,\n Subscription,\n fromEventPattern,\n} from 'rxjs';\n\nimport { SkyAgGridHeaderGroupInfo } from '../types/header-group-info';\nimport { SkyAgGridHeaderGroupParams } from '../types/header-group-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-header-group',\n templateUrl: './header-group.component.html',\n styleUrls: ['./header-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyThemeModule, SkyIconModule, AsyncPipe, SkyI18nModule],\n})\nexport class SkyAgGridHeaderGroupComponent\n implements IHeaderGroupAngularComp, OnDestroy, AfterViewInit\n{\n @ViewChild('inlineHelpContainer', { read: ElementRef, static: true })\n public inlineHelpContainer: ElementRef | undefined;\n\n protected params: SkyAgGridHeaderGroupParams | undefined = undefined;\n protected isExpandable$: Observable<boolean>;\n protected isExpanded$: Observable<boolean>;\n\n #columnGroup: ProvidedColumnGroup | undefined = undefined;\n #isExpandableSubject = new BehaviorSubject<boolean>(false);\n #isExpandedSubject = new BehaviorSubject<boolean>(false);\n #subscriptions = new Subscription();\n #viewInitialized = false;\n #agInitialized = false;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #dynamicComponentService = inject(SkyDynamicComponentService);\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n constructor() {\n this.isExpandable$ = this.#isExpandableSubject.asObservable();\n this.isExpanded$ = this.#isExpandedSubject.asObservable();\n }\n\n public ngAfterViewInit(): void {\n this.#viewInitialized = true;\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public ngOnDestroy(): void {\n this.#subscriptions.unsubscribe();\n }\n\n public agInit(params: SkyAgGridHeaderGroupParams | undefined): void {\n this.#agInitialized = true;\n this.params = params;\n this.#subscriptions.unsubscribe();\n if (!params) {\n return;\n }\n this.#subscriptions = new Subscription();\n this.#columnGroup = params.columnGroup.getProvidedColumnGroup();\n this.#isExpandableSubject.next(this.#columnGroup.isExpandable());\n if (this.#isExpandableSubject.getValue()) {\n this.#subscriptions.add(\n fromEventPattern<ColumnGroupOpenedEvent>(\n (handler) =>\n params.api.addEventListener('columnGroupOpened', handler),\n (handler) =>\n params.api.removeEventListener('columnGroupOpened', handler),\n ).subscribe((event) => {\n if (\n this.#columnGroup &&\n event.columnGroups.includes(this.#columnGroup)\n ) {\n this.#isExpandedSubject.next(this.#columnGroup.isExpanded());\n }\n }),\n );\n }\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public setExpanded($event: boolean): void {\n this.params?.setExpanded($event);\n }\n\n #updateInlineHelp(): void {\n if (!this.#viewInitialized || !this.#agInitialized) {\n return;\n }\n\n const colGroupDef = this.params?.columnGroup?.getColGroupDef();\n const inlineHelpComponent =\n colGroupDef?.headerGroupComponentParams?.inlineHelpComponent;\n\n if (inlineHelpComponent) {\n const headerGroupInfo = new SkyAgGridHeaderGroupInfo();\n headerGroupInfo.columnGroup = this.params?.columnGroup;\n headerGroupInfo.context = this.params?.context;\n headerGroupInfo.displayName = this.params?.displayName;\n\n this.#dynamicComponentService.createComponent(inlineHelpComponent, {\n providers: [\n {\n provide: SkyAgGridHeaderGroupInfo,\n useValue: headerGroupInfo,\n },\n ],\n environmentInjector: this.#environmentInjector,\n referenceEl: this.inlineHelpContainer?.nativeElement,\n location: SkyDynamicComponentLocation.ElementBottom,\n });\n }\n }\n}\n","@if (params?.displayName) {\n <span\n class=\"header-group-text\"\n role=\"presentation\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n >{{ params?.displayName }}</span\n >\n}\n@if (isExpandable$ | async) {\n @if (isExpanded$ | async) {\n <button\n class=\"sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n [attr.aria-label]=\"\n 'sky_ag_grid_column_group_header_collapse_aria_label'\n | skyLibResources: params?.displayName\n \"\n (click)=\"setExpanded(false)\"\n >\n <sky-icon iconName=\"chevron-double-left\" />\n </button>\n } @else {\n <button\n class=\"sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n [attr.aria-label]=\"\n 'sky_ag_grid_column_group_header_expand_aria_label'\n | skyLibResources: params?.displayName\n \"\n (click)=\"setExpanded(true)\"\n >\n <sky-icon iconName=\"chevron-double-right\" />\n </button>\n }\n}\n<span #inlineHelpContainer class=\"sky-control-help-container\"></span>\n","import { Injectable } from '@angular/core';\n\nimport { Column } from 'ag-grid-community';\n\n/**\n * To display a help button beside the column header, create a component containing\n * [`sky-help-inline`](https://developer.blackbaud.com/skyux/components/help-inline),\n * and inject SkyAgGridHeaderInfo to access the column information, such\n * as display name.\n * Add the component to the `headerComponentParams.inlineHelpComponent`\n * property of the [column definition](https://www.ag-grid.com/angular-data-grid/column-definitions/).\n * @see SkyAgGridHeaderParams\n */\n@Injectable()\nexport class SkyAgGridHeaderInfo {\n /**\n * [Column information from AG Grid](https://www.ag-grid.com/angular-data-grid/column-object/).\n */\n public column: Column | undefined;\n /**\n * Display name of the column.\n */\n public displayName: string | undefined;\n /**\n * AG Grid's [`context` field](https://www.ag-grid.com/angular-data-grid/context/).\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public context: any;\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EnvironmentInjector,\n OnDestroy,\n ViewChild,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport {\n SkyDynamicComponentLocation,\n SkyDynamicComponentService,\n} from '@skyux/core';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { IHeaderAngularComp } from 'ag-grid-angular';\nimport { ColumnMovedEvent } from 'ag-grid-community';\nimport { BehaviorSubject, Subscription, fromEventPattern } from 'rxjs';\n\nimport { SkyAgGridHeaderInfo } from '../types/header-info';\nimport { SkyAgGridHeaderParams } from '../types/header-params';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-ag-grid-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.title]': 'accessibleHeaderText()',\n '[attr.aria-label]': 'displayName() || accessibleHeaderText()',\n '[attr.role]': '\"note\"',\n },\n imports: [SkyIconModule, SkyThemeModule, AsyncPipe, SkyI18nModule],\n})\nexport class SkyAgGridHeaderComponent\n implements IHeaderAngularComp, OnDestroy, AfterViewInit\n{\n public readonly filterEnabled$ = new BehaviorSubject<boolean>(false);\n\n // For accessibility, we need to set the title attribute on the header element if there is no visible header text.\n // https://dequeuniversity.com/rules/axe/4.5/empty-table-header?application=axeAPI\n protected readonly accessibleHeaderText = computed(() => {\n const params = this.params();\n if (\n params?.displayName &&\n !params?.column.getColDef().headerComponentParams?.headerHidden\n ) {\n return undefined;\n } else {\n return params?.displayName || params?.column.getColDef().field;\n }\n });\n\n @ViewChild('inlineHelpContainer', { read: ElementRef, static: true })\n protected inlineHelpContainer: ElementRef | undefined;\n\n protected readonly params = signal<SkyAgGridHeaderParams | undefined>(\n undefined,\n );\n protected sorted = '';\n protected readonly sortOrder$ = new BehaviorSubject<\n 'asc' | 'desc' | undefined\n >(undefined);\n protected readonly sortIndexDisplay$ = new BehaviorSubject<string>('');\n\n protected displayName = computed<string | undefined>(() => {\n const params = this.params();\n if (\n params?.displayName &&\n !params?.column.getColDef().headerComponentParams?.headerHidden\n ) {\n return params.displayName;\n } else {\n return undefined;\n }\n });\n\n #subscriptions = new Subscription();\n #inlineHelpComponentRef: ComponentRef<unknown> | undefined;\n #viewInitialized = false;\n #agInitialized = false;\n #leftPosition = 0;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #dynamicComponentService = inject(SkyDynamicComponentService);\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n public ngAfterViewInit(): void {\n this.#viewInitialized = true;\n this.#updateInlineHelp();\n }\n\n public ngOnDestroy(): void {\n this.#subscriptions.unsubscribe();\n }\n\n public agInit(params: SkyAgGridHeaderParams | undefined): void {\n this.#agInitialized = true;\n this.params.set(params);\n this.#subscriptions.unsubscribe();\n if (!params) {\n return;\n }\n this.#leftPosition = params.column.getLeft() ?? 0;\n this.#subscriptions = new Subscription();\n if (params.column.isFilterAllowed()) {\n this.#subscriptions.add(\n fromEventPattern(\n (handler) => params.column.addEventListener('filterChanged', handler),\n (handler) =>\n params.column.removeEventListener('filterChanged', handler),\n ).subscribe(() => {\n const isFilterActive = params.column.isFilterActive();\n if (isFilterActive !== this.filterEnabled$.getValue()) {\n this.filterEnabled$.next(isFilterActive);\n }\n }),\n );\n }\n if (params.enableSorting) {\n // Column sort state changes\n this.#subscriptions.add(\n fromEventPattern(\n (handler) => params.column.addEventListener('sortChanged', handler),\n (handler) =>\n params.column.removeEventListener('sortChanged', handler),\n ).subscribe(() => {\n this.#updateSort();\n }),\n );\n // Other column sort state changes, for multi-column sorting\n this.#subscriptions.add(\n fromEventPattern(\n (handler) => params.api.addEventListener('sortChanged', handler),\n (handler) => params.api.removeEventListener('sortChanged', handler),\n ).subscribe(() => {\n this.#updateSortIndex();\n }),\n );\n this.#updateSort();\n this.#updateSortIndex();\n }\n\n // When the column is moved left via the keyboard, the element is detached\n // and reattached to the DOM to maintain DOM order, and its focus is lost.\n this.#subscriptions.add(\n fromEventPattern<ColumnMovedEvent>(\n (handler) => params.api.addEventListener('columnMoved', handler),\n (handler) => params.api.removeEventListener('columnMoved', handler),\n ).subscribe((event) => {\n const left = event.column?.getLeft() ?? 0;\n const oldLeft = this.#leftPosition;\n if (\n event.column === params.column &&\n event.source === 'uiColumnMoved' &&\n left < oldLeft\n ) {\n params.eGridHeader.focus();\n }\n this.#leftPosition = left;\n }),\n );\n\n this.#updateInlineHelp();\n this.#changeDetector.markForCheck();\n }\n\n public onMenuClick($event: Event): void {\n this.params()?.showColumnMenu($event.target as HTMLElement);\n }\n\n public onSortRequested(event: MouseEvent): void {\n if (this.params()?.enableSorting) {\n this.params()?.progressSort(event.shiftKey);\n }\n }\n\n public refresh(params: SkyAgGridHeaderParams): boolean {\n this.agInit(params);\n return false;\n }\n\n #updateInlineHelp(): void {\n if (!this.#viewInitialized || !this.#agInitialized) {\n return;\n }\n\n const inlineHelpComponent = this.params()?.inlineHelpComponent;\n\n if (\n inlineHelpComponent &&\n (!this.#inlineHelpComponentRef ||\n this.#inlineHelpComponentRef.componentType !== inlineHelpComponent)\n ) {\n this.#dynamicComponentService.removeComponent(\n this.#inlineHelpComponentRef,\n );\n\n const headerInfo = new SkyAgGridHeaderInfo();\n headerInfo.column = this.params()?.column;\n headerInfo.context = this.params()?.context;\n headerInfo.displayName = this.params()?.displayName;\n\n this.#inlineHelpComponentRef =\n this.#dynamicComponentService.createComponent(inlineHelpComponent, {\n providers: [\n {\n provide: SkyAgGridHeaderInfo,\n useValue: headerInfo,\n },\n ],\n environmentInjector: this.#environmentInjector,\n referenceEl: this.inlineHelpContainer?.nativeElement,\n location: SkyDynamicComponentLocation.ElementBottom,\n });\n } else if (!inlineHelpComponent) {\n this.#dynamicComponentService.removeComponent(\n this.#inlineHelpComponentRef,\n );\n }\n }\n\n #updateSort(): void {\n this.sortOrder$.next(this.params()?.column.getSort() || undefined);\n }\n\n #updateSortIndex(): void {\n const sortIndex = this.params()?.column.getSortIndex();\n const otherSortColumns = this.params()\n ?.api?.getColumns()\n ?.some(\n (column) =>\n column.getColId() !== this.params()?.column.getColId() &&\n !!column.getSort(),\n );\n if (sortIndex !== undefined && sortIndex !== null && otherSortColumns) {\n this.sortIndexDisplay$.next(`${sortIndex + 1}`);\n } else {\n this.sortIndexDisplay$.next('');\n }\n }\n}\n","<div class=\"ag-cell-label-container\" role=\"presentation\">\n @if (params()?.enableMenu) {\n <span\n class=\"ag-header-icon ag-header-cell-menu-button\"\n aria-hidden=\"true\"\n (click)=\"onMenuClick($event)\"\n >\n <sky-icon iconName=\"more-actions\" />\n </span>\n }\n <div class=\"ag-header-cell-label\" role=\"presentation\">\n <span class=\"ag-header-cell-label-and-icons\">\n @if (params()?.enableSorting) {\n <button\n aria-hidden=\"true\"\n class=\"ag-header-cell-text ag-header-cell-label-sortable sky-btn-link-inline\"\n tabindex=\"-1\"\n type=\"button\"\n [attr.aria-label]=\"accessibleHeaderText()\"\n [innerText]=\"displayName() ?? ''\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n (click)=\"onSortRequested($event)\"\n ></button>\n } @else if (displayName()) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-cell-text\"\n [skyThemeClass]=\"{ 'sky-font-heading-4': 'modern' }\"\n >{{ displayName() }}</span\n >\n }\n @if (filterEnabled$ | async) {\n <span\n aria-hidden=\"true\"\n class=\"ag-header-icon ag-header-label-icon ag-filter-icon\"\n ><sky-icon iconName=\"filter\"\n /></span>\n }\n @if (params()?.enableSorting) {\n @if (sortOrder$ | async; as sortDirection) {\n <button\n class=\"ag-sort-indicator-container sky-btn sky-btn-icon-borderless\"\n type=\"button\"\n (click)=\"onSortRequested($event)\"\n >\n @if (sortDirection === 'desc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon iconName=\"chevron-down\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_desc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n @if (sortDirection === 'asc') {\n <span class=\"ag-header-icon ag-header-label-icon\">\n <sky-icon iconName=\"chevron-up\" />\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_asc'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span></span\n >\n }\n\n @if (sortIndexDisplay$ | async; as sortIndexDisplay) {\n <span\n aria-hidden=\"true\"\n class=\"ag-sort-indicator-icon ag-sort-order\"\n >{{ sortIndexDisplay }}</span\n >\n }\n </button>\n } @else {\n <span class=\"sky-screen-reader-only\">{{\n 'sky_ag_grid_column_header_sort_button_aria_label_currently_not_sorted'\n | skyLibResources: displayName() ?? accessibleHeaderText()\n }}</span>\n }\n }\n </span>\n <span #inlineHelpContainer class=\"sky-control-help-container\"></span>\n </div>\n</div>\n","export const iconMap: Record<\n string,\n {\n name: string;\n size: number;\n }\n> = {\n sortDescending: {\n name: 'chevron-down',\n size: 16,\n },\n sortAscending: {\n name: 'chevron-up',\n size: 16,\n },\n columnMoveMove: {\n name: 'arrow-move',\n size: 20,\n },\n columnMoveHide: {\n name: 'eye-off',\n size: 16,\n },\n columnMoveLeft: {\n name: 'arrow-move',\n size: 20,\n },\n columnMoveRight: {\n name: 'arrow-move',\n size: 20,\n },\n columnMovePin: {\n name: 'arrow-move',\n size: 20,\n },\n};\nexport type IconMapType = typeof iconMap;\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { SkyWaitModule } from '@skyux/indicators';\n\nimport { ILoadingOverlayAngularComp } from 'ag-grid-angular';\nimport { ILoadingOverlayParams } from 'ag-grid-community';\n\n@Component({\n selector: 'sky-ag-grid-loading',\n imports: [SkyWaitModule],\n templateUrl: './loading.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAgGridLoadingComponent implements ILoadingOverlayAngularComp {\n public agInit(_params: ILoadingOverlayParams): void {\n // Do nothing.\n }\n\n public refresh(_params: ILoadingOverlayParams): void {\n // Do nothing.\n }\n}\n","<sky-wait [isWaiting]=\"true\" />\n","/**\n * @internal\n */\nexport enum SkyCellClass {\n Autocomplete = 'sky-ag-grid-cell-autocomplete',\n Currency = 'sky-ag-grid-cell-currency',\n Date = 'sky-ag-grid-cell-date',\n Editable = 'sky-ag-grid-cell-editable',\n Invalid = 'sky-ag-grid-cell-invalid',\n Lookup = 'sky-ag-grid-cell-lookup',\n Number = 'sky-ag-grid-cell-number',\n RightAligned = 'sky-ag-grid-cell-right-aligned',\n RowSelector = 'sky-ag-grid-cell-row-selector',\n Template = 'sky-ag-grid-cell-template',\n Text = 'sky-ag-grid-cell-text',\n Uneditable = 'sky-ag-grid-cell-uneditable',\n Validator = 'sky-ag-grid-cell-validator',\n}\n","/**\n * @internal\n */\nexport enum SkyHeaderClass {\n Resizable = 'sky-ag-grid-header-resizable',\n RightAligned = 'sky-ag-grid-header-right-aligned',\n}\n","import { Injectable, OnDestroy, Optional, inject } from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\nimport { SkyDateService } from '@skyux/datetime';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyThemeService, SkyThemeSettings } from '@skyux/theme';\n\nimport {\n CellClassParams,\n CellRendererSelectorFunc,\n CellRendererSelectorResult,\n ColDef,\n EditableCallbackParams,\n GridOptions,\n HeaderClassParams,\n ICellRendererParams,\n RowClassParams,\n RowSelectionOptions,\n SuppressHeaderKeyboardEventParams,\n SuppressKeyboardEventParams,\n ValueFormatterParams,\n} from 'ag-grid-community';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { getSkyAgGridTheme } from '../../styles/ag-grid-theme';\n\nimport { SkyAgGridAdapterService } from './ag-grid-adapter.service';\nimport { applySkyLookupPropertiesDefaults } from './apply-lookup-properties-defaults';\nimport { SkyAgGridCellEditorAutocompleteComponent } from './cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\nimport { SkyAgGridCellEditorCurrencyComponent } from './cell-editors/cell-editor-currency/cell-editor-currency.component';\nimport { SkyAgGridCellEditorDatepickerComponent } from './cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\nimport { SkyAgGridCellEditorLookupComponent } from './cell-editors/cell-editor-lookup/cell-editor-lookup.component';\nimport { SkyAgGridCellEditorNumberComponent } from './cell-editors/cell-editor-number/cell-editor-number.component';\nimport { SkyAgGridCellEditorTextComponent } from './cell-editors/cell-editor-text/cell-editor-text.component';\nimport { SkyAgGridCellRendererCurrencyValidatorComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\nimport { SkyAgGridCellRendererCurrencyComponent } from './cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\nimport { SkyAgGridCellRendererLookupComponent } from './cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component';\nimport { SkyAgGridCellRendererRowSelectorComponent } from './cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\nimport { SkyAgGridCellRendererTemplateComponent } from './cell-renderers/cell-renderer-template/cell-renderer-template.component';\nimport { SkyAgGridCellRendererValidatorTooltipComponent } from './cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\nimport { SkyAgGridHeaderGroupComponent } from './header/header-group.component';\nimport { SkyAgGridHeaderComponent } from './header/header.component';\nimport { IconMapType, iconMap } from './icons/icon-map';\nimport { SkyAgGridLoadingComponent } from './loading/loading.component';\nimport { SkyCellClass } from './types/cell-class';\nimport { SkyCellType } from './types/cell-type';\nimport { SkyHeaderClass } from './types/header-class';\nimport { LastFocusedCell } from './types/last-focused.cell';\nimport { SkyGetGridOptionsArgs } from './types/sky-grid-options';\n\nfunction autocompleteComparator(\n value1: { name: string },\n value2: { name: string },\n): number {\n if (value1 && value2) {\n if (value1.name > value2.name) {\n return 1;\n }\n\n if (value1.name < value2.name) {\n return -1;\n }\n\n return 0;\n }\n\n return value1 ? 1 : -1;\n}\n\nfunction autocompleteFormatter(params: ValueFormatterParams): string {\n return params.value && params.value.name;\n}\n\nfunction dateComparator(date1: Date | string, date2: Date | string): number {\n let date1value = date1;\n let date2value = date2;\n\n if (typeof date1value === 'string') {\n date1value = new Date(date1);\n }\n\n if (typeof date2value === 'string') {\n date2value = new Date(date2);\n }\n\n if (date1value && date2value) {\n if (date1value > date2value) {\n return 1;\n }\n\n if (date1value < date2value) {\n return -1;\n }\n\n return 0;\n }\n\n return date1value ? 1 : -1;\n}\n\nfunction getValidatorCellRendererSelector(\n component: string,\n fallback?: CellRendererSelectorResult,\n): CellRendererSelectorFunc {\n return (params: ICellRendererParams) => {\n if (\n params.colDef &&\n typeof params.colDef.cellRendererParams?.skyComponentProperties\n ?.validator === 'function'\n ) {\n if (\n params.column?.isCellEditable(params.node) ||\n !params.colDef.cellRendererParams.skyComponentProperties.validator(\n params.value,\n params.data,\n params?.node?.rowIndex,\n )\n ) {\n return {\n component,\n params: {\n ...params.colDef.cellRendererParams,\n },\n };\n }\n }\n return fallback;\n };\n}\n\nlet rowNodeId = -1;\n\n/**\n * `SkyAgGridService` provides methods to get AG Grid `gridOptions` to ensure grids match SKY UX functionality. The `gridOptions` can be overridden, and include registered SKY UX column types.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAgGridService implements OnDestroy {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #keyMap = new WeakMap<any, string>();\n #ngUnsubscribe = new Subject<void>();\n #currentTheme: SkyThemeSettings | undefined = undefined;\n #agGridAdapterService: SkyAgGridAdapterService;\n #resources: SkyLibResourcesService | undefined;\n #dateService = inject(SkyDateService);\n #logService = inject(SkyLogService);\n\n constructor(\n agGridAdapterService: SkyAgGridAdapterService,\n @Optional() themeSvc?: SkyThemeService,\n @Optional() resources?: SkyLibResourcesService,\n ) {\n this.#agGridAdapterService = agGridAdapterService;\n this.#resources = resources;\n\n /*istanbul ignore else*/\n if (themeSvc) {\n themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((settingsChange) => {\n this.#currentTheme = settingsChange.currentSettings;\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n /**\n * Returns [AG Grid `gridOptions`](https://www.ag-grid.com/javascript-grid-properties/) with default SKY UX options, styling, and cell renderers registered for read-only grids.\n * @param args\n * @returns\n */\n public getGridOptions(args: SkyGetGridOptionsArgs): GridOptions {\n const defaultGridOptions = this.#getDefaultGridOptions(args);\n const mergedGridOptions = this.#mergeGridOptions(\n defaultGridOptions,\n args.gridOptions,\n );\n\n return mergedGridOptions;\n }\n\n /**\n * Returns [AG Grid `gridOptions`](https://www.ag-grid.com/javascript-grid-properties/) with default SKY UX options, styling, and cell editors registered for editable grids.\n * @param args\n * @returns\n */\n public getEditableGridOptions(args: SkyGetGridOptionsArgs): GridOptions {\n const defaultGridOptions = this.#getDefaultEditableGridOptions(args);\n const mergedGridOptions = this.#mergeGridOptions(\n defaultGridOptions,\n args.gridOptions,\n );\n\n return mergedGridOptions;\n }\n\n #mergeGridOptions(\n defaultGridOptions: GridOptions & {\n getRowClass: (params: RowClassParams) => string[];\n },\n providedGridOptions: GridOptions,\n ): GridOptions {\n if ('enableRangeSelection' in providedGridOptions) {\n if (providedGridOptions.enableRangeSelection) {\n providedGridOptions.cellSelection = true;\n }\n delete providedGridOptions.enableRangeSelection;\n }\n if (\n providedGridOptions.rowSelection === 'single' ||\n providedGridOptions.rowSelection === 'multiple'\n ) {\n const rowSelectionOptions: Record<string, RowSelectionOptions> = {\n single: { mode: 'singleRow', checkboxes: false },\n multiple: { mode: 'multiRow', checkboxes: false },\n };\n providedGridOptions.rowSelection =\n rowSelectionOptions[providedGridOptions.rowSelection];\n }\n if (providedGridOptions.rowSelection?.mode) {\n providedGridOptions.rowSelection = {\n ...((defaultGridOptions.rowSelection as RowSelectionOptions) ?? {\n checkboxes: false,\n }),\n ...providedGridOptions.rowSelection,\n } as RowSelectionOptions;\n }\n if ('enableCellChangeFlash' in providedGridOptions) {\n providedGridOptions.defaultColDef ??= {};\n providedGridOptions.defaultColDef.enableCellChangeFlash ??=\n !!providedGridOptions.enableCellChangeFlash;\n delete providedGridOptions.enableCellChangeFlash;\n }\n\n const mergedGridOptions: GridOptions = {\n ...defaultGridOptions,\n ...providedGridOptions,\n components: {\n ...providedGridOptions.components,\n // Apply default components last to prevent consumers from overwriting our component types.\n ...defaultGridOptions.components,\n },\n context: {\n ...defaultGridOptions.context,\n ...providedGridOptions.context,\n },\n columnTypes: {\n ...providedGridOptions.columnTypes,\n // apply default second to prevent consumers from overwriting our default column types\n ...defaultGridOptions.columnTypes,\n },\n defaultColDef: {\n ...defaultGridOptions.defaultColDef,\n ...providedGridOptions.defaultColDef,\n // allow consumers to override all defaultColDef properties except cellClassRules, which we reserve for styling\n cellClassRules: defaultGridOptions.defaultColDef?.cellClassRules,\n headerClass: defaultGridOptions.defaultColDef?.headerClass,\n },\n defaultColGroupDef: {\n ...defaultGridOptions.defaultColGroupDef,\n ...providedGridOptions.defaultColGroupDef,\n headerClass: defaultGridOptions.defaultColGroupDef?.headerClass,\n },\n getRowClass: (params): string[] => {\n const defaultClasses = defaultGridOptions.getRowClass(\n params,\n ) as string[];\n const providedClasses = providedGridOptions.getRowClass?.(params) ?? [];\n const providedClassesArray = Array.isArray(providedClasses)\n ? providedClasses\n : [providedClasses];\n return [...defaultClasses, ...providedClassesArray];\n },\n onCellFocused: (event): void => {\n defaultGridOptions.onCellFocused?.(event);\n providedGridOptions.onCellFocused?.(event);\n },\n };\n\n // Enable text selection unless explicitly disabled or conflicting with another setting.\n if (\n mergedGridOptions.enableCellTextSelection ||\n (!('enableCellTextSelection' in mergedGridOptions) &&\n !mergedGridOptions.cellSelection &&\n !mergedGridOptions.columnDefs?.some((col: ColDef) => col.editable))\n ) {\n mergedGridOptions.context ||= {};\n mergedGridOptions.enableCellTextSelection ??= true;\n mergedGridOptions.context.enableCellTextSelection =\n mergedGridOptions.enableCellTextSelection;\n }\n\n return mergedGridOptions;\n }\n\n #getDefaultGridOptions(args: SkyGetGridOptionsArgs): GridOptions & {\n getRowClass: (params: RowClassParams) => string[];\n } {\n // cellClassRules can be functions or string expressions\n const cellClassRuleTrueExpression = (): boolean => true;\n\n function getEditableFn(\n isUneditable?: boolean,\n ): (params: CellClassParams) => boolean {\n return function (params: CellClassParams): boolean {\n let isEditable = params.colDef.editable;\n\n if (typeof isEditable === 'function') {\n const column = params.api.getColumn(params.colDef);\n isEditable = isEditable({\n ...params,\n column,\n } as EditableCallbackParams);\n }\n\n return isUneditable ? !isEditable : !!isEditable;\n };\n }\n\n const editableCellClassRules = {\n [SkyCellClass.Editable]: getEditableFn(),\n [SkyCellClass.Uneditable]: getEditableFn(true),\n };\n\n function getValidatorFn(): (params: CellClassParams) => boolean {\n return function (param: CellClassParams) {\n if (\n param.colDef &&\n typeof param.colDef.cellRendererParams?.skyComponentProperties\n ?.validator === 'function'\n ) {\n return !param.colDef.cellRendererParams.skyComponentProperties.validator(\n param.value,\n param.data,\n param.node?.rowIndex,\n );\n }\n return false;\n };\n }\n\n const validatorCellClassRules = {\n [SkyCellClass.Invalid]: getValidatorFn(),\n [SkyCellClass.Validator]: cellClassRuleTrueExpression,\n };\n\n function getHeaderClass(\n ...classNames: string[]\n ): (params: HeaderClassParams) => string | string[] | undefined {\n return (params: HeaderClassParams): string | string[] | undefined => {\n // istanbul ignore next\n const minWidth = params.column?.getMinWidth() ?? 0;\n // istanbul ignore next\n const maxWidth = params.column?.getMaxWidth() ?? Infinity;\n if (\n (params.columnGroup?.isResizable() || params.column?.isResizable()) &&\n minWidth < maxWidth\n ) {\n return [...classNames, SkyHeaderClass.Resizable];\n }\n return classNames;\n };\n }\n\n const defaultSkyGridOptions: GridOptions & {\n getRowClass: (params: RowClassParams) => string[];\n } = {\n columnTypes: {\n [SkyCellType.Autocomplete]: {\n cellClassRules: {\n [SkyCellClass.Autocomplete]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorAutocompleteComponent,\n valueFormatter: autocompleteFormatter,\n comparator: autocompleteComparator,\n minWidth: 185,\n },\n [SkyCellType.Currency]: {\n cellClassRules: {\n [SkyCellClass.Currency]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-currency-validator',\n { component: 'sky-ag-grid-cell-renderer-currency' },\n ),\n cellEditor: SkyAgGridCellEditorCurrencyComponent,\n headerClass: getHeaderClass(SkyHeaderClass.RightAligned),\n minWidth: 185,\n sortingOrder: [null, 'desc', 'asc'],\n suppressKeyboardEvent: (params) =>\n this.#suppressEnter(params) || this.#suppressTab(params),\n },\n [SkyCellType.Date]: {\n cellClassRules: {\n [SkyCellClass.Date]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorDatepickerComponent,\n comparator: dateComparator,\n minWidth: this.#currentTheme?.theme?.name === 'modern' ? 180 : 160,\n valueFormatter: (params: ValueFormatterParams) => {\n try {\n return (\n this.#dateService.format(\n params.value,\n args.locale,\n args.dateFormat || 'shortDate',\n ) || ''\n );\n } catch (err) {\n /* istanbul ignore else */\n if ((err as Error).stack) {\n this.#logService.error(`${(err as Error).stack}`);\n } else {\n this.#logService.error(`${err}`);\n }\n return '';\n }\n },\n },\n [SkyCellType.Lookup]: {\n cellClassRules: {\n [SkyCellClass.Lookup]: cellClassRuleTrueExpression,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorLookupComponent,\n cellRenderer: SkyAgGridCellRendererLookupComponent,\n valueFormatter: (params) => {\n const lookupProperties = applySkyLookupPropertiesDefaults(\n params.colDef?.cellRendererParams?.skyComponentProperties ??\n params.colDef?.cellEditorParams?.skyComponentProperties ??\n {},\n );\n return (params.value || [])\n .map((value: Record<string, unknown>) => {\n return value[lookupProperties.descriptorProperty as string];\n })\n .filter((value: unknown) => value !== '' && value !== undefined)\n .join('; ');\n },\n minWidth: 185,\n },\n [SkyCellType.Number]: {\n cellClassRules: {\n [SkyCellClass.Number]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip',\n ),\n cellEditor: SkyAgGridCellEditorNumberComponent,\n headerClass: getHeaderClass(SkyHeaderClass.RightAligned),\n sortingOrder: [null, 'desc', 'asc'],\n },\n [SkyCellType.RightAligned]: {\n cellClassRules: {\n [SkyCellClass.RightAligned]: cellClassRuleTrueExpression,\n },\n headerClass: getHeaderClass(SkyHeaderClass.RightAligned),\n },\n [SkyCellType.RowSelector]: {\n cellClassRules: {\n [SkyCellClass.RowSelector]: cellClassRuleTrueExpression,\n [SkyCellClass.Uneditable]: cellClassRuleTrueExpression,\n },\n cellRenderer: SkyAgGridCellRendererRowSelectorComponent,\n headerComponentParams: {\n headerHidden: true,\n },\n headerName: 'Row selection',\n minWidth: 55,\n maxWidth: 55,\n resizable: false,\n sortable: false,\n width: 55,\n },\n [SkyCellType.Template]: {\n cellClassRules: {\n [SkyCellClass.Template]: cellClassRuleTrueExpression,\n },\n cellRenderer: SkyAgGridCellRendererTemplateComponent,\n cellEditor: SkyAgGridCellRendererTemplateComponent,\n },\n [SkyCellType.Text]: {\n cellClassRules: {\n [SkyCellClass.Text]: cellClassRuleTrueExpression,\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellEditor: SkyAgGridCellEditorTextComponent,\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip',\n ),\n },\n [SkyCellType.Validator]: {\n cellClassRules: {\n ...validatorCellClassRules,\n ...editableCellClassRules,\n },\n cellRendererSelector: getValidatorCellRendererSelector(\n 'sky-ag-grid-cell-renderer-validator-tooltip',\n ),\n },\n },\n defaultColDef: {\n cellClassRules: editableCellClassRules,\n headerClass: getHeaderClass(),\n headerComponent: SkyAgGridHeaderComponent,\n minWidth: 100,\n suppressHeaderKeyboardEvent: (\n keypress: SuppressHeaderKeyboardEventParams,\n ) => keypress.event.code === 'Tab',\n suppressKeyboardEvent: (keypress: SuppressKeyboardEventParams) =>\n this.#suppressTab(keypress),\n },\n defaultColGroupDef: {\n headerGroupComponent: SkyAgGridHeaderGroupComponent,\n },\n domLayout: 'autoHeight',\n ensureDomOrder: true,\n components: {\n 'sky-ag-grid-cell-renderer-currency':\n SkyAgGridCellRendererCurrencyComponent,\n 'sky-ag-grid-cell-renderer-currency-validator':\n SkyAgGridCellRendererCurrencyValidatorComponent,\n 'sky-ag-grid-cell-renderer-validator-tooltip':\n SkyAgGridCellRendererValidatorTooltipComponent,\n },\n focusGridInnerElement: (params) => {\n const lastFocusedCell = params.context?.['lastFocusedCell'] as\n | LastFocusedCell\n | undefined;\n if (lastFocusedCell) {\n if (lastFocusedCell.rowIndex !== null) {\n params.api.setFocusedCell(\n lastFocusedCell.rowIndex,\n lastFocusedCell.column,\n );\n } else {\n params.api.setFocusedHeader(lastFocusedCell.column);\n }\n return true;\n }\n return false;\n },\n getRowId: (params) => {\n const dataId = params.data.id;\n if (dataId !== undefined) {\n return `${params.data.id}`;\n }\n if (!this.#keyMap.has(params.data)) {\n this.#keyMap.set(params.data, `${rowNodeId--}`);\n }\n return this.#keyMap.get(params.data) as string;\n },\n getRowClass: (params: RowClassParams): string[] => {\n if (params.node.id) {\n return [`sky-ag-grid-row-${params.node.id}`];\n } else {\n return [];\n }\n },\n icons: {\n sortDescending: this.#getIconTemplate('sortDescending'),\n sortAscending: this.#getIconTemplate('sortAscending'),\n columnMoveMove: this.#getIconTemplate('columnMoveMove'),\n columnMoveHide: this.#getIconTemplate('columnMoveHide'),\n columnMoveLeft: this.#getIconTemplate('columnMoveLeft'),\n columnMoveRight: this.#getIconTemplate('columnMoveRight'),\n columnMovePin: this.#getIconTemplate('columnMovePin'),\n },\n loadingOverlayComponent: SkyAgGridLoadingComponent,\n onCellFocused: () => this.#onCellFocused(),\n rowModelType: 'clientSide',\n rowSelection: {\n mode: 'multiRow',\n enableClickSelection: false,\n enableSelectionWithoutKeys: true,\n checkboxes: false,\n headerCheckbox: false,\n },\n singleClickEdit: true,\n suppressDragLeaveHidesColumns: true,\n theme: getSkyAgGridTheme(\n 'data-grid',\n this.#currentTheme?.theme?.name,\n this.#currentTheme?.mode?.name,\n this.#currentTheme?.spacing?.name,\n ),\n };\n\n const columnTypes = defaultSkyGridOptions.columnTypes as Record<\n string,\n ColDef\n >;\n\n columnTypes[SkyCellType.CurrencyValidator] = {\n ...columnTypes[SkyCellType.Currency],\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: string): boolean => {\n return !!`${value || ''}`.match(/^[^0-9]*(\\d+[,.]?)+\\d*[^0-9]*$/);\n },\n validatorMessage: 'Please enter a valid currency',\n },\n },\n };\n /*istanbul ignore else*/\n if (this.#resources) {\n this.#resources\n .getString('sky_ag_grid_cell_renderer_currency_validator_message')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n columnTypes[\n SkyCellType.CurrencyValidator\n ].cellRendererParams.skyComponentProperties.validatorMessage = value;\n });\n }\n\n columnTypes[SkyCellType.NumberValidator] = {\n ...columnTypes[SkyCellType.Validator],\n ...columnTypes[SkyCellType.Number],\n cellClassRules: {\n ...columnTypes[SkyCellType.Validator].cellClassRules,\n ...columnTypes[SkyCellType.Number].cellClassRules,\n },\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: string): boolean => {\n return !!value && !isNaN(parseFloat(value));\n },\n validatorMessage: 'Please enter a valid number',\n },\n },\n };\n /*istanbul ignore else*/\n if (this.#resources) {\n this.#resources\n .getString('sky_ag_grid_cell_renderer_number_validator_message')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n columnTypes[\n SkyCellType.NumberValidator\n ].cellRendererParams.skyComponentProperties.validatorMessage = value;\n });\n this.#resources\n .getString('sky_ag_grid_row_selector_column_heading')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n columnTypes[SkyCellType.RowSelector].headerName = value;\n });\n }\n\n return defaultSkyGridOptions;\n }\n\n #onCellFocused(): void {\n const currentElement = this.#agGridAdapterService.getFocusedElement();\n\n this.#agGridAdapterService.focusOnFocusableChildren(currentElement);\n }\n\n #getDefaultEditableGridOptions(args: SkyGetGridOptionsArgs): GridOptions & {\n getRowClass: (params: RowClassParams) => string[];\n } {\n const defaultGridOptions = this.#getDefaultGridOptions(args);\n defaultGridOptions.rowSelection = undefined;\n defaultGridOptions.theme = getSkyAgGridTheme(\n 'data-entry-grid',\n this.#currentTheme?.theme?.name,\n this.#currentTheme?.mode?.name,\n this.#currentTheme?.spacing?.name,\n );\n return defaultGridOptions;\n }\n\n #getIconTemplate(iconKey: keyof IconMapType): () => string {\n return () => {\n const iconInfo = iconMap[iconKey];\n return `<svg height=\"16\" width=\"16\"><use xlink:href=\"#sky-i-${iconInfo.name}-${iconInfo.size}-solid\"></use></svg>`;\n };\n }\n\n #suppressTab(params: SuppressKeyboardEventParams): boolean {\n if (params.event.code === 'Tab') {\n if (params.editing) {\n const currentlyFocusedEl =\n this.#agGridAdapterService.getFocusedElement();\n // inline cell editors have the 'ag-cell' class, while popup editors have the 'ag-popup-editor' class\n const cellEl = this.#agGridAdapterService.getElementOrParentWithClass(\n currentlyFocusedEl,\n 'ag-cell',\n );\n const popupEl = this.#agGridAdapterService.getElementOrParentWithClass(\n currentlyFocusedEl,\n 'ag-popup-editor',\n );\n const parentEl = cellEl || popupEl;\n\n const nextFocusableElementInCell =\n this.#agGridAdapterService.getNextFocusableElement(\n currentlyFocusedEl,\n parentEl,\n params.event.shiftKey,\n );\n return !!nextFocusableElementInCell;\n }\n return true;\n }\n return false;\n }\n\n #suppressEnter(params: SuppressKeyboardEventParams): boolean {\n if (params.event.code === 'Enter') {\n return params.editing;\n }\n return false;\n }\n}\n","// Export any types that should be included in the root.\nexport { SkyAgGridModule } from './lib/modules/ag-grid/ag-grid.module';\nexport { SkyAgGridService } from './lib/modules/ag-grid/ag-grid.service';\nexport { SkyAgGridRowDeleteCancelArgs } from './lib/modules/ag-grid/types/ag-grid-row-delete-cancel-args';\nexport { SkyAgGridRowDeleteConfirmArgs } from './lib/modules/ag-grid/types/ag-grid-row-delete-confirm-args';\nexport {\n SkyAgGridAutocompleteProperties,\n SkyAutocompleteProperties,\n} from './lib/modules/ag-grid/types/autocomplete-properties';\nexport { SkyCellClass } from './lib/modules/ag-grid/types/cell-class';\nexport { SkyCellEditorAutocompleteParams } from './lib/modules/ag-grid/types/cell-editor-autocomplete-params';\nexport { SkyCellEditorDatepickerParams } from './lib/modules/ag-grid/types/cell-editor-datepicker-params';\nexport { SkyAgGridCellEditorInitialAction } from './lib/modules/ag-grid/types/cell-editor-initial-action';\nexport { SkyCellEditorLookupParams } from './lib/modules/ag-grid/types/cell-editor-lookup-params';\nexport { SkyAgGridCellEditorUtils } from './lib/modules/ag-grid/types/cell-editor-utils';\nexport { SkyCellType } from './lib/modules/ag-grid/types/cell-type';\nexport { SkyAgGridCurrencyProperties } from './lib/modules/ag-grid/types/currency-properties';\nexport {\n SkyAgGridDatepickerProperties,\n SkyDatepickerProperties,\n} from './lib/modules/ag-grid/types/datepicker-properties';\nexport { SkyHeaderClass } from './lib/modules/ag-grid/types/header-class';\nexport { SkyAgGridHeaderGroupInfo } from './lib/modules/ag-grid/types/header-group-info';\nexport { SkyAgGridHeaderGroupParams } from './lib/modules/ag-grid/types/header-group-params';\nexport { SkyAgGridHeaderInfo } from './lib/modules/ag-grid/types/header-info';\nexport { SkyAgGridHeaderParams } from './lib/modules/ag-grid/types/header-params';\nexport { SkyAgGridLookupProperties } from './lib/modules/ag-grid/types/lookup-properties';\nexport { SkyAgGridNumberProperties } from './lib/modules/ag-grid/types/number-properties';\nexport { SkyGetGridOptionsArgs } from './lib/modules/ag-grid/types/sky-grid-options';\nexport { SkyAgGridTextProperties } from './lib/modules/ag-grid/types/text-properties';\nexport { SkyAgGridValidatorProperties } from './lib/modules/ag-grid/types/validator-properties';\n\n// Components and directives must be exported to support Angular's \"partial\" Ivy compiler.\n// Obscure names are used to indicate types are not part of the public API.\nexport { SkyAgGridDataManagerAdapterDirective as λ14 } from './lib/modules/ag-grid/ag-grid-data-manager-adapter.directive';\nexport { SkyAgGridRowDeleteComponent as λ6 } from './lib/modules/ag-grid/ag-grid-row-delete.component';\nexport { SkyAgGridRowDeleteDirective as λ13 } from './lib/modules/ag-grid/ag-grid-row-delete.directive';\nexport { SkyAgGridWrapperComponent as λ12 } from './lib/modules/ag-grid/ag-grid-wrapper.component';\nexport { SkyAgGridCellEditorAutocompleteComponent as λ1 } from './lib/modules/ag-grid/cell-editors/cell-editor-autocomplete/cell-editor-autocomplete.component';\nexport { SkyAgGridCellEditorCurrencyComponent as λ3 } from './lib/modules/ag-grid/cell-editors/cell-editor-currency/cell-editor-currency.component';\nexport { SkyAgGridCellEditorDatepickerComponent as λ5 } from './lib/modules/ag-grid/cell-editors/cell-editor-datepicker/cell-editor-datepicker.component';\nexport { SkyAgGridCellEditorLookupComponent as λ15 } from './lib/modules/ag-grid/cell-editors/cell-editor-lookup/cell-editor-lookup.component';\nexport { SkyAgGridCellEditorNumberComponent as λ4 } from './lib/modules/ag-grid/cell-editors/cell-editor-number/cell-editor-number.component';\nexport { SkyAgGridCellEditorTextComponent as λ2 } from './lib/modules/ag-grid/cell-editors/cell-editor-text/cell-editor-text.component';\nexport { SkyAgGridCellRendererCurrencyValidatorComponent as λ8 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency-validator.component';\nexport { SkyAgGridCellRendererCurrencyComponent as λ9 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component';\nexport { SkyAgGridCellRendererLookupComponent as λ16 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-lookup/cell-renderer-lookup.component';\nexport { SkyAgGridCellRendererRowSelectorComponent as λ7 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-row-selector/cell-renderer-row-selector.component';\nexport { SkyAgGridCellRendererValidatorTooltipComponent as λ10 } from './lib/modules/ag-grid/cell-renderers/cell-renderer-validator-tooltip/cell-renderer-validator-tooltip.component';\nexport { SkyAgGridCellValidatorTooltipComponent as λ11 } from './lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component';\nexport { SkyAgGridHeaderGroupComponent as λ18 } from './lib/modules/ag-grid/header/header-group.component';\nexport { SkyAgGridHeaderComponent as λ17 } from './lib/modules/ag-grid/header/header.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil","i1","filter","i2","i3","i4","i1.SkyAgGridAdapterService"],"mappings":"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"}
|