@siemens/element-ng 48.5.2 → 48.6.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.
@@ -1,11 +1,17 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, input, booleanAttribute, ElementRef, HostListener, HostBinding, Directive, NgModule } from '@angular/core';
2
+ import { isSignal, inject, input, booleanAttribute, ElementRef, HostListener, HostBinding, Directive, NgModule } from '@angular/core';
3
3
  import { DatatableComponent } from '@siemens/ngx-datatable';
4
4
 
5
5
  /**
6
6
  * Copyright (c) Siemens 2016 - 2025
7
7
  * SPDX-License-Identifier: MIT
8
8
  */
9
+ const unwrapSignalOrValue = (valueOrSignal) => {
10
+ if (isSignal(valueOrSignal)) {
11
+ return valueOrSignal();
12
+ }
13
+ return valueOrSignal;
14
+ };
9
15
  class SiDatatableInteractionDirective {
10
16
  table = inject(DatatableComponent, { self: true });
11
17
  /**
@@ -22,7 +28,7 @@ class SiDatatableInteractionDirective {
22
28
  isMousedown = false;
23
29
  onKeydown(event) {
24
30
  if (event.key === 'ArrowDown') {
25
- const first = this.table.selectionType === 'cell'
31
+ const first = unwrapSignalOrValue(this.table.selectionType) === 'cell'
26
32
  ? this.element.querySelector('.datatable-row-wrapper > .datatable-body-row .datatable-body-cell')
27
33
  : this.element.querySelector('.datatable-row-wrapper > .datatable-body-row');
28
34
  if (first) {
@@ -31,7 +37,7 @@ class SiDatatableInteractionDirective {
31
37
  }
32
38
  }
33
39
  else if (event.key === 'ArrowUp') {
34
- const last = this.table.selectionType === 'cell'
40
+ const last = unwrapSignalOrValue(this.table.selectionType) === 'cell'
35
41
  ? this.element.querySelector('.datatable-row-wrapper:last-child > .datatable-body-row .datatable-body-cell')
36
42
  : this.element.querySelector('.datatable-row-wrapper:last-child > .datatable-body-row');
37
43
  if (last) {
@@ -53,7 +59,7 @@ class SiDatatableInteractionDirective {
53
59
  }
54
60
  clearTimeout(this.autoSelectTimeout);
55
61
  // Re-select on every element
56
- const selectionType = this.table.selectionType;
62
+ const selectionType = unwrapSignalOrValue(this.table.selectionType);
57
63
  if (!this.isMousedown &&
58
64
  this.datatableInteractionAutoSelect() &&
59
65
  (selectionType === 'single' || selectionType === 'cell')) {
@@ -65,7 +71,7 @@ class SiDatatableInteractionDirective {
65
71
  rowOrCell.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', keyCode: 13 }));
66
72
  }, 100);
67
73
  }
68
- if (this.table.virtualization) {
74
+ if (unwrapSignalOrValue(this.table.virtualization)) {
69
75
  if (this.tableBody) {
70
76
  const lastList = selectionType === 'cell'
71
77
  ? this.tableBody.querySelectorAll('.datatable-row-wrapper:last-child > .datatable-body-row .datatable-body-cell')
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-datatable.mjs","sources":["../../../../projects/element-ng/datatable/si-datatable-interaction.directive.ts","../../../../projects/element-ng/datatable/si-datatable.module.ts","../../../../projects/element-ng/datatable/si-datatable-providers.ts","../../../../projects/element-ng/datatable/index.ts","../../../../projects/element-ng/datatable/siemens-element-ng-datatable.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { DatatableComponent } from '@siemens/ngx-datatable';\n\n@Directive({\n selector: 'ngx-datatable[siDatatableInteraction]',\n exportAs: 'si-datatable-interaction'\n})\nexport class SiDatatableInteractionDirective implements OnDestroy, OnInit {\n private table = inject(DatatableComponent, { self: true });\n /**\n * Automatically select every row or cell that is navigated trough.\n * Is ignored unless `selectionType` is `single` or `cell`.\n *\n * @defaultValue false\n */\n readonly datatableInteractionAutoSelect = input(false, { transform: booleanAttribute });\n\n @HostBinding('attr.tabindex') protected tabIndex = '0';\n\n private element: HTMLElement = inject(ElementRef).nativeElement;\n private tableBody?: HTMLElement;\n\n private autoSelectTimeout: any;\n\n private isMousedown = false;\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n const first =\n this.table.selectionType === 'cell'\n ? this.element.querySelector(\n '.datatable-row-wrapper > .datatable-body-row .datatable-body-cell'\n )\n : this.element.querySelector('.datatable-row-wrapper > .datatable-body-row');\n if (first) {\n (first as HTMLElement).focus();\n event.preventDefault();\n }\n } else if (event.key === 'ArrowUp') {\n const last =\n this.table.selectionType === 'cell'\n ? this.element.querySelector(\n '.datatable-row-wrapper:last-child > .datatable-body-row .datatable-body-cell'\n )\n : this.element.querySelector('.datatable-row-wrapper:last-child > .datatable-body-row');\n if (last) {\n (last as HTMLElement).focus();\n event.preventDefault();\n }\n }\n }\n\n @HostListener('mousedown', ['$event'])\n protected onMousedown(event: MouseEvent): void {\n this.isMousedown = true;\n }\n\n @HostListener('mouseup', ['$event'])\n protected onMouseup(event: MouseEvent): void {\n this.isMousedown = false;\n }\n\n @HostListener('focusin', ['$event'])\n protected onFocusin(event: FocusEvent): void {\n const target = event.target as HTMLElement;\n if (!target) {\n return;\n }\n\n clearTimeout(this.autoSelectTimeout);\n // Re-select on every element\n\n const selectionType = this.table.selectionType;\n if (\n !this.isMousedown &&\n this.datatableInteractionAutoSelect() &&\n (selectionType === 'single' || selectionType === 'cell')\n ) {\n const rowOrCell = target.closest(\n selectionType === 'cell' ? 'datatable-body-cell' : 'datatable-body-row'\n );\n if (!rowOrCell) {\n return;\n }\n this.autoSelectTimeout = setTimeout(() => {\n rowOrCell.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', keyCode: 13 }));\n }, 100);\n }\n if (this.table.virtualization) {\n if (this.tableBody) {\n const lastList =\n selectionType === 'cell'\n ? this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:last-child > .datatable-body-row .datatable-body-cell'\n )\n : this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:last-child > .datatable-body-row'\n );\n if (Array.from(lastList).includes(target)) {\n this.tableBody.scrollTop = this.tableBody.scrollTop + lastList[0].clientHeight;\n } else {\n const firstList =\n selectionType === 'cell'\n ? this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:first-child > .datatable-body-row .datatable-body-cell'\n )\n : this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:first-child > .datatable-body-row'\n );\n if (Array.from(firstList).includes(target)) {\n this.tableBody.scrollTop = this.tableBody.scrollTop - firstList[0].clientHeight;\n }\n }\n }\n }\n }\n\n ngOnInit(): void {\n this.tableBody = this.element.querySelector('datatable-body') as HTMLElement;\n if (this.tableBody) {\n this.tableBody.tabIndex = -1;\n }\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.autoSelectTimeout);\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiDatatableInteractionDirective } from './si-datatable-interaction.directive';\n\n@NgModule({\n imports: [SiDatatableInteractionDirective],\n exports: [SiDatatableInteractionDirective]\n})\nexport class SiDatatableModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Provider } from '@angular/core';\nimport { NgxDatatableConfig } from '@siemens/ngx-datatable';\n\n/**\n * @deprecated Use NgxDatatableConfig from \\@siemens/ngx-datatable instead.\n *\n * Configuration interface for the upstream \\@siemens/ngx-datatable project.\n * See https://github.com/siemens/ngx-datatable/blob/main/projects/ngx-datatable/src/lib/ngx-datatable.config.ts#L50.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface INgxDatatableConfig extends NgxDatatableConfig {}\n\n/**\n * Extends the original NgxDatatableConfig with additional properties and makes all fields required to maintain compatibility.\n */\ninterface SiDatatableConfig extends NgxDatatableConfig {\n cssClasses: Exclude<NgxDatatableConfig['cssClasses'], undefined>;\n headerHeight: number;\n footerHeight: number;\n rowHeight: number;\n rowHeightSmall: number;\n rowHeightExtraSmall: number;\n rowHeightTiny: number;\n}\n\nexport const SI_DATATABLE_CONFIG: SiDatatableConfig = {\n cssClasses: {\n sortAscending: 'icon element-sort-up text-primary',\n sortDescending: 'icon element-sort-down text-primary',\n pagerLeftArrow: 'icon element-left-2 flip-rtl',\n pagerRightArrow: 'icon element-right-2 flip-rtl',\n pagerPrevious: 'icon element-double-left flip-rtl',\n pagerNext: 'icon element-double-right flip-rtl',\n sortUnset: '',\n treeStatusLoading: '',\n treeStatusExpanded: 'icon element-down-2 flip-rtl',\n treeStatusCollapsed: 'icon element-right-2 flip-rtl'\n },\n headerHeight: 40,\n footerHeight: 40,\n rowHeight: 64,\n rowHeightSmall: 48,\n rowHeightExtraSmall: 32,\n rowHeightTiny: 24\n};\n\n/**\n * Provides element configuration for the \\@siemens/ngx-datatable.\n *\n * @param configOverrides - overrides that will be merged with the element configuration.\n */\nexport const provideSiDatatableConfig = (configOverrides?: NgxDatatableConfig): Provider => ({\n provide: 'configuration',\n useValue: { ...SI_DATATABLE_CONFIG, ...configOverrides }\n});\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-datatable-interaction.directive';\nexport * from './si-datatable.module';\nexport * from './si-datatable-providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"siemens-element-ng-datatable.mjs","sources":["../../../../projects/element-ng/datatable/si-datatable-interaction.directive.ts","../../../../projects/element-ng/datatable/si-datatable.module.ts","../../../../projects/element-ng/datatable/si-datatable-providers.ts","../../../../projects/element-ng/datatable/index.ts","../../../../projects/element-ng/datatable/siemens-element-ng-datatable.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n isSignal,\n OnDestroy,\n OnInit,\n Signal\n} from '@angular/core';\nimport { DatatableComponent } from '@siemens/ngx-datatable';\n\nconst unwrapSignalOrValue = <T>(valueOrSignal: T | Signal<T>): T => {\n if (isSignal(valueOrSignal)) {\n return valueOrSignal();\n }\n return valueOrSignal;\n};\n\n@Directive({\n selector: 'ngx-datatable[siDatatableInteraction]',\n exportAs: 'si-datatable-interaction'\n})\nexport class SiDatatableInteractionDirective implements OnDestroy, OnInit {\n private table = inject(DatatableComponent, { self: true });\n /**\n * Automatically select every row or cell that is navigated trough.\n * Is ignored unless `selectionType` is `single` or `cell`.\n *\n * @defaultValue false\n */\n readonly datatableInteractionAutoSelect = input(false, { transform: booleanAttribute });\n\n @HostBinding('attr.tabindex') protected tabIndex = '0';\n\n private element: HTMLElement = inject(ElementRef).nativeElement;\n private tableBody?: HTMLElement;\n\n private autoSelectTimeout: any;\n\n private isMousedown = false;\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n const first =\n unwrapSignalOrValue(this.table.selectionType) === 'cell'\n ? this.element.querySelector(\n '.datatable-row-wrapper > .datatable-body-row .datatable-body-cell'\n )\n : this.element.querySelector('.datatable-row-wrapper > .datatable-body-row');\n if (first) {\n (first as HTMLElement).focus();\n event.preventDefault();\n }\n } else if (event.key === 'ArrowUp') {\n const last =\n unwrapSignalOrValue(this.table.selectionType) === 'cell'\n ? this.element.querySelector(\n '.datatable-row-wrapper:last-child > .datatable-body-row .datatable-body-cell'\n )\n : this.element.querySelector('.datatable-row-wrapper:last-child > .datatable-body-row');\n if (last) {\n (last as HTMLElement).focus();\n event.preventDefault();\n }\n }\n }\n\n @HostListener('mousedown', ['$event'])\n protected onMousedown(event: MouseEvent): void {\n this.isMousedown = true;\n }\n\n @HostListener('mouseup', ['$event'])\n protected onMouseup(event: MouseEvent): void {\n this.isMousedown = false;\n }\n\n @HostListener('focusin', ['$event'])\n protected onFocusin(event: FocusEvent): void {\n const target = event.target as HTMLElement;\n if (!target) {\n return;\n }\n\n clearTimeout(this.autoSelectTimeout);\n // Re-select on every element\n\n const selectionType = unwrapSignalOrValue(this.table.selectionType);\n if (\n !this.isMousedown &&\n this.datatableInteractionAutoSelect() &&\n (selectionType === 'single' || selectionType === 'cell')\n ) {\n const rowOrCell = target.closest(\n selectionType === 'cell' ? 'datatable-body-cell' : 'datatable-body-row'\n );\n if (!rowOrCell) {\n return;\n }\n this.autoSelectTimeout = setTimeout(() => {\n rowOrCell.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', keyCode: 13 }));\n }, 100);\n }\n if (unwrapSignalOrValue(this.table.virtualization)) {\n if (this.tableBody) {\n const lastList =\n selectionType === 'cell'\n ? this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:last-child > .datatable-body-row .datatable-body-cell'\n )\n : this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:last-child > .datatable-body-row'\n );\n if (Array.from(lastList).includes(target)) {\n this.tableBody.scrollTop = this.tableBody.scrollTop + lastList[0].clientHeight;\n } else {\n const firstList =\n selectionType === 'cell'\n ? this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:first-child > .datatable-body-row .datatable-body-cell'\n )\n : this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:first-child > .datatable-body-row'\n );\n if (Array.from(firstList).includes(target)) {\n this.tableBody.scrollTop = this.tableBody.scrollTop - firstList[0].clientHeight;\n }\n }\n }\n }\n }\n\n ngOnInit(): void {\n this.tableBody = this.element.querySelector('datatable-body') as HTMLElement;\n if (this.tableBody) {\n this.tableBody.tabIndex = -1;\n }\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.autoSelectTimeout);\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiDatatableInteractionDirective } from './si-datatable-interaction.directive';\n\n@NgModule({\n imports: [SiDatatableInteractionDirective],\n exports: [SiDatatableInteractionDirective]\n})\nexport class SiDatatableModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Provider } from '@angular/core';\nimport { NgxDatatableConfig } from '@siemens/ngx-datatable';\n\n/**\n * @deprecated Use NgxDatatableConfig from \\@siemens/ngx-datatable instead.\n *\n * Configuration interface for the upstream \\@siemens/ngx-datatable project.\n * See https://github.com/siemens/ngx-datatable/blob/main/projects/ngx-datatable/src/lib/ngx-datatable.config.ts#L50.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface INgxDatatableConfig extends NgxDatatableConfig {}\n\n/**\n * Extends the original NgxDatatableConfig with additional properties and makes all fields required to maintain compatibility.\n */\ninterface SiDatatableConfig extends NgxDatatableConfig {\n cssClasses: Exclude<NgxDatatableConfig['cssClasses'], undefined>;\n headerHeight: number;\n footerHeight: number;\n rowHeight: number;\n rowHeightSmall: number;\n rowHeightExtraSmall: number;\n rowHeightTiny: number;\n}\n\nexport const SI_DATATABLE_CONFIG: SiDatatableConfig = {\n cssClasses: {\n sortAscending: 'icon element-sort-up text-primary',\n sortDescending: 'icon element-sort-down text-primary',\n pagerLeftArrow: 'icon element-left-2 flip-rtl',\n pagerRightArrow: 'icon element-right-2 flip-rtl',\n pagerPrevious: 'icon element-double-left flip-rtl',\n pagerNext: 'icon element-double-right flip-rtl',\n sortUnset: '',\n treeStatusLoading: '',\n treeStatusExpanded: 'icon element-down-2 flip-rtl',\n treeStatusCollapsed: 'icon element-right-2 flip-rtl'\n },\n headerHeight: 40,\n footerHeight: 40,\n rowHeight: 64,\n rowHeightSmall: 48,\n rowHeightExtraSmall: 32,\n rowHeightTiny: 24\n};\n\n/**\n * Provides element configuration for the \\@siemens/ngx-datatable.\n *\n * @param configOverrides - overrides that will be merged with the element configuration.\n */\nexport const provideSiDatatableConfig = (configOverrides?: NgxDatatableConfig): Provider => ({\n provide: 'configuration',\n useValue: { ...SI_DATATABLE_CONFIG, ...configOverrides }\n});\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-datatable-interaction.directive';\nexport * from './si-datatable.module';\nexport * from './si-datatable-providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;AAGG;AAgBH,MAAM,mBAAmB,GAAG,CAAI,aAA4B,KAAO;AACjE,IAAA,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE;QAC3B,OAAO,aAAa,EAAE;;AAExB,IAAA,OAAO,aAAa;AACtB,CAAC;MAMY,+BAA+B,CAAA;IAClC,KAAK,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC1D;;;;;AAKG;IACM,8BAA8B,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAE/C,QAAQ,GAAG,GAAG;AAE9C,IAAA,OAAO,GAAgB,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;AACvD,IAAA,SAAS;AAET,IAAA,iBAAiB;IAEjB,WAAW,GAAG,KAAK;AAGjB,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC7B,MAAM,KAAK,GACT,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK;kBAC9C,IAAI,CAAC,OAAO,CAAC,aAAa,CACxB,mEAAmE;kBAErE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,8CAA8C,CAAC;YAChF,IAAI,KAAK,EAAE;gBACR,KAAqB,CAAC,KAAK,EAAE;gBAC9B,KAAK,CAAC,cAAc,EAAE;;;AAEnB,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;YAClC,MAAM,IAAI,GACR,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK;kBAC9C,IAAI,CAAC,OAAO,CAAC,aAAa,CACxB,8EAA8E;kBAEhF,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,yDAAyD,CAAC;YAC3F,IAAI,IAAI,EAAE;gBACP,IAAoB,CAAC,KAAK,EAAE;gBAC7B,KAAK,CAAC,cAAc,EAAE;;;;AAMlB,IAAA,WAAW,CAAC,KAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;AAIf,IAAA,SAAS,CAAC,KAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;AAIhB,IAAA,SAAS,CAAC,KAAiB,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAC1C,IAAI,CAAC,MAAM,EAAE;YACX;;AAGF,QAAA,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;;QAGpC,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QACnE,IACE,CAAC,IAAI,CAAC,WAAW;YACjB,IAAI,CAAC,8BAA8B,EAAE;aACpC,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,MAAM,CAAC,EACxD;AACA,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAC9B,aAAa,KAAK,MAAM,GAAG,qBAAqB,GAAG,oBAAoB,CACxE;YACD,IAAI,CAAC,SAAS,EAAE;gBACd;;AAEF,YAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAK;AACvC,gBAAA,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;aACrF,EAAE,GAAG,CAAC;;QAET,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAClD,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,MAAM,QAAQ,GACZ,aAAa,KAAK;sBACd,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAC7B,8EAA8E;sBAEhF,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAC7B,yDAAyD,CAC1D;AACP,gBAAA,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACzC,oBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY;;qBACzE;AACL,oBAAA,MAAM,SAAS,GACb,aAAa,KAAK;0BACd,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAC7B,+EAA+E;0BAEjF,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAC7B,0DAA0D,CAC3D;AACP,oBAAA,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC1C,wBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY;;;;;;IAOzF,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAgB;AAC5E,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC;;;IAIhC,WAAW,GAAA;AACT,QAAA,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;;uGAvH3B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,8BAAA,EAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAJ3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,QAAQ,EAAE;AACX,iBAAA;8BAWyC,QAAQ,EAAA,CAAA;sBAA/C,WAAW;uBAAC,eAAe;gBAUlB,SAAS,EAAA,CAAA;sBADlB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;gBA4BzB,WAAW,EAAA,CAAA;sBADpB,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gBAM3B,SAAS,EAAA,CAAA;sBADlB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;gBAMzB,SAAS,EAAA,CAAA;sBADlB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ACtFrC;;;AAGG;MASU,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAjB,iBAAiB,EAAA,OAAA,EAAA,CAHlB,+BAA+B,CAAA,EAAA,OAAA,EAAA,CAC/B,+BAA+B,CAAA,EAAA,CAAA;wGAE9B,iBAAiB,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,+BAA+B,CAAC;oBAC1C,OAAO,EAAE,CAAC,+BAA+B;AAC1C,iBAAA;;;ACkBM,MAAM,mBAAmB,GAAsB;AACpD,IAAA,UAAU,EAAE;AACV,QAAA,aAAa,EAAE,mCAAmC;AAClD,QAAA,cAAc,EAAE,qCAAqC;AACrD,QAAA,cAAc,EAAE,8BAA8B;AAC9C,QAAA,eAAe,EAAE,+BAA+B;AAChD,QAAA,aAAa,EAAE,mCAAmC;AAClD,QAAA,SAAS,EAAE,oCAAoC;AAC/C,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,iBAAiB,EAAE,EAAE;AACrB,QAAA,kBAAkB,EAAE,8BAA8B;AAClD,QAAA,mBAAmB,EAAE;AACtB,KAAA;AACD,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,mBAAmB,EAAE,EAAE;AACvB,IAAA,aAAa,EAAE;;AAGjB;;;;AAIG;MACU,wBAAwB,GAAG,CAAC,eAAoC,MAAgB;AAC3F,IAAA,OAAO,EAAE,eAAe;AACxB,IAAA,QAAQ,EAAE,EAAE,GAAG,mBAAmB,EAAE,GAAG,eAAe;AACvD,CAAA;;AC1DD;;;AAGG;;ACHH;;AAEG;;;;"}