@sdcorejs/angular 19.1.5 → 19.2.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/README.md +12 -4
- package/assets/scss/core/menu.scss +18 -0
- package/assets/scss/core/utilities/_misc.scss +15 -0
- package/assets/scss/sd-core.scss +1 -0
- package/components/anchor/src/components/anchor/anchor.component.d.ts +3 -1
- package/components/badge/src/badge.component.d.ts +1 -0
- package/components/ckeditor-styles/src/ckeditor-styles.component.d.ts +1 -1
- package/components/form-generic/src/components/form-builder/components/expression-builder/expression-builder.component.d.ts +2 -1
- package/components/form-generic/src/components/form-builder/form-builder.component.d.ts +3 -1
- package/components/form-generic/src/components/form-render/components/item/components/checkbox/checkbox.component.d.ts +34 -0
- package/components/form-generic/src/components/form-render/components/item/components/index.d.ts +1 -0
- package/components/form-generic/src/components/form-render/components/item/components/table/table.component.d.ts +6 -1
- package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +1 -1
- package/components/form-generic/src/configurations/form.configuration.d.ts +1 -1
- package/components/form-generic/src/models/form-generic-component.model.d.ts +8 -8
- package/components/form-generic/src/models/form-generic-definition-selection.model.d.ts +5 -5
- package/components/form-generic/src/models/form-generic-expression.model.d.ts +12 -12
- package/components/form-generic/src/models/index.d.ts +1 -0
- package/components/form-generic/src/services/form-generic.service.d.ts +2 -2
- package/components/import-excel/src/import-excel.component.d.ts +1 -0
- package/components/index.d.ts +6 -1
- package/components/mini-editor/src/mini-editor.model.d.ts +1 -1
- package/components/modal/src/modal.component.d.ts +3 -2
- package/components/modal-resizable/src/modal-resizable.component.d.ts +92 -0
- package/components/modal-resizable/src/modal-resizable.registry.d.ts +22 -0
- package/components/org-chart/src/org-chart.component.d.ts +6 -0
- package/components/preview/src/preview-image/preview-image.component.d.ts +1 -0
- package/components/preview/src/preview-pdf/pdf-worker-inline.generated.d.ts +7 -0
- package/components/query-bar/src/components/actions-bar/actions-bar.component.d.ts +6 -2
- package/components/query-bar/src/components/build-chip/build-chip.component.d.ts +4 -1
- package/components/query-bar/src/components/chip-popover/chip-popover.component.d.ts +8 -0
- package/components/query-bar/src/components/field-picker/field-picker.component.d.ts +2 -0
- package/components/query-bar/src/components/inline-chip/inline-chip.component.d.ts +2 -0
- package/components/query-bar/src/components/inline-value-chip/inline-value-chip.component.d.ts +3 -3
- package/components/query-bar/src/components/saved-filters-menu/saved-filters-menu.component.d.ts +9 -4
- package/components/query-bar/src/query-bar.component.d.ts +32 -5
- package/components/query-bar/src/query-bar.model.d.ts +15 -12
- package/components/query-builder/src/query-builder.component.d.ts +76 -39
- package/components/query-builder/src/query-builder.model.d.ts +59 -52
- package/components/query-builder/src/query-builder.serializer.d.ts +15 -6
- package/components/section/src/section.component.d.ts +3 -0
- package/components/side-drawer/src/body-scroll-lock.service.d.ts +10 -0
- package/components/splitter/src/splitter-handle/splitter-handle.component.d.ts +1 -0
- package/components/tab-router/index.d.ts +2 -1
- package/components/tab-router/src/actions/tab-router.action.d.ts +2 -2
- package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +2 -2
- package/components/tab-router/src/components/tab-router-nav/tab-router-nav.component.d.ts +3 -3
- package/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.d.ts +3 -3
- package/components/tab-router/src/decorators/tab.decorator.d.ts +13 -1
- package/components/tab-router/src/events/tab-router.event.d.ts +3 -3
- package/components/tab-router/src/models/tab-router.model.d.ts +2 -2
- package/components/tab-router/src/pipes/tab-info.pipe.d.ts +2 -2
- package/components/tab-router/src/services/tab-router.service.d.ts +9 -9
- package/components/table/index.d.ts +1 -0
- package/components/table/src/components/config/config.component.d.ts +6 -1
- package/components/table/src/components/desktop-cell/view/view.component.d.ts +1 -0
- package/components/table/src/components/filter/external-filter/external-filter.component.d.ts +1 -1
- package/components/table/src/components/filter/mobile-filter/mobile-filter.component.d.ts +1 -1
- package/components/table/src/components/selector-action/action-filter.pipe.d.ts +8 -1
- package/components/table/src/components/selector-action/selector-action.component.d.ts +2 -0
- package/components/table/src/directives/index.d.ts +1 -0
- package/components/table/src/directives/sd-table-command-header-def.directive.d.ts +24 -0
- package/components/table/src/models/table-column.model.d.ts +30 -13
- package/components/table/src/models/table-item.model.d.ts +30 -1
- package/components/table/src/models/table-option-selector.model.d.ts +5 -4
- package/components/table/src/models/table-option.model.d.ts +12 -0
- package/components/table/src/pipes/sd-group.pipe.d.ts +6 -2
- package/components/table/src/services/table-export/table-export.service.d.ts +3 -1
- package/components/table/src/services/table-filter/table-filter.model.d.ts +15 -15
- package/components/table/src/services/table-filter/table-filter.service.d.ts +2 -2
- package/components/table/src/services/table-format/table-format.service.d.ts +1 -1
- package/components/table/src/services/table-selection/selection-action.util.d.ts +24 -0
- package/components/table/src/services/table-selection/table-selection.util.d.ts +31 -0
- package/components/table/src/services/tree/tree.util.d.ts +3 -2
- package/components/table/src/table.component.d.ts +52 -6
- package/components/tree/src/tree-item-def.directive.d.ts +1 -1
- package/components/tree/src/tree.component.d.ts +16 -4
- package/components/tree/src/tree.model.d.ts +31 -25
- package/components/upload-file/src/configurations/upload-file.configuration.d.ts +2 -2
- package/components/upload-file/src/upload-file.component.d.ts +4 -1
- package/configurations/src/sd-core.configuration.d.ts +1 -2
- package/fesm2022/sdcorejs-angular-components-anchor.mjs +36 -12
- package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-badge.mjs +15 -2
- package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-button.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs +1 -1
- package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-data-state.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-editor.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs +324 -192
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-history.mjs +4 -4
- package/fesm2022/sdcorejs-angular-components-history.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs +13 -5
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-inform.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs +164 -8
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal.mjs +30 -18
- package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs +60 -13
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-preview.mjs +58 -19
- package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs +192 -30
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs +187 -127
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-section.mjs +16 -2
- package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +83 -24
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-splitter.mjs +57 -21
- package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-stepper.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs +68 -20
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab.mjs +3 -2
- package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-table.mjs +556 -254
- package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tree.mjs +80 -17
- package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs +48 -13
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components.mjs +6 -1
- package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-configurations.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-directives.mjs +45 -8
- package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +40 -29
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +5 -5
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +67 -50
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip.mjs +57 -43
- package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs +233 -63
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date.mjs +208 -41
- package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs +130 -26
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +39 -15
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs +16 -5
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs +24 -9
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input.mjs +58 -10
- package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-models.mjs +279 -6
- package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-radio.mjs +4 -4
- package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-select.mjs +135 -37
- package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-switch.mjs +18 -3
- package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs +51 -62
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs +57 -12
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-time.mjs +16 -5
- package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +100 -9
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms.mjs +91 -46
- package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-handlers.mjs +18 -3
- package/fesm2022/sdcorejs-angular-handlers.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-i18n.mjs +510 -68
- package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-interceptors.mjs +87 -29
- package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-auth.mjs +25 -15
- package/fesm2022/sdcorejs-angular-modules-auth.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-icon.mjs +2 -2
- package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs +32 -3
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-layout.mjs +441 -135
- package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-permission.mjs +177 -40
- package/fesm2022/sdcorejs-angular-modules-permission.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-pipes.mjs +62 -28
- package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-api.mjs +123 -13
- package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-cache.mjs +53 -3
- package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-confirm.mjs +25 -73
- package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-excel.mjs +12 -10
- package/fesm2022/sdcorejs-angular-services-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-loading.mjs +75 -84
- package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-notify.mjs +46 -5
- package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-storage.mjs +4 -0
- package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services.mjs +0 -1
- package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs +225 -80
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-models.mjs +1 -63
- package/fesm2022/sdcorejs-angular-utilities-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular.mjs +17 -10
- package/fesm2022/sdcorejs-angular.mjs.map +1 -1
- package/forms/autocomplete/src/autocomplete.component.d.ts +5 -2
- package/forms/chip-calendar/src/chip-calendar.component.d.ts +10 -0
- package/forms/date/src/date-input.util.d.ts +18 -0
- package/forms/date/src/date.component.d.ts +21 -3
- package/forms/date-range/src/date-range.component.d.ts +13 -2
- package/forms/datetime/src/datetime.component.d.ts +13 -2
- package/forms/entity-picker/src/entity-picker.component.d.ts +9 -3
- package/forms/input/src/input.component.d.ts +3 -0
- package/forms/input-color/src/input-color.component.d.ts +4 -0
- package/forms/input-number/src/input-number.component.d.ts +3 -0
- package/forms/models/index.d.ts +4 -0
- package/forms/models/src/sd-form-control-connector.d.ts +12 -0
- package/forms/models/src/sd-model-facing-control.d.ts +43 -0
- package/forms/models/src/sd-search.model.d.ts +1 -1
- package/forms/models/src/sd-selection-data.model.d.ts +1 -1
- package/forms/models/src/sd-strict-date-adapter.d.ts +26 -0
- package/forms/models/src/sd-temporal-transform.d.ts +31 -0
- package/forms/models/src/sd-timer-scope.d.ts +29 -0
- package/forms/select/src/select.component.d.ts +27 -4
- package/forms/src/forms.module.d.ts +22 -13
- package/forms/switch/src/switch.component.d.ts +5 -0
- package/forms/textarea/src/textarea.component.d.ts +5 -3
- package/forms/time-range/src/time-range.component.d.ts +22 -1
- package/forms/tree-select/src/tree-select.component.d.ts +36 -5
- package/i18n/src/en.d.ts +94 -10
- package/i18n/src/i18n.messages.d.ts +1 -1
- package/i18n/src/i18n.pipe.d.ts +3 -3
- package/i18n/src/i18n.service.d.ts +2 -1
- package/i18n/src/i18n.types.d.ts +0 -3
- package/interceptors/no-internet/no-internet.interceptor.d.ts +11 -1
- package/modules/auth/services/auth.model.d.ts +1 -1
- package/modules/keycloak/keycloak.service.d.ts +1 -0
- package/modules/layout/components/shared/menu-tree/menu-tree.component.d.ts +2 -0
- package/modules/layout/components/sidebar-mobile-v1/components/sidebar/sidebar.component.d.ts +3 -3
- package/modules/layout/components/sidebar-mobile-v1/main.component.d.ts +3 -3
- package/modules/layout/components/sidebar-mobile-v2/main.component.d.ts +3 -3
- package/modules/layout/components/sidebar-mobile-v3/main.component.d.ts +3 -3
- package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +8 -3
- package/modules/layout/components/sidebar-v1/main.component.d.ts +3 -3
- package/modules/layout/components/sidebar-v2/main.component.d.ts +3 -3
- package/modules/layout/components/sidebar-v3/main.component.d.ts +3 -3
- package/modules/layout/index.d.ts +1 -0
- package/modules/layout/modules/forbidden/pages/root/root.component.d.ts +5 -0
- package/modules/layout/modules/not-found/pages/root/root.component.d.ts +5 -0
- package/modules/layout/services/layout.service.d.ts +21 -0
- package/modules/layout/services/storage/storage.service.d.ts +52 -7
- package/modules/layout/utils/index.d.ts +1 -0
- package/modules/layout/utils/tab-name.util.d.ts +8 -0
- package/modules/permission/src/configurations/permission.configuration.d.ts +11 -0
- package/modules/permission/src/directives/permission.directive.d.ts +2 -1
- package/modules/permission/src/services/permission.service.d.ts +52 -1
- package/package.json +48 -33
- package/pipes/src/safe-html.pipe.d.ts +26 -4
- package/pipes/src/time-different.pipe.d.ts +1 -0
- package/public-api.d.ts +11 -10
- package/services/api/src/api-host.d.ts +15 -0
- package/services/api/src/api.model.d.ts +14 -0
- package/services/api/src/api.module.d.ts +6 -0
- package/services/cache/src/cache.model.d.ts +10 -0
- package/services/index.d.ts +0 -1
- package/services/notify/index.d.ts +1 -1
- package/utilities/extensions/index.d.ts +1 -5
- package/utilities/extensions/src/url-safety.d.ts +72 -0
- package/utilities/extensions/src/utility.extension.d.ts +9 -5
- package/utilities/models/index.d.ts +0 -10
- package/components/base/index.d.ts +0 -1
- package/components/base/src/base-secure.component.d.ts +0 -8
- package/components/document-builder/index.d.ts +0 -4
- package/components/document-builder/src/components/header-footer-builder/header-footer-builder.component.d.ts +0 -15
- package/components/document-builder/src/components/header-footer-builder/plugins/page-number.plugin.d.ts +0 -4
- package/components/document-builder/src/components/index.d.ts +0 -1
- package/components/document-builder/src/document-builder.component.d.ts +0 -53
- package/components/document-builder/src/document-builder.config.d.ts +0 -21
- package/components/document-builder/src/document-builder.model.d.ts +0 -41
- package/components/document-builder/src/document-builder.utils.d.ts +0 -10
- package/components/document-builder/src/plugins/block-space/block-space.plugin.d.ts +0 -9
- package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.d.ts +0 -44
- package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.model.d.ts +0 -57
- package/components/document-builder/src/plugins/heading/heading.plugin.d.ts +0 -5
- package/components/document-builder/src/plugins/highlight-range/highlight-range.plugin.d.ts +0 -4
- package/components/document-builder/src/plugins/image-custom/image-custom.plugin.d.ts +0 -31
- package/components/document-builder/src/plugins/image-upload/image-upload.plugin.d.ts +0 -5
- package/components/document-builder/src/plugins/index.d.ts +0 -11
- package/components/document-builder/src/plugins/page-orientation/page-orientation.plugin.d.ts +0 -24
- package/components/document-builder/src/plugins/paste-handler/filters/bookmark.d.ts +0 -14
- package/components/document-builder/src/plugins/paste-handler/filters/br.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/image.d.ts +0 -25
- package/components/document-builder/src/plugins/paste-handler/filters/list.d.ts +0 -29
- package/components/document-builder/src/plugins/paste-handler/filters/parse.d.ts +0 -35
- package/components/document-builder/src/plugins/paste-handler/filters/removeboldwrapper.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/removegooglesheetstag.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/removeinvalidtablewidth.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/removemsattributes.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/removestyleblock.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/removexmlns.d.ts +0 -15
- package/components/document-builder/src/plugins/paste-handler/filters/replacemsfootnotes.d.ts +0 -54
- package/components/document-builder/src/plugins/paste-handler/filters/space.d.ts +0 -27
- package/components/document-builder/src/plugins/paste-handler/filters/table.d.ts +0 -16
- package/components/document-builder/src/plugins/paste-handler/filters/utils.d.ts +0 -25
- package/components/document-builder/src/plugins/paste-handler/index.d.ts +0 -35
- package/components/document-builder/src/plugins/paste-handler/normalizers/googledocsnormalizer.d.ts +0 -31
- package/components/document-builder/src/plugins/paste-handler/normalizers/googlesheetsnormalizer.d.ts +0 -31
- package/components/document-builder/src/plugins/paste-handler/normalizers/mswordnormalizer.d.ts +0 -29
- package/components/document-builder/src/plugins/paste-handler/types.d.ts +0 -30
- package/components/document-builder/src/plugins/table-custom/index.d.ts +0 -34
- package/components/document-builder/src/plugins/variable/variable.plugin.d.ts +0 -51
- package/components/table/src/pipes/selection-visible-select-all.pipe.d.ts +0 -9
- package/fesm2022/sdcorejs-angular-components-base.mjs +0 -23
- package/fesm2022/sdcorejs-angular-components-base.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs +0 -5038
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-models.mjs +0 -6
- package/fesm2022/sdcorejs-angular-models.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-services-docx.mjs +0 -291
- package/fesm2022/sdcorejs-angular-services-docx.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-services-license.mjs +0 -97
- package/fesm2022/sdcorejs-angular-services-license.mjs.map +0 -1
- package/models/index.d.ts +0 -1
- package/models/src/language.model.d.ts +0 -2
- package/services/docx/index.d.ts +0 -1
- package/services/docx/src/lib/docx.model.d.ts +0 -9
- package/services/docx/src/lib/docx.service.d.ts +0 -14
- package/services/docx/src/lib/pandoc-core.d.ts +0 -11
- package/services/docx/src/public-api.d.ts +0 -2
- package/services/license/index.d.ts +0 -1
- package/services/license/src/license.service.d.ts +0 -9
- package/utilities/extensions/src/array.extension.d.ts +0 -1
- package/utilities/extensions/src/color.extension.d.ts +0 -5
- package/utilities/extensions/src/date.extension.d.ts +0 -1
- package/utilities/extensions/src/number.extension.d.ts +0 -1
- package/utilities/extensions/src/string.extension.d.ts +0 -50
- package/utilities/models/src/color.model.d.ts +0 -4
- package/utilities/models/src/empty.model.d.ts +0 -4
- package/utilities/models/src/filter.model.d.ts +0 -12
- package/utilities/models/src/maybe-async.model.d.ts +0 -10
- package/utilities/models/src/nested-key-of.model.d.ts +0 -4
- package/utilities/models/src/operator.model.d.ts +0 -13
- package/utilities/models/src/order.model.d.ts +0 -4
- package/utilities/models/src/paging.model.d.ts +0 -8
- package/utilities/models/src/pattern.model.d.ts +0 -21
- package/utilities/models/src/size.model.d.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdcorejs-angular-components-tree.mjs","sources":["../../../projects/sdcorejs-angular/components/tree/src/tree-item-def.directive.ts","../../../projects/sdcorejs-angular/components/tree/src/tree.component.ts","../../../projects/sdcorejs-angular/components/tree/src/tree.component.html","../../../projects/sdcorejs-angular/components/tree/sdcorejs-angular-components-tree.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\nimport { SdTreeItemContext } from './tree.model';\n\n@Directive({\n selector: '[sdTreeItemDef]',\n standalone: true,\n})\nexport class SdTreeItemDefDirective<T = any> {\n static ngTemplateContextGuard<T>(_dir: SdTreeItemDefDirective<T>, ctx: unknown): ctx is SdTreeItemContext<T> {\n return true;\n }\n\n readonly templateRef: TemplateRef<SdTreeItemContext<T>> = inject(TemplateRef);\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChild,\n effect,\n inject,\n input,\n isSignal,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SdButton } from '@sdcorejs/angular/components/button';\nimport { SdQuickAction } from '@sdcorejs/angular/components/quick-action';\nimport { TranslatePipe } from '@sdcorejs/angular/i18n';\nimport { SdTreeItemDefDirective } from './tree-item-def.directive';\nimport { SdIcon } from '@sdcorejs/angular/modules/icon';\nimport {\n SdTreeCommand,\n SdTreeDataSource,\n SdTreeComponentOption,\n SdTreeItem,\n SdTreeItemContext,\n SdTreeItemLazy,\n SdTreeLoadErrorEvent,\n SdTreeNode,\n SdTreeOption,\n SdTreeSelectionAction,\n SdTreeSelectionEvent,\n SdTreeSelectorOption,\n SdTreeToggleEvent,\n} from './tree.model';\n\nexport type SdTreeAutoIdPart = 'row' | 'toggle' | 'checkbox' | 'icon' | 'label' | 'command';\n\nexport interface SdTreeNodeAutoIds {\n row?: string;\n toggle?: string;\n checkbox?: string;\n icon?: string;\n label?: string;\n command?: string;\n}\n\nexport interface SdTreeViewCommand<T = any> {\n key: string;\n command: SdTreeCommand<T>;\n title: string;\n icon: string;\n color: SdTreeCommand<T>['color'];\n fontSet: SdTreeCommand<T>['fontSet'];\n disabled: boolean;\n autoId?: string;\n defaultColor: boolean;\n}\n\nexport interface SdTreeViewNode<T = any> extends SdTreeNode<T> {\n icon?: string;\n selected: boolean;\n selectionDisabled: boolean;\n selectionIndeterminate: boolean;\n toggleDisabled: boolean;\n toggleLabel: string;\n ariaExpanded: boolean | null;\n autoIds: SdTreeNodeAutoIds;\n commands: SdTreeViewCommand<T>[];\n context: SdTreeItemContext<T>;\n tabIndex: 0 | -1;\n}\n\nexport interface SdTreeSelectionActionView<T = any> {\n action: SdTreeSelectionAction<T>;\n autoId: string | null;\n}\n\nconst DEFAULT_STATIC_TREE: SdTreeOption<any> = { loadType: 'static' };\nconst EMPTY_TREE_ITEMS: SdTreeItem<any>[] = [];\n\n@Component({\n selector: 'sd-tree',\n standalone: true,\n imports: [\n SdIcon,\n CommonModule,\n MatButtonModule,\n MatCheckboxModule,\n MatMenuModule,\n MatProgressSpinnerModule,\n MatTooltipModule,\n SdButton,\n SdQuickAction,\n TranslatePipe,\n ],\n templateUrl: './tree.component.html',\n styleUrl: './tree.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-autoid]': 'autoId()',\n },\n})\nexport class SdTree<T = any> {\n readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly autoIdInput = input<string | undefined | null>(undefined, { alias: 'autoId' });\n readonly option = input<SdTreeComponentOption<T> | undefined>(undefined);\n\n /** Migration bridge. New usage should put the data source in `option.items`. */\n readonly items = input<SdTreeDataSource<SdTreeItem<T>> | undefined>(undefined);\n /** Migration bridge. New usage should put static/lazy config in `option.tree`. */\n readonly tree = input<SdTreeOption<T> | undefined>(DEFAULT_STATIC_TREE);\n readonly selectedItemsInput = input<T[] | undefined | null>(undefined, { alias: 'selectedItems' });\n readonly commands = input<SdTreeCommand<T>[] | undefined | null>([]);\n readonly selectable = input(true, { transform: booleanAttribute });\n readonly selector = input<SdTreeSelectorOption<T> | undefined | null>(undefined);\n readonly itemTemplate = input<TemplateRef<SdTreeItemContext<T>> | undefined | null>(undefined);\n\n readonly selectedItemsChange = output<T[]>();\n readonly selectChange = output<SdTreeSelectionEvent<T>>();\n readonly expandChange = output<SdTreeToggleEvent<T>>();\n readonly collapseChange = output<SdTreeToggleEvent<T>>();\n readonly loadError = output<SdTreeLoadErrorEvent<T>>();\n\n readonly itemDef = contentChild(SdTreeItemDefDirective<T>);\n readonly resolvedItemsSource = computed<SdTreeDataSource<SdTreeItem<T>>>(() => {\n return this.option()?.items ?? this.items() ?? (EMPTY_TREE_ITEMS as SdTreeItem<T>[]);\n });\n readonly resolvedTree = computed<SdTreeOption<T>>(() => this.option()?.tree ?? this.tree() ?? (DEFAULT_STATIC_TREE as SdTreeOption<T>));\n readonly resolvedSelector = computed(() => this.option()?.selector ?? this.selector());\n readonly resolvedCommands = computed(() => this.option()?.commands ?? this.commands() ?? []);\n readonly resolvedSelectable = computed(() => this.option()?.selectable ?? this.selectable());\n readonly autoId = computed(() => {\n const scope = this.option()?.autoId ?? this.autoIdInput();\n return scope ? `components-tree-${scope}` : undefined;\n });\n readonly resolvedItemTemplate = computed<TemplateRef<SdTreeItemContext<T>> | undefined>(() => {\n return this.itemDef()?.templateRef || this.option()?.itemTemplate || this.itemTemplate() || undefined;\n });\n readonly indentSize = computed(() => this.resolvedTree().indentSize ?? 20);\n\n readonly #rootItems = signal<SdTreeItem<T>[]>([]);\n readonly #expandedState = signal<Record<string, boolean>>({});\n readonly #loadingState = signal<Record<string, boolean>>({});\n readonly #lazyChildren = signal<Record<string, SdTreeItemLazy<T>[]>>({});\n readonly #lazyErrorState = signal<Record<string, unknown>>({});\n readonly #selectedIds = signal<Set<string>>(new Set());\n readonly #filterText = signal('');\n readonly #reloadTick = signal(0);\n readonly rootLoading = signal(false);\n readonly rootError = signal<unknown | null>(null);\n readonly activeNodeId = signal<string | null>(null);\n\n #rootLoadId = 0;\n #lastSource?: SdTreeDataSource<SdTreeItem<T>>;\n #lastSourceValue?: SdTreeItem<T>[];\n #lastReloadTick = -1;\n #treeGeneration = 0;\n readonly #lazyLoadIds = new Map<string, number>();\n\n readonly normalizedFilterText = computed(() => normalizeText(this.#filterText()));\n readonly selectionVisible = computed(() => this.resolvedSelectable() && this.resolvedSelector()?.visible === true);\n readonly selectedIdSet = computed(() => {\n const selectedItems = this.option()?.selectedItems ?? this.selectedItemsInput();\n return selectedItems ? this.#idsFromSelectedItems(selectedItems) : this.#selectedIds();\n });\n\n readonly rootNodes = computed<SdTreeNode<T>[]>(() => this.#buildNodes(this.#rootItems(), 0, null));\n\n readonly visibleNodes = computed<SdTreeNode<T>[]>(() => {\n const filterText = this.normalizedFilterText();\n const result: SdTreeNode<T>[] = [];\n\n const walk = (nodes: SdTreeNode<T>[]) => {\n for (const node of nodes) {\n const nodeOrDescendantMatches = this.#subtreeMatches(node, filterText);\n if (!filterText || nodeOrDescendantMatches) {\n result.push(node);\n }\n\n const shouldShowChildren = filterText ? nodeOrDescendantMatches : node.isExpanded;\n if (shouldShowChildren) {\n walk(node.children);\n }\n }\n };\n\n walk(this.rootNodes());\n return result;\n });\n readonly selectedItems = computed(() => this.#selectedItemsFromIds(this.selectedIdSet()));\n readonly selectedCount = computed(() => this.selectedItems().length);\n readonly selectionMessage = computed(() => {\n const items = this.selectedItems();\n const message = this.resolvedSelector()?.message;\n if (typeof message === 'function') return message(items);\n return message || `Đã chọn ${items.length} mục`;\n });\n readonly visibleSelectionActions = computed(() => {\n const items = this.selectedItems();\n return (this.resolvedSelector()?.actions || []).filter(action => {\n const hidden = typeof action.hidden === 'function' ? action.hidden(items) : action.hidden;\n return !hidden;\n });\n });\n readonly selectionActionViews = computed<SdTreeSelectionActionView<T>[]>(() => {\n return this.visibleSelectionActions().map((action, index) => ({\n action,\n autoId: this.#selectionActionAutoId(index),\n }));\n });\n readonly clearSelectionAutoId = computed(() => {\n const base = this.autoId();\n return base ? `${base}-clear-selection` : null;\n });\n\n /**\n * Template-facing row model. Expensive/variable values are resolved once per\n * signal recomputation so the HTML does not call helper methods for every CD pass.\n */\n readonly visibleViewNodes = computed<SdTreeViewNode<T>[]>(() => {\n const selectedIds = this.selectedIdSet();\n const selectedItems = this.selectedItems();\n const selector = this.resolvedSelector();\n const commands = this.resolvedCommands();\n const nodes = this.visibleNodes();\n const requestedActiveId = this.activeNodeId();\n const activeId = nodes.some(node => node.id === requestedActiveId) ? requestedActiveId : nodes[0]?.id;\n return nodes.map(node => this.#toViewNode(node, selectedIds, selectedItems, selector, commands, node.id === activeId));\n });\n\n readonly trackByNode = (_index: number, node: SdTreeNode<T>): string => node.id;\n\n constructor() {\n effect(() => {\n const source = this.resolvedItemsSource();\n const reloadTick = this.#reloadTick();\n\n // Data sources can be arrays, signals, sync loaders, or async loaders.\n // The effect normalizes them into #rootItems; `reload()` only bumps the tick.\n if (isSignal(source)) {\n const items = source();\n untracked(() => this.#applySignalSource(source, items, reloadTick));\n return;\n }\n\n untracked(() => {\n if (source === this.#lastSource && reloadTick === this.#lastReloadTick) return;\n\n this.#lastSource = source;\n this.#lastSourceValue = undefined;\n this.#lastReloadTick = reloadTick;\n this.#loadRootItems(source);\n });\n });\n }\n\n reload(): void {\n this.#reloadTick.update(value => value + 1);\n }\n\n filter(searchText: string | undefined | null): void {\n this.#filterText.set(searchText ?? '');\n }\n\n isSelected(node: SdTreeNode<T>): boolean {\n return this.selectedIdSet().has(node.id);\n }\n\n nodeIcon(node: SdTreeNode<T>): string | undefined {\n return this.#iconOf(node);\n }\n\n visibleCommands(node: SdTreeNode<T>): SdTreeCommand<T>[] {\n return this.resolvedCommands().filter(command => !this.#resolveBoolean(command.hidden, node.data));\n }\n\n isSelectionDisabled(node: SdTreeNode<T>): boolean {\n const disabled = this.resolvedSelector()?.disabled;\n return disabled ? disabled(node.data, this.selectedItems()) : false;\n }\n\n commandTitle(command: SdTreeCommand<T>, item: T): string {\n return typeof command.title === 'function' ? command.title(item) : command.title;\n }\n\n commandIcon(command: SdTreeCommand<T>, item: T): string {\n const icon = typeof command.icon === 'function' ? command.icon(item) : command.icon;\n return icon || 'more_horiz';\n }\n\n isCommandDisabled(command: SdTreeCommand<T>, item: T): boolean {\n return this.#resolveBoolean(command.disabled, item);\n }\n\n async toggle(node: SdTreeNode<T>, event?: Event): Promise<void> {\n event?.stopPropagation();\n const currentNode = this.#findNode(node.id) ?? node;\n if (!currentNode.hasChildren || currentNode.isLoading) return;\n\n if (currentNode.isExpanded) {\n this.#expandedState.update(state => ({ ...state, [currentNode.id]: false }));\n const toggleEvent = { item: currentNode.data, expanded: false, node: { ...currentNode, isExpanded: false } };\n this.option()?.onCollapse?.(toggleEvent);\n this.collapseChange.emit(toggleEvent);\n return;\n }\n\n await this.#ensureLazyChildren(currentNode);\n const nextNode = this.#findNode(currentNode.id) ?? currentNode;\n if (!nextNode.hasChildren || nextNode.loadError) return;\n\n this.#expandedState.update(state => ({ ...state, [currentNode.id]: true }));\n const toggleEvent = { item: currentNode.data, expanded: true, node: { ...nextNode, isExpanded: true } };\n this.option()?.onExpand?.(toggleEvent);\n this.expandChange.emit(toggleEvent);\n }\n\n toggleSelection(node: SdTreeNode<T>, event?: Event): void {\n event?.stopPropagation();\n if (!this.selectionVisible() || this.isSelectionDisabled(node)) return;\n\n const selector = this.resolvedSelector();\n const selectedIds = new Set(this.selectedIdSet());\n const shouldSelect = !selectedIds.has(node.id);\n if (selector?.single) {\n selectedIds.clear();\n if (shouldSelect) selectedIds.add(node.id);\n } else if (selector?.cascade === 'descendants') {\n this.#setNodeAndDescendants(node, shouldSelect, selectedIds);\n this.#reconcileAncestors(node.parent, selectedIds);\n } else if (shouldSelect) {\n selectedIds.add(node.id);\n } else {\n selectedIds.delete(node.id);\n }\n\n this.#selectedIds.set(selectedIds);\n const selectedItems = this.#selectedItemsFromIds(selectedIds);\n this.option()?.onSelectedItemsChange?.(selectedItems);\n this.selectedItemsChange.emit(selectedItems);\n const selectionEvent = { item: node.data, selected: selectedIds.has(node.id), selectedItems };\n this.option()?.onSelect?.(selectionEvent);\n this.selectChange.emit(selectionEvent);\n }\n\n clearSelection(): void {\n this.#selectedIds.set(new Set());\n this.option()?.onSelectedItemsChange?.([]);\n this.selectedItemsChange.emit([]);\n }\n\n onSelectionAction(action: SdTreeSelectionAction<T>): void {\n action.click(this.selectedItems());\n }\n\n retry(): void {\n this.reload();\n }\n\n retryNode(node: SdTreeNode<T>, event?: Event): void {\n event?.stopPropagation();\n this.#lazyErrorState.update(state => {\n const next = { ...state };\n delete next[node.id];\n return next;\n });\n void this.toggle(node);\n }\n\n errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error || 'Unable to load tree data');\n }\n\n onRowFocus(node: SdTreeNode<T>): void {\n this.activeNodeId.set(node.id);\n }\n\n onRowKeydown(node: SdTreeNode<T>, event: KeyboardEvent): void {\n if (event.target !== event.currentTarget) return;\n const nodes = this.visibleNodes();\n const index = nodes.findIndex(item => item.id === node.id);\n if (index < 0) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.#focusVisibleNode(Math.min(nodes.length - 1, index + 1));\n return;\n case 'ArrowUp':\n event.preventDefault();\n this.#focusVisibleNode(Math.max(0, index - 1));\n return;\n case 'Home':\n event.preventDefault();\n this.#focusVisibleNode(0);\n return;\n case 'End':\n event.preventDefault();\n this.#focusVisibleNode(nodes.length - 1);\n return;\n case 'ArrowRight':\n if (!node.hasChildren) return;\n event.preventDefault();\n if (!node.isExpanded) void this.toggle(node);\n else if (nodes[index + 1]?.parent?.id === node.id) this.#focusVisibleNode(index + 1);\n return;\n case 'ArrowLeft':\n if (!node.isExpanded && !node.parent) return;\n event.preventDefault();\n if (node.isExpanded) void this.toggle(node);\n else this.#focusVisibleNode(nodes.findIndex(item => item.id === node.parent?.id));\n return;\n case 'Enter':\n case ' ':\n if (!this.selectionVisible()) return;\n event.preventDefault();\n this.toggleSelection(node);\n }\n }\n\n createContext(node: SdTreeNode<T>): SdTreeItemContext<T> {\n return this.#createContext(node, this.isSelected(node));\n }\n\n nodeAutoId(node: SdTreeNode<T>, part: SdTreeAutoIdPart): string | undefined {\n const base = this.autoId();\n return base ? `${base}-${part}-${sanitizeId(node.id)}` : undefined;\n }\n\n commandAutoId(node: SdTreeNode<T>, command: SdTreeCommand<T>): string | undefined {\n const base = this.nodeAutoId(node, 'command');\n return base ? `${base}-${sanitizeId(command.key)}` : undefined;\n }\n\n #applySignalSource(source: SdTreeDataSource<SdTreeItem<T>>, items: SdTreeItem<T>[], reloadTick: number): void {\n if (source === this.#lastSource && items === this.#lastSourceValue && reloadTick === this.#lastReloadTick) return;\n\n // A signal source takes ownership immediately. Any promise started by the\n // previous source must no longer be allowed to replace its current value.\n this.#rootLoadId += 1;\n this.#lastSource = source;\n this.#lastSourceValue = items;\n this.#lastReloadTick = reloadTick;\n this.rootLoading.set(false);\n this.rootError.set(null);\n this.#setRootItems(items);\n }\n\n #loadRootItems(source: SdTreeDataSource<SdTreeItem<T>>): void {\n const loadId = ++this.#rootLoadId;\n this.rootLoading.set(true);\n this.rootError.set(null);\n try {\n const result = this.#readItemsSource(source);\n if (isPromiseLike(result)) {\n result\n .then(items => {\n if (loadId === this.#rootLoadId) {\n this.#setRootItems(items);\n }\n })\n .catch(error => {\n if (loadId !== this.#rootLoadId) return;\n this.rootError.set(error);\n this.#setRootItems([]);\n this.loadError.emit({ error });\n })\n .finally(() => {\n if (loadId === this.#rootLoadId) this.rootLoading.set(false);\n });\n return;\n }\n\n if (loadId === this.#rootLoadId) {\n this.#setRootItems(result);\n this.rootLoading.set(false);\n }\n } catch (error) {\n if (loadId === this.#rootLoadId) {\n this.rootError.set(error);\n this.#setRootItems([]);\n this.rootLoading.set(false);\n this.loadError.emit({ error });\n }\n }\n }\n\n #readItemsSource(source: SdTreeDataSource<SdTreeItem<T>>): SdTreeItem<T>[] | Promise<SdTreeItem<T>[]> {\n if (isSignal(source)) return source();\n if (typeof source === 'function') return source();\n return source;\n }\n\n #setRootItems(items: SdTreeItem<T>[] | undefined | null): void {\n this.#treeGeneration += 1;\n this.#lazyLoadIds.clear();\n this.#rootItems.set([...(items ?? [])]);\n this.#lazyChildren.set({});\n this.#loadingState.set({});\n this.#lazyErrorState.set({});\n }\n\n #toViewNode(\n node: SdTreeNode<T>,\n selectedIds: Set<string>,\n selectedItems: T[],\n selector: SdTreeSelectorOption<T> | undefined | null,\n commands: SdTreeCommand<T>[],\n active: boolean\n ): SdTreeViewNode<T> {\n const selected = selectedIds.has(node.id);\n const selectionDisabled = selector?.disabled ? selector.disabled(node.data, selectedItems) : false;\n const viewNode = {\n ...node,\n icon: this.#iconOf(node),\n selected,\n selectionDisabled,\n selectionIndeterminate: this.#isSelectionIndeterminate(node, selectedIds, selector),\n toggleDisabled: !node.hasChildren || node.isLoading,\n toggleLabel: node.loadError ? 'Retry loading tree item' : node.isExpanded ? 'Collapse tree item' : 'Expand tree item',\n ariaExpanded: node.hasChildren ? node.isExpanded : null,\n autoIds: this.#nodeAutoIds(node),\n commands: this.#commandViews(node, commands),\n context: undefined as unknown as SdTreeItemContext<T>,\n tabIndex: active ? (0 as const) : (-1 as const),\n };\n\n viewNode.context = this.#createContext(viewNode, selected);\n return viewNode;\n }\n\n #commandViews(node: SdTreeNode<T>, commands: SdTreeCommand<T>[]): SdTreeViewCommand<T>[] {\n return commands\n .filter(command => !this.#resolveBoolean(command.hidden, node.data))\n .map(command => ({\n key: command.key,\n command,\n title: this.commandTitle(command, node.data),\n icon: this.commandIcon(command, node.data),\n color: command.color || 'secondary',\n fontSet: command.fontSet || 'material-icons-outlined',\n disabled: this.isCommandDisabled(command, node.data),\n autoId: this.commandAutoId(node, command),\n defaultColor: !command.color,\n }));\n }\n\n #createContext(node: SdTreeNode<T>, selected: boolean): SdTreeItemContext<T> {\n return {\n $implicit: node.data,\n item: node.data,\n treeItem: node.treeItem,\n node,\n level: node.level,\n expanded: node.isExpanded,\n selected,\n loading: node.isLoading,\n loadError: node.loadError,\n hasChildren: node.hasChildren,\n isLeaf: !node.hasChildren,\n toggle: () => void this.toggle(node),\n select: () => this.toggleSelection(node),\n retry: () => this.retryNode(node),\n };\n }\n\n #nodeAutoIds(node: SdTreeNode<T>): SdTreeNodeAutoIds {\n return {\n row: this.nodeAutoId(node, 'row'),\n toggle: this.nodeAutoId(node, 'toggle'),\n checkbox: this.nodeAutoId(node, 'checkbox'),\n icon: this.nodeAutoId(node, 'icon'),\n label: this.nodeAutoId(node, 'label'),\n command: this.nodeAutoId(node, 'command'),\n };\n }\n\n #selectionActionAutoId(index: number): string | null {\n const base = this.autoId();\n return base ? `${base}-selection-action-${index}` : null;\n }\n\n #buildNodes(items: SdTreeItem<T>[], level: number, parent: SdTreeNode<T> | null): SdTreeNode<T>[] {\n const option = this.resolvedTree();\n const maxDepth = option.maxDepth;\n if (maxDepth !== undefined && level > maxDepth) return [];\n\n return items.map(item => {\n const rawChildren = this.#childrenOf(item);\n const hasChildren = rawChildren.length > 0 || this.#hasLazyChildren(item);\n const isExpanded = this.#expandedState()[item.id] ?? item.expanded ?? this.#defaultExpanded(level);\n const node: SdTreeNode<T> = {\n treeItem: item,\n data: item.data,\n id: item.id,\n label: item.label,\n level,\n parent,\n children: [],\n hasChildren,\n isExpanded,\n isLoading: this.#loadingState()[item.id] ?? false,\n loadError: this.#lazyErrorState()[item.id],\n };\n node.children = this.#buildNodes(rawChildren, level + 1, node);\n return node;\n });\n }\n\n #childrenOf(item: SdTreeItem<T>): SdTreeItem<T>[] {\n const option = this.resolvedTree();\n // Static items own their `children`; lazy items keep loaded children in component state.\n if (option.loadType === 'lazy') {\n return this.#lazyChildren()[item.id] ?? [];\n }\n\n return item.children ?? [];\n }\n\n #hasLazyChildren(item: SdTreeItem<T>): boolean {\n const option = this.resolvedTree();\n if (option.loadType !== 'lazy' || this.#lazyChildren()[item.id]) return false;\n // Lazy mode uses `hasChildren` as the branch hint before children are loaded.\n return item.hasChildren ?? true;\n }\n\n #defaultExpanded(level: number): boolean {\n const option = this.resolvedTree();\n if (option.loadType !== 'static') return false;\n\n const value = option.defaultExpanded ?? false;\n if (value === true) return true;\n if (value === false) return false;\n return level < value;\n }\n\n #iconOf(node: SdTreeNode<T>): string | undefined {\n // One optional `treeItem.icon` handles both branch and leaf overrides.\n // Without it, branches get folder icons while leaves intentionally render no icon.\n if (node.treeItem.icon) return node.treeItem.icon;\n if (!node.hasChildren) return undefined;\n return node.isExpanded ? 'folder_open' : 'folder';\n }\n\n async #ensureLazyChildren(node: SdTreeNode<T>): Promise<void> {\n const option = this.resolvedTree();\n if (option.loadType !== 'lazy' || node.children.length > 0 || this.#lazyChildren()[node.id]) return;\n\n const generation = this.#treeGeneration;\n const loadId = (this.#lazyLoadIds.get(node.id) ?? 0) + 1;\n this.#lazyLoadIds.set(node.id, loadId);\n this.#loadingState.update(state => ({ ...state, [node.id]: true }));\n this.#lazyErrorState.update(state => {\n const next = { ...state };\n delete next[node.id];\n return next;\n });\n try {\n const lazyItem = node.treeItem as SdTreeItemLazy<T>;\n const children = await Promise.resolve(option.onExpandChildren(lazyItem));\n if (generation !== this.#treeGeneration || this.#lazyLoadIds.get(node.id) !== loadId) return;\n this.#lazyChildren.update(state => ({ ...state, [node.id]: children }));\n // Do not write `children` onto lazy items; that field belongs to static items only.\n lazyItem.hasChildren = children.length > 0;\n } catch (error) {\n if (generation !== this.#treeGeneration || this.#lazyLoadIds.get(node.id) !== loadId) return;\n this.#lazyErrorState.update(state => ({ ...state, [node.id]: error }));\n this.loadError.emit({ item: node.data, error });\n } finally {\n if (generation === this.#treeGeneration && this.#lazyLoadIds.get(node.id) === loadId) {\n this.#loadingState.update(state => ({ ...state, [node.id]: false }));\n }\n }\n }\n\n #setNodeAndDescendants(node: SdTreeNode<T>, selected: boolean, selectedIds: Set<string>): void {\n if (!this.isSelectionDisabled(node)) {\n if (selected) selectedIds.add(node.id);\n else selectedIds.delete(node.id);\n }\n node.children.forEach(child => this.#setNodeAndDescendants(child, selected, selectedIds));\n }\n\n #reconcileAncestors(node: SdTreeNode<T> | null, selectedIds: Set<string>): void {\n let current = node;\n while (current) {\n const selectableChildren = current.children.filter(child => !this.isSelectionDisabled(child));\n if (selectableChildren.length > 0 && selectableChildren.every(child => selectedIds.has(child.id))) selectedIds.add(current.id);\n else selectedIds.delete(current.id);\n current = current.parent;\n }\n }\n\n #isSelectionIndeterminate(node: SdTreeNode<T>, selectedIds: Set<string>, selector: SdTreeSelectorOption<T> | undefined | null): boolean {\n if (selector?.cascade !== 'descendants' || selectedIds.has(node.id)) return false;\n return this.#flattenAll(node.children).some(child => selectedIds.has(child.id));\n }\n\n #focusVisibleNode(index: number): void {\n if (index < 0) return;\n const node = this.visibleNodes()[index];\n const row = this.#host.nativeElement.querySelectorAll<HTMLElement>('[role=\"treeitem\"]')[index];\n if (!node || !row) return;\n this.activeNodeId.set(node.id);\n row.focus();\n }\n\n #findNode(id: string): SdTreeNode<T> | undefined {\n return this.#flattenAll(this.rootNodes()).find(node => node.id === id);\n }\n\n #flattenAll(nodes: SdTreeNode<T>[]): SdTreeNode<T>[] {\n const result: SdTreeNode<T>[] = [];\n const walk = (current: SdTreeNode<T>[]) => {\n for (const node of current) {\n result.push(node);\n walk(node.children);\n }\n };\n walk(nodes);\n return result;\n }\n\n #selectedItemsFromIds(selectedIds: Set<string>): T[] {\n return this.#flattenAll(this.rootNodes())\n .filter(node => selectedIds.has(node.id))\n .map(node => node.data);\n }\n\n #idsFromSelectedItems(selectedItems: T[]): Set<string> {\n const selectedRefs = new Set(selectedItems);\n const selectedDataIds = new Set(selectedItems.map(item => this.#dataId(item)).filter((id): id is string => !!id));\n const result = new Set<string>();\n\n for (const node of this.#flattenAll(this.rootNodes())) {\n const dataId = this.#dataId(node.data);\n if (selectedRefs.has(node.data) || (dataId && selectedDataIds.has(dataId))) {\n result.add(node.id);\n }\n }\n\n return result;\n }\n\n #dataId(item: T): string | undefined {\n const record = item as Record<string, unknown>;\n const value = record?.['id'] ?? record?.['code'] ?? record?.['value'];\n return value != null && value !== '' ? String(value) : undefined;\n }\n\n #nodeMatches(node: SdTreeNode<T>, filterText: string): boolean {\n return normalizeText(node.label).includes(filterText);\n }\n\n #subtreeMatches(node: SdTreeNode<T>, filterText: string): boolean {\n if (this.#nodeMatches(node, filterText)) return true;\n return node.children.some(child => this.#subtreeMatches(child, filterText));\n }\n\n #resolveBoolean(resolver: boolean | ((item: T) => boolean) | undefined, item: T): boolean {\n return typeof resolver === 'function' ? resolver(item) : !!resolver;\n }\n}\n\nfunction normalizeText(value: string): string {\n return value\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .replace(/[\\u0111\\u0110]/g, match => (match === '\\u0110' ? 'D' : 'd'))\n .toLowerCase()\n .trim();\n}\n\nfunction sanitizeId(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n}\n\nfunction isPromiseLike<T>(value: T[] | Promise<T[]>): value is Promise<T[]> {\n return !!value && typeof (value as Promise<T[]>).then === 'function';\n}\n","@let _resolvedItemTemplate = resolvedItemTemplate();\n@let _selectionVisible = selectionVisible();\n@let _selectedCount = selectedCount();\n@let _selectionMessage = selectionMessage();\n@let _selectionActionViews = selectionActionViews();\n@let _rootError = rootError();\n\n@if (rootLoading()) {\n <div class=\"sd-tree__root-loading\" role=\"status\" aria-live=\"polite\">\n <mat-progress-spinner diameter=\"24\" mode=\"indeterminate\" />\n </div>\n} @else if (_rootError) {\n <div class=\"sd-tree__root-error\" role=\"alert\">\n <span>{{ errorMessage(_rootError) }}</span>\n <button type=\"button\" data-tree-retry (click)=\"retry()\">{{ 'core.component.tree.retry' | translate }}</button>\n </div>\n} @else {\n <div class=\"sd-tree\" role=\"tree\" [attr.aria-busy]=\"rootLoading()\" [style.--sd-tree-indent-size]=\"indentSize() + 'px'\">\n @for (node of visibleViewNodes(); track node.id) {\n <div\n class=\"sd-tree__row\"\n role=\"treeitem\"\n [tabIndex]=\"node.tabIndex\"\n [class.sd-tree__row--selected]=\"node.selected\"\n [style.--sd-tree-level]=\"node.level\"\n [attr.aria-level]=\"node.level + 1\"\n [attr.aria-expanded]=\"node.ariaExpanded\"\n [attr.aria-selected]=\"_selectionVisible ? node.selected : null\"\n [attr.aria-checked]=\"_selectionVisible ? (node.selectionIndeterminate ? 'mixed' : node.selected) : null\"\n [attr.data-autoid]=\"node.autoIds.row\"\n (focus)=\"onRowFocus(node)\"\n (keydown)=\"onRowKeydown(node, $event)\">\n <div class=\"sd-tree__main\">\n <button\n type=\"button\"\n class=\"sd-tree__toggle\"\n [class.sd-tree__toggle--placeholder]=\"!node.hasChildren\"\n [disabled]=\"node.toggleDisabled\"\n [attr.aria-label]=\"node.toggleLabel\"\n [attr.data-autoid]=\"node.autoIds.toggle\"\n [attr.data-tree-node-retry]=\"node.loadError ? node.id : null\"\n (click)=\"toggle(node, $event)\">\n @if (node.isLoading) {\n <mat-progress-spinner diameter=\"16\" mode=\"indeterminate\" />\n } @else if (node.loadError) {\n <sd-icon name=\"refresh\"></sd-icon>\n } @else if (node.hasChildren) {\n <sd-icon [name]=\"node.isExpanded ? 'expand_more' : 'chevron_right'\"></sd-icon>\n }\n </button>\n\n @if (_selectionVisible) {\n <mat-checkbox\n class=\"sd-tree__checkbox\"\n [checked]=\"node.selected\"\n [indeterminate]=\"node.selectionIndeterminate\"\n [disabled]=\"node.selectionDisabled\"\n [attr.data-autoid]=\"node.autoIds.checkbox\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelection(node)\" />\n }\n\n @if (node.icon) {\n <sd-icon class=\"sd-tree__item-icon\" color=\"primary\" [attr.data-autoid]=\"node.autoIds.icon\" [name]=\"node.icon\"></sd-icon>\n }\n\n <div class=\"sd-tree__content\" [class.sd-tree__content--custom]=\"_resolvedItemTemplate\" [attr.data-autoid]=\"node.autoIds.label\">\n @if (_resolvedItemTemplate) {\n <ng-container *ngTemplateOutlet=\"_resolvedItemTemplate; context: node.context\" />\n } @else {\n <span class=\"sd-tree__label\">{{ node.label }}</span>\n }\n </div>\n </div>\n\n @if (node.commands.length) {\n <button\n type=\"button\"\n class=\"sd-tree__command-trigger\"\n mat-icon-button\n [matMenuTriggerFor]=\"commandMenu\"\n [attr.data-autoid]=\"node.autoIds.command\"\n (click)=\"$event.stopPropagation()\">\n <sd-icon class=\"c-icon\" name=\"more_vert\"></sd-icon>\n </button>\n <mat-menu #commandMenu=\"matMenu\" class=\"sd-tree__command-menu\">\n @for (command of node.commands; track command.key) {\n <button\n type=\"button\"\n class=\"sd-tree__command-menu-item\"\n mat-menu-item\n [disabled]=\"command.disabled\"\n [attr.data-autoid]=\"command.autoId\"\n (click)=\"command.command.click(node.data)\">\n <span class=\"sd-tree__command-menu-content\">\n <sd-icon\n class=\"c-icon sd-tree__command-menu-icon\"\n [class.sd-tree__command-menu-icon--default]=\"command.defaultColor\"\n [color]=\"command.color\"\n [fontSet]=\"command.fontSet\"\n [name]=\"command.icon\"></sd-icon>\n <span class=\"sd-tree__command-title\">{{ command.title }}</span>\n </span>\n </button>\n }\n </mat-menu>\n }\n </div>\n }\n </div>\n}\n\n<sd-quick-action [opened]=\"_selectedCount > 0\">\n <div class=\"d-flex align-items-center\" sdMessage>\n <div class=\"c-bg-length\">\n <span class=\"c-length sd-tree__qa-count\">{{ _selectedCount }}</span>\n </div>\n <div class=\"c-message\">\n {{ _selectionMessage }}\n </div>\n </div>\n\n <div class=\"d-flex align-items-center mr-8 sd-tree__qa-actions\" sdAction>\n @for (actionView of _selectionActionViews; track $index) {\n <sd-button\n [autoId]=\"actionView.autoId\"\n class=\"ml-4\"\n [tooltip]=\"actionView.action.tooltip\"\n [prefixIcon]=\"actionView.action.icon\"\n [color]=\"actionView.action.color || 'primary'\"\n [type]=\"actionView.action.type || 'light'\"\n [fontSet]=\"actionView.action.fontSet\"\n [title]=\"actionView.action.title\"\n (click)=\"onSelectionAction(actionView.action)\" />\n }\n <sd-button\n [autoId]=\"clearSelectionAutoId()\"\n class=\"ml-4\"\n prefixIcon=\"close\"\n color=\"secondary\"\n type=\"outline\"\n width=\"35px\"\n (click)=\"clearSelection()\" />\n </div>\n</sd-quick-action>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;MAOa,sBAAsB,CAAA;AACjC,IAAA,OAAO,sBAAsB,CAAI,IAA+B,EAAE,GAAY,EAAA;AAC5E,QAAA,OAAO,IAAI;IACb;AAES,IAAA,WAAW,GAAsC,MAAM,CAAC,WAAW,CAAC;wGALlE,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;AC+ED,MAAM,mBAAmB,GAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACrE,MAAM,gBAAgB,GAAsB,EAAE;MAwBjC,MAAM,CAAA;AACR,IAAA,KAAK,GAAG,MAAM,CAA0B,UAAU,CAAC;IACnD,WAAW,GAAG,KAAK,CAA4B,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC9E,IAAA,MAAM,GAAG,KAAK,CAAuC,SAAS,CAAC;;AAG/D,IAAA,KAAK,GAAG,KAAK,CAA8C,SAAS,CAAC;;AAErE,IAAA,IAAI,GAAG,KAAK,CAA8B,mBAAmB,CAAC;IAC9D,kBAAkB,GAAG,KAAK,CAAyB,SAAS,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;AACzF,IAAA,QAAQ,GAAG,KAAK,CAAwC,EAAE,CAAC;IAC3D,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACzD,IAAA,QAAQ,GAAG,KAAK,CAA6C,SAAS,CAAC;AACvE,IAAA,YAAY,GAAG,KAAK,CAAuD,SAAS,CAAC;IAErF,mBAAmB,GAAG,MAAM,EAAO;IACnC,YAAY,GAAG,MAAM,EAA2B;IAChD,YAAY,GAAG,MAAM,EAAwB;IAC7C,cAAc,GAAG,MAAM,EAAwB;IAC/C,SAAS,GAAG,MAAM,EAA2B;AAE7C,IAAA,OAAO,GAAG,YAAY,EAAC,sBAAyB,EAAC;AACjD,IAAA,mBAAmB,GAAG,QAAQ,CAAkC,MAAK;AAC5E,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,IAAK,gBAAoC;AACtF,IAAA,CAAC,CAAC;IACO,YAAY,GAAG,QAAQ,CAAkB,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAK,mBAAuC,CAAC;AAC9H,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC7E,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;AACnF,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACnF,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AAC9B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;QACzD,OAAO,KAAK,GAAG,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAE,GAAG,SAAS;AACvD,IAAA,CAAC,CAAC;AACO,IAAA,oBAAoB,GAAG,QAAQ,CAAgD,MAAK;QAC3F,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,SAAS;AACvG,IAAA,CAAC,CAAC;AACO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC;AAEjE,IAAA,UAAU,GAAG,MAAM,CAAkB,EAAE,CAAC;AACxC,IAAA,cAAc,GAAG,MAAM,CAA0B,EAAE,CAAC;AACpD,IAAA,aAAa,GAAG,MAAM,CAA0B,EAAE,CAAC;AACnD,IAAA,aAAa,GAAG,MAAM,CAAsC,EAAE,CAAC;AAC/D,IAAA,eAAe,GAAG,MAAM,CAA0B,EAAE,CAAC;AACrD,IAAA,YAAY,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,CAAC;AAC7C,IAAA,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;AACxB,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3B,IAAA,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC;AACxC,IAAA,YAAY,GAAG,MAAM,CAAgB,IAAI,CAAC;IAEnD,WAAW,GAAG,CAAC;AACf,IAAA,WAAW;AACX,IAAA,gBAAgB;IAChB,eAAe,GAAG,CAAC,CAAC;IACpB,eAAe,GAAG,CAAC;AACV,IAAA,YAAY,GAAG,IAAI,GAAG,EAAkB;AAExC,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACxE,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;AACzG,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC/E,QAAA,OAAO,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE;AACxF,IAAA,CAAC,CAAC;IAEO,SAAS,GAAG,QAAQ,CAAkB,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAEzF,IAAA,YAAY,GAAG,QAAQ,CAAkB,MAAK;AACrD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE;QAC9C,MAAM,MAAM,GAAoB,EAAE;AAElC,QAAA,MAAM,IAAI,GAAG,CAAC,KAAsB,KAAI;AACtC,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC;AACtE,gBAAA,IAAI,CAAC,UAAU,IAAI,uBAAuB,EAAE;AAC1C,oBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnB;AAEA,gBAAA,MAAM,kBAAkB,GAAG,UAAU,GAAG,uBAAuB,GAAG,IAAI,CAAC,UAAU;gBACjF,IAAI,kBAAkB,EAAE;AACtB,oBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACrB;YACF;AACF,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACtB,QAAA,OAAO,MAAM;AACf,IAAA,CAAC,CAAC;AACO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AAChF,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;AAC3D,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO;QAChD,IAAI,OAAO,OAAO,KAAK,UAAU;AAAE,YAAA,OAAO,OAAO,CAAC,KAAK,CAAC;AACxD,QAAA,OAAO,OAAO,IAAI,CAAA,QAAA,EAAW,KAAK,CAAC,MAAM,MAAM;AACjD,IAAA,CAAC,CAAC;AACO,IAAA,uBAAuB,GAAG,QAAQ,CAAC,MAAK;AAC/C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;AAClC,QAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,MAAM,IAAG;YAC9D,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM;YACzF,OAAO,CAAC,MAAM;AAChB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACO,IAAA,oBAAoB,GAAG,QAAQ,CAAiC,MAAK;AAC5E,QAAA,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,MAAM;YAC5D,MAAM;AACN,YAAA,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;AAC3C,SAAA,CAAC,CAAC;AACL,IAAA,CAAC,CAAC;AACO,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;QAC1B,OAAO,IAAI,GAAG,CAAA,EAAG,IAAI,CAAA,gBAAA,CAAkB,GAAG,IAAI;AAChD,IAAA,CAAC,CAAC;AAEF;;;AAGG;AACM,IAAA,gBAAgB,GAAG,QAAQ,CAAsB,MAAK;AAC7D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE;AACxC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACxC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AACjC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE;AAC7C,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,iBAAiB,CAAC,GAAG,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;AACrG,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;AACxH,IAAA,CAAC,CAAC;IAEO,WAAW,GAAG,CAAC,MAAc,EAAE,IAAmB,KAAa,IAAI,CAAC,EAAE;AAE/E,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACzC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;;;AAIrC,YAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpB,gBAAA,MAAM,KAAK,GAAG,MAAM,EAAE;AACtB,gBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;gBACnE;YACF;YAEA,SAAS,CAAC,MAAK;gBACb,IAAI,MAAM,KAAK,IAAI,CAAC,WAAW,IAAI,UAAU,KAAK,IAAI,CAAC,eAAe;oBAAE;AAExE,gBAAA,IAAI,CAAC,WAAW,GAAG,MAAM;AACzB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;AACjC,gBAAA,IAAI,CAAC,eAAe,GAAG,UAAU;AACjC,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC7B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC;IAC7C;AAEA,IAAA,MAAM,CAAC,UAAqC,EAAA;QAC1C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;IACxC;AAEA,IAAA,UAAU,CAAC,IAAmB,EAAA;QAC5B,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C;AAEA,IAAA,QAAQ,CAAC,IAAmB,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B;AAEA,IAAA,eAAe,CAAC,IAAmB,EAAA;QACjC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpG;AAEA,IAAA,mBAAmB,CAAC,IAAmB,EAAA;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,QAAQ;AAClD,QAAA,OAAO,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,KAAK;IACrE;IAEA,YAAY,CAAC,OAAyB,EAAE,IAAO,EAAA;QAC7C,OAAO,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK;IAClF;IAEA,WAAW,CAAC,OAAyB,EAAE,IAAO,EAAA;QAC5C,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI;QACnF,OAAO,IAAI,IAAI,YAAY;IAC7B;IAEA,iBAAiB,CAAC,OAAyB,EAAE,IAAO,EAAA;QAClD,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;IACrD;AAEA,IAAA,MAAM,MAAM,CAAC,IAAmB,EAAE,KAAa,EAAA;QAC7C,KAAK,EAAE,eAAe,EAAE;AACxB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI;AACnD,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,SAAS;YAAE;AAEvD,QAAA,IAAI,WAAW,CAAC,UAAU,EAAE;YAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAC5E,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;YAC5G,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,GAAG,WAAW,CAAC;AACxC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;YACrC;QACF;AAEA,QAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,WAAW;AAC9D,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,SAAS;YAAE;QAEjD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;QACvG,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,GAAG,WAAW,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;IACrC;IAEA,eAAe,CAAC,IAAmB,EAAE,KAAa,EAAA;QAChD,KAAK,EAAE,eAAe,EAAE;QACxB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAAE;AAEhE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACxC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACjD,MAAM,YAAY,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9C,QAAA,IAAI,QAAQ,EAAE,MAAM,EAAE;YACpB,WAAW,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,YAAY;AAAE,gBAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C;AAAO,aAAA,IAAI,QAAQ,EAAE,OAAO,KAAK,aAAa,EAAE;YAC9C,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC;YAC5D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;QACpD;aAAO,IAAI,YAAY,EAAE;AACvB,YAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B;aAAO;AACL,YAAA,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC;QAC7D,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,GAAG,aAAa,CAAC;AACrD,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC;QAC5C,MAAM,cAAc,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE;QAC7F,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,GAAG,cAAc,CAAC;AACzC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;IACxC;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,GAAG,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;IACnC;AAEA,IAAA,iBAAiB,CAAC,MAAgC,EAAA;QAChD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IACpC;IAEA,KAAK,GAAA;QACH,IAAI,CAAC,MAAM,EAAE;IACf;IAEA,SAAS,CAAC,IAAmB,EAAE,KAAa,EAAA;QAC1C,KAAK,EAAE,eAAe,EAAE;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,IAAG;AAClC,YAAA,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACpB,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;AACF,QAAA,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,YAAY,CAAC,KAAc,EAAA;AACzB,QAAA,OAAO,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,0BAA0B,CAAC;IAC7F;AAEA,IAAA,UAAU,CAAC,IAAmB,EAAA;QAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAChC;IAEA,YAAY,CAAC,IAAmB,EAAE,KAAoB,EAAA;AACpD,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa;YAAE;AAC1C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AACjC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,IAAI,KAAK,GAAG,CAAC;YAAE;AAEf,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC7D;AACF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC9C;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACzB;AACF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACxC;AACF,YAAA,KAAK,YAAY;gBACf,IAAI,CAAC,IAAI,CAAC,WAAW;oBAAE;gBACvB,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,UAAU;AAAE,oBAAA,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACvC,qBAAA,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE;AAAE,oBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,CAAC,CAAC;gBACpF;AACF,YAAA,KAAK,WAAW;gBACd,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE;gBACtC,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,IAAI,CAAC,UAAU;AAAE,oBAAA,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;oBACtC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACjF;AACF,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBAAE;gBAC9B,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;IAEhC;AAEA,IAAA,aAAa,CAAC,IAAmB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACzD;IAEA,UAAU,CAAC,IAAmB,EAAE,IAAsB,EAAA;AACpD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;QAC1B,OAAO,IAAI,GAAG,GAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAE,GAAG,SAAS;IACpE;IAEA,aAAa,CAAC,IAAmB,EAAE,OAAyB,EAAA;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;AAC7C,QAAA,OAAO,IAAI,GAAG,CAAA,EAAG,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA,CAAE,GAAG,SAAS;IAChE;AAEA,IAAA,kBAAkB,CAAC,MAAuC,EAAE,KAAsB,EAAE,UAAkB,EAAA;AACpG,QAAA,IAAI,MAAM,KAAK,IAAI,CAAC,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,IAAI,UAAU,KAAK,IAAI,CAAC,eAAe;YAAE;;;AAI3G,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM;AACzB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IAC3B;AAEA,IAAA,cAAc,CAAC,MAAuC,EAAA;AACpD,QAAA,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,WAAW;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC5C,YAAA,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;gBACzB;qBACG,IAAI,CAAC,KAAK,IAAG;AACZ,oBAAA,IAAI,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE;AAC/B,wBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;oBAC3B;AACF,gBAAA,CAAC;qBACA,KAAK,CAAC,KAAK,IAAG;AACb,oBAAA,IAAI,MAAM,KAAK,IAAI,CAAC,WAAW;wBAAE;AACjC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,oBAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;AAChC,gBAAA,CAAC;qBACA,OAAO,CAAC,MAAK;AACZ,oBAAA,IAAI,MAAM,KAAK,IAAI,CAAC,WAAW;AAAE,wBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9D,gBAAA,CAAC,CAAC;gBACJ;YACF;AAEA,YAAA,IAAI,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE;AAC/B,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC1B,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC7B;QACF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE;AAC/B,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;AACtB,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;YAChC;QACF;IACF;AAEA,IAAA,gBAAgB,CAAC,MAAuC,EAAA;QACtD,IAAI,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,EAAE;QACrC,IAAI,OAAO,MAAM,KAAK,UAAU;YAAE,OAAO,MAAM,EAAE;AACjD,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,aAAa,CAAC,KAAyC,EAAA;AACrD,QAAA,IAAI,CAAC,eAAe,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9B;IAEA,WAAW,CACT,IAAmB,EACnB,WAAwB,EACxB,aAAkB,EAClB,QAAoD,EACpD,QAA4B,EAC5B,MAAe,EAAA;QAEf,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,iBAAiB,GAAG,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,KAAK;AAClG,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,GAAG,IAAI;AACP,YAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACxB,QAAQ;YACR,iBAAiB;YACjB,sBAAsB,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC;YACnF,cAAc,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS;YACnD,WAAW,EAAE,IAAI,CAAC,SAAS,GAAG,yBAAyB,GAAG,IAAI,CAAC,UAAU,GAAG,oBAAoB,GAAG,kBAAkB;AACrH,YAAA,YAAY,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;AACvD,YAAA,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YAChC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC5C,YAAA,OAAO,EAAE,SAA4C;YACrD,QAAQ,EAAE,MAAM,GAAI,CAAW,GAAI,CAAC,CAAW;SAChD;QAED,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC1D,QAAA,OAAO,QAAQ;IACjB;IAEA,aAAa,CAAC,IAAmB,EAAE,QAA4B,EAAA;AAC7D,QAAA,OAAO;AACJ,aAAA,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;AAClE,aAAA,GAAG,CAAC,OAAO,KAAK;YACf,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;AAC1C,YAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,WAAW;AACnC,YAAA,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,yBAAyB;YACrD,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;YACpD,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC;AACzC,YAAA,YAAY,EAAE,CAAC,OAAO,CAAC,KAAK;AAC7B,SAAA,CAAC,CAAC;IACP;IAEA,cAAc,CAAC,IAAmB,EAAE,QAAiB,EAAA;QACnD,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI;YACJ,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,UAAU;YACzB,QAAQ;YACR,OAAO,EAAE,IAAI,CAAC,SAAS;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW;YACzB,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACpC,MAAM,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACxC,KAAK,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAClC;IACH;AAEA,IAAA,YAAY,CAAC,IAAmB,EAAA;QAC9B,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;YACjC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC;YACvC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC;YAC3C,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;YACnC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;YACrC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;SAC1C;IACH;AAEA,IAAA,sBAAsB,CAAC,KAAa,EAAA;AAClC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1B,QAAA,OAAO,IAAI,GAAG,CAAA,EAAG,IAAI,CAAA,kBAAA,EAAqB,KAAK,CAAA,CAAE,GAAG,IAAI;IAC1D;AAEA,IAAA,WAAW,CAAC,KAAsB,EAAE,KAAa,EAAE,MAA4B,EAAA;AAC7E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;AAClC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;AAChC,QAAA,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,GAAG,QAAQ;AAAE,YAAA,OAAO,EAAE;AAEzD,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;YACtB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC1C,YAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACzE,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAClG,YAAA,MAAM,IAAI,GAAkB;AAC1B,gBAAA,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK;gBACL,MAAM;AACN,gBAAA,QAAQ,EAAE,EAAE;gBACZ,WAAW;gBACX,UAAU;gBACV,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK;gBACjD,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;aAC3C;AACD,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC;AAC9D,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,IAAmB,EAAA;AAC7B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;;AAElC,QAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE;YAC9B,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;QAC5C;AAEA,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,EAAE;IAC5B;AAEA,IAAA,gBAAgB,CAAC,IAAmB,EAAA;AAClC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;AAClC,QAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,YAAA,OAAO,KAAK;;AAE7E,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI;IACjC;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC5B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;AAClC,QAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;AAE9C,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,IAAI,KAAK;QAC7C,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,KAAK,KAAK,KAAK;AAAE,YAAA,OAAO,KAAK;QACjC,OAAO,KAAK,GAAG,KAAK;IACtB;AAEA,IAAA,OAAO,CAAC,IAAmB,EAAA;;;AAGzB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI;QACjD,IAAI,CAAC,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,SAAS;QACvC,OAAO,IAAI,CAAC,UAAU,GAAG,aAAa,GAAG,QAAQ;IACnD;IAEA,MAAM,mBAAmB,CAAC,IAAmB,EAAA;AAC3C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;QAClC,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE;AAE7F,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe;AACvC,QAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,IAAG;AAClC,YAAA,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACpB,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;AACF,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAA6B;AACnD,YAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACzE,YAAA,IAAI,UAAU,KAAK,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,MAAM;gBAAE;YACtF,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;;YAEvE,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC5C;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,UAAU,KAAK,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,MAAM;gBAAE;YACtF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACjD;gBAAU;AACR,YAAA,IAAI,UAAU,KAAK,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,MAAM,EAAE;gBACpF,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YACtE;QACF;IACF;AAEA,IAAA,sBAAsB,CAAC,IAAmB,EAAE,QAAiB,EAAE,WAAwB,EAAA;QACrF,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;AACnC,YAAA,IAAI,QAAQ;AAAE,gBAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;;AACjC,gBAAA,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC;QACA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC3F;IAEA,mBAAmB,CAAC,IAA0B,EAAE,WAAwB,EAAA;QACtE,IAAI,OAAO,GAAG,IAAI;QAClB,OAAO,OAAO,EAAE;YACd,MAAM,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC7F,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAAE,gBAAA,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;;AACzH,gBAAA,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AACnC,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM;QAC1B;IACF;AAEA,IAAA,yBAAyB,CAAC,IAAmB,EAAE,WAAwB,EAAE,QAAoD,EAAA;AAC3H,QAAA,IAAI,QAAQ,EAAE,OAAO,KAAK,aAAa,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,YAAA,OAAO,KAAK;QACjF,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjF;AAEA,IAAA,iBAAiB,CAAC,KAAa,EAAA;QAC7B,IAAI,KAAK,GAAG,CAAC;YAAE;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC;AACvC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAc,mBAAmB,CAAC,CAAC,KAAK,CAAC;AAC9F,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG;YAAE;QACnB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,KAAK,EAAE;IACb;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACxE;AAEA,IAAA,WAAW,CAAC,KAAsB,EAAA;QAChC,MAAM,MAAM,GAAoB,EAAE;AAClC,QAAA,MAAM,IAAI,GAAG,CAAC,OAAwB,KAAI;AACxC,YAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;AAC1B,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACjB,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YACrB;AACF,QAAA,CAAC;QACD,IAAI,CAAC,KAAK,CAAC;AACX,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,qBAAqB,CAAC,WAAwB,EAAA;QAC5C,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE;AACrC,aAAA,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;aACvC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;IAC3B;AAEA,IAAA,qBAAqB,CAAC,aAAkB,EAAA;AACtC,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC;AAC3C,QAAA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;AACjH,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU;AAEhC,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1E,gBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,OAAO,CAAC,IAAO,EAAA;QACb,MAAM,MAAM,GAAG,IAA+B;AAC9C,QAAA,MAAM,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,MAAM,GAAG,OAAO,CAAC;AACrE,QAAA,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS;IAClE;IAEA,YAAY,CAAC,IAAmB,EAAE,UAAkB,EAAA;QAClD,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;IACvD;IAEA,eAAe,CAAC,IAAmB,EAAE,UAAkB,EAAA;AACrD,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC;AAAE,YAAA,OAAO,IAAI;AACpD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC7E;IAEA,eAAe,CAAC,QAAsD,EAAE,IAAO,EAAA;AAC7E,QAAA,OAAO,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ;IACrE;wGAnpBW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,GAqBe,sBAAyB,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnI3D,o/LAiJA,EAAA,MAAA,EAAA,CAAA,43VAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrDI,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,KAAA,EAAA,SAAA,EAAA,MAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACN,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,2IACf,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACb,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASJ,MAAM,EAAA,UAAA,EAAA,CAAA;kBAtBlB,SAAS;+BACE,SAAS,EAAA,UAAA,EACP,IAAI,EAAA,OAAA,EACP;wBACP,MAAM;wBACN,YAAY;wBACZ,eAAe;wBACf,iBAAiB;wBACjB,aAAa;wBACb,wBAAwB;wBACxB,gBAAgB;wBAChB,QAAQ;wBACR,aAAa;wBACb,aAAa;qBACd,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,oBAAoB,EAAE,UAAU;AACjC,qBAAA,EAAA,QAAA,EAAA,o/LAAA,EAAA,MAAA,EAAA,CAAA,43VAAA,CAAA,EAAA;;AAwpBH,SAAS,aAAa,CAAC,KAAa,EAAA;AAClC,IAAA,OAAO;SACJ,SAAS,CAAC,KAAK;AACf,SAAA,OAAO,CAAC,kBAAkB,EAAE,EAAE;SAC9B,OAAO,CAAC,iBAAiB,EAAE,KAAK,KAAK,KAAK,KAAK,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;AACpE,SAAA,WAAW;AACX,SAAA,IAAI,EAAE;AACX;AAEA,SAAS,UAAU,CAAC,KAAa,EAAA;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC;AAC9C;AAEA,SAAS,aAAa,CAAI,KAAyB,EAAA;IACjD,OAAO,CAAC,CAAC,KAAK,IAAI,OAAQ,KAAsB,CAAC,IAAI,KAAK,UAAU;AACtE;;AEnxBA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"sdcorejs-angular-components-tree.mjs","sources":["../../../projects/sdcorejs-angular/components/tree/src/tree-item-def.directive.ts","../../../projects/sdcorejs-angular/components/tree/src/tree.component.ts","../../../projects/sdcorejs-angular/components/tree/src/tree.component.html","../../../projects/sdcorejs-angular/components/tree/sdcorejs-angular-components-tree.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\nimport { SdTreeItemContext } from './tree.model';\n\n@Directive({\n selector: '[sdTreeItemDef]',\n standalone: true,\n})\nexport class SdTreeItemDefDirective<T = unknown> {\n static ngTemplateContextGuard<T>(_dir: SdTreeItemDefDirective<T>, ctx: unknown): ctx is SdTreeItemContext<T> {\n return true;\n }\n\n readonly templateRef: TemplateRef<SdTreeItemContext<T>> = inject(TemplateRef);\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChild,\n effect,\n inject,\n input,\n isSignal,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SdButton } from '@sdcorejs/angular/components/button';\nimport { SdQuickAction } from '@sdcorejs/angular/components/quick-action';\nimport { I18nService, SdTranslatePipe } from '@sdcorejs/angular/i18n';\nimport { SdTreeItemDefDirective } from './tree-item-def.directive';\nimport { SdIcon } from '@sdcorejs/angular/modules/icon';\nimport {\n SdTreeCommand,\n SdTreeDataSource,\n SdTreeComponentOption,\n SdTreeItem,\n SdTreeItemContext,\n SdTreeItemLazy,\n SdTreeLoadErrorEvent,\n SdTreeNode,\n SdTreeOption,\n SdTreeSelectionAction,\n SdTreeSelectionEvent,\n SdTreeSelectorOption,\n SdTreeToggleEvent,\n} from './tree.model';\n\nexport type SdTreeAutoIdPart = 'row' | 'toggle' | 'checkbox' | 'icon' | 'label' | 'command';\n\nexport interface SdTreeNodeAutoIds {\n row?: string;\n toggle?: string;\n checkbox?: string;\n icon?: string;\n label?: string;\n command?: string;\n}\n\nexport interface SdTreeViewCommand<T = unknown> {\n key: string;\n command: SdTreeCommand<T>;\n title: string;\n icon: string;\n color: SdTreeCommand<T>['color'];\n fontSet: SdTreeCommand<T>['fontSet'];\n disabled: boolean;\n autoId?: string;\n defaultColor: boolean;\n}\n\nexport interface SdTreeViewNode<T = unknown> extends SdTreeNode<T> {\n icon?: string;\n selected: boolean;\n selectionDisabled: boolean;\n selectionIndeterminate: boolean;\n toggleDisabled: boolean;\n toggleLabel: string;\n ariaExpanded: boolean | null;\n autoIds: SdTreeNodeAutoIds;\n commands: SdTreeViewCommand<T>[];\n context: SdTreeItemContext<T>;\n tabIndex: 0 | -1;\n}\n\nexport interface SdTreeSelectionActionView<T = unknown> {\n action: SdTreeSelectionAction<T>;\n autoId: string | null;\n}\n\nconst DEFAULT_STATIC_TREE: SdTreeOption<any> = { loadType: 'static' };\nconst EMPTY_TREE_ITEMS: SdTreeItem<any>[] = [];\n/** Shared empty lookup — chế độ không cascade khỏi phải dựng Map mới mỗi lần recompute. */\nconst EMPTY_DESCENDANT_COUNTS: ReadonlyMap<string, number> = new Map<string, number>();\n\n@Component({\n selector: 'sd-tree',\n standalone: true,\n imports: [\n SdIcon,\n CommonModule,\n MatButtonModule,\n MatCheckboxModule,\n MatMenuModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatTooltipModule,\n SdButton,\n SdQuickAction,\n SdTranslatePipe,\n ],\n templateUrl: './tree.component.html',\n styleUrl: './tree.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-autoid]': 'autoId()',\n },\n})\nexport class SdTree<T = unknown> {\n readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly #i18n = inject(I18nService);\n readonly autoIdInput = input<string | undefined | null>(undefined, { alias: 'autoId' });\n readonly option = input<SdTreeComponentOption<T> | undefined>(undefined);\n\n /** Migration bridge. New usage should put the data source in `option.items`. */\n readonly items = input<SdTreeDataSource<SdTreeItem<T>> | undefined>(undefined);\n /** Migration bridge. New usage should put static/lazy config in `option.tree`. */\n readonly tree = input<SdTreeOption<T> | undefined>(DEFAULT_STATIC_TREE);\n readonly selectedItemsInput = input<T[] | undefined | null>(undefined, { alias: 'selectedItems' });\n readonly commands = input<SdTreeCommand<T>[] | undefined | null>([]);\n readonly selectable = input(true, { transform: booleanAttribute });\n readonly selector = input<SdTreeSelectorOption<T> | undefined | null>(undefined);\n readonly itemTemplate = input<TemplateRef<SdTreeItemContext<T>> | undefined | null>(undefined);\n\n readonly selectedItemsChange = output<T[]>();\n readonly selectChange = output<SdTreeSelectionEvent<T>>();\n readonly expandChange = output<SdTreeToggleEvent<T>>();\n readonly collapseChange = output<SdTreeToggleEvent<T>>();\n readonly loadError = output<SdTreeLoadErrorEvent<T>>();\n\n readonly itemDef = contentChild(SdTreeItemDefDirective<T>);\n readonly resolvedItemsSource = computed<SdTreeDataSource<SdTreeItem<T>>>(() => {\n return this.option()?.items ?? this.items() ?? (EMPTY_TREE_ITEMS as SdTreeItem<T>[]);\n });\n readonly resolvedTree = computed<SdTreeOption<T>>(() => this.option()?.tree ?? this.tree() ?? (DEFAULT_STATIC_TREE as SdTreeOption<T>));\n readonly resolvedSelector = computed(() => this.option()?.selector ?? this.selector());\n readonly resolvedCommands = computed(() => this.option()?.commands ?? this.commands() ?? []);\n readonly resolvedSelectable = computed(() => this.option()?.selectable ?? this.selectable());\n readonly autoId = computed(() => {\n const scope = this.option()?.autoId ?? this.autoIdInput();\n return scope ? `components-tree-${scope}` : undefined;\n });\n readonly resolvedItemTemplate = computed<TemplateRef<SdTreeItemContext<T>> | undefined>(() => {\n return this.itemDef()?.templateRef || this.option()?.itemTemplate || this.itemTemplate() || undefined;\n });\n readonly indentSize = computed(() => this.resolvedTree().indentSize ?? 20);\n\n readonly #rootItems = signal<SdTreeItem<T>[]>([]);\n readonly #expandedState = signal<Record<string, boolean>>({});\n readonly #loadingState = signal<Record<string, boolean>>({});\n readonly #lazyChildren = signal<Record<string, SdTreeItemLazy<T>[]>>({});\n readonly #lazyErrorState = signal<Record<string, unknown>>({});\n readonly #selectedIds = signal<Set<string>>(new Set());\n readonly #filterText = signal('');\n readonly #reloadTick = signal(0);\n readonly rootLoading = signal(false);\n readonly rootError = signal<unknown | null>(null);\n readonly activeNodeId = signal<string | null>(null);\n\n #rootLoadId = 0;\n #lastSource?: SdTreeDataSource<SdTreeItem<T>>;\n #lastSourceValue?: SdTreeItem<T>[];\n #lastReloadTick = -1;\n #treeGeneration = 0;\n readonly #lazyLoadIds = new Map<string, number>();\n\n readonly normalizedFilterText = computed(() => normalizeText(this.#filterText()));\n readonly selectionVisible = computed(() => this.resolvedSelectable() && this.resolvedSelector()?.visible === true);\n /**\n * why: `selector.single` giới hạn đúng một node, nên ô chọn phải là radio — checkbox là ký hiệu\n * của \"chọn nhiều\" và người dùng chỉ phát hiện ra giới hạn sau khi tick node thứ hai và thấy node\n * đầu tự bỏ chọn. `<sd-tree-select>` không multiple sẽ tự rơi vào nhánh này.\n */\n readonly selectionSingle = computed(() => this.resolvedSelector()?.single === true);\n readonly selectedIdSet = computed(() => {\n const selectedItems = this.option()?.selectedItems ?? this.selectedItemsInput();\n return selectedItems ? this.#idsFromSelectedItems(selectedItems) : this.#selectedIds();\n });\n\n readonly rootNodes = computed<SdTreeNode<T>[]>(() => this.#buildNodes(this.#rootItems(), 0, null));\n\n readonly visibleNodes = computed<SdTreeNode<T>[]>(() => {\n const filterText = this.normalizedFilterText();\n const result: SdTreeNode<T>[] = [];\n\n const walk = (nodes: SdTreeNode<T>[]) => {\n for (const node of nodes) {\n const nodeOrDescendantMatches = this.#subtreeMatches(node, filterText);\n if (!filterText || nodeOrDescendantMatches) {\n result.push(node);\n }\n\n const shouldShowChildren = filterText ? nodeOrDescendantMatches : node.isExpanded;\n if (shouldShowChildren) {\n walk(node.children);\n }\n }\n };\n\n walk(this.rootNodes());\n return result;\n });\n readonly selectedItems = computed(() => this.#selectedItemsFromIds(this.selectedIdSet()));\n readonly selectedCount = computed(() => this.selectedItems().length);\n readonly selectionMessage = computed(() => {\n const items = this.selectedItems();\n const message = this.resolvedSelector()?.message;\n if (typeof message === 'function') return message(items);\n // why: số lượng phải là tham số nội suy, không nối chuỗi — mỗi ngôn ngữ đặt con số ở vị trí khác\n // nhau ('Đã chọn 3 mục' / '3 item(s) selected' / '已选择 3 项').\n return message || this.#i18n.t('core.component.tree.selected-count', { count: items.length });\n });\n readonly visibleSelectionActions = computed(() => {\n const items = this.selectedItems();\n return (this.resolvedSelector()?.actions || []).filter(action => {\n const hidden = typeof action.hidden === 'function' ? action.hidden(items) : action.hidden;\n return !hidden;\n });\n });\n readonly selectionActionViews = computed<SdTreeSelectionActionView<T>[]>(() => {\n return this.visibleSelectionActions().map((action, index) => ({\n action,\n autoId: this.#selectionActionAutoId(index),\n }));\n });\n readonly clearSelectionAutoId = computed(() => {\n const base = this.autoId();\n return base ? `${base}-clear-selection` : null;\n });\n\n /**\n * why: chọn node mà selector KHÔNG khai action nào thì thanh quick-action chỉ còn bộ đếm + nút ✕.\n * Nó nổi đè lên cây để nói lại đúng thứ checkbox đã nói. Đó cũng là lý do `<sd-tree-select>` —\n * vốn chỉ chọn rồi bấm \"Áp dụng\" ở footer modal, không có action nào — không còn thấy thanh này.\n */\n readonly selectionQuickActionOpened = computed(() => this.selectedCount() > 0 && this.selectionActionViews().length > 0);\n\n /**\n * Template-facing row model. Expensive/variable values are resolved once per\n * signal recomputation so the HTML does not call helper methods for every CD pass.\n */\n readonly visibleViewNodes = computed<SdTreeViewNode<T>[]>(() => {\n const selectedIds = this.selectedIdSet();\n const selectedItems = this.selectedItems();\n const selector = this.resolvedSelector();\n const commands = this.resolvedCommands();\n const nodes = this.visibleNodes();\n const requestedActiveId = this.activeNodeId();\n const activeId = nodes.some(node => node.id === requestedActiveId) ? requestedActiveId : nodes[0]?.id;\n // why: đếm 1 lượt bottom-up cho CẢ cây rồi tra theo id. Bản cũ gọi `#flattenAll(node.children)`\n // cho TỪNG node hiển thị ngay trong map này → O(n²) kèm một mảng mới mỗi node mỗi lần\n // recompute. Chỉ cascade 'descendants' mới cần số liệu này nên các chế độ khác bỏ qua hẳn.\n const selectedDescendants =\n selector?.cascade === 'descendants' ? this.#countSelectedDescendants(this.rootNodes(), selectedIds) : EMPTY_DESCENDANT_COUNTS;\n return nodes.map(node =>\n this.#toViewNode(node, selectedIds, selectedItems, selector, commands, node.id === activeId, selectedDescendants)\n );\n });\n\n readonly trackByNode = (_index: number, node: SdTreeNode<T>): string => node.id;\n\n constructor() {\n effect(() => {\n const source = this.resolvedItemsSource();\n const reloadTick = this.#reloadTick();\n\n // Data sources can be arrays, signals, sync loaders, or async loaders.\n // The effect normalizes them into #rootItems; `reload()` only bumps the tick.\n if (isSignal(source)) {\n const items = source();\n untracked(() => this.#applySignalSource(source, items, reloadTick));\n return;\n }\n\n untracked(() => {\n if (source === this.#lastSource && reloadTick === this.#lastReloadTick) return;\n\n this.#lastSource = source;\n this.#lastSourceValue = undefined;\n this.#lastReloadTick = reloadTick;\n this.#loadRootItems(source);\n });\n });\n }\n\n reload(): void {\n this.#reloadTick.update(value => value + 1);\n }\n\n filter(searchText: string | undefined | null): void {\n this.#filterText.set(searchText ?? '');\n }\n\n isSelected(node: SdTreeNode<T>): boolean {\n return this.selectedIdSet().has(node.id);\n }\n\n nodeIcon(node: SdTreeNode<T>): string | undefined {\n return this.#iconOf(node);\n }\n\n visibleCommands(node: SdTreeNode<T>): SdTreeCommand<T>[] {\n return this.resolvedCommands().filter(command => !this.#resolveBoolean(command.hidden, node.data));\n }\n\n isSelectionDisabled(node: SdTreeNode<T>): boolean {\n const disabled = this.resolvedSelector()?.disabled;\n return disabled ? disabled(node.data, this.selectedItems()) : false;\n }\n\n commandTitle(command: SdTreeCommand<T>, item: T): string {\n return typeof command.title === 'function' ? command.title(item) : command.title;\n }\n\n commandIcon(command: SdTreeCommand<T>, item: T): string {\n const icon = typeof command.icon === 'function' ? command.icon(item) : command.icon;\n return icon || 'more_horiz';\n }\n\n isCommandDisabled(command: SdTreeCommand<T>, item: T): boolean {\n return this.#resolveBoolean(command.disabled, item);\n }\n\n async toggle(node: SdTreeNode<T>, event?: Event): Promise<void> {\n event?.stopPropagation();\n const currentNode = this.#findNode(node.id) ?? node;\n if (!currentNode.hasChildren || currentNode.isLoading) return;\n\n if (currentNode.isExpanded) {\n this.#expandedState.update(state => ({ ...state, [currentNode.id]: false }));\n const toggleEvent = { item: currentNode.data, expanded: false, node: { ...currentNode, isExpanded: false } };\n this.option()?.onCollapse?.(toggleEvent);\n this.collapseChange.emit(toggleEvent);\n return;\n }\n\n await this.#ensureLazyChildren(currentNode);\n const nextNode = this.#findNode(currentNode.id) ?? currentNode;\n if (!nextNode.hasChildren || nextNode.loadError) return;\n\n this.#expandedState.update(state => ({ ...state, [currentNode.id]: true }));\n const toggleEvent = { item: currentNode.data, expanded: true, node: { ...nextNode, isExpanded: true } };\n this.option()?.onExpand?.(toggleEvent);\n this.expandChange.emit(toggleEvent);\n }\n\n toggleSelection(node: SdTreeNode<T>, event?: Event): void {\n event?.stopPropagation();\n if (!this.selectionVisible() || this.isSelectionDisabled(node)) return;\n\n const selector = this.resolvedSelector();\n const selectedIds = new Set(this.selectedIdSet());\n const shouldSelect = !selectedIds.has(node.id);\n if (selector?.single) {\n selectedIds.clear();\n if (shouldSelect) selectedIds.add(node.id);\n } else if (selector?.cascade === 'descendants') {\n this.#setNodeAndDescendants(node, shouldSelect, selectedIds);\n this.#reconcileAncestors(node.parent, selectedIds);\n } else if (shouldSelect) {\n selectedIds.add(node.id);\n } else {\n selectedIds.delete(node.id);\n }\n\n this.#selectedIds.set(selectedIds);\n const selectedItems = this.#selectedItemsFromIds(selectedIds);\n this.option()?.onSelectedItemsChange?.(selectedItems);\n this.selectedItemsChange.emit(selectedItems);\n const selectionEvent = { item: node.data, selected: selectedIds.has(node.id), selectedItems };\n this.option()?.onSelect?.(selectionEvent);\n this.selectChange.emit(selectionEvent);\n }\n\n clearSelection(): void {\n this.#selectedIds.set(new Set());\n this.option()?.onSelectedItemsChange?.([]);\n this.selectedItemsChange.emit([]);\n }\n\n onSelectionAction(action: SdTreeSelectionAction<T>): void {\n action.click(this.selectedItems());\n }\n\n retry(): void {\n this.reload();\n }\n\n retryNode(node: SdTreeNode<T>, event?: Event): void {\n event?.stopPropagation();\n this.#lazyErrorState.update(state => {\n const next = { ...state };\n delete next[node.id];\n return next;\n });\n void this.toggle(node);\n }\n\n errorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n // why: thông điệp mặc định khi lỗi không mang message — chuỗi này hiện ra cho người dùng cuối\n // nên phải theo ngôn ngữ đang chọn, không cứng tiếng Anh.\n return error ? String(error) : this.#i18n.t('core.component.tree.load-error');\n }\n\n onRowFocus(node: SdTreeNode<T>): void {\n this.activeNodeId.set(node.id);\n }\n\n onRowKeydown(node: SdTreeNode<T>, event: KeyboardEvent): void {\n if (event.target !== event.currentTarget) return;\n const nodes = this.visibleNodes();\n const index = nodes.findIndex(item => item.id === node.id);\n if (index < 0) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.#focusVisibleNode(Math.min(nodes.length - 1, index + 1));\n return;\n case 'ArrowUp':\n event.preventDefault();\n this.#focusVisibleNode(Math.max(0, index - 1));\n return;\n case 'Home':\n event.preventDefault();\n this.#focusVisibleNode(0);\n return;\n case 'End':\n event.preventDefault();\n this.#focusVisibleNode(nodes.length - 1);\n return;\n case 'ArrowRight':\n if (!node.hasChildren) return;\n event.preventDefault();\n if (!node.isExpanded) void this.toggle(node);\n else if (nodes[index + 1]?.parent?.id === node.id) this.#focusVisibleNode(index + 1);\n return;\n case 'ArrowLeft':\n if (!node.isExpanded && !node.parent) return;\n event.preventDefault();\n if (node.isExpanded) void this.toggle(node);\n else this.#focusVisibleNode(nodes.findIndex(item => item.id === node.parent?.id));\n return;\n case 'Enter':\n case ' ':\n if (!this.selectionVisible()) return;\n event.preventDefault();\n this.toggleSelection(node);\n }\n }\n\n createContext(node: SdTreeNode<T>): SdTreeItemContext<T> {\n return this.#createContext(node, this.isSelected(node));\n }\n\n nodeAutoId(node: SdTreeNode<T>, part: SdTreeAutoIdPart): string | undefined {\n const base = this.autoId();\n return base ? `${base}-${part}-${sanitizeId(node.id)}` : undefined;\n }\n\n commandAutoId(node: SdTreeNode<T>, command: SdTreeCommand<T>): string | undefined {\n const base = this.nodeAutoId(node, 'command');\n return base ? `${base}-${sanitizeId(command.key)}` : undefined;\n }\n\n #applySignalSource(source: SdTreeDataSource<SdTreeItem<T>>, items: SdTreeItem<T>[], reloadTick: number): void {\n if (source === this.#lastSource && items === this.#lastSourceValue && reloadTick === this.#lastReloadTick) return;\n\n // A signal source takes ownership immediately. Any promise started by the\n // previous source must no longer be allowed to replace its current value.\n this.#rootLoadId += 1;\n this.#lastSource = source;\n this.#lastSourceValue = items;\n this.#lastReloadTick = reloadTick;\n this.rootLoading.set(false);\n this.rootError.set(null);\n this.#setRootItems(items);\n }\n\n #loadRootItems(source: SdTreeDataSource<SdTreeItem<T>>): void {\n const loadId = ++this.#rootLoadId;\n this.rootLoading.set(true);\n this.rootError.set(null);\n try {\n const result = this.#readItemsSource(source);\n if (isPromiseLike(result)) {\n result\n .then(items => {\n if (loadId === this.#rootLoadId) {\n this.#setRootItems(items);\n }\n })\n .catch(error => {\n if (loadId !== this.#rootLoadId) return;\n this.rootError.set(error);\n this.#setRootItems([]);\n this.loadError.emit({ error });\n })\n .finally(() => {\n if (loadId === this.#rootLoadId) this.rootLoading.set(false);\n });\n return;\n }\n\n if (loadId === this.#rootLoadId) {\n this.#setRootItems(result);\n this.rootLoading.set(false);\n }\n } catch (error) {\n if (loadId === this.#rootLoadId) {\n this.rootError.set(error);\n this.#setRootItems([]);\n this.rootLoading.set(false);\n this.loadError.emit({ error });\n }\n }\n }\n\n #readItemsSource(source: SdTreeDataSource<SdTreeItem<T>>): SdTreeItem<T>[] | Promise<SdTreeItem<T>[]> {\n if (isSignal(source)) return source();\n if (typeof source === 'function') return source();\n return source;\n }\n\n #setRootItems(items: SdTreeItem<T>[] | undefined | null): void {\n this.#treeGeneration += 1;\n this.#lazyLoadIds.clear();\n this.#rootItems.set([...(items ?? [])]);\n this.#lazyChildren.set({});\n this.#loadingState.set({});\n this.#lazyErrorState.set({});\n }\n\n #toViewNode(\n node: SdTreeNode<T>,\n selectedIds: Set<string>,\n selectedItems: T[],\n selector: SdTreeSelectorOption<T> | undefined | null,\n commands: SdTreeCommand<T>[],\n active: boolean,\n selectedDescendants: ReadonlyMap<string, number>\n ): SdTreeViewNode<T> {\n const selected = selectedIds.has(node.id);\n const selectionDisabled = selector?.disabled ? selector.disabled(node.data, selectedItems) : false;\n const viewNode = {\n ...node,\n icon: this.#iconOf(node),\n selected,\n selectionDisabled,\n selectionIndeterminate: this.#isSelectionIndeterminate(node, selectedIds, selector, selectedDescendants),\n toggleDisabled: !node.hasChildren || node.isLoading,\n // why: nhãn nút gập/mở là tên khả truy cập cho screen reader — trước đây hardcode tiếng Anh\n // trong một component mà template đã dùng key `core.component.tree.retry`, tức lẫn hai ngôn ngữ.\n toggleLabel: this.#i18n.t(\n node.loadError ? 'core.component.tree.retry-item' : node.isExpanded ? 'core.component.tree.collapse' : 'core.component.tree.expand'\n ),\n ariaExpanded: node.hasChildren ? node.isExpanded : null,\n autoIds: this.#nodeAutoIds(node),\n commands: this.#commandViews(node, commands),\n context: undefined as unknown as SdTreeItemContext<T>,\n tabIndex: active ? (0 as const) : (-1 as const),\n };\n\n viewNode.context = this.#createContext(viewNode, selected);\n return viewNode;\n }\n\n #commandViews(node: SdTreeNode<T>, commands: SdTreeCommand<T>[]): SdTreeViewCommand<T>[] {\n return commands\n .filter(command => !this.#resolveBoolean(command.hidden, node.data))\n .map(command => ({\n key: command.key,\n command,\n title: this.commandTitle(command, node.data),\n icon: this.commandIcon(command, node.data),\n color: command.color || 'secondary',\n fontSet: command.fontSet || 'material-icons-outlined',\n disabled: this.isCommandDisabled(command, node.data),\n autoId: this.commandAutoId(node, command),\n defaultColor: !command.color,\n }));\n }\n\n #createContext(node: SdTreeNode<T>, selected: boolean): SdTreeItemContext<T> {\n return {\n $implicit: node.data,\n item: node.data,\n treeItem: node.treeItem,\n node,\n level: node.level,\n expanded: node.isExpanded,\n selected,\n loading: node.isLoading,\n loadError: node.loadError,\n hasChildren: node.hasChildren,\n isLeaf: !node.hasChildren,\n toggle: () => void this.toggle(node),\n select: () => this.toggleSelection(node),\n retry: () => this.retryNode(node),\n };\n }\n\n #nodeAutoIds(node: SdTreeNode<T>): SdTreeNodeAutoIds {\n return {\n row: this.nodeAutoId(node, 'row'),\n toggle: this.nodeAutoId(node, 'toggle'),\n checkbox: this.nodeAutoId(node, 'checkbox'),\n icon: this.nodeAutoId(node, 'icon'),\n label: this.nodeAutoId(node, 'label'),\n command: this.nodeAutoId(node, 'command'),\n };\n }\n\n #selectionActionAutoId(index: number): string | null {\n const base = this.autoId();\n return base ? `${base}-selection-action-${index}` : null;\n }\n\n #buildNodes(items: SdTreeItem<T>[], level: number, parent: SdTreeNode<T> | null): SdTreeNode<T>[] {\n const option = this.resolvedTree();\n const maxDepth = option.maxDepth;\n if (maxDepth !== undefined && level > maxDepth) return [];\n // why: node NẰM ĐÚNG ở maxDepth không bao giờ có con (đệ quy dừng ở level + 1), nên phải kẹp\n // `hasChildren` về false. Trước đây `hasChildren` vẫn đọc từ children THÔ → chevron bật, bấm\n // vào expand ra rỗng mà vẫn bắn `expandChange` (và lazy vẫn gọi `onExpandChildren`).\n const atMaxDepth = maxDepth !== undefined && level >= maxDepth;\n const tree = this;\n\n return items.map(item => {\n const rawChildren = this.#childrenOf(item);\n const hasChildren = !atMaxDepth && (rawChildren.length > 0 || this.#hasLazyChildren(item));\n const node: SdTreeNode<T> = {\n treeItem: item,\n data: item.data,\n id: item.id,\n label: item.label,\n level,\n parent,\n children: [],\n hasChildren,\n // why: state UI (expand / loading / lazy error) được đọc THEO ID lúc truy cập chứ không\n // đóng băng lúc build. Nhờ vậy `rootNodes` chỉ phụ thuộc cấu trúc (`#rootItems`,\n // `#lazyChildren`, option) — mở một node không còn cấp phát lại TOÀN BỘ cây rồi kéo theo\n // `visibleNodes` + `visibleViewNodes` map lại từ đầu. Consumer nào đọc các field này bên\n // trong computed/template vẫn nhận đúng dependency signal, nên phản ứng không đổi.\n get isExpanded(): boolean {\n return tree.#expandedState()[item.id] ?? item.expanded ?? tree.#defaultExpanded(level);\n },\n get isLoading(): boolean {\n return tree.#loadingState()[item.id] ?? false;\n },\n get loadError(): unknown {\n return tree.#lazyErrorState()[item.id];\n },\n };\n node.children = this.#buildNodes(rawChildren, level + 1, node);\n return node;\n });\n }\n\n #childrenOf(item: SdTreeItem<T>): SdTreeItem<T>[] {\n const option = this.resolvedTree();\n // Static items own their `children`; lazy items keep loaded children in component state.\n if (option.loadType === 'lazy') {\n return this.#lazyChildren()[item.id] ?? [];\n }\n\n return item.children ?? [];\n }\n\n #hasLazyChildren(item: SdTreeItem<T>): boolean {\n const option = this.resolvedTree();\n if (option.loadType !== 'lazy' || this.#lazyChildren()[item.id]) return false;\n // Lazy mode uses `hasChildren` as the branch hint before children are loaded.\n return item.hasChildren ?? true;\n }\n\n #defaultExpanded(level: number): boolean {\n const option = this.resolvedTree();\n if (option.loadType !== 'static') return false;\n\n const value = option.defaultExpanded ?? false;\n if (value === true) return true;\n if (value === false) return false;\n return level < value;\n }\n\n #iconOf(node: SdTreeNode<T>): string | undefined {\n // One optional `treeItem.icon` handles both branch and leaf overrides.\n // Without it, branches get folder icons while leaves intentionally render no icon.\n if (node.treeItem.icon) return node.treeItem.icon;\n if (!node.hasChildren) return undefined;\n return node.isExpanded ? 'folder_open' : 'folder';\n }\n\n async #ensureLazyChildren(node: SdTreeNode<T>): Promise<void> {\n const option = this.resolvedTree();\n if (option.loadType !== 'lazy' || node.children.length > 0 || this.#lazyChildren()[node.id]) return;\n\n const generation = this.#treeGeneration;\n const loadId = (this.#lazyLoadIds.get(node.id) ?? 0) + 1;\n this.#lazyLoadIds.set(node.id, loadId);\n this.#loadingState.update(state => ({ ...state, [node.id]: true }));\n this.#lazyErrorState.update(state => {\n const next = { ...state };\n delete next[node.id];\n return next;\n });\n try {\n const lazyItem = node.treeItem as SdTreeItemLazy<T>;\n const children = await Promise.resolve(option.onExpandChildren(lazyItem));\n if (generation !== this.#treeGeneration || this.#lazyLoadIds.get(node.id) !== loadId) return;\n this.#lazyChildren.update(state => ({ ...state, [node.id]: children }));\n // Do not write `children` onto lazy items; that field belongs to static items only.\n lazyItem.hasChildren = children.length > 0;\n } catch (error) {\n if (generation !== this.#treeGeneration || this.#lazyLoadIds.get(node.id) !== loadId) return;\n this.#lazyErrorState.update(state => ({ ...state, [node.id]: error }));\n this.loadError.emit({ item: node.data, error });\n } finally {\n if (generation === this.#treeGeneration && this.#lazyLoadIds.get(node.id) === loadId) {\n this.#loadingState.update(state => ({ ...state, [node.id]: false }));\n }\n }\n }\n\n #setNodeAndDescendants(node: SdTreeNode<T>, selected: boolean, selectedIds: Set<string>): void {\n if (!this.isSelectionDisabled(node)) {\n if (selected) selectedIds.add(node.id);\n else selectedIds.delete(node.id);\n }\n node.children.forEach(child => this.#setNodeAndDescendants(child, selected, selectedIds));\n }\n\n #reconcileAncestors(node: SdTreeNode<T> | null, selectedIds: Set<string>): void {\n let current = node;\n while (current) {\n const selectableChildren = current.children.filter(child => !this.isSelectionDisabled(child));\n if (selectableChildren.length > 0 && selectableChildren.every(child => selectedIds.has(child.id))) selectedIds.add(current.id);\n else selectedIds.delete(current.id);\n current = current.parent;\n }\n }\n\n /**\n * `node.id` → số node ĐƯỢC CHỌN nằm trong subtree của nó (không tính chính nó).\n * Một lượt duyệt bottom-up cho cả cây, thay cho việc flatten lại subtree của từng node.\n */\n #countSelectedDescendants(nodes: SdTreeNode<T>[], selectedIds: Set<string>): ReadonlyMap<string, number> {\n const counts = new Map<string, number>();\n const walk = (node: SdTreeNode<T>): number => {\n let total = 0;\n for (const child of node.children) {\n total += walk(child) + (selectedIds.has(child.id) ? 1 : 0);\n }\n counts.set(node.id, total);\n return total;\n };\n for (const node of nodes) walk(node);\n return counts;\n }\n\n #isSelectionIndeterminate(\n node: SdTreeNode<T>,\n selectedIds: Set<string>,\n selector: SdTreeSelectorOption<T> | undefined | null,\n selectedDescendants: ReadonlyMap<string, number>\n ): boolean {\n if (selector?.cascade !== 'descendants' || selectedIds.has(node.id)) return false;\n return (selectedDescendants.get(node.id) ?? 0) > 0;\n }\n\n #focusVisibleNode(index: number): void {\n if (index < 0) return;\n const node = this.visibleNodes()[index];\n const row = this.#host.nativeElement.querySelectorAll<HTMLElement>('[role=\"treeitem\"]')[index];\n if (!node || !row) return;\n this.activeNodeId.set(node.id);\n row.focus();\n }\n\n #findNode(id: string): SdTreeNode<T> | undefined {\n return this.#flattenAll(this.rootNodes()).find(node => node.id === id);\n }\n\n #flattenAll(nodes: SdTreeNode<T>[]): SdTreeNode<T>[] {\n const result: SdTreeNode<T>[] = [];\n const walk = (current: SdTreeNode<T>[]) => {\n for (const node of current) {\n result.push(node);\n walk(node.children);\n }\n };\n walk(nodes);\n return result;\n }\n\n #selectedItemsFromIds(selectedIds: Set<string>): T[] {\n return this.#flattenAll(this.rootNodes())\n .filter(node => selectedIds.has(node.id))\n .map(node => node.data);\n }\n\n #idsFromSelectedItems(selectedItems: T[]): Set<string> {\n const selectedRefs = new Set(selectedItems);\n const selectedDataIds = new Set(selectedItems.map(item => this.#dataId(item)).filter((id): id is string => !!id));\n const result = new Set<string>();\n\n for (const node of this.#flattenAll(this.rootNodes())) {\n const dataId = this.#dataId(node.data);\n if (selectedRefs.has(node.data) || (dataId && selectedDataIds.has(dataId))) {\n result.add(node.id);\n }\n }\n\n return result;\n }\n\n #dataId(item: T): string | undefined {\n const record = item as Record<string, unknown>;\n const value = record?.['id'] ?? record?.['code'] ?? record?.['value'];\n return value != null && value !== '' ? String(value) : undefined;\n }\n\n #nodeMatches(node: SdTreeNode<T>, filterText: string): boolean {\n return normalizeText(node.label).includes(filterText);\n }\n\n #subtreeMatches(node: SdTreeNode<T>, filterText: string): boolean {\n if (this.#nodeMatches(node, filterText)) return true;\n return node.children.some(child => this.#subtreeMatches(child, filterText));\n }\n\n #resolveBoolean(resolver: boolean | ((item: T) => boolean) | undefined, item: T): boolean {\n return typeof resolver === 'function' ? resolver(item) : !!resolver;\n }\n}\n\nfunction normalizeText(value: string): string {\n return value\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .replace(/[\\u0111\\u0110]/g, match => (match === '\\u0110' ? 'D' : 'd'))\n .toLowerCase()\n .trim();\n}\n\nfunction sanitizeId(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n}\n\nfunction isPromiseLike<T>(value: T[] | Promise<T[]>): value is Promise<T[]> {\n return !!value && typeof (value as Promise<T[]>).then === 'function';\n}\n","@let _resolvedItemTemplate = resolvedItemTemplate();\n@let _selectionVisible = selectionVisible();\n@let _selectionSingle = selectionSingle();\n@let _selectionMessage = selectionMessage();\n@let _selectionActionViews = selectionActionViews();\n@let _selectionQuickActionOpened = selectionQuickActionOpened();\n@let _rootError = rootError();\n\n@if (rootLoading()) {\n <div class=\"sd-tree__root-loading\" role=\"status\" aria-live=\"polite\">\n <mat-progress-spinner diameter=\"24\" mode=\"indeterminate\" />\n </div>\n} @else if (_rootError) {\n <div class=\"sd-tree__root-error\" role=\"alert\">\n <span>{{ errorMessage(_rootError) }}</span>\n <button type=\"button\" data-tree-retry (click)=\"retry()\">{{ 'core.component.tree.retry' | sdTranslate }}</button>\n </div>\n} @else {\n <div class=\"sd-tree\" role=\"tree\" [attr.aria-busy]=\"rootLoading()\" [style.--sd-tree-indent-size]=\"indentSize() + 'px'\">\n @for (node of visibleViewNodes(); track node.id) {\n <!-- why: `[tabIndex]` là property DOM (camelCase) — nó set đúng giá trị nhưng KHÔNG sinh\n attribute `tabindex` trong markup, nên mọi thứ đọc markup (lint a11y, snapshot test,\n devtools inspect) đều thấy row là không focusable. Đổi sang `[attr.tabindex]`. -->\n <div\n class=\"sd-tree__row\"\n role=\"treeitem\"\n [attr.tabindex]=\"node.tabIndex\"\n [class.sd-tree__row--selected]=\"node.selected\"\n [style.--sd-tree-level]=\"node.level\"\n [attr.aria-level]=\"node.level + 1\"\n [attr.aria-expanded]=\"node.ariaExpanded\"\n [attr.aria-selected]=\"_selectionVisible ? node.selected : null\"\n [attr.aria-checked]=\"_selectionVisible ? (node.selectionIndeterminate ? 'mixed' : node.selected) : null\"\n [attr.data-autoid]=\"node.autoIds.row\"\n (focus)=\"onRowFocus(node)\"\n (keydown)=\"onRowKeydown(node, $event)\">\n <div class=\"sd-tree__main\">\n <button\n type=\"button\"\n class=\"sd-tree__toggle\"\n [class.sd-tree__toggle--placeholder]=\"!node.hasChildren\"\n [disabled]=\"node.toggleDisabled\"\n [attr.aria-label]=\"node.toggleLabel\"\n [attr.data-autoid]=\"node.autoIds.toggle\"\n [attr.data-tree-node-retry]=\"node.loadError ? node.id : null\"\n (click)=\"toggle(node, $event)\">\n @if (node.isLoading) {\n <mat-progress-spinner diameter=\"16\" mode=\"indeterminate\" />\n } @else if (node.loadError) {\n <sd-icon name=\"refresh\"></sd-icon>\n } @else if (node.hasChildren) {\n <sd-icon [name]=\"node.isExpanded ? 'expand_more' : 'chevron_right'\"></sd-icon>\n }\n </button>\n\n <!-- why: `selector.single` cho phép đúng MỘT node, mà checkbox lại là ký hiệu của\n \"chọn nhiều\" — người dùng tick node thứ hai rồi mới phát hiện node đầu tự bỏ. Radio\n nói trước điều đó. Không gom vào <mat-radio-group>: group chiếm Arrow Up/Down cho\n việc chuyển lựa chọn, trong khi hàng cây đã dùng đúng hai phím đó để điều hướng. -->\n @if (_selectionVisible) {\n @if (_selectionSingle) {\n <mat-radio-button\n class=\"sd-tree__radio\"\n [checked]=\"node.selected\"\n [disabled]=\"node.selectionDisabled\"\n [attr.data-autoid]=\"node.autoIds.checkbox\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelection(node)\" />\n } @else {\n <mat-checkbox\n class=\"sd-tree__checkbox\"\n [checked]=\"node.selected\"\n [indeterminate]=\"node.selectionIndeterminate\"\n [disabled]=\"node.selectionDisabled\"\n [attr.data-autoid]=\"node.autoIds.checkbox\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelection(node)\" />\n }\n }\n\n @if (node.icon) {\n <sd-icon class=\"sd-tree__item-icon\" color=\"primary\" [attr.data-autoid]=\"node.autoIds.icon\" [name]=\"node.icon\"></sd-icon>\n }\n\n <div class=\"sd-tree__content\" [class.sd-tree__content--custom]=\"_resolvedItemTemplate\" [attr.data-autoid]=\"node.autoIds.label\">\n @if (_resolvedItemTemplate) {\n <ng-container *ngTemplateOutlet=\"_resolvedItemTemplate; context: node.context\" />\n } @else {\n <span class=\"sd-tree__label\">{{ node.label }}</span>\n }\n </div>\n </div>\n\n @if (node.commands.length) {\n <button\n type=\"button\"\n class=\"sd-tree__command-trigger\"\n mat-icon-button\n [matMenuTriggerFor]=\"commandMenu\"\n [attr.data-autoid]=\"node.autoIds.command\"\n (click)=\"$event.stopPropagation()\">\n <sd-icon class=\"c-icon\" name=\"more_vert\"></sd-icon>\n </button>\n <mat-menu #commandMenu=\"matMenu\" class=\"sd-tree__command-menu\">\n @for (command of node.commands; track command.key) {\n <button\n type=\"button\"\n class=\"sd-tree__command-menu-item\"\n mat-menu-item\n [disabled]=\"command.disabled\"\n [attr.data-autoid]=\"command.autoId\"\n (click)=\"command.command.click(node.data)\">\n <span class=\"sd-tree__command-menu-content\">\n <sd-icon\n class=\"c-icon sd-tree__command-menu-icon\"\n [class.sd-tree__command-menu-icon--default]=\"command.defaultColor\"\n [color]=\"command.color\"\n [fontSet]=\"command.fontSet\"\n [name]=\"command.icon\"></sd-icon>\n <span class=\"sd-tree__command-title\">{{ command.title }}</span>\n </span>\n </button>\n }\n </mat-menu>\n }\n </div>\n }\n </div>\n}\n\n<sd-quick-action [opened]=\"_selectionQuickActionOpened\">\n <div class=\"d-flex align-items-center\" sdMessage>\n <div class=\"c-bg-length\">\n <span class=\"c-length sd-tree__qa-count\">{{ selectedCount() }}</span>\n </div>\n <div class=\"c-message\">\n {{ _selectionMessage }}\n </div>\n </div>\n\n <div class=\"d-flex align-items-center mr-8 sd-tree__qa-actions\" sdAction>\n @for (actionView of _selectionActionViews; track $index) {\n <sd-button\n [autoId]=\"actionView.autoId\"\n class=\"ml-4\"\n [tooltip]=\"actionView.action.tooltip\"\n [prefixIcon]=\"actionView.action.icon\"\n [color]=\"actionView.action.color || 'primary'\"\n [type]=\"actionView.action.type || 'light'\"\n [fontSet]=\"actionView.action.fontSet\"\n [title]=\"actionView.action.title\"\n (click)=\"onSelectionAction(actionView.action)\" />\n }\n <sd-button\n [autoId]=\"clearSelectionAutoId()\"\n class=\"ml-4\"\n prefixIcon=\"close\"\n color=\"secondary\"\n type=\"outline\"\n width=\"35px\"\n (click)=\"clearSelection()\" />\n </div>\n</sd-quick-action>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|