@koobiq/components 21.0.0 → 21.1.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/badge/_badge-theme.scss +31 -0
- package/breadcrumbs/breadcrumbs.scss +5 -1
- package/checkbox/_checkbox-theme.scss +0 -17
- package/checkbox/checkbox-tokens.scss +0 -4
- package/code-block/_code-block-theme.scss +7 -6
- package/code-block/code-block-tokens.scss +8 -4
- package/code-block/code-block.scss +54 -32
- package/content-panel/content-panel-header.scss +2 -3
- package/content-panel/content-panel.scss +3 -0
- package/core/selection/pseudo-checkbox/pseudo-checkbox-tokens.scss +0 -2
- package/fesm2022/koobiq-components-accordion.mjs +4 -4
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +10 -2
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +2 -2
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +2 -2
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +18 -8
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +78 -10
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +106 -394
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +4 -4
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +300 -37
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +151 -60
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +3 -3
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +3 -3
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +17 -8
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +124 -41
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +3 -3
- package/fesm2022/koobiq-components-flag.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +90 -27
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +38 -17
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +19 -2
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +76 -17
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +1 -1
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +3 -3
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +86 -25
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +4 -4
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +116 -38
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +86 -7
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +41 -19
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +29 -17
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +49 -12
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +198 -186
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +49 -25
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +30 -11
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +1 -1
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +28 -11
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +2 -2
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +71 -16
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +2 -2
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +2 -2
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +25 -9
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +90 -17
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +27 -7
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +24 -9
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +288 -109
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +0 -12
- package/file-upload/file-upload-tokens.scss +0 -1
- package/file-upload/file-upload.scss +0 -1
- package/filter-bar/_filter-bar-theme.scss +7 -8
- package/filter-bar/filter-bar.scss +0 -1
- package/filter-bar/pipes/base-pipe.scss +36 -2
- package/filter-bar/pipes/pipe-multi-tree-select.scss +27 -0
- package/form-field/_fieldset-theme.scss +2 -7
- package/form-field/_form-field-theme.scss +9 -22
- package/form-field/_hint-theme.scss +20 -0
- package/form-field/fieldset-tokens.scss +0 -1
- package/form-field/fieldset.scss +0 -3
- package/form-field/form-field-tokens.scss +1 -1
- package/form-field/form-field.scss +9 -0
- package/form-field/hint-tokens.scss +3 -0
- package/modal/modal.scss +2 -0
- package/navbar/_navbar-item_vertical.scss +48 -2
- package/navbar/_navbar-theme.scss +11 -3
- package/navbar/navbar-item.scss +17 -0
- package/navbar/navbar-tokens.scss +3 -0
- package/package.json +4 -4
- package/popover/popover.scss +1 -1
- package/radio/_radio-theme.scss +0 -30
- package/radio/radio-tokens.scss +0 -2
- package/schematics/collection.json +94 -89
- package/schematics/migrations/accordion-state-saving-default/{index.js → index.cjs} +5 -4
- package/schematics/migrations/actions-panel-overlay-container/{index.js → index.cjs} +5 -4
- package/schematics/migrations/alert-signals/{index.js → index.cjs} +14 -13
- package/schematics/migrations/angular-animations-removal/index.cjs +21 -0
- package/schematics/migrations/app-switcher-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/autocomplete-panel-width-auto/{index.js → index.cjs} +6 -5
- package/schematics/migrations/autocomplete-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/badge-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/button-state-and-styles/{index.js → index.cjs} +7 -6
- package/schematics/migrations/button-supported-colors/{index.js → index.cjs} +7 -6
- package/schematics/migrations/button-toggle-signals-and-aria/{index.js → index.cjs} +7 -6
- package/schematics/migrations/button-truncation/{index.js → index.cjs} +7 -6
- package/schematics/migrations/checkbox-signals/{index.js → index.cjs} +9 -8
- package/schematics/migrations/clamped-text-disclosure/{index.js → index.cjs} +5 -4
- package/schematics/migrations/code-block-highlight-js-core/README.md +53 -0
- package/schematics/migrations/code-block-highlight-js-core/data.cjs +64 -0
- package/schematics/migrations/code-block-highlight-js-core/index.cjs +319 -0
- package/schematics/migrations/code-block-highlight-js-core/schema.json +20 -0
- package/schematics/migrations/code-block-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/color-signals/index.cjs +20 -0
- package/schematics/migrations/core-mixins-removal/index.cjs +18 -0
- package/schematics/migrations/css-selectors/{index.js → index.cjs} +4 -3
- package/schematics/migrations/datepicker-signals/index.cjs +18 -0
- package/schematics/migrations/deprecated-icons/README.md +21 -5
- package/schematics/migrations/deprecated-icons/{index.js → index.cjs} +15 -28
- package/schematics/migrations/deprecated-icons/schema.json +1 -1
- package/schematics/migrations/design-tokens-v4/{index.js → index.cjs} +3 -2
- package/schematics/migrations/divider-signals-and-aria/{index.js → index.cjs} +5 -4
- package/schematics/migrations/dl-attribute-coercion/{index.js → index.cjs} +7 -6
- package/schematics/migrations/dl-standalone-names/{index.js → index.cjs} +11 -10
- package/schematics/migrations/dropdown-demote-overlay/{index.js → index.cjs} +7 -6
- package/schematics/migrations/dropdown-signals/index.cjs +20 -0
- package/schematics/migrations/empty-state-error-color/{index.js → index.cjs} +5 -4
- package/schematics/migrations/empty-state-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/file-upload-cva-and-primitives/{index.js → index.cjs} +5 -4
- package/schematics/migrations/file-upload-deprecated-outputs/{index.js → index.cjs} +5 -4
- package/schematics/migrations/filter-bar-rename-action/{index.js → index.cjs} +5 -4
- package/schematics/migrations/filter-bar-signals/{index.js → index.cjs} +16 -15
- package/schematics/migrations/filter-bar-state-saving-default/{index.js → index.cjs} +5 -4
- package/schematics/migrations/flag-inner-html/{index.js → index.cjs} +5 -4
- package/schematics/migrations/form-field-signals/{index.js → index.cjs} +18 -17
- package/schematics/migrations/icon-semantics-and-api/{data.js → data.cjs} +4 -4
- package/schematics/migrations/icon-semantics-and-api/{index.js → index.cjs} +6 -5
- package/schematics/migrations/icons-replacement/README.md +16 -2
- package/schematics/migrations/icons-replacement/{index.js → index.cjs} +21 -18
- package/schematics/migrations/icons-replacement/schema.json +12 -3
- package/schematics/migrations/inline-edit-a11y-and-types/{index.js → index.cjs} +5 -4
- package/schematics/migrations/input-number-surface/{index.js → index.cjs} +5 -4
- package/schematics/migrations/input-signals/index.cjs +18 -0
- package/schematics/migrations/link-deprecated-path/{index.js → index.cjs} +4 -3
- package/schematics/migrations/link-signals/{index.js → index.cjs} +5 -4
- package/schematics/migrations/list-signals/index.cjs +18 -0
- package/schematics/migrations/list-tree-multiple-input/{index.js → index.cjs} +7 -6
- package/schematics/migrations/loader-overlay-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/loader-overlay-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/locale-configuration-providers/{index.js → index.cjs} +5 -4
- package/schematics/migrations/mandatory-peer-dependencies/{index.js → index.cjs} +3 -2
- package/schematics/migrations/markdown-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/modal-dialog-semantics/{index.js → index.cjs} +5 -4
- package/schematics/migrations/modal-signals/index.cjs +20 -0
- package/schematics/migrations/navbar-signals-and-aria/{index.js → index.cjs} +7 -6
- package/schematics/migrations/new-icons-pack/README.md +37 -25
- package/schematics/migrations/new-icons-pack/{index.js → index.cjs} +29 -38
- package/schematics/migrations/new-icons-pack/replacement.json +2 -14
- package/schematics/migrations/new-icons-pack/schema.json +3 -3
- package/schematics/migrations/notification-center-signals/{index.js → index.cjs} +5 -4
- package/schematics/migrations/option-signals/index.cjs +20 -0
- package/schematics/migrations/popover-leave-delay/{index.js → index.cjs} +5 -4
- package/schematics/migrations/progress-bar-percentage-and-aria/{index.js → index.cjs} +5 -4
- package/schematics/migrations/progress-spinner-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/query-list-signals/index.cjs +18 -0
- package/schematics/migrations/radio-signals-and-aria/{index.js → index.cjs} +9 -8
- package/schematics/migrations/read-state-dwell-handlers/{index.js → index.cjs} +5 -4
- package/schematics/migrations/scrollbar-deprecated-path/{index.js → index.cjs} +4 -3
- package/schematics/migrations/select-signal-inputs/{index.js → index.cjs} +5 -4
- package/schematics/migrations/sidepanel-non-modal-behavior/{index.js → index.cjs} +5 -4
- package/schematics/migrations/signal-inputs-subclasses/index.cjs +18 -0
- package/schematics/migrations/split-button-optional-disabled/{index.js → index.cjs} +5 -4
- package/schematics/migrations/splitter-deprecated-path/{index.js → index.cjs} +4 -3
- package/schematics/migrations/state-saving-default/{index.js → index.cjs} +5 -4
- package/schematics/migrations/table-cell-content/{index.js → index.cjs} +5 -4
- package/schematics/migrations/tabs-signals-and-aria/{index.js → index.cjs} +5 -4
- package/schematics/migrations/tag-list-cleaner/{index.js → index.cjs} +7 -6
- package/schematics/migrations/tag-slots/{index.js → index.cjs} +6 -5
- package/schematics/migrations/tags-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/textarea-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/time-range-title-for/{index.js → index.cjs} +5 -4
- package/schematics/migrations/timepicker-signals/{index.js → index.cjs} +7 -6
- package/schematics/migrations/timezone-grouping-utils/{index.js → index.cjs} +5 -4
- package/schematics/migrations/title-encapsulation/{index.js → index.cjs} +5 -4
- package/schematics/migrations/toast-stack-and-defaults/{index.js → index.cjs} +5 -4
- package/schematics/migrations/tooltip-pointer-events-and-types/{index.js → index.cjs} +5 -4
- package/schematics/migrations/top-bar-container-selectors/{index.js → index.cjs} +5 -4
- package/schematics/migrations/tree-select-signals/{index.js → index.cjs} +5 -4
- package/schematics/migrations/tree-signals/{index.js → index.cjs} +5 -4
- package/schematics/migrations/tree-state-saving-default/{index.js → index.cjs} +5 -4
- package/schematics/migrations/username-pipe-injection/{index.js → index.cjs} +5 -4
- package/schematics/migrations/v20-upgrade/{data.js → data.cjs} +7 -7
- package/schematics/migrations/v20-upgrade/index.cjs +19 -0
- package/schematics/migrations/v21-upgrade/{data.js → data.cjs} +22 -22
- package/schematics/migrations/v21-upgrade/{index.js → index.cjs} +11 -10
- package/schematics/migrations/zoneless-change-detection/index.cjs +21 -0
- package/schematics/migrations.json +87 -82
- package/schematics/ng-add/{index.js → index.cjs} +15 -289
- package/schematics/utils/{angular-parsing.js → angular-parsing.cjs} +2 -2
- package/schematics/utils/custom-data.cjs +64 -0
- package/schematics/utils/{deprecated-path-migration.js → deprecated-path-migration.cjs} +4 -3
- package/schematics/utils/html-config.cjs +148 -0
- package/schematics/utils/{icon-migration.js → icon-migration.cjs} +11 -5
- package/schematics/utils/list-item-pattern.cjs +16 -0
- package/schematics/utils/{messages.js → messages.cjs} +4 -0
- package/schematics/utils/package-config.cjs +99 -0
- package/schematics/utils/project-files.cjs +25 -0
- package/schematics/utils/replacement-driver.cjs +337 -0
- package/schematics/utils/safe-rule.cjs +23 -0
- package/schematics/utils/signal-members-migration.cjs +779 -0
- package/schematics/utils/tag-patterns.cjs +21 -0
- package/schematics/utils/template-ref-access.cjs +155 -0
- package/schematics/utils/{typescript.js → typescript.cjs} +1 -1
- package/schematics/utils/warn-only-migration.cjs +52 -0
- package/schematics/utils/workspace-styles.cjs +123 -0
- package/select/select.scss +7 -0
- package/tabs/_tabs-common.scss +23 -0
- package/textarea/textarea-tokens.scss +4 -1
- package/toast/toast.component.scss +1 -0
- package/toggle/_toggle-theme.scss +0 -17
- package/tooltip/tooltip.scss +1 -1
- package/top-bar/top-bar-tokens.scss +1 -0
- package/top-bar/top-bar.scss +10 -0
- package/types/koobiq-components-accordion.d.ts +25 -0
- package/types/koobiq-components-button-toggle.d.ts +6 -0
- package/types/koobiq-components-checkbox.d.ts +30 -0
- package/types/koobiq-components-clamped-text.d.ts +16 -3
- package/types/koobiq-components-code-block.d.ts +55 -14
- package/types/koobiq-components-core.d.ts +226 -13
- package/types/koobiq-components-datepicker.d.ts +28 -1
- package/types/koobiq-components-divider.d.ts +28 -10
- package/types/koobiq-components-dropdown.d.ts +19 -0
- package/types/koobiq-components-filter-bar.d.ts +79 -6
- package/types/koobiq-components-flag.d.ts +18 -0
- package/types/koobiq-components-form-field.d.ts +87 -6
- package/types/koobiq-components-icon.d.ts +15 -0
- package/types/koobiq-components-inline-edit.d.ts +8 -1
- package/types/koobiq-components-input.d.ts +22 -3
- package/types/koobiq-components-list.d.ts +6 -0
- package/types/koobiq-components-modal.d.ts +7 -0
- package/types/koobiq-components-navbar.d.ts +71 -7
- package/types/koobiq-components-notification-center.d.ts +13 -0
- package/types/koobiq-components-overflow-items.d.ts +26 -2
- package/types/koobiq-components-popover.d.ts +38 -3
- package/types/koobiq-components-radio.d.ts +30 -0
- package/types/koobiq-components-search-expandable.d.ts +10 -0
- package/types/koobiq-components-select.d.ts +36 -4
- package/types/koobiq-components-sidepanel.d.ts +52 -1
- package/types/koobiq-components-splitter.d.ts +13 -4
- package/types/koobiq-components-tabs.d.ts +4 -0
- package/types/koobiq-components-tags.d.ts +6 -0
- package/types/koobiq-components-textarea.d.ts +9 -2
- package/types/koobiq-components-timepicker.d.ts +15 -0
- package/types/koobiq-components-toggle.d.ts +30 -0
- package/types/koobiq-components-tooltip.d.ts +55 -10
- package/types/koobiq-components-top-bar.d.ts +11 -3
- package/types/koobiq-components-tree-select.d.ts +23 -8
- package/types/koobiq-components-tree.d.ts +144 -60
- package/schematics/migrations/angular-animations-removal/index.js +0 -20
- package/schematics/migrations/color-signals/index.js +0 -19
- package/schematics/migrations/core-mixins-removal/index.js +0 -17
- package/schematics/migrations/datepicker-signals/index.js +0 -17
- package/schematics/migrations/dropdown-signals/index.js +0 -19
- package/schematics/migrations/input-signals/index.js +0 -17
- package/schematics/migrations/list-signals/index.js +0 -17
- package/schematics/migrations/modal-signals/index.js +0 -19
- package/schematics/migrations/option-signals/index.js +0 -19
- package/schematics/migrations/query-list-signals/index.js +0 -17
- package/schematics/migrations/signal-inputs-subclasses/index.js +0 -17
- package/schematics/migrations/v20-upgrade/index.js +0 -18
- package/schematics/migrations/zoneless-change-detection/index.js +0 -20
- package/schematics/utils/package-config.js +0 -13
- /package/schematics/migrations/accordion-state-saving-default/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/actions-panel-overlay-container/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/alert-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/angular-animations-removal/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/app-switcher-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/autocomplete-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/badge-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/button-state-and-styles/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/button-supported-colors/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/button-toggle-signals-and-aria/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/button-truncation/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/checkbox-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/clamped-text-disclosure/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/code-block-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/color-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/core-mixins-removal/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/css-selectors/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/datepicker-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/deprecated-icons/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/divider-signals-and-aria/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/dl-attribute-coercion/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/dl-standalone-names/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/dropdown-demote-overlay/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/dropdown-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/empty-state-error-color/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/file-upload-cva-and-primitives/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/file-upload-deprecated-outputs/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/filter-bar-rename-action/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/filter-bar-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/filter-bar-state-saving-default/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/flag-inner-html/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/form-field-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/icons-replacement/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/inline-edit-a11y-and-types/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/input-number-surface/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/input-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/link-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/list-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/list-tree-multiple-input/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/loader-overlay-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/locale-configuration-providers/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/markdown-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/modal-dialog-semantics/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/modal-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/navbar-signals-and-aria/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/new-icons-pack/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/notification-center-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/option-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/popover-leave-delay/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/progress-bar-percentage-and-aria/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/progress-spinner-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/query-list-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/radio-signals-and-aria/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/read-state-dwell-handlers/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/select-signal-inputs/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/sidepanel-non-modal-behavior/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/signal-inputs-subclasses/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/split-button-optional-disabled/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/state-saving-default/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/table-cell-content/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tabs-signals-and-aria/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tag-list-cleaner/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tags-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/textarea-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/time-range-title-for/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/timepicker-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/timezone-grouping-utils/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/title-encapsulation/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/toast-stack-and-defaults/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tooltip-pointer-events-and-types/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/top-bar-container-selectors/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tree-select-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tree-signals/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/tree-state-saving-default/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/username-pipe-injection/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/zoneless-change-detection/{data.js → data.cjs} +0 -0
- /package/schematics/utils/{ast.js → ast.cjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-navbar.mjs","sources":["../../../packages/components/navbar/outer-width.ts","../../../packages/components/navbar/navbar-item.component.ts","../../../packages/components/navbar/navbar-item.component.html","../../../packages/components/navbar/navbar-brand.component.ts","../../../packages/components/navbar/navbar.component.ts","../../../packages/components/navbar/vertical-navbar.component.ts","../../../packages/components/navbar/navbar-toggle.component.ts","../../../packages/components/navbar/navbar.module.ts","../../../packages/components/navbar/koobiq-components-navbar.ts"],"sourcesContent":["/**\n * Outer width of an element: its border box plus horizontal margins.\n *\n * Measured with `getBoundingClientRect()` rather than `getComputedStyle().width`, which resolves to the used\n * content-box width whatever `box-sizing` says: `.kbq-navbar-item` is `border-box` with horizontal padding, and\n * the navbar compares these sums against its own border box.\n */\nexport const getOuterWidth = (element: Element, window: Window): number => {\n const { marginLeft, marginRight } = window.getComputedStyle(element);\n\n return [marginLeft, marginRight].reduce(\n (acc, item) => acc + (parseFloat(item) || 0),\n element.getBoundingClientRect().width\n );\n};\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { ContentObserver } from '@angular/cdk/observers';\nimport { _getFocusedElementPierceShadowDom, Platform } from '@angular/cdk/platform';\nimport {\n AfterContentInit,\n afterNextRender,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChild,\n contentChildren,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n OnChanges,\n OnDestroy,\n Signal,\n signal,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButton, KbqButtonCssStyler } from '@koobiq/components/button';\nimport {\n DOWN_ARROW,\n ENTER,\n IFocusableOption,\n KBQ_WINDOW,\n kbqAnimationsDisabled,\n kbqInjectNativeElement,\n PopUpPlacements,\n PopUpTriggers,\n RIGHT_ARROW,\n SPACE\n} from '@koobiq/components/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormField } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { Subject } from 'rxjs';\nimport { getOuterWidth } from './outer-width';\n\n/** Orientation of the navbar an element belongs to. */\nexport type KbqNavbarOrientation = 'horizontal' | 'vertical';\n\n/**\n * Elements that already turn Enter/Space into a `click` on their own. Items authored on top of them must not\n * get a synthetic activation on the same key, or the handler runs twice.\n */\nconst NATIVELY_ACTIONABLE_TAGS = new Set(['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA']);\n\n/** Switches an item to its collapsed, icon-only presentation. */\nconst COLLAPSED_ITEM_CLASS = 'kbq-navbar-item_collapsed';\n\n/** @docs-private */\nexport interface KbqNavbarFocusableItemEvent {\n item: KbqNavbarFocusableItem;\n}\n\n@Directive({\n selector: 'kbq-navbar-logo, [kbq-navbar-logo]',\n host: {\n class: 'kbq-navbar-logo'\n }\n})\nexport class KbqNavbarLogo {}\n\n@Directive({\n selector: 'kbq-navbar-item[bento], [kbq-navbar-item][bento]',\n host: {\n class: 'kbq-navbar-bento'\n }\n})\nexport class KbqNavbarBento {}\n\n/** Marks content to be projected after the title of a navbar item. */\n@Directive({\n selector: '[kbqNavbarItemSuffix]',\n host: {\n class: 'kbq-navbar-item-suffix'\n }\n})\nexport class KbqNavbarItemSuffix {}\n\n@Directive({\n selector: 'kbq-navbar-title, [kbq-navbar-title]',\n host: {\n class: 'kbq-navbar-title'\n }\n})\nexport class KbqNavbarTitle {\n /** @docs-private */\n protected readonly isBrowser = inject(Platform).isBrowser;\n /** @docs-private */\n protected readonly nativeElement = kbqInjectNativeElement();\n private readonly window = inject(KBQ_WINDOW);\n\n /** Text content of the title element. */\n get text(): string {\n return this.nativeElement.textContent || '';\n }\n\n /** Whether the text is clipped horizontally (e.g. by `text-overflow: ellipsis`). */\n get isOverflown(): boolean {\n if (!this.isBrowser) return false;\n\n return this.nativeElement.scrollWidth > this.nativeElement.clientWidth;\n }\n\n /**\n * Whether the text is clipped vertically (e.g. by `-webkit-line-clamp`).\n *\n * Kept separate from `isOverflown` on purpose: wrapped text never exceeds its width, so only this\n * check catches a clamped title. `isOverflown` is also read by `KbqNavbarItem`, whose titles are\n * always `nowrap` — folding the two together would let sub-pixel line-height rounding enable\n * tooltips on every navbar item.\n */\n get isClamped(): boolean {\n if (!this.isBrowser) return false;\n\n return this.nativeElement.scrollHeight > this.nativeElement.clientHeight;\n }\n\n /** Outer width of the title: its border box plus horizontal margins. */\n getOuterElementWidth(): number {\n return this.isBrowser ? getOuterWidth(this.nativeElement, this.window) : 0;\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-divider',\n host: {\n class: 'kbq-navbar-divider',\n role: 'separator',\n '[attr.aria-orientation]': 'ariaOrientation'\n }\n})\nexport class KbqNavbarDivider {\n // Optional: the divider only picks up a rectangle element when both directives are imported, which is\n // what `KbqNavbarModule` does but a hand-rolled standalone import need not.\n private readonly rectangleElement = inject(KbqNavbarRectangleElement, { optional: true });\n\n /**\n * The separator runs across the navbar, so it is oriented the other way round: a horizontal navbar gets a\n * vertical rule and vice versa.\n */\n protected get ariaOrientation(): 'horizontal' | 'vertical' {\n return this.rectangleElement?.isHorizontal() ? 'vertical' : 'horizontal';\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-item, [kbq-navbar-item], kbq-navbar-brand, [kbq-navbar-brand], kbq-navbar-toggle',\n host: {\n '[attr.tabindex]': 'tabIndex',\n // `aria-disabled` and not the `disabled` content attribute: these are custom elements, not form\n // controls, so the browser and assistive technology both ignore `disabled` on them.\n '[attr.aria-disabled]': 'explicitlyDisabled || null',\n\n class: 'kbq-navbar-focusable-item',\n '[class.kbq-navbar-item_has-nested]': '!!nestedElement',\n '[class.kbq-disabled]': 'explicitlyDisabled',\n\n '(focus)': 'onFocusHandler()',\n '(blur)': 'blur()'\n }\n})\nexport class KbqNavbarFocusableItem implements OnChanges, AfterContentInit, AfterViewInit, OnDestroy, IFocusableOption {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetector = inject(ChangeDetectorRef);\n private focusMonitor = inject(FocusMonitor);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n\n /** @docs-private */\n readonly title = contentChild(KbqNavbarTitle);\n\n /** @docs-private */\n readonly button = contentChild(KbqButton);\n\n /** @docs-private */\n readonly formField = contentChild(KbqFormField);\n\n /** Interactive element projected into the item, if any. */\n get nestedElement(): KbqButton | KbqFormField | undefined {\n return this.button() || this.formField();\n }\n\n /** @docs-private */\n get tooltip(): KbqTooltipTrigger {\n return this._tooltip;\n }\n\n private _tooltip: KbqTooltipTrigger;\n\n /** @docs-private */\n readonly onFocus = new Subject<KbqNavbarFocusableItemEvent>();\n\n /** @docs-private */\n readonly onBlur = new Subject<KbqNavbarFocusableItemEvent>();\n\n /** @docs-private */\n get hasFocus(): boolean {\n return !!this.nestedElement?.hasFocus || this.hasFocusState();\n }\n\n set hasFocus(value: boolean) {\n this.hasFocusState.set(value);\n }\n\n private readonly hasFocusState = signal(false);\n\n /** Whether the item is disabled. Also `true` for a decorative element, which the key manager skips as well. */\n // An accessor, not a signal: `FocusKeyManager` reads it as a boolean through its default skip predicate, where a\n // signal would always read truthy — the manager would skip every item and arrow navigation would stop working.\n get disabled(): boolean {\n return this.disabledState() || this.decorative();\n }\n\n set disabled(value: boolean) {\n this.disabledState.set(value);\n }\n\n private readonly disabledState = signal(false);\n\n /**\n * Keeps an element with nothing to interact with out of the roving focus order, without announcing or\n * styling it as disabled.\n *\n * @internal\n */\n readonly decorative = signal(false);\n\n /**\n * Whether the item was disabled through `disabled`, as opposed to being decorative.\n *\n * @internal\n */\n get explicitlyDisabled(): boolean {\n return this.disabledState();\n }\n\n /**\n * Items are never in the tab order themselves: the navbar host owns the single tab stop and moves focus\n * between items with the arrow keys (roving tabindex).\n */\n get tabIndex(): number {\n return -1;\n }\n\n /** @docs-private */\n readonly disabledInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n ngOnChanges(changes: SimpleChanges): void {\n // A bound input is handed to its member; unbound, it leaves what code wrote.\n if (changes['disabledInput']) {\n const disabled = this.disabledInput();\n\n if (disabled !== undefined) this.disabled = disabled;\n }\n }\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n this.onFocus.complete();\n this.onBlur.complete();\n });\n }\n\n /** @docs-private */\n ngAfterViewInit(): void {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n const button = this.button();\n\n if (button) {\n button.tabIndex = -1;\n }\n }\n\n /** @docs-private */\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n /** @docs-private */\n setTooltip(value: KbqTooltipTrigger) {\n this._tooltip = value;\n }\n\n /** @docs-private */\n onFocusHandler() {\n if (this.disabled || this.hasFocus) {\n return;\n }\n\n this.onFocus.next({ item: this });\n\n this.hasFocus = true;\n\n this.elementRef.nativeElement.focus();\n }\n\n /** @docs-private */\n focus(origin?: FocusOrigin): void {\n if (this.disabled || this.hasFocus) {\n return;\n }\n\n // A pointer focuses what it lands on by itself; moving the focus for it would surface a focus ring and a\n // tooltip. Focus set by code still has to reach the item, or the host keeps it while this item is active.\n const movesFocus = origin !== 'mouse' && origin !== 'touch';\n\n if (movesFocus) {\n this.focusMonitor.focusVia(this.elementRef, origin ?? 'program');\n }\n\n if (this.nestedElement) {\n // KbqButton tracks focus via FocusMonitor; KbqFormField just delegates to control.focus.\n if (origin === 'keyboard' && 'focusViaKeyboard' in this.nestedElement) {\n this.nestedElement.focusViaKeyboard();\n } else if (movesFocus) {\n this.nestedElement.focus();\n }\n\n this.changeDetector.markForCheck();\n\n return;\n }\n\n if (movesFocus) {\n if (origin === 'keyboard') this.tooltip?.show();\n\n this.onFocusHandler();\n }\n }\n\n /** @docs-private */\n blur(): void {\n // Deferred until the focus has settled: an item hands its focus to its nested button or form field, which\n // registers its focus only after this blur, and the item gets no focus event of its own afterwards. A blur\n // reported before that would read as no item being focused and clear the navbar's active item. An item\n // blurred by its own destruction has nothing to update.\n if (this.destroyRef.destroyed) return;\n\n afterNextRender(\n () => {\n // Focus can be back by the time this runs (a blur and a focus in the same task): then nothing was lost.\n if (_getFocusedElementPierceShadowDom() === this.elementRef.nativeElement) return;\n\n this.hasFocusState.set(false);\n\n this.tooltip?.hide();\n\n if (this.button()?.hasFocus) {\n return;\n }\n\n this.onBlur.next({ item: this });\n },\n { injector: this.injector }\n );\n }\n\n /** @docs-private */\n getLabel(): string {\n return this.title()?.text || '';\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-item, [kbq-navbar-item], kbq-navbar-divider, kbq-navbar-brand, [kbq-navbar-brand]',\n host: {\n '[class.kbq-vertical]': 'isVertical()',\n '[class.kbq-horizontal]': 'isHorizontal()',\n\n '[class.kbq-expanded]': 'isVertical() && !collapsed',\n '[class.kbq-collapsed]': 'isVertical() && collapsed'\n }\n})\nexport class KbqNavbarRectangleElement {\n /** @docs-private */\n protected readonly isBrowser = inject(Platform).isBrowser;\n /** @docs-private */\n protected readonly nativeElement = kbqInjectNativeElement();\n private readonly window = inject(KBQ_WINDOW);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Emits whenever the orientation or the collapsed state of the element changes. @docs-private */\n readonly state = new Subject<void>();\n\n private readonly _orientation = signal<KbqNavbarOrientation>('vertical');\n\n /**\n * Orientation of the navbar this element belongs to. Written by the ambient `KbqNavbar` /\n * `KbqVerticalNavbar`; the element itself only reads it.\n */\n get orientation(): KbqNavbarOrientation {\n return this._orientation();\n }\n\n set orientation(value: KbqNavbarOrientation) {\n if (this._orientation() === value) return;\n\n this._orientation.set(value);\n\n this.state.next();\n }\n\n /** Whether the ambient navbar is horizontal. @docs-private */\n readonly isHorizontal: Signal<boolean> = computed(() => this._orientation() === 'horizontal');\n\n /** Whether the ambient navbar is vertical. @docs-private */\n readonly isVertical: Signal<boolean> = computed(() => this._orientation() === 'vertical');\n\n // Deliberately left `undefined`: it is not equal to either boolean, so the guard below always lets the\n // first assignment through. Initializing it to `false` would swallow the initial `collapsed = false` of a\n // navbar that starts expanded, and with it the `updateDropdown()` that rides on that emission.\n private readonly _collapsed = signal<boolean | undefined>(undefined);\n\n /** Whether the element is rendered in its collapsed (icon-only) form. @docs-private */\n get collapsed(): boolean {\n return !!this._collapsed();\n }\n\n set collapsed(value: boolean) {\n if (this._collapsed() === value) return;\n\n this._collapsed.set(value);\n\n this.state.next();\n }\n\n /** Signal mirror of `collapsed`, for `computed()` consumers. @docs-private */\n readonly collapsedState: Signal<boolean> = computed(() => !!this._collapsed());\n\n /** @docs-private */\n readonly button = contentChild(KbqButtonCssStyler);\n\n constructor() {\n this.destroyRef.onDestroy(() => this.state.complete());\n }\n\n /** Outer width of the element: its border box plus horizontal margins. */\n getOuterElementWidth(): number {\n return this.isBrowser ? getOuterWidth(this.nativeElement, this.window) : 0;\n }\n}\n\n@Component({\n selector: 'kbq-navbar-item, [kbq-navbar-item]',\n imports: [\n KbqIcon\n ],\n templateUrl: './navbar-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-navbar-item',\n [`[class.${COLLAPSED_ITEM_CLASS}]`]: 'isCollapsed()',\n '[class.kbq-navbar-item_with-title]': '!!title()',\n\n '[attr.role]': 'role',\n '[attr.aria-label]': 'resolvedAriaLabel',\n\n '(keydown)': 'onKeyDown($event)'\n },\n // Composition, not inheritance: the item is not a tooltip trigger, it merely owns one. Only the tooltip\n // inputs that make sense on a navbar item are re-exposed; `KbqNavbarToggle` uses the same pattern.\n // `kbqTooltip` is the tooltip's selector, so under its own name it would match the tooltip a second time\n // wherever that is imported (NG0309).\n hostDirectives: [\n {\n directive: KbqTooltipTrigger,\n inputs: [\n 'kbqTooltip: tooltipText',\n 'kbqTooltipClass',\n 'kbqTooltipColor',\n 'kbqTooltipContext',\n 'kbqTooltipOffset',\n 'kbqTrigger',\n 'kbqPlacement',\n 'kbqPlacementPriority',\n 'kbqEnterDelay',\n 'kbqLeaveDelay',\n 'kbqVisible'\n ],\n outputs: [\n 'kbqVisibleChange',\n 'kbqPlacementChange'\n ]\n }\n ],\n exportAs: 'kbqNavbarItem'\n})\nexport class KbqNavbarItem implements AfterContentInit {\n /** @docs-private */\n readonly rectangleElement = inject(KbqNavbarRectangleElement);\n /** @docs-private */\n readonly navbarFocusableItem = inject(KbqNavbarFocusableItem);\n /** @docs-private */\n readonly tooltip = inject(KbqTooltipTrigger, { self: true });\n\n private readonly nativeElement = kbqInjectNativeElement();\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly dropdownTrigger = inject(KbqDropdownTrigger, { optional: true })!;\n private readonly bento = inject(KbqNavbarBento, { optional: true });\n private readonly contentObserver = inject(ContentObserver);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n\n // Outer widths recorded by `measureWidths()`, 0 while unknown.\n private expandedWidth = 0;\n private collapsedWidth = 0;\n\n /** @docs-private */\n readonly title = contentChild(KbqNavbarTitle);\n\n private readonly icons = contentChildren(KbqIcon, { descendants: true });\n\n /** Icon shown before the title; it stays visible when the item collapses. @docs-private */\n readonly icon: Signal<KbqIcon | undefined> = computed(() =>\n this.icons().find((icon) => !icon.getHostElement().closest('[kbqNavbarItemSuffix]'))\n );\n\n /** Text shown in the tooltip of a collapsed item. Defaults to the text of the projected `kbq-navbar-title`. */\n readonly collapsedText = input<string>('');\n\n /** Whether the item may be collapsed when the horizontal navbar runs out of room. */\n readonly collapsable = input(true, { transform: booleanAttribute });\n\n /**\n * Explicitly enables or disables the item's tooltip.\n *\n * Left unset, the tooltip is enabled exactly when the title cannot be read from the item itself — the item\n * is collapsed, its title is clipped, or it has no title at all.\n */\n readonly tooltipDisabled = input<boolean | undefined, unknown>(undefined, {\n alias: 'kbqTooltipDisabled',\n transform: (value: unknown) => (value === undefined ? undefined : booleanAttribute(value))\n });\n\n private readonly ownCollapsed = signal<boolean | undefined>(undefined);\n\n /** Collapses the item regardless of what the ambient navbar decided. */\n set collapsed(value: boolean) {\n this.ownCollapsed.set(value);\n }\n\n /** Whether the item is rendered in its collapsed (icon-only) form. */\n // todo in future need rename to 'collapsed'\n readonly isCollapsed: Signal<boolean> = computed(\n () => this.ownCollapsed() ?? this.rectangleElement.collapsedState()\n );\n\n /** @docs-private */\n get croppedText(): string {\n const croppedTitleText = this.title()?.isOverflown ? this.titleText : '';\n\n return `${croppedTitleText}`;\n }\n\n /** Text used for the tooltip and for the accessible name of a collapsed item. */\n get titleText(): string | null {\n return this.collapsedText() || this.title()?.text || null;\n }\n\n /** @docs-private */\n get hasDropDownTrigger(): boolean {\n return !!this.dropdownTrigger;\n }\n\n /** @docs-private */\n protected readonly showVerticalDropDownAngle: Signal<boolean> = computed(\n () => !this.bento && this.hasDropDownTrigger && this.rectangleElement.isVertical() && !this.isCollapsed()\n );\n\n /** @docs-private */\n protected readonly showHorizontalDropDownAngle: Signal<boolean> = computed(\n () => this.hasDropDownTrigger && this.rectangleElement.isHorizontal() && !this.isCollapsed()\n );\n\n /**\n * Whether the title of a vertical bento item slides in without motion.\n *\n * @docs-private\n */\n protected readonly animationsDisabled = kbqAnimationsDisabled();\n\n /** @docs-private */\n get hasCroppedText(): boolean {\n return !!this.title()?.isOverflown;\n }\n\n /**\n * Accessible name of the item. Needed for an icon-only item, which has no visible label of its own; an\n * item that renders a title is named by it.\n */\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n /**\n * A collapsed item shows nothing but its icon, and a tooltip is a transient overlay — never an accessible\n * name. The name is therefore published on the element itself, unless the consumer named it already.\n */\n protected get resolvedAriaLabel(): string | null {\n return this.ariaLabel() ?? (this.isCollapsed() ? this.titleText : null);\n }\n\n /**\n * Items authored as `<kbq-navbar-item>` are custom elements with no implicit role, so they are announced as\n * plain content. Anything already actionable — a native element, or a projected button/form field that owns\n * the interaction — keeps its own semantics.\n *\n * No `aria-haspopup` for dropdown-trigger items on purpose: `KbqDropdownTrigger` deliberately omits it\n * because the panel carries no menu semantics; it does publish `aria-expanded` itself.\n */\n protected get role(): string | null {\n if (NATIVELY_ACTIONABLE_TAGS.has(this.nativeElement.tagName) || this.navbarFocusableItem.nestedElement) {\n return null;\n }\n\n return 'button';\n }\n\n /** Whether Enter/Space has to be turned into a click by hand. */\n private get needsSyntheticActivation(): boolean {\n return this.role === 'button' && !this.hasDropDownTrigger;\n }\n\n constructor() {\n if (this.hasDropDownTrigger) {\n this.dropdownTrigger.openByArrowDown.set(false);\n }\n\n this.rectangleElement.state.pipe(takeUntilDestroyed()).subscribe(() => {\n this.updateDropdown();\n\n this.updateTooltip();\n });\n\n this.navbarFocusableItem.setTooltip(this.tooltip);\n\n this.tooltip.arrow = false;\n this.tooltip.offset = 0;\n\n this.tooltip.setOverlayPanelClass('kbq-tooltip-panel_horizontal-navbar');\n\n // The tooltip of a collapsed item stands in for its missing title, so it must not also open on focus:\n // `KbqNavbarFocusableItem.focus()` shows it explicitly, and only for keyboard focus.\n this.tooltip.trigger = `${PopUpTriggers.Hover}`;\n\n effect(() => {\n // Re-read the reactive inputs the tooltip content depends on.\n this.collapsedText();\n this.tooltipDisabled();\n this.isCollapsed();\n\n this.updateTooltip();\n\n // Whether the title is clipped can only be measured once this change is rendered.\n afterNextRender(() => this.updateTooltip(), { injector: this.injector });\n });\n\n // Content changes, such as a new title text, can clip the title too.\n afterNextRender(() =>\n this.contentObserver\n .observe(this.nativeElement)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.updateTooltip())\n );\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n this.updateTooltip();\n }\n\n /** @docs-private */\n updateTooltip(): void {\n const titleText = this.titleText;\n\n // With no title or `collapsedText` to stand in, a collapsed item keeps the content bound as `tooltipText`.\n if (this.isCollapsed() && titleText) {\n this.tooltip.content = titleText;\n } else if (this.hasCroppedText) {\n this.tooltip.content = this.croppedText;\n }\n\n // A fully visible title needs no tooltip; for a collapsed, clipped or missing one it is the only label.\n this.tooltip.disabled =\n this.tooltipDisabled() ?? (!!this.title() && !this.isCollapsed() && !this.hasCroppedText);\n\n if (this.rectangleElement.isVertical()) {\n this.tooltip.tooltipPlacement = PopUpPlacements.Right;\n this.tooltip.tooltipPlacementPriority = PopUpPlacements.Right;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n /**\n * Records the outer width of the item in the presentation it is shown in, and measures the other one only while\n * it is still unknown.\n *\n * The other presentation is read by toggling the collapse class around the measurement. Restoring it within\n * the same task is safe: the browser does not paint mid-task, and the host binding only writes to the DOM when\n * its value changes. Both rely on the item having no CSS transition. A width seen in the real presentation is\n * preferred because a collapsed item does not render its dropdown chevron, so toggling it back undercounts.\n *\n * @docs-private\n */\n measureWidths(): void {\n // A hidden item has no box, and its margins alone would be recorded as a width.\n if (!this.nativeElement.getClientRects().length) return;\n\n const classList = this.nativeElement.classList;\n const collapsed = classList.contains(COLLAPSED_ITEM_CLASS);\n\n if (collapsed) {\n this.collapsedWidth = this.rectangleElement.getOuterElementWidth();\n } else {\n this.expandedWidth = this.rectangleElement.getOuterElementWidth();\n }\n\n if (collapsed ? this.expandedWidth : this.collapsedWidth) return;\n\n classList.toggle(COLLAPSED_ITEM_CLASS);\n\n const otherWidth = this.rectangleElement.getOuterElementWidth();\n\n classList.toggle(COLLAPSED_ITEM_CLASS);\n\n if (collapsed) {\n this.expandedWidth = otherWidth;\n } else {\n this.collapsedWidth = otherWidth;\n }\n }\n\n /**\n * Width the item gives back by collapsing: its expanded outer width less its collapsed one, as last recorded by\n * `measureWidths()`. It covers everything the collapse removes or changes — the title, a suffix, the dropdown\n * chevron and the padding and margins that differ between the two presentations.\n *\n * @docs-private\n */\n getCollapsibleWidth(): number {\n return Math.max(this.expandedWidth - this.collapsedWidth, 0);\n }\n\n /** @docs-private */\n protected onKeyDown($event: KeyboardEvent) {\n if (this.needsSyntheticActivation && [ENTER, SPACE].includes($event.keyCode)) {\n this.nativeElement.click();\n\n $event.preventDefault();\n\n return;\n }\n\n if (!this.hasDropDownTrigger) {\n return;\n }\n\n if (\n (this.rectangleElement.isHorizontal() && $event.keyCode === DOWN_ARROW) ||\n (this.rectangleElement.isVertical() && $event.keyCode === RIGHT_ARROW)\n ) {\n this.dropdownTrigger.openedBy = 'keyboard';\n this.dropdownTrigger.open();\n\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n\n private updateDropdown(): void {\n const dropdown = this.dropdownTrigger?.dropdown();\n\n if (!dropdown) return;\n\n if (this.rectangleElement.isVertical()) {\n dropdown.overlapTriggerX.set(false);\n dropdown.overlapTriggerY.set(true);\n // needs to shift dropdown to the left by 8 pixels\n this.dropdownTrigger.offsetX.set(-8);\n }\n }\n}\n","<ng-content select=\"[kbq-icon]:not([kbqNavbarItemSuffix])\" />\n\n@if (title()) {\n <div class=\"kbq-navbar-item__container\">\n <div class=\"kbq-navbar-item__title\" [class.kbq-animations-disabled]=\"animationsDisabled\">\n <ng-content select=\"kbq-navbar-title, [kbq-navbar-title]\" />\n </div>\n <ng-content select=\"[kbqNavbarItemSuffix]\" />\n @if (showVerticalDropDownAngle()) {\n <i class=\"kbq-navbar-item__arrow-icon\" kbq-icon=\"kbq-chevron-right_16\" color=\"contrast\"></i>\n }\n @if (showHorizontalDropDownAngle()) {\n <i class=\"kbq-navbar-item__arrow-icon\" kbq-icon=\"kbq-chevron-down-s_16\" color=\"contrast\"></i>\n }\n </div>\n}\n\n<ng-content />\n","import { ContentObserver } from '@angular/cdk/observers';\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChild,\n DestroyRef,\n effect,\n inject,\n Injector,\n input,\n Renderer2,\n signal,\n Signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { kbqInjectNativeElement, PopUpPlacements, PopUpTriggers } from '@koobiq/components/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { distinctUntilChanged, EMPTY, from, map, merge, Observable } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { KbqNavbarFocusableItem, KbqNavbarRectangleElement, KbqNavbarTitle } from './navbar-item.component';\n\n/** Switches the brand title to the compact two-line presentation. */\nconst LONG_TITLE_CLASS = 'kbq-navbar-brand_long-title';\n\n@Component({\n selector: 'kbq-navbar-brand, [kbq-navbar-brand]',\n template: `\n <ng-content />\n `,\n styleUrls: [\n './navbar-brand.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-navbar-brand',\n [`[class.${LONG_TITLE_CLASS}]`]: 'longTitleEnabled()',\n '[class.kbq-navbar-brand_link]': 'isLink',\n '[attr.aria-label]': 'resolvedAriaLabel'\n },\n // Composition, not inheritance: the brand owns a tooltip, it is not one. Only the tooltip inputs that make\n // sense on a brand are re-exposed. `kbqTooltip` is the tooltip's selector, so under its own name it would\n // match the tooltip a second time wherever that is imported (NG0309).\n hostDirectives: [\n {\n directive: KbqTooltipTrigger,\n inputs: [\n 'kbqTooltip: tooltipText',\n 'kbqTooltipClass',\n 'kbqTooltipColor',\n 'kbqTooltipOffset',\n 'kbqTrigger',\n 'kbqPlacement',\n 'kbqEnterDelay',\n 'kbqLeaveDelay',\n 'kbqVisible'\n ],\n outputs: [\n 'kbqVisibleChange',\n 'kbqPlacementChange'\n ]\n }\n ],\n exportAs: 'kbqNavbarBrand'\n})\nexport class KbqNavbarBrand implements AfterContentInit {\n /** @docs-private */\n protected readonly nativeElement = kbqInjectNativeElement();\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly rectangleElement = inject(KbqNavbarRectangleElement);\n /** @docs-private */\n protected readonly navbarFocusableItem = inject(KbqNavbarFocusableItem);\n /** @docs-private */\n readonly tooltip = inject(KbqTooltipTrigger, { self: true });\n\n private readonly isBrowser = inject(Platform).isBrowser;\n private readonly resizeObserver = inject(SharedResizeObserver);\n private readonly contentObserver = inject(ContentObserver);\n private readonly document = inject(DOCUMENT);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly renderer = inject(Renderer2);\n\n private readonly debounceInterval = 100;\n\n /** @docs-private */\n readonly title = contentChild(KbqNavbarTitle);\n\n /**\n * Whether the title has been measured as not fitting into a single line, which switches it to the compact\n * two-line presentation.\n *\n * @docs-private\n */\n protected readonly longTitleEnabled = signal(false);\n\n /** text that will be displayed in the tooltip. By default, the text is taken from kbq-navbar-title. */\n readonly collapsedText = input<string>('');\n\n /**\n * Explicitly enables or disables the brand's tooltip.\n *\n * Left unset, the tooltip is enabled exactly when the title cannot be read from the brand itself — the\n * navbar is collapsed, the title is clipped, or there is no title at all.\n */\n readonly tooltipDisabled = input<boolean | undefined, unknown>(undefined, {\n alias: 'kbqTooltipDisabled',\n transform: (value: unknown) => (value === undefined ? undefined : booleanAttribute(value))\n });\n\n /** Whether the brand is rendered as a native link. */\n get isLink(): boolean {\n return this.nativeElement.tagName === 'A';\n }\n\n /** @docs-private */\n get croppedText(): string {\n const croppedTitleText = this.hasCroppedText ? this.titleText : '';\n\n return `${croppedTitleText}`;\n }\n\n /** @docs-private */\n get hasCroppedText(): boolean {\n const title = this.title();\n\n return !!title && (title.isOverflown || title.isClamped);\n }\n\n /** @docs-private */\n get titleText(): string | null {\n return this.collapsedText() || this.title()?.text || null;\n }\n\n /** Whether the brand is rendered in its collapsed (logo-only) form. @docs-private */\n readonly collapsed: Signal<boolean> = this.rectangleElement.collapsedState;\n\n /** Accessible name of the brand. Needed when the brand renders nothing but a logo. */\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n /**\n * A collapsed brand shows nothing but its logo, and a tooltip is a transient overlay — never an accessible\n * name. The name is therefore published on the element itself, unless the consumer named it already.\n */\n protected get resolvedAriaLabel(): string | null {\n return this.ariaLabel() ?? (this.collapsed() ? this.titleText : null);\n }\n\n constructor() {\n this.rectangleElement.state.pipe(takeUntilDestroyed()).subscribe(() => this.updateTooltip());\n\n this.tooltip.arrow = false;\n this.tooltip.offset = 0;\n\n // A brand tooltip stands in for a title that cannot be read from the element itself, so it opens on\n // hover only; keyboard focus surfaces it through `KbqNavbarFocusableItem.focus()`.\n this.tooltip.trigger = `${PopUpTriggers.Hover}`;\n\n this.navbarFocusableItem.setTooltip(this.tooltip);\n\n effect(() => {\n // Re-read the reactive inputs the tooltip content depends on.\n this.collapsedText();\n this.tooltipDisabled();\n this.collapsed();\n\n this.updateTooltip();\n });\n\n afterNextRender(() => this.observeLongTitle());\n\n // A disabled navbar item takes `pointer-events: none`, which on a brand would also stop the tooltip a\n // collapsed brand depends on. Capturing on the host runs ahead of every listener of the link, `RouterLink`\n // included.\n const unlisten = this.renderer.listen(\n this.nativeElement,\n 'click',\n (event: MouseEvent) => this.preventDisabledActivation(event),\n { capture: true }\n );\n\n this.destroyRef.onDestroy(unlisten);\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n // A brand that is neither a link nor a wrapper around something interactive is decorative, and only\n // then is it kept out of the roving focus order. Deciding this here and not in the constructor is what\n // makes the projected content visible at all; deciding it from `isLink` alone used to disable every\n // `<div kbq-navbar-brand>`, however interactive its content was.\n this.navbarFocusableItem.decorative.set(!this.isLink && !this.navbarFocusableItem.nestedElement);\n\n this.updateTooltip();\n }\n\n private preventDisabledActivation(event: MouseEvent): void {\n if (!this.navbarFocusableItem.explicitlyDisabled) return;\n\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n private updateTooltip(): void {\n const titleText = this.titleText;\n\n // With no title or `collapsedText` to stand in, a collapsed brand keeps the content bound as `tooltipText`.\n if (this.collapsed() && titleText) {\n this.tooltip.content = titleText;\n } else if (this.hasCroppedText) {\n this.tooltip.content = this.croppedText;\n }\n\n // A fully visible title needs no tooltip; for a collapsed, clipped or missing one it is the only label.\n this.tooltip.disabled = this.tooltipDisabled() ?? (!!this.title() && !this.collapsed() && !this.hasCroppedText);\n\n if (this.rectangleElement.isVertical()) {\n this.tooltip.tooltipPlacement = PopUpPlacements.Right;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n private observeLongTitle(): void {\n if (!this.isBrowser) return;\n\n this.updateAutoLongTitle();\n\n const host = this.nativeElement;\n\n const resize$ = this.resizeObserver.observe(host).pipe(\n map(() => host.clientWidth),\n distinctUntilChanged()\n );\n\n const content$ = this.contentObserver.observe(host);\n\n const fontSet: FontFaceSet | undefined = this.document.fonts;\n const fonts$: Observable<unknown> = fontSet ? from(fontSet.ready) : EMPTY;\n\n // Continuous, noisy sources - coalesce them.\n merge(resize$, content$, fonts$)\n .pipe(debounceTime(this.debounceInterval), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.updateAutoLongTitle());\n\n // Expanding is a discrete event, and a collapsed title is `display: none` - so the first expand is the\n // first chance to measure at all. Debouncing it paints the default presentation for the whole window\n // first. Measuring synchronously here would be just as wrong: `.kbq-collapsed` and the container's\n // width class are written by the change detection pass that *follows* this emission, so the read would\n // still see a `display: none` title inside a collapsed container. Render hooks run after that write and\n // before the browser paints, so the compact presentation lands on the very first frame.\n //\n // `mixedReadWrite` and not `read`: `measureNeedsLongTitle()` takes the class off around its read and\n // puts it back, and `read` is the phase documented to never write. Splitting the two across `write` and\n // `read` is not an option either - they are one indivisible measurement.\n this.rectangleElement.state\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() =>\n afterNextRender({ mixedReadWrite: () => this.updateAutoLongTitle() }, { injector: this.injector })\n );\n }\n\n private updateAutoLongTitle(): void {\n this.longTitleEnabled.set(this.measureNeedsLongTitle());\n\n // The clamp state feeds into `hasCroppedText`, which the tooltip's content depends on - refresh it\n // so a title that becomes clamped after the initial render doesn't show stale/empty tooltip content.\n this.updateTooltip();\n }\n\n /**\n * Measures whether the title fits into a single line in the *default* presentation.\n *\n * Removing and restoring the class within a single task is safe: the browser does not paint mid-task, and\n * Angular's host binding only writes to the DOM when its value changes, which it does not here. Both rely\n * on there being no CSS transition on the title - add one and this starts to flicker.\n */\n private measureNeedsLongTitle(): boolean {\n const title = this.title();\n\n // A collapsed title is `display: none`, so it measures as 0 - keep the last known value instead.\n if (!title || this.rectangleElement.collapsed) {\n return this.longTitleEnabled();\n }\n\n const host = this.nativeElement;\n const applied = host.classList.contains(LONG_TITLE_CLASS);\n\n if (applied) host.classList.remove(LONG_TITLE_CLASS);\n\n const overflown = title.isOverflown;\n\n if (applied) host.classList.add(LONG_TITLE_CLASS);\n\n return overflown;\n }\n}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n AfterContentChecked,\n AfterContentInit,\n afterNextRender,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n NgZone,\n OnDestroy,\n QueryList,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FocusKeyManager,\n isHorizontalMovement,\n isVerticalMovement,\n KBQ_WINDOW,\n kbqLeaveTabOrderOnTabOut,\n KbqOverlayLayerExclude,\n kbqQueryListFrom,\n LEFT_ARROW,\n RIGHT_ARROW,\n TAB\n} from '@koobiq/components/core';\nimport { fromEvent, merge, Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, startWith } from 'rxjs/operators';\nimport {\n KbqNavbarFocusableItem,\n KbqNavbarFocusableItemEvent,\n KbqNavbarItem,\n KbqNavbarRectangleElement\n} from './navbar-item.component';\nimport { getOuterWidth } from './outer-width';\n\n@Directive()\nexport class KbqFocusableComponent implements AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy {\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /** @docs-private */\n protected readonly focusMonitor = inject(FocusMonitor);\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n\n private readonly focusableItemsQuery = contentChildren<KbqNavbarFocusableItem>(\n forwardRef(() => KbqNavbarFocusableItem),\n { descendants: true }\n );\n private readonly focusableItemsList = kbqQueryListFrom(this.focusableItemsQuery);\n\n /** @docs-private */\n get focusableItems(): QueryList<KbqNavbarFocusableItem> {\n return this.focusableItemsList();\n }\n\n /** @docs-private */\n keyManager: FocusKeyManager<KbqNavbarFocusableItem>;\n\n /**\n * Tab index of the navbar host. The navbar owns the single tab stop of the whole widget and moves focus\n * between its items with the arrow keys. A navbar without a focusable item stays out of the tab order.\n */\n readonly tabIndex = model<number>(0);\n\n /**\n * Tab index the host renders: {@link tabIndex}, or `-1` while there is no item to hand the focus to. Derived\n * rather than written to the model, which a consumer may bind.\n *\n * @docs-private\n */\n protected readonly renderedTabIndex = computed(() =>\n this.focusableItemsQuery().length === 0 ? -1 : this.tabIndex()\n );\n\n /**\n * Accessible name of the navigation landmark. Set it whenever a page renders more than one navbar, so\n * assistive technology can tell them apart.\n */\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n private lastFocusOrigin: FocusOrigin = null;\n\n private cachedOptionFocusChanges: Observable<KbqNavbarFocusableItemEvent> | null = null;\n private cachedOptionBlurChanges: Observable<KbqNavbarFocusableItemEvent> | null = null;\n\n /** Focus events of every focusable item, merged once per change of the item set. @docs-private */\n get optionFocusChanges(): Observable<KbqNavbarFocusableItemEvent> {\n return (this.cachedOptionFocusChanges ??= merge(...this.focusableItems.map((item) => item.onFocus)));\n }\n\n /** Blur events of every focusable item, merged once per change of the item set. @docs-private */\n get optionBlurChanges(): Observable<KbqNavbarFocusableItemEvent> {\n return (this.cachedOptionBlurChanges ??= merge(...this.focusableItems.map((option) => option.onBlur)));\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n this.keyManager = new FocusKeyManager<KbqNavbarFocusableItem>(this.focusableItems).withTypeAhead();\n\n kbqLeaveTabOrderOnTabOut(\n this.keyManager.tabOut,\n this.elementRef.nativeElement,\n () => this.renderedTabIndex(),\n this.destroyRef\n );\n\n this.focusableItems.changes\n .pipe(startWith(null), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.resetOptions());\n }\n\n /** @docs-private */\n ngAfterContentChecked(): void {\n // Syncs the list here so `changes` emits after the projected items are bound and before the host bindings.\n this.focusableItemsList();\n }\n\n /**\n * Monitored with `checkChildren`, because the navbar is one composite widget: the host owns the tab stop\n * but hands focus straight to an item, and without it that hand-off reads as the navbar being blurred.\n *\n * @docs-private\n */\n ngAfterViewInit(): void {\n this.focusMonitor\n .monitor(this.elementRef, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((focusOrigin) => {\n // A child losing focus to another child reports `null` in between; keep the origin the arrow\n // keys travel on, and let a real blur of the whole navbar be handled by `blur()`.\n if (focusOrigin === null) return;\n\n this.lastFocusOrigin = focusOrigin;\n this.keyManager.setFocusOrigin(focusOrigin);\n });\n }\n\n /** @docs-private */\n ngOnDestroy() {\n this.dropSubscriptions();\n\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n /** Host element of the navbar. @docs-private */\n getNativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n /** @docs-private */\n focus(): void {\n if (this.focusableItems.length === 0) {\n return;\n }\n\n // Pointer focus on the navbar host (e.g. clicking empty area) should not\n // steal keyboard focus into the first item, which would surface its tooltip.\n if (this.lastFocusOrigin === 'mouse' || this.lastFocusOrigin === 'touch') {\n return;\n }\n\n this.keyManager.setFirstItemActive();\n }\n\n /** @docs-private */\n blur() {\n if (!this.hasFocusedItem()) {\n this.keyManager.setActiveItem(-1);\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n /** @docs-private */\n protected resetOptions() {\n this.dropSubscriptions();\n this.listenToOptionsFocus();\n }\n\n /** @docs-private */\n protected dropSubscriptions() {\n this.optionFocusSubscription?.unsubscribe();\n this.optionFocusSubscription = null;\n\n this.optionBlurSubscription?.unsubscribe();\n this.optionBlurSubscription = null;\n\n this.cachedOptionFocusChanges = null;\n this.cachedOptionBlurChanges = null;\n }\n\n private optionFocusSubscription: Subscription | null = null;\n private optionBlurSubscription: Subscription | null = null;\n\n private listenToOptionsFocus(): void {\n this.optionFocusSubscription = this.optionFocusChanges.subscribe((event) => {\n const index: number = this.focusableItems.toArray().indexOf(event.item);\n\n if (this.isValidIndex(index)) {\n this.keyManager.updateActiveItem(index);\n }\n });\n\n this.optionBlurSubscription = this.optionBlurChanges.subscribe(() => this.blur());\n }\n\n private isValidIndex(index: number): boolean {\n return index >= 0 && index < this.focusableItems.length;\n }\n\n private hasFocusedItem() {\n return this.focusableItems.some((item) => item.hasFocus);\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-container',\n host: {\n class: 'kbq-navbar-container'\n }\n})\nexport class KbqNavbarContainer {}\n\n@Component({\n selector: 'kbq-navbar',\n template: `\n <ng-content select=\"[kbq-navbar-container], kbq-navbar-container\" />\n `,\n styleUrls: [\n './navbar.scss',\n './navbar-item.scss',\n './navbar-brand.scss',\n './navbar-divider.scss',\n './navbar-tokens.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-navbar',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.tabindex]': 'renderedTabIndex()',\n '(focus)': 'focus()',\n '(blur)': 'blur()',\n '(keydown)': 'onKeyDown($event)'\n },\n hostDirectives: [KbqOverlayLayerExclude]\n})\nexport class KbqNavbar extends KbqFocusableComponent implements AfterViewInit, AfterContentInit {\n private readonly platform = inject(Platform);\n private readonly ngZone = inject(NgZone);\n private readonly window = inject(KBQ_WINDOW);\n\n /** @docs-private */\n readonly rectangleElements = contentChildren<KbqNavbarRectangleElement>(\n forwardRef(() => KbqNavbarRectangleElement),\n { descendants: true }\n );\n\n /** @docs-private */\n readonly navbarItems = contentChildren<KbqNavbarItem>(\n forwardRef(() => KbqNavbarItem),\n { descendants: true }\n );\n\n /** Raw `resize` events of the window, fed from outside the Angular zone. @docs-private */\n readonly resizeStream = new Subject<Event>();\n\n private readonly resizeDebounceInterval: number = 100;\n\n private get width(): number {\n return this.elementRef.nativeElement.getBoundingClientRect().width;\n }\n\n /**\n * Room the content needs: the outer widths of the containers' children plus the containers' own margins, which\n * hold the gap between them. The containers' boxes are not measured whole, so a container styled to grow still\n * reports what it needs rather than what it was given.\n */\n private get contentWidth(): number {\n return Array.from(this.elementRef.nativeElement.children).reduce((total, container) => {\n const { marginLeft, marginRight } = this.window.getComputedStyle(container);\n\n return Array.from(container.children).reduce(\n (acc, child) => acc + getOuterWidth(child, this.window),\n total + (parseFloat(marginLeft) || 0) + (parseFloat(marginRight) || 0)\n );\n }, 0);\n }\n\n private get collapsableItems(): KbqNavbarItem[] {\n return this.navbarItems()\n .filter((item) => item.icon() && item.title() && item.collapsable())\n .reverse();\n }\n\n constructor() {\n super();\n\n this.destroyRef.onDestroy(() => this.resizeStream.complete());\n\n // Raw resize events must not enter the zone: a single drag fires hundreds of them, and only the\n // debounced recompute at the end of the burst is worth a change detection pass.\n if (this.platform.isBrowser) {\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.window, 'resize')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.resizeStream.next(event));\n });\n }\n\n this.resizeStream\n .pipe(debounceTime(this.resizeDebounceInterval), takeUntilDestroyed())\n .subscribe(() => this.ngZone.run(this.updateExpandedStateForItems));\n\n effect(() => this.rectangleElements().forEach((item) => (item.orientation = 'horizontal')));\n\n // Note: this wait is required for loading and rendering fonts for icons;\n // unfortunately we cannot control font rendering. Bound to the component's lifetime, unlike a bare\n // `setTimeout`, so it can never run against a destroyed view.\n afterNextRender(() => this.updateExpandedStateForItems());\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n super.ngAfterContentInit();\n\n this.keyManager.withVerticalOrientation(false).withHorizontalOrientation('ltr');\n }\n\n /**\n * Recomputes which collapsable items fit into the current navbar width.\n *\n * Every measurement is taken up front, and only then is anything written: collapsing an item invalidates\n * layout, so a measurement taken afterwards forces a synchronous reflow for each of the remaining items. The\n * width an item frees by collapsing comes from its own record of both presentations, see\n * `KbqNavbarItem.measureWidths()`.\n *\n * @docs-private\n */\n updateExpandedStateForItems = () => {\n // Untracked: called from a consumer's `effect()`, the items and their collapsed state read here would make the\n // effect run again on every collapse it makes.\n untracked(() => this.fitItems());\n };\n\n /** Body of `updateExpandedStateForItems()`. */\n private fitItems(): void {\n const availableWidth = this.width;\n\n // A navbar that is not rendered, e.g. hidden in an inactive tab, has nothing to measure yet.\n if (!availableWidth) return;\n\n const items = this.collapsableItems;\n\n // Before the content is read, because an item seen in one presentation measures the other by toggling a class.\n items.forEach((item) => item.measureWidths());\n\n const collapseDelta = this.contentWidth - availableWidth;\n\n if (collapseDelta > 0) {\n this.collapseItems(items, collapseDelta);\n } else {\n this.expandItems(items, collapseDelta);\n }\n }\n\n /** @docs-private */\n protected onKeyDown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n\n // The origin of the last focus event may be a click, and an item takes no DOM focus for a pointer origin.\n this.keyManager.setFocusOrigin('keyboard');\n\n if (!this.eventFromInput(event) && (isVerticalMovement(event) || isHorizontalMovement(event))) {\n event.preventDefault();\n }\n\n if (keyCode === TAB) {\n this.keyManager.tabOut.next();\n\n return;\n } else if (this.eventFromInput(event) && this.cursorOnLastPosition(event) && keyCode === RIGHT_ARROW) {\n this.keyManager.setNextItemActive();\n } else if (this.eventFromInput(event) && this.cursorOnFirstPosition(event) && keyCode === LEFT_ARROW) {\n this.keyManager.setPreviousItemActive();\n } else if (!this.eventFromInput(event)) {\n this.keyManager.onKeydown(event);\n }\n }\n\n private eventFromInput(event: KeyboardEvent): boolean {\n return !!(event.target as HTMLElement).attributes.getNamedItem('kbqinput');\n }\n\n private cursorOnFirstPosition(event: KeyboardEvent): boolean {\n const input = event.target as HTMLInputElement;\n\n return input.selectionStart === 0;\n }\n\n private cursorOnLastPosition(event: KeyboardEvent): boolean {\n const input = event.target as HTMLInputElement;\n\n return input.selectionEnd === input.value.length;\n }\n\n private collapseItems(items: KbqNavbarItem[], collapseDelta: number) {\n let delta = collapseDelta;\n\n // An item that frees nothing has not been measured, because it is hidden, and collapsing it gains nothing.\n for (const item of items.filter((item) => !item.isCollapsed() && item.getCollapsibleWidth() > 0)) {\n item.collapsed = true;\n delta -= item.getCollapsibleWidth();\n\n if (delta <= 0) break;\n }\n }\n\n private expandItems(items: KbqNavbarItem[], collapseDelta: number) {\n let delta = collapseDelta;\n\n for (const item of items.filter((item) => item.isCollapsed())) {\n if (delta + item.getCollapsibleWidth() <= 0) {\n item.collapsed = false;\n delta += item.getCollapsibleWidth();\n }\n }\n }\n}\n","import { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n contentChildren,\n effect,\n forwardRef,\n inject,\n InjectionToken,\n input,\n model,\n Provider,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n DOWN_ARROW,\n isHorizontalMovement,\n isVerticalMovement,\n KbqDeepPartial,\n kbqLocaleConfigurationOverrideProvider,\n KbqLocaleOverridesDirective,\n KbqNavbarLocaleConfiguration,\n KbqOverlayLayerExclude,\n ruRULocaleData,\n TAB,\n UP_ARROW\n} from '@koobiq/components/core';\nimport { KbqNavbarBento, KbqNavbarItem, KbqNavbarRectangleElement } from './navbar-item.component';\nimport { KbqFocusableComponent } from './navbar.component';\n\n// Re-exported so that the name this package's own token is typed with resolves from this package too:\n// `KbqVerticalNavbarConfiguration` used to be declared here, and the migration renames it in place.\nexport type { KbqNavbarLocaleConfiguration };\n\n/** default configuration of navbar */\n/** @docs-private */\nexport const KBQ_NAVBAR_DEFAULT_LOCALE_CONFIGURATION: KbqNavbarLocaleConfiguration = ruRULocaleData.navbar;\n\n/** Injection Token for providing configuration of navbar */\n/** @docs-private */\nexport const KBQ_NAVBAR_LOCALE_CONFIGURATION = new InjectionToken<KbqNavbarLocaleConfiguration>(\n 'KbqNavbarLocaleConfiguration',\n { factory: () => KBQ_NAVBAR_DEFAULT_LOCALE_CONFIGURATION }\n);\n\n/**\n * Utility provider for `KBQ_NAVBAR_LOCALE_CONFIGURATION`. Only the strings you pass are overridden; the\n * rest keep following the active locale.\n */\nexport const kbqNavbarLocaleConfigurationProvider = (\n configuration: KbqDeepPartial<KbqNavbarLocaleConfiguration>\n): Provider => kbqLocaleConfigurationOverrideProvider('navbar', configuration);\n\n/** @deprecated Use {@link KBQ_NAVBAR_DEFAULT_LOCALE_CONFIGURATION}. Will be removed in 22.0.0. */\nexport const KBQ_VERTICAL_NAVBAR_DEFAULT_CONFIGURATION = KBQ_NAVBAR_DEFAULT_LOCALE_CONFIGURATION;\n/** @deprecated Use {@link KBQ_NAVBAR_LOCALE_CONFIGURATION}. Will be removed in 22.0.0. */\nexport const KBQ_VERTICAL_NAVBAR_CONFIGURATION = KBQ_NAVBAR_LOCALE_CONFIGURATION;\n\n@Component({\n selector: 'kbq-vertical-navbar',\n template: `\n <div\n class=\"kbq-vertical-navbar__container\"\n [class.kbq-collapsed]=\"!expanded()\"\n [class.kbq-expanded]=\"expanded()\"\n >\n <ng-content select=\"[kbq-navbar-container], kbq-navbar-container\" />\n <ng-content select=\"[kbq-navbar-toggle], kbq-navbar-toggle\" />\n </div>\n `,\n styleUrls: [\n './vertical-navbar.scss',\n './navbar-item.scss',\n './navbar-brand.scss',\n './navbar-divider.scss',\n './navbar-tokens.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-vertical-navbar',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n '[class.kbq-vertical-navbar_open-over]': 'openOver()',\n '[attr.tabindex]': 'renderedTabIndex()',\n '[attr.cdkMonitorSubtreeFocus]': 'true',\n\n '(focus)': 'focus()',\n '(blur)': 'blur()',\n\n '(keydown)': 'onKeyDown($event)'\n },\n hostDirectives: [\n CdkMonitorFocus,\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] },\n KbqOverlayLayerExclude\n ],\n exportAs: 'KbqVerticalNavbar'\n})\nexport class KbqVerticalNavbar extends KbqFocusableComponent implements AfterContentInit {\n /**\n * Localized strings of the navbar.\n *\n * A signal, so that a locale change reaches the `OnPush` descendants that render these strings — a plain\n * field would leave them showing the previous locale until something else marked them dirty. It also keeps\n * the value observable from outside: `KbqNavbarToggle` reads it in an `effect` to refresh its tooltip,\n * which a `markForCheck()` here could never have reached in that separate `OnPush` view.\n */\n readonly localeConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'navbar',\n KBQ_NAVBAR_LOCALE_CONFIGURATION\n );\n\n /** @docs-private */\n readonly rectangleElements = contentChildren<KbqNavbarRectangleElement>(\n forwardRef(() => KbqNavbarRectangleElement),\n { descendants: true }\n );\n\n /** @docs-private */\n readonly items = contentChildren<KbqNavbarItem>(\n forwardRef(() => KbqNavbarItem),\n { descendants: true }\n );\n\n /** @docs-private */\n readonly bento = contentChild<KbqNavbarBento>(forwardRef(() => KbqNavbarBento));\n\n /** Whether the expanded navbar overlays the page content instead of taking room from it. */\n readonly openOver = input<boolean>(false);\n\n /** Whether the navbar is expanded. */\n readonly expanded = model<boolean>(false);\n\n private buttonIconsRefresh?: ReturnType<typeof setTimeout>;\n\n constructor() {\n super();\n\n this.destroyRef.onDestroy(() => clearTimeout(this.buttonIconsRefresh));\n\n effect(() => {\n // Re-runs both when the projected elements change and when the navbar is expanded or collapsed.\n const expanded = this.expanded();\n\n this.rectangleElements().forEach((item) => {\n item.orientation = 'vertical';\n item.collapsed = !expanded;\n });\n\n this.refreshButtonIcons();\n });\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n super.ngAfterContentInit();\n\n this.keyManager.withVerticalOrientation(true);\n }\n\n /** Expands a collapsed navbar and collapses an expanded one. */\n toggle(): void {\n // Untracked: called from a consumer's `effect()`, `expanded` read here would make the effect run again on every\n // expand and collapse.\n this.expanded.set(!untracked(this.expanded));\n }\n\n /** @docs-private */\n protected onKeyDown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n\n // The origin of the last focus event may be a click, and an item takes no DOM focus for a pointer origin.\n this.keyManager.setFocusOrigin('keyboard');\n\n if (\n !(event.target as HTMLElement).attributes.getNamedItem('kbqinput') &&\n (isVerticalMovement(event) || isHorizontalMovement(event))\n ) {\n event.preventDefault();\n }\n\n if (keyCode === TAB) {\n this.keyManager.tabOut.next();\n\n return;\n } else if (keyCode === DOWN_ARROW) {\n this.keyManager.setNextItemActive();\n } else if (keyCode === UP_ARROW) {\n this.keyManager.setPreviousItemActive();\n } else {\n this.keyManager.onKeydown(event);\n }\n }\n\n /**\n * Buttons projected into the items re-pick their icon-only modifier from the rendered width, so the pass\n * has to wait for the collapsed/expanded classes to reach the DOM. One deferred pass over every item, not\n * one timer per item.\n */\n private refreshButtonIcons(): void {\n const elements = this.rectangleElements();\n\n // A pending pass is replaced: every element of it that is still projected is among these.\n clearTimeout(this.buttonIconsRefresh);\n\n if (!elements.length) return;\n\n this.buttonIconsRefresh = setTimeout(() =>\n elements.forEach((item) => item.button()?.updateClassModifierForIcons())\n );\n }\n}\n","import { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n Injectable,\n NgZone,\n OnDestroy,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n ENTER,\n KBQ_WINDOW,\n kbqInjectNativeElement,\n NUMPAD_DIVIDE,\n PopUpPlacements,\n SLASH,\n SPACE\n} from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { KbqVerticalNavbar } from './vertical-navbar.component';\n\n/**\n * Dispatches the global `Ctrl+/` shortcut to exactly one navbar toggle.\n *\n * Every toggle used to bind its own window listener and call `toggle()` unconditionally, so a single keypress\n * collapsed *every* vertical navbar on the page. One shared listener instead picks the toggle whose navbar\n * currently holds focus, and falls back to the first registered one so the shortcut still works from anywhere.\n *\n * @docs-private\n */\n@Injectable({ providedIn: 'root' })\nexport class KbqNavbarToggleRegistry implements OnDestroy {\n private readonly window = inject(KBQ_WINDOW);\n private readonly document = inject(DOCUMENT);\n private readonly ngZone = inject(NgZone);\n\n private readonly toggles = new Set<KbqNavbarToggle>();\n\n /** Starts listening for the shortcut on behalf of the given toggle. */\n add(toggle: KbqNavbarToggle): void {\n if (this.toggles.size === 0) {\n this.ngZone.runOutsideAngular(() => this.window.addEventListener('keydown', this.handleKeydown));\n }\n\n this.toggles.add(toggle);\n }\n\n /** Stops dispatching the shortcut to the given toggle. */\n remove(toggle: KbqNavbarToggle): void {\n this.toggles.delete(toggle);\n\n if (this.toggles.size === 0) {\n this.window.removeEventListener('keydown', this.handleKeydown);\n }\n }\n\n ngOnDestroy(): void {\n this.window.removeEventListener('keydown', this.handleKeydown);\n\n this.toggles.clear();\n }\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (!event.ctrlKey || ![NUMPAD_DIVIDE, SLASH].includes(event.keyCode)) return;\n\n const target = this.resolveTarget();\n\n if (!target) return;\n\n this.ngZone.run(() => target.toggle());\n };\n\n private resolveTarget(): KbqNavbarToggle | undefined {\n const toggles = [...this.toggles];\n const activeElement = this.document.activeElement;\n const focused = activeElement && toggles.find((toggle) => toggle.contains(activeElement));\n\n return focused || toggles[0];\n }\n}\n\n@Component({\n selector: 'kbq-navbar-toggle, [kbq-navbar-toggle]',\n imports: [\n KbqIconModule\n ],\n template: `\n <span class=\"kbq-navbar-toggle__circle\">\n <ng-content select=\"[kbq-icon]\">\n <i\n kbq-icon\n [class.kbq-chevron-double-left-s_16]=\"navbar.expanded()\"\n [class.kbq-chevron-double-right-s_16]=\"!navbar.expanded()\"\n ></i>\n </ng-content>\n </span>\n `,\n styleUrls: ['./navbar-toggle.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-navbar-toggle kbq-vertical',\n '[class.kbq-collapsed]': '!navbar.expanded()',\n '[class.kbq-expanded]': 'navbar.expanded()',\n\n // The toggle is icon-only and its tooltip is a transient overlay, never an accessible name. Role, name\n // and state are published on the host so assistive technology announces an expand/collapse control\n // instead of an unlabelled element.\n role: 'button',\n '[attr.aria-expanded]': 'navbar.expanded()',\n '[attr.aria-label]': 'label',\n 'aria-keyshortcuts': 'Control+/',\n\n '(keydown)': 'keydownHandler($event)',\n '(click)': 'toggle()'\n },\n hostDirectives: [CdkMonitorFocus, KbqTooltipTrigger]\n})\nexport class KbqNavbarToggle implements OnDestroy {\n private readonly nativeElement = kbqInjectNativeElement();\n private readonly registry = inject(KbqNavbarToggleRegistry);\n private readonly isBrowser = inject(Platform).isBrowser;\n\n private readonly tooltip = inject(KbqTooltipTrigger, { self: true });\n\n /** @docs-private */\n protected readonly navbar = inject(KbqVerticalNavbar);\n\n /** Accessible name of the toggle; it names the action the toggle performs. @docs-private */\n protected get label(): string {\n return this.navbar.expanded()\n ? this.navbar.localeConfiguration().toggle.collapse\n : this.navbar.localeConfiguration().toggle.expand;\n }\n\n constructor() {\n if (this.isBrowser) {\n this.registry.add(this);\n }\n\n this.tooltip.arrow = false;\n this.updateTooltipContent();\n this.tooltip.tooltipPlacement = PopUpPlacements.Right;\n\n this.tooltip.visibleChange.pipe(takeUntilDestroyed()).subscribe(this.updateTooltipContent);\n\n // `content` is a plain property, so a tooltip that is already open keeps the string it was given.\n // Reading the navbar's signal-backed configuration here re-applies it on a locale change instead\n // of leaving the previous locale on screen until the next show.\n effect(() => this.updateTooltipContent());\n }\n\n /** @docs-private */\n ngOnDestroy(): void {\n this.registry.remove(this);\n }\n\n /** Whether the given element sits inside the navbar this toggle belongs to. @docs-private */\n contains(element: Element): boolean {\n return this.navbar.getNativeElement().contains(element) || this.nativeElement.contains(element);\n }\n\n /** toggles the state of the navbar */\n toggle() {\n // Untracked: called from a consumer's `effect()`, the state read on the way — `expanded`, the tooltip's — would\n // make the effect run again on every expand and collapse.\n untracked(() => {\n this.navbar.toggle();\n this.tooltip.hide();\n });\n }\n\n /** @docs-private */\n protected keydownHandler($event: KeyboardEvent) {\n if ([SPACE, ENTER].includes($event.keyCode)) {\n this.toggle();\n\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n\n private updateTooltipContent = () => {\n this.tooltip.content = this.label;\n };\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqNavbarBrand } from './navbar-brand.component';\nimport {\n KbqNavbarBento,\n KbqNavbarDivider,\n KbqNavbarFocusableItem,\n KbqNavbarItem,\n KbqNavbarItemSuffix,\n KbqNavbarLogo,\n KbqNavbarRectangleElement,\n KbqNavbarTitle\n} from './navbar-item.component';\nimport { KbqNavbarToggle } from './navbar-toggle.component';\nimport { KbqNavbar, KbqNavbarContainer } from './navbar.component';\nimport { KbqVerticalNavbar } from './vertical-navbar.component';\n\n@NgModule({\n imports: [\n A11yModule,\n PlatformModule,\n KbqIconModule,\n KbqToolTipModule,\n KbqNavbar,\n KbqNavbarContainer,\n KbqNavbarTitle,\n KbqNavbarItem,\n KbqNavbarBrand,\n KbqNavbarLogo,\n KbqNavbarToggle,\n KbqVerticalNavbar,\n KbqNavbarDivider,\n KbqNavbarFocusableItem,\n KbqNavbarRectangleElement,\n KbqNavbarBento,\n KbqNavbarItemSuffix\n ],\n exports: [\n KbqNavbar,\n KbqNavbarContainer,\n KbqNavbarTitle,\n KbqNavbarItem,\n KbqNavbarBrand,\n KbqNavbarLogo,\n KbqNavbarToggle,\n KbqVerticalNavbar,\n KbqNavbarDivider,\n KbqNavbarFocusableItem,\n KbqNavbarRectangleElement,\n KbqNavbarBento,\n KbqNavbarItemSuffix\n ]\n})\nexport class KbqNavbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-navbar.mjs","sources":["../../../packages/components/navbar/outer-width.ts","../../../packages/components/navbar/navbar-item.component.ts","../../../packages/components/navbar/navbar-item.component.html","../../../packages/components/navbar/navbar-brand.component.ts","../../../packages/components/navbar/navbar-tooltip-defaults.ts","../../../packages/components/navbar/navbar.component.ts","../../../packages/components/navbar/vertical-navbar.component.ts","../../../packages/components/navbar/navbar-toggle.component.ts","../../../packages/components/navbar/navbar.module.ts","../../../packages/components/navbar/koobiq-components-navbar.ts"],"sourcesContent":["/**\n * Outer width of an element: its border box plus horizontal margins.\n *\n * Measured with `getBoundingClientRect()` rather than `getComputedStyle().width`, which resolves to the used\n * content-box width whatever `box-sizing` says: `.kbq-navbar-item` is `border-box` with horizontal padding, and\n * the navbar compares these sums against its own border box.\n */\nexport const getOuterWidth = (element: Element, window: Window): number => {\n const { marginLeft, marginRight } = window.getComputedStyle(element);\n\n return [marginLeft, marginRight].reduce(\n (acc, item) => acc + (parseFloat(item) || 0),\n element.getBoundingClientRect().width\n );\n};\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { ContentObserver } from '@angular/cdk/observers';\nimport { _getFocusedElementPierceShadowDom, Platform } from '@angular/cdk/platform';\nimport {\n AfterContentInit,\n afterNextRender,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChild,\n contentChildren,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n Injector,\n input,\n OnChanges,\n OnDestroy,\n Signal,\n signal,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButton, KbqButtonCssStyler } from '@koobiq/components/button';\nimport {\n DOWN_ARROW,\n ENTER,\n IFocusableOption,\n KBQ_WINDOW,\n kbqAnimationsDisabled,\n kbqInjectNativeElement,\n PopUpPlacements,\n PopUpTriggers,\n RIGHT_ARROW,\n SPACE\n} from '@koobiq/components/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormField } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { Subject } from 'rxjs';\nimport { getOuterWidth } from './outer-width';\n\n/** Orientation of the navbar an element belongs to. */\nexport type KbqNavbarOrientation = 'horizontal' | 'vertical';\n\n/**\n * A custom interactive component projected into a navbar item in place of a button or a form field.\n *\n * Provide the component's own class as `KBQ_NAVBAR_ITEM_TRIGGER`, and the item hands keyboard focus and\n * activation to it: it gets no synthetic click, stays the single tab stop of the navbar, and keeps working\n * with arrow-key navigation. The component owns its overlay — a dropdown, a popover, or anything else — and\n * must not be reachable by Tab on its own (`tabindex` stays with the navbar, which moves focus between items\n * with the arrow keys).\n *\n * The item paints its hover, pressed, selected and keyboard-focus states around the component, so the\n * component styles only its content and must not add a focus outline of its own.\n */\nexport interface KbqNavbarItemTrigger {\n /** Whether the component currently holds focus. */\n readonly hasFocus: boolean;\n\n /** Moves focus into the component. */\n focus(): void;\n\n /**\n * Moves focus into the component as if it was reached with the keyboard — the focused element shows its\n * keyboard focus state.\n */\n focusViaKeyboard?(): void;\n}\n\n/**\n * Interactive content a navbar item recognizes as owning the interaction: a projected button or form field,\n * or a custom component provided as `KBQ_NAVBAR_ITEM_TRIGGER`.\n */\nexport type KbqNavbarNestedElement = KbqButton | KbqFormField | KbqNavbarItemTrigger;\n\n/** Makes a custom component projected into a navbar item the owner of the item's interaction. */\nexport const KBQ_NAVBAR_ITEM_TRIGGER = new InjectionToken<KbqNavbarItemTrigger>('kbq-navbar-item-trigger');\n\n/**\n * Elements that already turn Enter/Space into a `click` on their own. Items authored on top of them must not\n * get a synthetic activation on the same key, or the handler runs twice.\n */\nconst NATIVELY_ACTIONABLE_TAGS = new Set(['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA']);\n\n/** Switches an item to its collapsed, icon-only presentation. */\nconst COLLAPSED_ITEM_CLASS = 'kbq-navbar-item_collapsed';\n\n/** Paints the keyboard focus ring of an item whose custom trigger holds the focus. */\nconst CUSTOM_TRIGGER_KEYBOARD_FOCUS_CLASS = 'kbq-navbar-item_keyboard-focused';\n\n/** @docs-private */\nexport interface KbqNavbarFocusableItemEvent {\n item: KbqNavbarFocusableItem;\n}\n\n@Directive({\n selector: 'kbq-navbar-logo, [kbq-navbar-logo]',\n host: {\n class: 'kbq-navbar-logo'\n }\n})\nexport class KbqNavbarLogo {}\n\n@Directive({\n selector: 'kbq-navbar-item[bento], [kbq-navbar-item][bento]',\n host: {\n class: 'kbq-navbar-bento'\n }\n})\nexport class KbqNavbarBento {}\n\n/** Marks content to be projected after the title of a navbar item. */\n@Directive({\n selector: '[kbqNavbarItemSuffix]',\n host: {\n class: 'kbq-navbar-item-suffix'\n }\n})\nexport class KbqNavbarItemSuffix {}\n\n/**\n * Marks arbitrary content of a navbar item that takes the spot of the item icon.\n *\n * The navbar reserves a 40×40px square for the content and leaves the positioning inside the square to the\n * content itself: it can fill the whole square or render smaller with its own paddings. The square size is\n * controlled by the `--kbq-navbar-item-size-custom-content-width` and `--kbq-navbar-item-size-custom-content-height`\n * tokens.\n */\n@Directive({\n selector: '[kbqNavbarItemContent]',\n host: {\n class: 'kbq-navbar-item-content'\n }\n})\nexport class KbqNavbarItemContent {}\n\n@Directive({\n selector: 'kbq-navbar-title, [kbq-navbar-title]',\n host: {\n class: 'kbq-navbar-title'\n }\n})\nexport class KbqNavbarTitle {\n /** @docs-private */\n protected readonly isBrowser = inject(Platform).isBrowser;\n /** @docs-private */\n protected readonly nativeElement = kbqInjectNativeElement();\n private readonly window = inject(KBQ_WINDOW);\n\n /** Text content of the title element. */\n get text(): string {\n return this.nativeElement.textContent || '';\n }\n\n /** Whether the text is clipped horizontally (e.g. by `text-overflow: ellipsis`). */\n get isOverflown(): boolean {\n if (!this.isBrowser) return false;\n\n return this.nativeElement.scrollWidth > this.nativeElement.clientWidth;\n }\n\n /**\n * Whether the text is clipped vertically (e.g. by `-webkit-line-clamp`).\n *\n * Kept separate from `isOverflown` on purpose: wrapped text never exceeds its width, so only this\n * check catches a clamped title. `isOverflown` is also read by `KbqNavbarItem`, whose titles are\n * always `nowrap` — folding the two together would let sub-pixel line-height rounding enable\n * tooltips on every navbar item.\n */\n get isClamped(): boolean {\n if (!this.isBrowser) return false;\n\n return this.nativeElement.scrollHeight > this.nativeElement.clientHeight;\n }\n\n /** Outer width of the title: its border box plus horizontal margins. */\n getOuterElementWidth(): number {\n return this.isBrowser ? getOuterWidth(this.nativeElement, this.window) : 0;\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-divider',\n host: {\n class: 'kbq-navbar-divider',\n role: 'separator',\n '[attr.aria-orientation]': 'ariaOrientation'\n }\n})\nexport class KbqNavbarDivider {\n // Optional: the divider only picks up a rectangle element when both directives are imported, which is\n // what `KbqNavbarModule` does but a hand-rolled standalone import need not.\n private readonly rectangleElement = inject(KbqNavbarRectangleElement, { optional: true });\n\n /**\n * The separator runs across the navbar, so it is oriented the other way round: a horizontal navbar gets a\n * vertical rule and vice versa.\n */\n protected get ariaOrientation(): 'horizontal' | 'vertical' {\n return this.rectangleElement?.isHorizontal() ? 'vertical' : 'horizontal';\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-item, [kbq-navbar-item], kbq-navbar-brand, [kbq-navbar-brand], kbq-navbar-toggle',\n host: {\n '[attr.tabindex]': 'tabIndex',\n // `aria-disabled` and not the `disabled` content attribute: these are custom elements, not form\n // controls, so the browser and assistive technology both ignore `disabled` on them.\n '[attr.aria-disabled]': 'explicitlyDisabled || null',\n\n class: 'kbq-navbar-focusable-item',\n '[class.kbq-navbar-item_has-nested]': '!!nestedElement',\n '[class.kbq-navbar-item_has-custom-trigger]': '!!customTrigger()',\n '[class.kbq-disabled]': 'explicitlyDisabled',\n\n '(focus)': 'onFocusHandler()',\n '(blur)': 'blur()',\n // The custom trigger takes the DOM focus from the item, so the item tracks when the focus leaves it.\n '(focusout)': 'onFocusOut($event)'\n }\n})\nexport class KbqNavbarFocusableItem implements OnChanges, AfterContentInit, AfterViewInit, OnDestroy, IFocusableOption {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private changeDetector = inject(ChangeDetectorRef);\n private focusMonitor = inject(FocusMonitor);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n\n /** @docs-private */\n readonly title = contentChild(KbqNavbarTitle);\n\n /** @docs-private */\n readonly button = contentChild(KbqButton);\n\n /** @docs-private */\n readonly formField = contentChild(KbqFormField);\n\n /** Custom interactive component projected into the item, if any. @docs-private */\n readonly customTrigger = contentChild(KBQ_NAVBAR_ITEM_TRIGGER, { descendants: true });\n\n /** Interactive element projected into the item, if any. */\n get nestedElement(): KbqNavbarNestedElement | undefined {\n return this.button() || this.formField() || this.customTrigger() || undefined;\n }\n\n /** @docs-private */\n get tooltip(): KbqTooltipTrigger {\n return this._tooltip;\n }\n\n private _tooltip: KbqTooltipTrigger;\n\n /** @docs-private */\n readonly onFocus = new Subject<KbqNavbarFocusableItemEvent>();\n\n /** @docs-private */\n readonly onBlur = new Subject<KbqNavbarFocusableItemEvent>();\n\n /** @docs-private */\n get hasFocus(): boolean {\n return !!this.nestedElement?.hasFocus || this.hasFocusState();\n }\n\n set hasFocus(value: boolean) {\n this.hasFocusState.set(value);\n }\n\n private readonly hasFocusState = signal(false);\n\n /** Whether the item is disabled. Also `true` for a decorative element, which the key manager skips as well. */\n // An accessor, not a signal: `FocusKeyManager` reads it as a boolean through its default skip predicate, where a\n // signal would always read truthy — the manager would skip every item and arrow navigation would stop working.\n get disabled(): boolean {\n return this.disabledState() || this.decorative();\n }\n\n set disabled(value: boolean) {\n this.disabledState.set(value);\n }\n\n private readonly disabledState = signal(false);\n\n /**\n * Keeps an element with nothing to interact with out of the roving focus order, without announcing or\n * styling it as disabled.\n *\n * @docs-private\n */\n readonly decorative = signal(false);\n\n /**\n * Whether the item was disabled through `disabled`, as opposed to being decorative.\n *\n * @docs-private\n */\n get explicitlyDisabled(): boolean {\n return this.disabledState();\n }\n\n /**\n * Items are never in the tab order themselves: the navbar host owns the single tab stop and moves focus\n * between items with the arrow keys (roving tabindex).\n */\n get tabIndex(): number {\n return -1;\n }\n\n /** @docs-private */\n readonly disabledInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n ngOnChanges(changes: SimpleChanges): void {\n // A bound input is handed to its member; unbound, it leaves what code wrote.\n if (changes['disabledInput']) {\n const disabled = this.disabledInput();\n\n if (disabled !== undefined) this.disabled = disabled;\n }\n }\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n this.onFocus.complete();\n this.onBlur.complete();\n });\n }\n\n /** @docs-private */\n ngAfterViewInit(): void {\n this.focusMonitor.monitor(this.elementRef);\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n const button = this.button();\n\n if (button) {\n button.tabIndex = -1;\n }\n }\n\n /** @docs-private */\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n /** @docs-private */\n setTooltip(value: KbqTooltipTrigger) {\n this._tooltip = value;\n }\n\n /** @docs-private */\n onFocusHandler() {\n if (this.disabled || this.hasFocus) {\n return;\n }\n\n this.onFocus.next({ item: this });\n\n this.hasFocus = true;\n\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Clears the keyboard focus ring once the focus leaves the item. The custom trigger takes the DOM focus\n * from the item, so the CDK classes that drive the ring end up on the trigger and never come back.\n *\n * @docs-private\n */\n protected onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n\n if (next && this.elementRef.nativeElement.contains(next)) return;\n\n this.elementRef.nativeElement.classList.remove(CUSTOM_TRIGGER_KEYBOARD_FOCUS_CLASS);\n }\n\n /** @docs-private */\n focus(origin?: FocusOrigin): void {\n if (this.disabled || this.hasFocus) {\n return;\n }\n\n // A pointer focuses what it lands on by itself; moving the focus for it would surface a focus ring and a\n // tooltip. Focus set by code still has to reach the item, or the host keeps it while this item is active.\n const movesFocus = origin !== 'mouse' && origin !== 'touch';\n\n if (movesFocus) {\n this.focusMonitor.focusVia(this.elementRef, origin ?? 'program');\n }\n\n if (this.nestedElement) {\n const nestedElement = this.nestedElement;\n\n // KbqButton tracks focus via FocusMonitor; KbqFormField just delegates to control.focus.\n if (origin === 'keyboard' && 'focusViaKeyboard' in nestedElement && nestedElement.focusViaKeyboard) {\n // Only a custom trigger leaves the ring to the item: a button and a form field paint their own.\n this.elementRef.nativeElement.classList.toggle(\n CUSTOM_TRIGGER_KEYBOARD_FOCUS_CLASS,\n !!this.customTrigger()\n );\n\n nestedElement.focusViaKeyboard();\n } else if (movesFocus) {\n nestedElement.focus();\n }\n\n this.changeDetector.markForCheck();\n\n return;\n }\n\n if (movesFocus) {\n if (origin === 'keyboard') this.tooltip?.show();\n\n this.onFocusHandler();\n }\n }\n\n /** @docs-private */\n blur(): void {\n // Deferred until the focus has settled: an item hands its focus to its nested button or form field, which\n // registers its focus only after this blur, and the item gets no focus event of its own afterwards. A blur\n // reported before that would read as no item being focused and clear the navbar's active item. An item\n // blurred by its own destruction has nothing to update.\n if (this.destroyRef.destroyed) return;\n\n afterNextRender(\n () => {\n // Focus can be back by the time this runs (a blur and a focus in the same task): then nothing was lost.\n if (_getFocusedElementPierceShadowDom() === this.elementRef.nativeElement) return;\n\n this.hasFocusState.set(false);\n\n this.tooltip?.hide();\n\n if (this.nestedElement?.hasFocus) {\n return;\n }\n\n this.onBlur.next({ item: this });\n },\n { injector: this.injector }\n );\n }\n\n /** @docs-private */\n getLabel(): string {\n return this.title()?.text || '';\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-item, [kbq-navbar-item], kbq-navbar-divider, kbq-navbar-brand, [kbq-navbar-brand]',\n host: {\n '[class.kbq-vertical]': 'isVertical()',\n '[class.kbq-horizontal]': 'isHorizontal()',\n\n '[class.kbq-expanded]': 'isVertical() && !collapsed',\n '[class.kbq-collapsed]': 'isVertical() && collapsed'\n }\n})\nexport class KbqNavbarRectangleElement {\n /** @docs-private */\n protected readonly isBrowser = inject(Platform).isBrowser;\n /** @docs-private */\n protected readonly nativeElement = kbqInjectNativeElement();\n private readonly window = inject(KBQ_WINDOW);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Emits whenever the orientation or the collapsed state of the element changes. @docs-private */\n readonly state = new Subject<void>();\n\n private readonly _orientation = signal<KbqNavbarOrientation>('vertical');\n\n /**\n * Orientation of the navbar this element belongs to. Written by the ambient `KbqNavbar` /\n * `KbqVerticalNavbar`; the element itself only reads it.\n */\n get orientation(): KbqNavbarOrientation {\n return this._orientation();\n }\n\n set orientation(value: KbqNavbarOrientation) {\n if (this._orientation() === value) return;\n\n this._orientation.set(value);\n\n this.state.next();\n }\n\n /** Whether the ambient navbar is horizontal. @docs-private */\n readonly isHorizontal: Signal<boolean> = computed(() => this._orientation() === 'horizontal');\n\n /** Whether the ambient navbar is vertical. @docs-private */\n readonly isVertical: Signal<boolean> = computed(() => this._orientation() === 'vertical');\n\n // Deliberately left `undefined`: it is not equal to either boolean, so the guard below always lets the\n // first assignment through. Initializing it to `false` would swallow the initial `collapsed = false` of a\n // navbar that starts expanded, and with it the `updateDropdown()` that rides on that emission.\n private readonly _collapsed = signal<boolean | undefined>(undefined);\n\n /** Whether the element is rendered in its collapsed (icon-only) form. @docs-private */\n get collapsed(): boolean {\n return !!this._collapsed();\n }\n\n set collapsed(value: boolean) {\n if (this._collapsed() === value) return;\n\n this._collapsed.set(value);\n\n this.state.next();\n }\n\n /** Signal mirror of `collapsed`, for `computed()` consumers. @docs-private */\n readonly collapsedState: Signal<boolean> = computed(() => !!this._collapsed());\n\n /** @docs-private */\n readonly button = contentChild(KbqButtonCssStyler);\n\n constructor() {\n this.destroyRef.onDestroy(() => this.state.complete());\n }\n\n /** Outer width of the element: its border box plus horizontal margins. */\n getOuterElementWidth(): number {\n return this.isBrowser ? getOuterWidth(this.nativeElement, this.window) : 0;\n }\n}\n\n@Component({\n selector: 'kbq-navbar-item, [kbq-navbar-item]',\n imports: [\n KbqIcon\n ],\n templateUrl: './navbar-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-navbar-item',\n [`[class.${COLLAPSED_ITEM_CLASS}]`]: 'isCollapsed()',\n '[class.kbq-navbar-item_with-title]': '!!title()',\n\n '[attr.role]': 'role',\n '[attr.aria-label]': 'resolvedAriaLabel',\n\n '(keydown)': 'onKeyDown($event)'\n },\n // Composition, not inheritance: the item is not a tooltip trigger, it merely owns one. Only the tooltip\n // inputs that make sense on a navbar item are re-exposed; `KbqNavbarToggle` uses the same pattern.\n // `kbqTooltip` is the tooltip's selector, so under its own name it would match the tooltip a second time\n // wherever that is imported (NG0309).\n hostDirectives: [\n {\n directive: KbqTooltipTrigger,\n inputs: [\n 'kbqTooltip: tooltipText',\n 'kbqTooltipClass',\n 'kbqTooltipColor',\n 'kbqTooltipContext',\n 'kbqTooltipOffset',\n 'kbqTrigger',\n 'kbqPlacement',\n 'kbqPlacementPriority',\n 'kbqEnterDelay',\n 'kbqLeaveDelay',\n 'kbqVisible'\n ],\n outputs: [\n 'kbqVisibleChange',\n 'kbqPlacementChange'\n ]\n }\n ],\n exportAs: 'kbqNavbarItem'\n})\nexport class KbqNavbarItem implements AfterContentInit {\n /** @docs-private */\n readonly rectangleElement = inject(KbqNavbarRectangleElement);\n /** @docs-private */\n readonly navbarFocusableItem = inject(KbqNavbarFocusableItem);\n /** @docs-private */\n readonly tooltip = inject(KbqTooltipTrigger, { self: true });\n\n private readonly nativeElement = kbqInjectNativeElement();\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly dropdownTrigger = inject(KbqDropdownTrigger, { optional: true })!;\n private readonly bento = inject(KbqNavbarBento, { optional: true });\n private readonly contentObserver = inject(ContentObserver);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n\n // Outer widths recorded by `measureWidths()`, 0 while unknown.\n private expandedWidth = 0;\n private collapsedWidth = 0;\n\n /** @docs-private */\n readonly title = contentChild(KbqNavbarTitle);\n\n private readonly icons = contentChildren(KbqIcon, { descendants: true });\n\n /** Icon shown before the title; it stays visible when the item collapses. @docs-private */\n readonly icon: Signal<KbqIcon | undefined> = computed(() =>\n this.icons().find((icon) => !icon.getHostElement().closest('[kbqNavbarItemSuffix]'))\n );\n\n /** Text shown in the tooltip of a collapsed item. Defaults to the text of the projected `kbq-navbar-title`. */\n readonly collapsedText = input<string>('');\n\n /** Whether the item may be collapsed when the horizontal navbar runs out of room. */\n readonly collapsable = input(true, { transform: booleanAttribute });\n\n /**\n * Explicitly enables or disables the item's tooltip.\n *\n * Left unset, the tooltip is enabled exactly when the title cannot be read from the item itself — the item\n * is collapsed, its title is clipped, or it has no title at all.\n */\n readonly tooltipDisabled = input<boolean | undefined, unknown>(undefined, {\n alias: 'kbqTooltipDisabled',\n transform: (value: unknown) => (value === undefined ? undefined : booleanAttribute(value))\n });\n\n private readonly ownCollapsed = signal<boolean | undefined>(undefined);\n\n /** Collapses the item regardless of what the ambient navbar decided. */\n set collapsed(value: boolean) {\n this.ownCollapsed.set(value);\n }\n\n /** Whether the item is rendered in its collapsed (icon-only) form. */\n // todo in future need rename to 'collapsed'\n readonly isCollapsed: Signal<boolean> = computed(\n () => this.ownCollapsed() ?? this.rectangleElement.collapsedState()\n );\n\n /** @docs-private */\n get croppedText(): string {\n const croppedTitleText = this.title()?.isOverflown ? this.titleText : '';\n\n return `${croppedTitleText}`;\n }\n\n /** Text used for the tooltip and for the accessible name of a collapsed item. */\n get titleText(): string | null {\n return this.collapsedText() || this.title()?.text || null;\n }\n\n /** @docs-private */\n get hasDropDownTrigger(): boolean {\n return !!this.dropdownTrigger;\n }\n\n /** @docs-private */\n protected readonly showVerticalDropDownAngle: Signal<boolean> = computed(\n () => !this.bento && this.hasDropDownTrigger && this.rectangleElement.isVertical() && !this.isCollapsed()\n );\n\n /** @docs-private */\n protected readonly showHorizontalDropDownAngle: Signal<boolean> = computed(\n () => this.hasDropDownTrigger && this.rectangleElement.isHorizontal() && !this.isCollapsed()\n );\n\n /**\n * Whether the title of a vertical bento item slides in without motion.\n *\n * @docs-private\n */\n protected readonly animationsDisabled = kbqAnimationsDisabled();\n\n /** @docs-private */\n get hasCroppedText(): boolean {\n return !!this.title()?.isOverflown;\n }\n\n /**\n * Accessible name of the item. Needed for an icon-only item, which has no visible label of its own; an\n * item that renders a title is named by it.\n */\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n /**\n * A collapsed item shows nothing but its icon, and a tooltip is a transient overlay — never an accessible\n * name. The name is therefore published on the element itself, unless the consumer named it already.\n */\n protected get resolvedAriaLabel(): string | null {\n return this.ariaLabel() ?? (this.isCollapsed() ? this.titleText : null);\n }\n\n /**\n * Items authored as `<kbq-navbar-item>` are custom elements with no implicit role, so they are announced as\n * plain content. Anything already actionable — a native element, or a projected button/form field that owns\n * the interaction — keeps its own semantics.\n *\n * No `aria-haspopup` for dropdown-trigger items on purpose: `KbqDropdownTrigger` deliberately omits it\n * because the panel carries no menu semantics; it does publish `aria-expanded` itself.\n */\n protected get role(): string | null {\n if (NATIVELY_ACTIONABLE_TAGS.has(this.nativeElement.tagName) || this.navbarFocusableItem.nestedElement) {\n return null;\n }\n\n return 'button';\n }\n\n /** Whether Enter/Space has to be turned into a click by hand. */\n private get needsSyntheticActivation(): boolean {\n return this.role === 'button' && !this.hasDropDownTrigger;\n }\n\n constructor() {\n if (this.hasDropDownTrigger) {\n this.dropdownTrigger.openByArrowDown.set(false);\n }\n\n this.rectangleElement.state.pipe(takeUntilDestroyed()).subscribe(() => {\n this.updateDropdown();\n\n this.updateTooltip();\n });\n\n this.navbarFocusableItem.setTooltip(this.tooltip);\n\n this.tooltip.arrow = false;\n this.tooltip.offset = 0;\n\n this.tooltip.setOverlayPanelClass('kbq-tooltip-panel_horizontal-navbar');\n\n // The tooltip of a collapsed item stands in for its missing title, so it must not also open on focus:\n // `KbqNavbarFocusableItem.focus()` shows it explicitly, and only for keyboard focus.\n this.tooltip.trigger = `${PopUpTriggers.Hover}`;\n\n effect(() => {\n // Re-read the reactive inputs the tooltip content depends on.\n this.collapsedText();\n this.tooltipDisabled();\n this.isCollapsed();\n\n this.updateTooltip();\n\n // Whether the title is clipped can only be measured once this change is rendered.\n afterNextRender(() => this.updateTooltip(), { injector: this.injector });\n });\n\n // Content changes, such as a new title text, can clip the title too.\n afterNextRender(() =>\n this.contentObserver\n .observe(this.nativeElement)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.updateTooltip())\n );\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n this.updateTooltip();\n }\n\n /** @docs-private */\n updateTooltip(): void {\n const titleText = this.titleText;\n\n // With no title or `collapsedText` to stand in, a collapsed item keeps the content bound as `tooltipText`.\n if (this.isCollapsed() && titleText) {\n this.tooltip.content = titleText;\n } else if (this.hasCroppedText) {\n this.tooltip.content = this.croppedText;\n }\n\n // A fully visible title needs no tooltip; for a collapsed, clipped or missing one it is the only label.\n this.tooltip.disabled =\n this.tooltipDisabled() ?? (!!this.title() && !this.isCollapsed() && !this.hasCroppedText);\n\n if (this.rectangleElement.isVertical()) {\n this.tooltip.tooltipPlacement = PopUpPlacements.Right;\n this.tooltip.tooltipPlacementPriority = PopUpPlacements.Right;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n /**\n * Records the outer width of the item in the presentation it is shown in, and measures the other one only while\n * it is still unknown.\n *\n * The other presentation is read by toggling the collapse class around the measurement. Restoring it within\n * the same task is safe: the browser does not paint mid-task, and the host binding only writes to the DOM when\n * its value changes. Both rely on the item having no CSS transition. A width seen in the real presentation is\n * preferred because a collapsed item does not render its dropdown chevron, so toggling it back undercounts.\n *\n * @docs-private\n */\n measureWidths(): void {\n // A hidden item has no box, and its margins alone would be recorded as a width.\n if (!this.nativeElement.getClientRects().length) return;\n\n const classList = this.nativeElement.classList;\n const collapsed = classList.contains(COLLAPSED_ITEM_CLASS);\n\n if (collapsed) {\n this.collapsedWidth = this.rectangleElement.getOuterElementWidth();\n } else {\n this.expandedWidth = this.rectangleElement.getOuterElementWidth();\n }\n\n if (collapsed ? this.expandedWidth : this.collapsedWidth) return;\n\n classList.toggle(COLLAPSED_ITEM_CLASS);\n\n const otherWidth = this.rectangleElement.getOuterElementWidth();\n\n classList.toggle(COLLAPSED_ITEM_CLASS);\n\n if (collapsed) {\n this.expandedWidth = otherWidth;\n } else {\n this.collapsedWidth = otherWidth;\n }\n }\n\n /**\n * Width the item gives back by collapsing: its expanded outer width less its collapsed one, as last recorded by\n * `measureWidths()`. It covers everything the collapse removes or changes — the title, a suffix, the dropdown\n * chevron and the padding and margins that differ between the two presentations.\n *\n * @docs-private\n */\n getCollapsibleWidth(): number {\n return Math.max(this.expandedWidth - this.collapsedWidth, 0);\n }\n\n /** @docs-private */\n protected onKeyDown($event: KeyboardEvent) {\n if (this.needsSyntheticActivation && [ENTER, SPACE].includes($event.keyCode)) {\n this.nativeElement.click();\n\n $event.preventDefault();\n\n return;\n }\n\n if (!this.hasDropDownTrigger) {\n return;\n }\n\n if (\n (this.rectangleElement.isHorizontal() && $event.keyCode === DOWN_ARROW) ||\n (this.rectangleElement.isVertical() && $event.keyCode === RIGHT_ARROW)\n ) {\n this.dropdownTrigger.openedBy = 'keyboard';\n this.dropdownTrigger.open();\n\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n\n private updateDropdown(): void {\n const dropdown = this.dropdownTrigger?.dropdown();\n\n if (!dropdown) return;\n\n if (this.rectangleElement.isVertical()) {\n dropdown.overlapTriggerX.set(false);\n dropdown.overlapTriggerY.set(true);\n // needs to shift dropdown to the left by 8 pixels\n this.dropdownTrigger.offsetX.set(-8);\n }\n }\n}\n","<ng-content select=\"[kbq-icon]:not([kbqNavbarItemSuffix]), [kbqNavbarItemContent]\" />\n\n@if (title()) {\n <div class=\"kbq-navbar-item__container\">\n <div class=\"kbq-navbar-item__title\" [class.kbq-animations-disabled]=\"animationsDisabled\">\n <ng-content select=\"kbq-navbar-title, [kbq-navbar-title]\" />\n </div>\n <ng-content select=\"[kbqNavbarItemSuffix]\" />\n @if (showVerticalDropDownAngle()) {\n <i class=\"kbq-navbar-item__arrow-icon\" kbq-icon=\"kbq-chevron-right_16\" color=\"contrast\"></i>\n }\n @if (showHorizontalDropDownAngle()) {\n <i class=\"kbq-navbar-item__arrow-icon\" kbq-icon=\"kbq-chevron-down-s_16\" color=\"contrast\"></i>\n }\n </div>\n}\n\n<ng-content />\n","import { ContentObserver } from '@angular/cdk/observers';\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChild,\n DestroyRef,\n effect,\n inject,\n Injector,\n input,\n Renderer2,\n signal,\n Signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { kbqInjectNativeElement, PopUpPlacements, PopUpTriggers } from '@koobiq/components/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { distinctUntilChanged, EMPTY, from, map, merge, Observable } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { KbqNavbarFocusableItem, KbqNavbarRectangleElement, KbqNavbarTitle } from './navbar-item.component';\n\n/** Switches the brand title to the compact two-line presentation. */\nconst LONG_TITLE_CLASS = 'kbq-navbar-brand_long-title';\n\n@Component({\n selector: 'kbq-navbar-brand, [kbq-navbar-brand]',\n template: `\n <ng-content />\n `,\n styleUrls: [\n './navbar-brand.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-navbar-brand',\n [`[class.${LONG_TITLE_CLASS}]`]: 'longTitleEnabled()',\n '[class.kbq-navbar-brand_link]': 'isLink',\n '[attr.aria-label]': 'resolvedAriaLabel'\n },\n // Composition, not inheritance: the brand owns a tooltip, it is not one. Only the tooltip inputs that make\n // sense on a brand are re-exposed. `kbqTooltip` is the tooltip's selector, so under its own name it would\n // match the tooltip a second time wherever that is imported (NG0309).\n hostDirectives: [\n {\n directive: KbqTooltipTrigger,\n inputs: [\n 'kbqTooltip: tooltipText',\n 'kbqTooltipClass',\n 'kbqTooltipColor',\n 'kbqTooltipOffset',\n 'kbqTrigger',\n 'kbqPlacement',\n 'kbqEnterDelay',\n 'kbqLeaveDelay',\n 'kbqVisible'\n ],\n outputs: [\n 'kbqVisibleChange',\n 'kbqPlacementChange'\n ]\n }\n ],\n exportAs: 'kbqNavbarBrand'\n})\nexport class KbqNavbarBrand implements AfterContentInit {\n /** @docs-private */\n protected readonly nativeElement = kbqInjectNativeElement();\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly rectangleElement = inject(KbqNavbarRectangleElement);\n /** @docs-private */\n protected readonly navbarFocusableItem = inject(KbqNavbarFocusableItem);\n /** @docs-private */\n readonly tooltip = inject(KbqTooltipTrigger, { self: true });\n\n private readonly isBrowser = inject(Platform).isBrowser;\n private readonly resizeObserver = inject(SharedResizeObserver);\n private readonly contentObserver = inject(ContentObserver);\n private readonly document = inject(DOCUMENT);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly renderer = inject(Renderer2);\n\n private readonly debounceInterval = 100;\n\n /** @docs-private */\n readonly title = contentChild(KbqNavbarTitle);\n\n /**\n * Whether the title has been measured as not fitting into a single line, which switches it to the compact\n * two-line presentation.\n *\n * @docs-private\n */\n protected readonly longTitleEnabled = signal(false);\n\n /** text that will be displayed in the tooltip. By default, the text is taken from kbq-navbar-title. */\n readonly collapsedText = input<string>('');\n\n /**\n * Explicitly enables or disables the brand's tooltip.\n *\n * Left unset, the tooltip is enabled exactly when the title cannot be read from the brand itself — the\n * navbar is collapsed, the title is clipped, or there is no title at all.\n */\n readonly tooltipDisabled = input<boolean | undefined, unknown>(undefined, {\n alias: 'kbqTooltipDisabled',\n transform: (value: unknown) => (value === undefined ? undefined : booleanAttribute(value))\n });\n\n /** Whether the brand is rendered as a native link. */\n get isLink(): boolean {\n return this.nativeElement.tagName === 'A';\n }\n\n /** @docs-private */\n get croppedText(): string {\n const croppedTitleText = this.hasCroppedText ? this.titleText : '';\n\n return `${croppedTitleText}`;\n }\n\n /** @docs-private */\n get hasCroppedText(): boolean {\n const title = this.title();\n\n return !!title && (title.isOverflown || title.isClamped);\n }\n\n /** @docs-private */\n get titleText(): string | null {\n return this.collapsedText() || this.title()?.text || null;\n }\n\n /** Whether the brand is rendered in its collapsed (logo-only) form. @docs-private */\n readonly collapsed: Signal<boolean> = this.rectangleElement.collapsedState;\n\n /** Accessible name of the brand. Needed when the brand renders nothing but a logo. */\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n /**\n * A collapsed brand shows nothing but its logo, and a tooltip is a transient overlay — never an accessible\n * name. The name is therefore published on the element itself, unless the consumer named it already.\n */\n protected get resolvedAriaLabel(): string | null {\n return this.ariaLabel() ?? (this.collapsed() ? this.titleText : null);\n }\n\n constructor() {\n this.rectangleElement.state.pipe(takeUntilDestroyed()).subscribe(() => this.updateTooltip());\n\n this.tooltip.arrow = false;\n this.tooltip.offset = 0;\n\n // A brand tooltip stands in for a title that cannot be read from the element itself, so it opens on\n // hover only; keyboard focus surfaces it through `KbqNavbarFocusableItem.focus()`.\n this.tooltip.trigger = `${PopUpTriggers.Hover}`;\n\n this.navbarFocusableItem.setTooltip(this.tooltip);\n\n effect(() => {\n // Re-read the reactive inputs the tooltip content depends on.\n this.collapsedText();\n this.tooltipDisabled();\n this.collapsed();\n\n this.updateTooltip();\n });\n\n afterNextRender(() => this.observeLongTitle());\n\n // A disabled navbar item takes `pointer-events: none`, which on a brand would also stop the tooltip a\n // collapsed brand depends on. Capturing on the host runs ahead of every listener of the link, `RouterLink`\n // included.\n const unlisten = this.renderer.listen(\n this.nativeElement,\n 'click',\n (event: MouseEvent) => this.preventDisabledActivation(event),\n { capture: true }\n );\n\n this.destroyRef.onDestroy(unlisten);\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n // A brand that is neither a link nor a wrapper around something interactive is decorative, and only\n // then is it kept out of the roving focus order. Deciding this here and not in the constructor is what\n // makes the projected content visible at all; deciding it from `isLink` alone used to disable every\n // `<div kbq-navbar-brand>`, however interactive its content was.\n this.navbarFocusableItem.decorative.set(!this.isLink && !this.navbarFocusableItem.nestedElement);\n\n this.updateTooltip();\n }\n\n private preventDisabledActivation(event: MouseEvent): void {\n if (!this.navbarFocusableItem.explicitlyDisabled) return;\n\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n private updateTooltip(): void {\n const titleText = this.titleText;\n\n // With no title or `collapsedText` to stand in, a collapsed brand keeps the content bound as `tooltipText`.\n if (this.collapsed() && titleText) {\n this.tooltip.content = titleText;\n } else if (this.hasCroppedText) {\n this.tooltip.content = this.croppedText;\n }\n\n // A fully visible title needs no tooltip; for a collapsed, clipped or missing one it is the only label.\n this.tooltip.disabled = this.tooltipDisabled() ?? (!!this.title() && !this.collapsed() && !this.hasCroppedText);\n\n if (this.rectangleElement.isVertical()) {\n this.tooltip.tooltipPlacement = PopUpPlacements.Right;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n private observeLongTitle(): void {\n if (!this.isBrowser) return;\n\n this.updateAutoLongTitle();\n\n const host = this.nativeElement;\n\n const resize$ = this.resizeObserver.observe(host).pipe(\n map(() => host.clientWidth),\n distinctUntilChanged()\n );\n\n const content$ = this.contentObserver.observe(host);\n\n const fontSet: FontFaceSet | undefined = this.document.fonts;\n const fonts$: Observable<unknown> = fontSet ? from(fontSet.ready) : EMPTY;\n\n // Continuous, noisy sources - coalesce them.\n merge(resize$, content$, fonts$)\n .pipe(debounceTime(this.debounceInterval), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.updateAutoLongTitle());\n\n // Expanding is a discrete event, and a collapsed title is `display: none` - so the first expand is the\n // first chance to measure at all. Debouncing it paints the default presentation for the whole window\n // first. Measuring synchronously here would be just as wrong: `.kbq-collapsed` and the container's\n // width class are written by the change detection pass that *follows* this emission, so the read would\n // still see a `display: none` title inside a collapsed container. Render hooks run after that write and\n // before the browser paints, so the compact presentation lands on the very first frame.\n //\n // `mixedReadWrite` and not `read`: `measureNeedsLongTitle()` takes the class off around its read and\n // puts it back, and `read` is the phase documented to never write. Splitting the two across `write` and\n // `read` is not an option either - they are one indivisible measurement.\n this.rectangleElement.state\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() =>\n afterNextRender({ mixedReadWrite: () => this.updateAutoLongTitle() }, { injector: this.injector })\n );\n }\n\n private updateAutoLongTitle(): void {\n this.longTitleEnabled.set(this.measureNeedsLongTitle());\n\n // The clamp state feeds into `hasCroppedText`, which the tooltip's content depends on - refresh it\n // so a title that becomes clamped after the initial render doesn't show stale/empty tooltip content.\n this.updateTooltip();\n }\n\n /**\n * Measures whether the title fits into a single line in the *default* presentation.\n *\n * Removing and restoring the class within a single task is safe: the browser does not paint mid-task, and\n * Angular's host binding only writes to the DOM when its value changes, which it does not here. Both rely\n * on there being no CSS transition on the title - add one and this starts to flicker.\n */\n private measureNeedsLongTitle(): boolean {\n const title = this.title();\n\n // A collapsed title is `display: none`, so it measures as 0 - keep the last known value instead.\n if (!title || this.rectangleElement.collapsed) {\n return this.longTitleEnabled();\n }\n\n const host = this.nativeElement;\n const applied = host.classList.contains(LONG_TITLE_CLASS);\n\n if (applied) host.classList.remove(LONG_TITLE_CLASS);\n\n const overflown = title.isOverflown;\n\n if (applied) host.classList.add(LONG_TITLE_CLASS);\n\n return overflown;\n }\n}\n","import { Provider } from '@angular/core';\nimport type { KbqTooltipDefaultOptions } from '@koobiq/components/tooltip';\nimport { KBQ_TOOLTIP_DEFAULT_OPTIONS } from '@koobiq/components/tooltip';\n\n/**\n * Tooltip defaults every tooltip inside a navbar inherits, in either orientation: no offset, and the panel\n * class the navbar's stylesheet uses to place the panel against the bar. A bound `kbqTooltipOffset` still\n * wins over the offset, and binding it back to `undefined` restores this value.\n *\n * @docs-private\n */\nexport const kbqNavbarTooltipOptionsProvider: Provider = {\n provide: KBQ_TOOLTIP_DEFAULT_OPTIONS,\n useValue: { offset: 0, panelClass: 'kbq-tooltip-panel_horizontal-navbar' } satisfies KbqTooltipDefaultOptions\n};\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n AfterContentChecked,\n AfterContentInit,\n afterNextRender,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n NgZone,\n OnDestroy,\n QueryList,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FocusKeyManager,\n isHorizontalMovement,\n isVerticalMovement,\n KBQ_WINDOW,\n kbqLeaveTabOrderOnTabOut,\n KbqOverlayLayerExclude,\n kbqQueryListFrom,\n LEFT_ARROW,\n RIGHT_ARROW,\n TAB\n} from '@koobiq/components/core';\nimport { fromEvent, merge, Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, startWith } from 'rxjs/operators';\nimport {\n KbqNavbarFocusableItem,\n KbqNavbarFocusableItemEvent,\n KbqNavbarItem,\n KbqNavbarRectangleElement\n} from './navbar-item.component';\nimport { kbqNavbarTooltipOptionsProvider } from './navbar-tooltip-defaults';\nimport { getOuterWidth } from './outer-width';\n\n@Directive()\nexport class KbqFocusableComponent implements AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy {\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /** @docs-private */\n protected readonly focusMonitor = inject(FocusMonitor);\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n\n private readonly focusableItemsQuery = contentChildren<KbqNavbarFocusableItem>(\n forwardRef(() => KbqNavbarFocusableItem),\n { descendants: true }\n );\n private readonly focusableItemsList = kbqQueryListFrom(this.focusableItemsQuery);\n\n /** @docs-private */\n get focusableItems(): QueryList<KbqNavbarFocusableItem> {\n return this.focusableItemsList();\n }\n\n /** @docs-private */\n keyManager: FocusKeyManager<KbqNavbarFocusableItem>;\n\n /**\n * Tab index of the navbar host. The navbar owns the single tab stop of the whole widget and moves focus\n * between its items with the arrow keys. A navbar without a focusable item stays out of the tab order.\n */\n readonly tabIndex = model<number>(0);\n\n /**\n * Tab index the host renders: {@link tabIndex}, or `-1` while there is no item to hand the focus to. Derived\n * rather than written to the model, which a consumer may bind.\n *\n * @docs-private\n */\n protected readonly renderedTabIndex = computed(() =>\n this.focusableItemsQuery().length === 0 ? -1 : this.tabIndex()\n );\n\n /**\n * Accessible name of the navigation landmark. Set it whenever a page renders more than one navbar, so\n * assistive technology can tell them apart.\n */\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n private lastFocusOrigin: FocusOrigin = null;\n\n private cachedOptionFocusChanges: Observable<KbqNavbarFocusableItemEvent> | null = null;\n private cachedOptionBlurChanges: Observable<KbqNavbarFocusableItemEvent> | null = null;\n\n /** Focus events of every focusable item, merged once per change of the item set. @docs-private */\n get optionFocusChanges(): Observable<KbqNavbarFocusableItemEvent> {\n return (this.cachedOptionFocusChanges ??= merge(...this.focusableItems.map((item) => item.onFocus)));\n }\n\n /** Blur events of every focusable item, merged once per change of the item set. @docs-private */\n get optionBlurChanges(): Observable<KbqNavbarFocusableItemEvent> {\n return (this.cachedOptionBlurChanges ??= merge(...this.focusableItems.map((option) => option.onBlur)));\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n this.keyManager = new FocusKeyManager<KbqNavbarFocusableItem>(this.focusableItems).withTypeAhead();\n\n kbqLeaveTabOrderOnTabOut(\n this.keyManager.tabOut,\n this.elementRef.nativeElement,\n () => this.renderedTabIndex(),\n this.destroyRef\n );\n\n this.focusableItems.changes\n .pipe(startWith(null), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.resetOptions());\n }\n\n /** @docs-private */\n ngAfterContentChecked(): void {\n // Syncs the list here so `changes` emits after the projected items are bound and before the host bindings.\n this.focusableItemsList();\n }\n\n /**\n * Monitored with `checkChildren`, because the navbar is one composite widget: the host owns the tab stop\n * but hands focus straight to an item, and without it that hand-off reads as the navbar being blurred.\n *\n * @docs-private\n */\n ngAfterViewInit(): void {\n this.focusMonitor\n .monitor(this.elementRef, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((focusOrigin) => {\n // A child losing focus to another child reports `null` in between; keep the origin the arrow\n // keys travel on, and let a real blur of the whole navbar be handled by `blur()`.\n if (focusOrigin === null) return;\n\n this.lastFocusOrigin = focusOrigin;\n this.keyManager.setFocusOrigin(focusOrigin);\n });\n }\n\n /** @docs-private */\n ngOnDestroy() {\n this.dropSubscriptions();\n\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n /** Host element of the navbar. @docs-private */\n getNativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n /** @docs-private */\n focus(): void {\n if (this.focusableItems.length === 0) {\n return;\n }\n\n // Pointer focus on the navbar host (e.g. clicking empty area) should not\n // steal keyboard focus into the first item, which would surface its tooltip.\n if (this.lastFocusOrigin === 'mouse' || this.lastFocusOrigin === 'touch') {\n return;\n }\n\n this.keyManager.setFirstItemActive();\n }\n\n /** @docs-private */\n blur() {\n if (!this.hasFocusedItem()) {\n this.keyManager.setActiveItem(-1);\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n /** @docs-private */\n protected resetOptions() {\n this.dropSubscriptions();\n this.listenToOptionsFocus();\n }\n\n /** @docs-private */\n protected dropSubscriptions() {\n this.optionFocusSubscription?.unsubscribe();\n this.optionFocusSubscription = null;\n\n this.optionBlurSubscription?.unsubscribe();\n this.optionBlurSubscription = null;\n\n this.cachedOptionFocusChanges = null;\n this.cachedOptionBlurChanges = null;\n }\n\n private optionFocusSubscription: Subscription | null = null;\n private optionBlurSubscription: Subscription | null = null;\n\n private listenToOptionsFocus(): void {\n this.optionFocusSubscription = this.optionFocusChanges.subscribe((event) => {\n const index: number = this.focusableItems.toArray().indexOf(event.item);\n\n if (this.isValidIndex(index)) {\n this.keyManager.updateActiveItem(index);\n }\n });\n\n this.optionBlurSubscription = this.optionBlurChanges.subscribe(() => this.blur());\n }\n\n private isValidIndex(index: number): boolean {\n return index >= 0 && index < this.focusableItems.length;\n }\n\n private hasFocusedItem() {\n return this.focusableItems.some((item) => item.hasFocus);\n }\n}\n\n@Directive({\n selector: 'kbq-navbar-container',\n host: {\n class: 'kbq-navbar-container'\n }\n})\nexport class KbqNavbarContainer {}\n\n@Component({\n selector: 'kbq-navbar',\n template: `\n <ng-content select=\"[kbq-navbar-container], kbq-navbar-container\" />\n `,\n styleUrls: [\n './navbar.scss',\n './navbar-item.scss',\n './navbar-brand.scss',\n './navbar-divider.scss',\n './navbar-tokens.scss'\n ],\n providers: [kbqNavbarTooltipOptionsProvider],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-navbar',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.tabindex]': 'renderedTabIndex()',\n '(focus)': 'focus()',\n '(blur)': 'blur()',\n '(keydown)': 'onKeyDown($event)'\n },\n hostDirectives: [KbqOverlayLayerExclude]\n})\nexport class KbqNavbar extends KbqFocusableComponent implements AfterViewInit, AfterContentInit {\n private readonly platform = inject(Platform);\n private readonly ngZone = inject(NgZone);\n private readonly window = inject(KBQ_WINDOW);\n\n /** @docs-private */\n readonly rectangleElements = contentChildren<KbqNavbarRectangleElement>(\n forwardRef(() => KbqNavbarRectangleElement),\n { descendants: true }\n );\n\n /** @docs-private */\n readonly navbarItems = contentChildren<KbqNavbarItem>(\n forwardRef(() => KbqNavbarItem),\n { descendants: true }\n );\n\n /** Raw `resize` events of the window, fed from outside the Angular zone. @docs-private */\n readonly resizeStream = new Subject<Event>();\n\n private readonly resizeDebounceInterval: number = 100;\n\n private get width(): number {\n return this.elementRef.nativeElement.getBoundingClientRect().width;\n }\n\n /**\n * Room the content needs: the outer widths of the containers' children plus the containers' own margins, which\n * hold the gap between them. The containers' boxes are not measured whole, so a container styled to grow still\n * reports what it needs rather than what it was given.\n */\n private get contentWidth(): number {\n return Array.from(this.elementRef.nativeElement.children).reduce((total, container) => {\n const { marginLeft, marginRight } = this.window.getComputedStyle(container);\n\n return Array.from(container.children).reduce(\n (acc, child) => acc + getOuterWidth(child, this.window),\n total + (parseFloat(marginLeft) || 0) + (parseFloat(marginRight) || 0)\n );\n }, 0);\n }\n\n private get collapsableItems(): KbqNavbarItem[] {\n return this.navbarItems()\n .filter((item) => item.icon() && item.title() && item.collapsable())\n .reverse();\n }\n\n constructor() {\n super();\n\n this.destroyRef.onDestroy(() => this.resizeStream.complete());\n\n // Raw resize events must not enter the zone: a single drag fires hundreds of them, and only the\n // debounced recompute at the end of the burst is worth a change detection pass.\n if (this.platform.isBrowser) {\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.window, 'resize')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.resizeStream.next(event));\n });\n }\n\n this.resizeStream\n .pipe(debounceTime(this.resizeDebounceInterval), takeUntilDestroyed())\n .subscribe(() => this.ngZone.run(this.updateExpandedStateForItems));\n\n effect(() => this.rectangleElements().forEach((item) => (item.orientation = 'horizontal')));\n\n // Note: this wait is required for loading and rendering fonts for icons;\n // unfortunately we cannot control font rendering. Bound to the component's lifetime, unlike a bare\n // `setTimeout`, so it can never run against a destroyed view.\n afterNextRender(() => this.updateExpandedStateForItems());\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n super.ngAfterContentInit();\n\n this.keyManager.withVerticalOrientation(false).withHorizontalOrientation('ltr');\n }\n\n /**\n * Recomputes which collapsable items fit into the current navbar width.\n *\n * Every measurement is taken up front, and only then is anything written: collapsing an item invalidates\n * layout, so a measurement taken afterwards forces a synchronous reflow for each of the remaining items. The\n * width an item frees by collapsing comes from its own record of both presentations, see\n * `KbqNavbarItem.measureWidths()`.\n *\n * @docs-private\n */\n updateExpandedStateForItems = () => {\n // Untracked: called from a consumer's `effect()`, the items and their collapsed state read here would make the\n // effect run again on every collapse it makes.\n untracked(() => this.fitItems());\n };\n\n /** Body of `updateExpandedStateForItems()`. */\n private fitItems(): void {\n const availableWidth = this.width;\n\n // A navbar that is not rendered, e.g. hidden in an inactive tab, has nothing to measure yet.\n if (!availableWidth) return;\n\n const items = this.collapsableItems;\n\n // Before the content is read, because an item seen in one presentation measures the other by toggling a class.\n items.forEach((item) => item.measureWidths());\n\n const collapseDelta = this.contentWidth - availableWidth;\n\n if (collapseDelta > 0) {\n this.collapseItems(items, collapseDelta);\n } else {\n this.expandItems(items, collapseDelta);\n }\n }\n\n /** @docs-private */\n protected onKeyDown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n\n // The origin of the last focus event may be a click, and an item takes no DOM focus for a pointer origin.\n this.keyManager.setFocusOrigin('keyboard');\n\n if (!this.eventFromInput(event) && (isVerticalMovement(event) || isHorizontalMovement(event))) {\n event.preventDefault();\n }\n\n if (keyCode === TAB) {\n this.keyManager.tabOut.next();\n\n return;\n } else if (this.eventFromInput(event) && this.cursorOnLastPosition(event) && keyCode === RIGHT_ARROW) {\n this.keyManager.setNextItemActive();\n } else if (this.eventFromInput(event) && this.cursorOnFirstPosition(event) && keyCode === LEFT_ARROW) {\n this.keyManager.setPreviousItemActive();\n } else if (!this.eventFromInput(event)) {\n this.keyManager.onKeydown(event);\n }\n }\n\n private eventFromInput(event: KeyboardEvent): boolean {\n return !!(event.target as HTMLElement).attributes.getNamedItem('kbqinput');\n }\n\n private cursorOnFirstPosition(event: KeyboardEvent): boolean {\n const input = event.target as HTMLInputElement;\n\n return input.selectionStart === 0;\n }\n\n private cursorOnLastPosition(event: KeyboardEvent): boolean {\n const input = event.target as HTMLInputElement;\n\n return input.selectionEnd === input.value.length;\n }\n\n private collapseItems(items: KbqNavbarItem[], collapseDelta: number) {\n let delta = collapseDelta;\n\n // An item that frees nothing has not been measured, because it is hidden, and collapsing it gains nothing.\n for (const item of items.filter((item) => !item.isCollapsed() && item.getCollapsibleWidth() > 0)) {\n item.collapsed = true;\n delta -= item.getCollapsibleWidth();\n\n if (delta <= 0) break;\n }\n }\n\n private expandItems(items: KbqNavbarItem[], collapseDelta: number) {\n let delta = collapseDelta;\n\n for (const item of items.filter((item) => item.isCollapsed())) {\n if (delta + item.getCollapsibleWidth() <= 0) {\n item.collapsed = false;\n delta += item.getCollapsibleWidth();\n }\n }\n }\n}\n","import { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n contentChildren,\n effect,\n forwardRef,\n inject,\n InjectionToken,\n input,\n model,\n Provider,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n DOWN_ARROW,\n isHorizontalMovement,\n isVerticalMovement,\n KbqDeepPartial,\n kbqLocaleConfigurationOverrideProvider,\n KbqLocaleOverridesDirective,\n KbqNavbarLocaleConfiguration,\n KbqOverlayLayerExclude,\n ruRULocaleData,\n TAB,\n UP_ARROW\n} from '@koobiq/components/core';\nimport { KbqNavbarBento, KbqNavbarItem, KbqNavbarRectangleElement } from './navbar-item.component';\nimport { kbqNavbarTooltipOptionsProvider } from './navbar-tooltip-defaults';\nimport { KbqFocusableComponent } from './navbar.component';\n\n// Re-exported so that the name this package's own token is typed with resolves from this package too:\n// `KbqVerticalNavbarConfiguration` used to be declared here, and the migration renames it in place.\nexport type { KbqNavbarLocaleConfiguration };\n\n/** default configuration of navbar */\n/** @docs-private */\nexport const KBQ_NAVBAR_DEFAULT_LOCALE_CONFIGURATION: KbqNavbarLocaleConfiguration = ruRULocaleData.navbar;\n\n/** Injection Token for providing configuration of navbar */\n/** @docs-private */\nexport const KBQ_NAVBAR_LOCALE_CONFIGURATION = new InjectionToken<KbqNavbarLocaleConfiguration>(\n 'KbqNavbarLocaleConfiguration',\n { factory: () => KBQ_NAVBAR_DEFAULT_LOCALE_CONFIGURATION }\n);\n\n/**\n * Utility provider for `KBQ_NAVBAR_LOCALE_CONFIGURATION`. Only the strings you pass are overridden; the\n * rest keep following the active locale.\n */\nexport const kbqNavbarLocaleConfigurationProvider = (\n configuration: KbqDeepPartial<KbqNavbarLocaleConfiguration>\n): Provider => kbqLocaleConfigurationOverrideProvider('navbar', configuration);\n\n/** @deprecated Use {@link KBQ_NAVBAR_DEFAULT_LOCALE_CONFIGURATION}. Will be removed in 22.0.0. */\nexport const KBQ_VERTICAL_NAVBAR_DEFAULT_CONFIGURATION = KBQ_NAVBAR_DEFAULT_LOCALE_CONFIGURATION;\n/** @deprecated Use {@link KBQ_NAVBAR_LOCALE_CONFIGURATION}. Will be removed in 22.0.0. */\nexport const KBQ_VERTICAL_NAVBAR_CONFIGURATION = KBQ_NAVBAR_LOCALE_CONFIGURATION;\n\n@Component({\n selector: 'kbq-vertical-navbar',\n template: `\n <div\n class=\"kbq-vertical-navbar__container\"\n [class.kbq-collapsed]=\"!expanded()\"\n [class.kbq-expanded]=\"expanded()\"\n >\n <ng-content select=\"[kbq-navbar-container], kbq-navbar-container\" />\n <ng-content select=\"[kbq-navbar-toggle], kbq-navbar-toggle\" />\n </div>\n `,\n styleUrls: [\n './vertical-navbar.scss',\n './navbar-item.scss',\n './navbar-brand.scss',\n './navbar-divider.scss',\n './navbar-tokens.scss'\n ],\n providers: [kbqNavbarTooltipOptionsProvider],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-vertical-navbar',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n '[class.kbq-vertical-navbar_open-over]': 'openOver()',\n '[attr.tabindex]': 'renderedTabIndex()',\n '[attr.cdkMonitorSubtreeFocus]': 'true',\n\n '(focus)': 'focus()',\n '(blur)': 'blur()',\n\n '(keydown)': 'onKeyDown($event)'\n },\n hostDirectives: [\n CdkMonitorFocus,\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] },\n KbqOverlayLayerExclude\n ],\n exportAs: 'KbqVerticalNavbar'\n})\nexport class KbqVerticalNavbar extends KbqFocusableComponent implements AfterContentInit {\n /**\n * Localized strings of the navbar.\n *\n * A signal, so that a locale change reaches the `OnPush` descendants that render these strings — a plain\n * field would leave them showing the previous locale until something else marked them dirty. It also keeps\n * the value observable from outside: `KbqNavbarToggle` reads it in an `effect` to refresh its tooltip,\n * which a `markForCheck()` here could never have reached in that separate `OnPush` view.\n */\n readonly localeConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'navbar',\n KBQ_NAVBAR_LOCALE_CONFIGURATION\n );\n\n /** @docs-private */\n readonly rectangleElements = contentChildren<KbqNavbarRectangleElement>(\n forwardRef(() => KbqNavbarRectangleElement),\n { descendants: true }\n );\n\n /** @docs-private */\n readonly items = contentChildren<KbqNavbarItem>(\n forwardRef(() => KbqNavbarItem),\n { descendants: true }\n );\n\n /** @docs-private */\n readonly bento = contentChild<KbqNavbarBento>(forwardRef(() => KbqNavbarBento));\n\n /** Whether the expanded navbar overlays the page content instead of taking room from it. */\n readonly openOver = input<boolean>(false);\n\n /** Whether the navbar is expanded. */\n readonly expanded = model<boolean>(false);\n\n private buttonIconsRefresh?: ReturnType<typeof setTimeout>;\n\n constructor() {\n super();\n\n this.destroyRef.onDestroy(() => clearTimeout(this.buttonIconsRefresh));\n\n effect(() => {\n // Re-runs both when the projected elements change and when the navbar is expanded or collapsed.\n const expanded = this.expanded();\n\n this.rectangleElements().forEach((item) => {\n item.orientation = 'vertical';\n item.collapsed = !expanded;\n });\n\n this.refreshButtonIcons();\n });\n }\n\n /** @docs-private */\n ngAfterContentInit(): void {\n super.ngAfterContentInit();\n\n this.keyManager.withVerticalOrientation(true);\n }\n\n /** Expands a collapsed navbar and collapses an expanded one. */\n toggle(): void {\n // Untracked: called from a consumer's `effect()`, `expanded` read here would make the effect run again on every\n // expand and collapse.\n this.expanded.set(!untracked(this.expanded));\n }\n\n /** @docs-private */\n protected onKeyDown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n\n // The origin of the last focus event may be a click, and an item takes no DOM focus for a pointer origin.\n this.keyManager.setFocusOrigin('keyboard');\n\n if (\n !(event.target as HTMLElement).attributes.getNamedItem('kbqinput') &&\n (isVerticalMovement(event) || isHorizontalMovement(event))\n ) {\n event.preventDefault();\n }\n\n if (keyCode === TAB) {\n this.keyManager.tabOut.next();\n\n return;\n } else if (keyCode === DOWN_ARROW) {\n this.keyManager.setNextItemActive();\n } else if (keyCode === UP_ARROW) {\n this.keyManager.setPreviousItemActive();\n } else {\n this.keyManager.onKeydown(event);\n }\n }\n\n /**\n * Buttons projected into the items re-pick their icon-only modifier from the rendered width, so the pass\n * has to wait for the collapsed/expanded classes to reach the DOM. One deferred pass over every item, not\n * one timer per item.\n */\n private refreshButtonIcons(): void {\n const elements = this.rectangleElements();\n\n // A pending pass is replaced: every element of it that is still projected is among these.\n clearTimeout(this.buttonIconsRefresh);\n\n if (!elements.length) return;\n\n this.buttonIconsRefresh = setTimeout(() =>\n elements.forEach((item) => item.button()?.updateClassModifierForIcons())\n );\n }\n}\n","import { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n Injectable,\n NgZone,\n OnDestroy,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n ENTER,\n KBQ_WINDOW,\n kbqInjectNativeElement,\n NUMPAD_DIVIDE,\n PopUpPlacements,\n SLASH,\n SPACE\n} from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { KbqVerticalNavbar } from './vertical-navbar.component';\n\n/**\n * Dispatches the global `Ctrl+/` shortcut to exactly one navbar toggle.\n *\n * Every toggle used to bind its own window listener and call `toggle()` unconditionally, so a single keypress\n * collapsed *every* vertical navbar on the page. One shared listener instead picks the toggle whose navbar\n * currently holds focus, and falls back to the first registered one so the shortcut still works from anywhere.\n *\n * @docs-private\n */\n@Injectable({ providedIn: 'root' })\nexport class KbqNavbarToggleRegistry implements OnDestroy {\n private readonly window = inject(KBQ_WINDOW);\n private readonly document = inject(DOCUMENT);\n private readonly ngZone = inject(NgZone);\n\n private readonly toggles = new Set<KbqNavbarToggle>();\n\n /** Starts listening for the shortcut on behalf of the given toggle. */\n add(toggle: KbqNavbarToggle): void {\n if (this.toggles.size === 0) {\n this.ngZone.runOutsideAngular(() => this.window.addEventListener('keydown', this.handleKeydown));\n }\n\n this.toggles.add(toggle);\n }\n\n /** Stops dispatching the shortcut to the given toggle. */\n remove(toggle: KbqNavbarToggle): void {\n this.toggles.delete(toggle);\n\n if (this.toggles.size === 0) {\n this.window.removeEventListener('keydown', this.handleKeydown);\n }\n }\n\n ngOnDestroy(): void {\n this.window.removeEventListener('keydown', this.handleKeydown);\n\n this.toggles.clear();\n }\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (!event.ctrlKey || ![NUMPAD_DIVIDE, SLASH].includes(event.keyCode)) return;\n\n const target = this.resolveTarget();\n\n if (!target) return;\n\n this.ngZone.run(() => target.toggle());\n };\n\n private resolveTarget(): KbqNavbarToggle | undefined {\n const toggles = [...this.toggles];\n const activeElement = this.document.activeElement;\n const focused = activeElement && toggles.find((toggle) => toggle.contains(activeElement));\n\n return focused || toggles[0];\n }\n}\n\n@Component({\n selector: 'kbq-navbar-toggle, [kbq-navbar-toggle]',\n imports: [\n KbqIconModule\n ],\n template: `\n <span class=\"kbq-navbar-toggle__circle\">\n <ng-content select=\"[kbq-icon]\">\n <i\n kbq-icon\n [class.kbq-chevron-double-left-s_16]=\"navbar.expanded()\"\n [class.kbq-chevron-double-right-s_16]=\"!navbar.expanded()\"\n ></i>\n </ng-content>\n </span>\n `,\n styleUrls: ['./navbar-toggle.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-navbar-toggle kbq-vertical',\n '[class.kbq-collapsed]': '!navbar.expanded()',\n '[class.kbq-expanded]': 'navbar.expanded()',\n\n // The toggle is icon-only and its tooltip is a transient overlay, never an accessible name. Role, name\n // and state are published on the host so assistive technology announces an expand/collapse control\n // instead of an unlabelled element.\n role: 'button',\n '[attr.aria-expanded]': 'navbar.expanded()',\n '[attr.aria-label]': 'label',\n 'aria-keyshortcuts': 'Control+/',\n\n '(keydown)': 'keydownHandler($event)',\n '(click)': 'toggle()'\n },\n hostDirectives: [CdkMonitorFocus, KbqTooltipTrigger]\n})\nexport class KbqNavbarToggle implements OnDestroy {\n private readonly nativeElement = kbqInjectNativeElement();\n private readonly registry = inject(KbqNavbarToggleRegistry);\n private readonly isBrowser = inject(Platform).isBrowser;\n\n private readonly tooltip = inject(KbqTooltipTrigger, { self: true });\n\n /** @docs-private */\n protected readonly navbar = inject(KbqVerticalNavbar);\n\n /** Accessible name of the toggle; it names the action the toggle performs. @docs-private */\n protected get label(): string {\n return this.navbar.expanded()\n ? this.navbar.localeConfiguration().toggle.collapse\n : this.navbar.localeConfiguration().toggle.expand;\n }\n\n constructor() {\n if (this.isBrowser) {\n this.registry.add(this);\n }\n\n this.tooltip.arrow = false;\n this.updateTooltipContent();\n this.tooltip.tooltipPlacement = PopUpPlacements.Right;\n\n this.tooltip.visibleChange.pipe(takeUntilDestroyed()).subscribe(this.updateTooltipContent);\n\n // `content` is a plain property, so a tooltip that is already open keeps the string it was given.\n // Reading the navbar's signal-backed configuration here re-applies it on a locale change instead\n // of leaving the previous locale on screen until the next show.\n effect(() => this.updateTooltipContent());\n }\n\n /** @docs-private */\n ngOnDestroy(): void {\n this.registry.remove(this);\n }\n\n /** Whether the given element sits inside the navbar this toggle belongs to. @docs-private */\n contains(element: Element): boolean {\n return this.navbar.getNativeElement().contains(element) || this.nativeElement.contains(element);\n }\n\n /** toggles the state of the navbar */\n toggle() {\n // Untracked: called from a consumer's `effect()`, the state read on the way — `expanded`, the tooltip's — would\n // make the effect run again on every expand and collapse.\n untracked(() => {\n this.navbar.toggle();\n this.tooltip.hide();\n });\n }\n\n /** @docs-private */\n protected keydownHandler($event: KeyboardEvent) {\n if ([SPACE, ENTER].includes($event.keyCode)) {\n this.toggle();\n\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n\n private updateTooltipContent = () => {\n this.tooltip.content = this.label;\n };\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqNavbarBrand } from './navbar-brand.component';\nimport {\n KbqNavbarBento,\n KbqNavbarDivider,\n KbqNavbarFocusableItem,\n KbqNavbarItem,\n KbqNavbarItemContent,\n KbqNavbarItemSuffix,\n KbqNavbarLogo,\n KbqNavbarRectangleElement,\n KbqNavbarTitle\n} from './navbar-item.component';\nimport { KbqNavbarToggle } from './navbar-toggle.component';\nimport { KbqNavbar, KbqNavbarContainer } from './navbar.component';\nimport { KbqVerticalNavbar } from './vertical-navbar.component';\n\n@NgModule({\n imports: [\n A11yModule,\n PlatformModule,\n KbqIconModule,\n KbqToolTipModule,\n KbqNavbar,\n KbqNavbarContainer,\n KbqNavbarTitle,\n KbqNavbarItem,\n KbqNavbarBrand,\n KbqNavbarLogo,\n KbqNavbarToggle,\n KbqVerticalNavbar,\n KbqNavbarDivider,\n KbqNavbarFocusableItem,\n KbqNavbarRectangleElement,\n KbqNavbarBento,\n KbqNavbarItemContent,\n KbqNavbarItemSuffix\n ],\n exports: [\n KbqNavbar,\n KbqNavbarContainer,\n KbqNavbarTitle,\n KbqNavbarItem,\n KbqNavbarBrand,\n KbqNavbarLogo,\n KbqNavbarToggle,\n KbqVerticalNavbar,\n KbqNavbarDivider,\n KbqNavbarFocusableItem,\n KbqNavbarRectangleElement,\n KbqNavbarBento,\n KbqNavbarItemContent,\n KbqNavbarItemSuffix\n ]\n})\nexport class KbqNavbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAMG;AACI,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAE,MAAc,KAAY;AACtE,IAAA,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAEpE,IAAA,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,MAAM,CACnC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAC5C,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,CACxC;AACL,CAAC;;ACuED;MACa,uBAAuB,GAAG,IAAI,cAAc,CAAuB,yBAAyB;AAEzG;;;AAGG;AACH,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAExF;AACA,MAAM,oBAAoB,GAAG,2BAA2B;AAExD;AACA,MAAM,mCAAmC,GAAG,kCAAkC;MAajE,aAAa,CAAA;kIAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;MASY,cAAc,CAAA;kIAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kDAAkD;AAC5D,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;AAGD;MAOa,mBAAmB,CAAA;kIAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;AAGD;;;;;;;AAOG;MAOU,oBAAoB,CAAA;kIAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;MASY,cAAc,CAAA;AAN3B,IAAA,WAAA,GAAA;;AAQuB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;;QAEtC,IAAA,CAAA,aAAa,GAAG,sBAAsB,EAAE;AAC1C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAgC/C,IAAA;;AA7BG,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,IAAI,EAAE;IAC/C;;AAGA,IAAA,IAAI,WAAW,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,KAAK;QAEjC,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW;IAC1E;AAEA;;;;;;;AAOG;AACH,IAAA,IAAI,SAAS,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,KAAK;QAEjC,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;IAC5E;;IAGA,oBAAoB,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC9E;kIApCS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;MAgDY,gBAAgB,CAAA;AAR7B,IAAA,WAAA,GAAA;;;QAWqB,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAS5F,IAAA;AAPG;;;AAGG;AACH,IAAA,IAAc,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,YAAY,EAAE,GAAG,UAAU,GAAG,YAAY;IAC5E;kIAXS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,oBAAoB;AAC3B,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,yBAAyB,EAAE;AAC9B;AACJ,iBAAA;;MAkCY,sBAAsB,CAAA;;AAoB/B,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,SAAS;IACjF;;AAGA,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;IACxB;;AAWA,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;IACjE;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;IACjC;;;;AAOA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;IACpD;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;IACjC;AAYA;;;;AAIG;AACH,IAAA,IAAI,kBAAkB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE;IAC/B;AAEA;;;AAGG;AACH,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,CAAC,CAAC;IACb;AAQA,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAE9B,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE;AAC1B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;YAErC,IAAI,QAAQ,KAAK,SAAS;AAAE,gBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxD;IACJ;AAEA,IAAA,WAAA,GAAA;AApGQ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAC1B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGvC,QAAA,IAAA,CAAA,KAAK,GAAG,YAAY,CAAC,cAAc,4EAAC;;AAGpC,QAAA,IAAA,CAAA,MAAM,GAAG,YAAY,CAAC,SAAS,6EAAC;;AAGhC,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,YAAY,gFAAC;;QAGtC,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,uBAAuB,qFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;;AAe5E,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAA+B;;AAGpD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAA+B;AAW3C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,oFAAC;AAa7B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,oFAAC;AAE9C;;;;;AAKG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;;AAoB1B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAA2D,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EAC9F,KAAK,EAAE,UAAU;YACjB,SAAS,EAAE,gBAAgB,EAAA,CAC7B;AAYE,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC1B,QAAA,CAAC,CAAC;IACN;;IAGA,eAAe,GAAA;QACX,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9C;;IAGA,kBAAkB,GAAA;AACd,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAE5B,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QACxB;IACJ;;IAGA,WAAW,GAAA;QACP,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;IACrD;;AAGA,IAAA,UAAU,CAAC,KAAwB,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACzB;;IAGA,cAAc,GAAA;QACV,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAChC;QACJ;QAEA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEjC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AAEpB,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IACzC;AAEA;;;;;AAKG;AACO,IAAA,UAAU,CAAC,KAAiB,EAAA;AAClC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,aAA4B;QAE/C,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE;QAE1D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC;IACvF;;AAGA,IAAA,KAAK,CAAC,MAAoB,EAAA;QACtB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAChC;QACJ;;;QAIA,MAAM,UAAU,GAAG,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO;QAE3D,IAAI,UAAU,EAAE;AACZ,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,SAAS,CAAC;QACpE;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa;;AAGxC,YAAA,IAAI,MAAM,KAAK,UAAU,IAAI,kBAAkB,IAAI,aAAa,IAAI,aAAa,CAAC,gBAAgB,EAAE;;AAEhG,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAC1C,mCAAmC,EACnC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CACzB;gBAED,aAAa,CAAC,gBAAgB,EAAE;YACpC;iBAAO,IAAI,UAAU,EAAE;gBACnB,aAAa,CAAC,KAAK,EAAE;YACzB;AAEA,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;YAElC;QACJ;QAEA,IAAI,UAAU,EAAE;YACZ,IAAI,MAAM,KAAK,UAAU;AAAE,gBAAA,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YAE/C,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;;IAGA,IAAI,GAAA;;;;;AAKA,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS;YAAE;QAE/B,eAAe,CACX,MAAK;;AAED,YAAA,IAAI,iCAAiC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa;gBAAE;AAE3E,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAE7B,YAAA,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;AAEpB,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE;gBAC9B;YACJ;YAEA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC9B;IACL;;IAGA,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,EAAE;IACnC;kIAvOS,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,6uBAQD,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGb,SAAS,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGN,YAAY,gGAGR,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAjBpD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAnBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6FAA6F;AACvG,oBAAA,IAAI,EAAE;AACF,wBAAA,iBAAiB,EAAE,UAAU;;;AAG7B,wBAAA,sBAAsB,EAAE,4BAA4B;AAEpD,wBAAA,KAAK,EAAE,2BAA2B;AAClC,wBAAA,oCAAoC,EAAE,iBAAiB;AACvD,wBAAA,4CAA4C,EAAE,mBAAmB;AACjE,wBAAA,sBAAsB,EAAE,oBAAoB;AAE5C,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,QAAQ,EAAE,QAAQ;;AAElB,wBAAA,YAAY,EAAE;AACjB;AACJ,iBAAA;oHASiC,cAAc,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAGb,SAAS,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAGN,YAAY,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAGR,uBAAuB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;MAmO3E,yBAAyB,CAAA;AAalC;;;AAGG;AACH,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE;IAC9B;IAEA,IAAI,WAAW,CAAC,KAA2B,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK;YAAE;AAEnC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAE5B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;IACrB;;AAcA,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;IAC9B;IAEA,IAAI,SAAS,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,KAAK;YAAE;AAEjC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAE1B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;IACrB;AAQA,IAAA,WAAA,GAAA;;AAzDmB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;;QAEtC,IAAA,CAAA,aAAa,GAAG,sBAAsB,EAAE;AAC1C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGvC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,OAAO,EAAQ;AAEnB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAuB,UAAU,mFAAC;;AAmB/D,QAAA,IAAA,CAAA,YAAY,GAAoB,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,KAAK,YAAY,mFAAC;;AAGpF,QAAA,IAAA,CAAA,UAAU,GAAoB,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,KAAK,UAAU,iFAAC;;;;AAKxE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAsB,SAAS,iFAAC;;AAgB3D,QAAA,IAAA,CAAA,cAAc,GAAoB,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,qFAAC;;AAGrE,QAAA,IAAA,CAAA,MAAM,GAAG,YAAY,CAAC,kBAAkB,6EAAC;AAG9C,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1D;;IAGA,oBAAoB,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC9E;kIAlES,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,8YAyDH,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAzDxC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8FAA8F;AACxG,oBAAA,IAAI,EAAE;AACF,wBAAA,sBAAsB,EAAE,cAAc;AACtC,wBAAA,wBAAwB,EAAE,gBAAgB;AAE1C,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,uBAAuB,EAAE;AAC5B;AACJ,iBAAA;qHA0DkC,kBAAkB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;MA0DxC,aAAa,CAAA;;IAkDtB,IAAI,SAAS,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC;;AASA,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE;QAExE,OAAO,CAAA,EAAG,gBAAgB,CAAA,CAAE;IAChC;;AAGA,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI;IAC7D;;AAGA,IAAA,IAAI,kBAAkB,GAAA;AAClB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe;IACjC;;AAoBA,IAAA,IAAI,cAAc,GAAA;QACd,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW;IACtC;AAQA;;;AAGG;AACH,IAAA,IAAc,iBAAiB,GAAA;QAC3B,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC3E;AAEA;;;;;;;AAOG;AACH,IAAA,IAAc,IAAI,GAAA;AACd,QAAA,IAAI,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE;AACpG,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,OAAO,QAAQ;IACnB;;AAGA,IAAA,IAAY,wBAAwB,GAAA;QAChC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB;IAC7D;AAEA,IAAA,WAAA,GAAA;;AApIS,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC;;AAEpD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC;;QAEpD,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAE3C,IAAA,CAAA,aAAa,GAAG,sBAAsB,EAAE;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAC7C,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE;QACjE,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAClD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;QAGxC,IAAA,CAAA,aAAa,GAAG,CAAC;QACjB,IAAA,CAAA,cAAc,GAAG,CAAC;;AAGjB,QAAA,IAAA,CAAA,KAAK,GAAG,YAAY,CAAC,cAAc,4EAAC;QAE5B,IAAA,CAAA,KAAK,GAAG,eAAe,CAAC,OAAO,6EAAI,WAAW,EAAE,IAAI,EAAA,CAAG;;AAG/D,QAAA,IAAA,CAAA,IAAI,GAAgC,QAAQ,CAAC,MAClD,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,2EACvF;;AAGQ,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,EAAE,oFAAC;;QAGjC,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,IAAI,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEnE;;;;;AAKG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAA+B,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,CAAA,EACpE,KAAK,EAAE,oBAAoB;YAC3B,SAAS,EAAE,CAAC,KAAc,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAA,CAC5F;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAsB,SAAS,mFAAC;;;AAS7D,QAAA,IAAA,CAAA,WAAW,GAAoB,QAAQ,CAC5C,MAAM,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,kFACtE;;AAoBkB,QAAA,IAAA,CAAA,yBAAyB,GAAoB,QAAQ,CACpE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC5G;;QAGkB,IAAA,CAAA,2BAA2B,GAAoB,QAAQ,CACtE,MAAM,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,6BAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC/F;AAED;;;;AAIG;QACgB,IAAA,CAAA,kBAAkB,GAAG,qBAAqB,EAAE;AAO/D;;;AAGG;QACM,IAAA,CAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;AAgCpE,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;QACnD;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;YAClE,IAAI,CAAC,cAAc,EAAE;YAErB,IAAI,CAAC,aAAa,EAAE;AACxB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AAEjD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AAEvB,QAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,qCAAqC,CAAC;;;QAIxE,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,aAAa,CAAC,KAAK,CAAA,CAAE;QAE/C,MAAM,CAAC,MAAK;;YAER,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE;YAElB,IAAI,CAAC,aAAa,EAAE;;AAGpB,YAAA,eAAe,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5E,QAAA,CAAC,CAAC;;AAGF,QAAA,eAAe,CAAC,MACZ,IAAI,CAAC;AACA,aAAA,OAAO,CAAC,IAAI,CAAC,aAAa;AAC1B,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAC7C;IACL;;IAGA,kBAAkB,GAAA;QACd,IAAI,CAAC,aAAa,EAAE;IACxB;;IAGA,aAAa,GAAA;AACT,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;;AAGhC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,SAAS;QACpC;AAAO,aAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW;QAC3C;;QAGA,IAAI,CAAC,OAAO,CAAC,QAAQ;YACjB,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AAE7F,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,eAAe,CAAC,KAAK;YACrD,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,eAAe,CAAC,KAAK;QACjE;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACzC;AAEA;;;;;;;;;;AAUG;IACH,aAAa,GAAA;;QAET,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,MAAM;YAAE;AAEjD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS;QAC9C,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAE1D,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE;QACtE;aAAO;YACH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE;QACrE;AAEA,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc;YAAE;AAE1D,QAAA,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAEtC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE;AAE/D,QAAA,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAEtC,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,aAAa,GAAG,UAAU;QACnC;aAAO;AACH,YAAA,IAAI,CAAC,cAAc,GAAG,UAAU;QACpC;IACJ;AAEA;;;;;;AAMG;IACH,mBAAmB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAChE;;AAGU,IAAA,SAAS,CAAC,MAAqB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,wBAAwB,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAC1E,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YAE1B,MAAM,CAAC,cAAc,EAAE;YAEvB;QACJ;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC1B;QACJ;AAEA,QAAA,IACI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU;AACtE,aAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,MAAM,CAAC,OAAO,KAAK,WAAW,CAAC,EACxE;AACE,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,UAAU;AAC1C,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;YAE3B,MAAM,CAAC,eAAe,EAAE;YACxB,MAAM,CAAC,cAAc,EAAE;QAC3B;IACJ;IAEQ,cAAc,GAAA;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE;AAEjD,QAAA,IAAI,CAAC,QAAQ;YAAE;AAEf,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE;AACpC,YAAA,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,YAAA,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;;YAElC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxC;IACJ;kIApSS,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,m9BAqBQ,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAEH,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtmBpD,8wBAkBA,4CDkhBQ,OAAO,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FA2CF,aAAa,EAAA,UAAA,EAAA,CAAA;kBA9CzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,EAAA,OAAA,EACrC;wBACL;AACH,qBAAA,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACF,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,CAAC,CAAA,OAAA,EAAU,oBAAoB,CAAA,CAAA,CAAG,GAAG,eAAe;AACpD,wBAAA,oCAAoC,EAAE,WAAW;AAEjD,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,mBAAmB,EAAE,mBAAmB;AAExC,wBAAA,WAAW,EAAE;qBAChB,EAAA,cAAA,EAKe;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,iBAAiB;AAC5B,4BAAA,MAAM,EAAE;gCACJ,yBAAyB;gCACzB,iBAAiB;gCACjB,iBAAiB;gCACjB,mBAAmB;gCACnB,kBAAkB;gCAClB,YAAY;gCACZ,cAAc;gCACd,sBAAsB;gCACtB,eAAe;gCACf,eAAe;gCACf;AACH,6BAAA;AACD,4BAAA,OAAO,EAAE;gCACL,kBAAkB;gCAClB;AACH;AACJ;AACJ,qBAAA,EAAA,QAAA,EACS,eAAe,EAAA,QAAA,EAAA,8wBAAA,EAAA;AAuBK,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,cAAc,0FAEH,OAAO,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE1kB3E;AACA,MAAM,gBAAgB,GAAG,6BAA6B;MA0CzC,cAAc,CAAA;;AAgDvB,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,KAAK,GAAG;IAC7C;;AAGA,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE;QAElE,OAAO,CAAA,EAAG,gBAAgB,CAAA,CAAE;IAChC;;AAGA,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAE1B,QAAA,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,CAAC;IAC5D;;AAGA,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI;IAC7D;AAQA;;;AAGG;AACH,IAAA,IAAc,iBAAiB,GAAA;QAC3B,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACzE;AAEA,IAAA,WAAA,GAAA;;QAnFmB,IAAA,CAAA,aAAa,GAAG,sBAAsB,EAAE;;AAExC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAE7C,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC;;AAEpD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC;;QAE9D,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAE3C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;AACtC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAC7C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;QAE5B,IAAA,CAAA,gBAAgB,GAAG,GAAG;;AAG9B,QAAA,IAAA,CAAA,KAAK,GAAG,YAAY,CAAC,cAAc,4EAAC;AAE7C;;;;;AAKG;AACgB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,KAAK,uFAAC;;AAG1C,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,EAAE,oFAAC;AAE1C;;;;;AAKG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAA+B,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,CAAA,EACpE,KAAK,EAAE,oBAAoB;YAC3B,SAAS,EAAE,CAAC,KAAc,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAA,CAC5F;;AA2BO,QAAA,IAAA,CAAA,SAAS,GAAoB,IAAI,CAAC,gBAAgB,CAAC,cAAc;;QAGjE,IAAA,CAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;QAWpE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAE5F,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;;;QAIvB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,aAAa,CAAC,KAAK,CAAA,CAAE;QAE/C,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAEjD,MAAM,CAAC,MAAK;;YAER,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,SAAS,EAAE;YAEhB,IAAI,CAAC,aAAa,EAAE;AACxB,QAAA,CAAC,CAAC;QAEF,eAAe,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;;;;AAK9C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACjC,IAAI,CAAC,aAAa,EAClB,OAAO,EACP,CAAC,KAAiB,KAAK,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAC5D,EAAE,OAAO,EAAE,IAAI,EAAE,CACpB;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;IACvC;;IAGA,kBAAkB,GAAA;;;;;AAKd,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;QAEhG,IAAI,CAAC,aAAa,EAAE;IACxB;AAEQ,IAAA,yBAAyB,CAAC,KAAiB,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB;YAAE;QAElD,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,wBAAwB,EAAE;IACpC;IAEQ,aAAa,GAAA;AACjB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;;AAGhC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,SAAS,EAAE;AAC/B,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,SAAS;QACpC;AAAO,aAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW;QAC3C;;AAGA,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AAE/G,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,eAAe,CAAC,KAAK;QACzD;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACzC;IAEQ,gBAAgB,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;QAErB,IAAI,CAAC,mBAAmB,EAAE;AAE1B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAClD,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,EAC3B,oBAAoB,EAAE,CACzB;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC;AAEnD,QAAA,MAAM,OAAO,GAA4B,IAAI,CAAC,QAAQ,CAAC,KAAK;AAC5D,QAAA,MAAM,MAAM,GAAwB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK;;AAGzE,QAAA,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM;AAC1B,aAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAC7E,SAAS,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;;;;;;;;;;;QAYhD,IAAI,CAAC,gBAAgB,CAAC;AACjB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,SAAS,CAAC,MACP,eAAe,CAAC,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CACrG;IACT;IAEQ,mBAAmB,GAAA;QACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;;;QAIvD,IAAI,CAAC,aAAa,EAAE;IACxB;AAEA;;;;;;AAMG;IACK,qBAAqB,GAAA;AACzB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;;QAG1B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;AAC3C,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE;QAClC;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AAEzD,QAAA,IAAI,OAAO;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;AAEpD,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW;AAEnC,QAAA,IAAI,OAAO;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAEjD,QAAA,OAAO,SAAS;IACpB;kIAvOS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mCAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAuBO,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7DlC;;AAET,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6/PAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAoCQ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAxC1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sCAAsC,EAAA,QAAA,EACtC;;KAET,EAAA,eAAA,EAIgB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,CAAC,CAAA,OAAA,EAAU,gBAAgB,CAAA,CAAA,CAAG,GAAG,oBAAoB;AACrD,wBAAA,+BAA+B,EAAE,QAAQ;AACzC,wBAAA,mBAAmB,EAAE;qBACxB,EAAA,cAAA,EAIe;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,iBAAiB;AAC5B,4BAAA,MAAM,EAAE;gCACJ,yBAAyB;gCACzB,iBAAiB;gCACjB,iBAAiB;gCACjB,kBAAkB;gCAClB,YAAY;gCACZ,cAAc;gCACd,eAAe;gCACf,eAAe;gCACf;AACH,6BAAA;AACD,4BAAA,OAAO,EAAE;gCACL,kBAAkB;gCAClB;AACH;AACJ;AACJ,qBAAA,EAAA,QAAA,EACS,gBAAgB,EAAA,MAAA,EAAA,CAAA,6/PAAA,CAAA,EAAA;oHAyBI,cAAc,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC1FhD;;;;;;AAMG;AACI,MAAM,+BAA+B,GAAa;AACrD,IAAA,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,qCAAqC;CAC3E;;MCqCY,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;;AAGuB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAE7C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;;AAExD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;;AAEnC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEjC,QAAA,IAAA,CAAA,mBAAmB,GAAG,eAAe,CAClD,UAAU,CAAC,MAAM,sBAAsB,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,CAAA,EACtC,WAAW,EAAE,IAAI,GACtB;AACgB,QAAA,IAAA,CAAA,kBAAkB,GAAG,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAUhF;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,CAAC,+EAAC;AAEpC;;;;;AAKG;QACgB,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAC3C,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACjE;AAED;;;AAGG;QACM,IAAA,CAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;QAEhE,IAAA,CAAA,eAAe,GAAgB,IAAI;QAEnC,IAAA,CAAA,wBAAwB,GAAmD,IAAI;QAC/E,IAAA,CAAA,uBAAuB,GAAmD,IAAI;QA4G9E,IAAA,CAAA,uBAAuB,GAAwB,IAAI;QACnD,IAAA,CAAA,sBAAsB,GAAwB,IAAI;AAqB7D,IAAA;;AAlKG,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE;IACpC;;AAiCA,IAAA,IAAI,kBAAkB,GAAA;QAClB,QAAQ,IAAI,CAAC,wBAAwB,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;IACvG;;AAGA,IAAA,IAAI,iBAAiB,GAAA;QACjB,QAAQ,IAAI,CAAC,uBAAuB,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;IACzG;;IAGA,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAyB,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE;QAElG,wBAAwB,CACpB,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAC7B,IAAI,CAAC,UAAU,CAClB;QAED,IAAI,CAAC,cAAc,CAAC;AACf,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACzD,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7C;;IAGA,qBAAqB,GAAA;;QAEjB,IAAI,CAAC,kBAAkB,EAAE;IAC7B;AAEA;;;;;AAKG;IACH,eAAe,GAAA;AACX,QAAA,IAAI,CAAC;AACA,aAAA,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI;AAC7B,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,WAAW,KAAI;;;YAGvB,IAAI,WAAW,KAAK,IAAI;gBAAE;AAE1B,YAAA,IAAI,CAAC,eAAe,GAAG,WAAW;AAClC,YAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC;AAC/C,QAAA,CAAC,CAAC;IACV;;IAGA,WAAW,GAAA;QACP,IAAI,CAAC,iBAAiB,EAAE;QAExB,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;IACrD;;IAGA,gBAAgB,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;IACxC;;IAGA,KAAK,GAAA;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;YAClC;QACJ;;;AAIA,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;YACtE;QACJ;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;IACxC;;IAGA,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACrC;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACzC;;IAGU,YAAY,GAAA;QAClB,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,oBAAoB,EAAE;IAC/B;;IAGU,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE;AAC3C,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;AAEnC,QAAA,IAAI,CAAC,sBAAsB,EAAE,WAAW,EAAE;AAC1C,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;AAElC,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACpC,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;IACvC;IAKQ,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACvE,YAAA,MAAM,KAAK,GAAW,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AAEvE,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AAC1B,gBAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC3C;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACrF;AAEQ,IAAA,YAAY,CAAC,KAAa,EAAA;QAC9B,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;IAC3D;IAEQ,cAAc,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;IAC5D;kIAlLS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,iaAWT,sBAAsB,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAXlC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;uFAYO,UAAU,CAAC,MAAM,sBAAsB,CAAC,EAAA,EAAA,GACxC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;MA+KhB,kBAAkB,CAAA;kIAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;AA6BK,MAAO,SAAU,SAAQ,qBAAqB,CAAA;AAsBhD,IAAA,IAAY,KAAK,GAAA;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;IACtE;AAEA;;;;AAIG;AACH,IAAA,IAAY,YAAY,GAAA;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,KAAI;AAClF,YAAA,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAE3E,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CACxC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EACvD,KAAK,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CACzE;QACL,CAAC,EAAE,CAAC,CAAC;IACT;AAEA,IAAA,IAAY,gBAAgB,GAAA;QACxB,OAAO,IAAI,CAAC,WAAW;aAClB,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE;AAClE,aAAA,OAAO,EAAE;IAClB;AAEA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AAhDM,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGnC,QAAA,IAAA,CAAA,iBAAiB,GAAG,eAAe,CACxC,UAAU,CAAC,MAAM,yBAAyB,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,8BAAA,EAAA,CAAA,EACzC,WAAW,EAAE,IAAI,GACtB;;AAGQ,QAAA,IAAA,CAAA,WAAW,GAAG,eAAe,CAClC,UAAU,CAAC,MAAM,aAAa,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,aAAA,EAAA,8BAAA,EAAA,CAAA,EAC7B,WAAW,EAAE,IAAI,GACtB;;AAGQ,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAS;QAE3B,IAAA,CAAA,sBAAsB,GAAW,GAAG;AA8DrD;;;;;;;;;AASG;QACH,IAAA,CAAA,2BAA2B,GAAG,MAAK;;;YAG/B,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpC,QAAA,CAAC;AA7CG,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;;;AAI7D,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC/B,gBAAA,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ;AAC1B,qBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,qBAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,YAAA,CAAC,CAAC;QACN;AAEA,QAAA,IAAI,CAAC;aACA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,kBAAkB,EAAE;AACpE,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAEvE,MAAM,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC;;;;QAK3F,eAAe,CAAC,MAAM,IAAI,CAAC,2BAA2B,EAAE,CAAC;IAC7D;;IAGA,kBAAkB,GAAA;QACd,KAAK,CAAC,kBAAkB,EAAE;AAE1B,QAAA,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC;IACnF;;IAmBQ,QAAQ,GAAA;AACZ,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK;;AAGjC,QAAA,IAAI,CAAC,cAAc;YAAE;AAErB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB;;AAGnC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;AAE7C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,GAAG,cAAc;AAExD,QAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC;QAC5C;aAAO;AACH,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC;QAC1C;IACJ;;AAGU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACpC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;;AAG7B,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC;QAE1C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,kBAAkB,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE;YAC3F,KAAK,CAAC,cAAc,EAAE;QAC1B;AAEA,QAAA,IAAI,OAAO,KAAK,GAAG,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;YAE7B;QACJ;AAAO,aAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,WAAW,EAAE;AAClG,YAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;QACvC;AAAO,aAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,UAAU,EAAE;AAClG,YAAA,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;QAC3C;aAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;QACpC;IACJ;AAEQ,IAAA,cAAc,CAAC,KAAoB,EAAA;AACvC,QAAA,OAAO,CAAC,CAAE,KAAK,CAAC,MAAsB,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC;IAC9E;AAEQ,IAAA,qBAAqB,CAAC,KAAoB,EAAA;AAC9C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAE9C,QAAA,OAAO,KAAK,CAAC,cAAc,KAAK,CAAC;IACrC;AAEQ,IAAA,oBAAoB,CAAC,KAAoB,EAAA;AAC7C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAE9C,OAAO,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM;IACpD;IAEQ,aAAa,CAAC,KAAsB,EAAE,aAAqB,EAAA;QAC/D,IAAI,KAAK,GAAG,aAAa;;QAGzB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,EAAE;AAC9F,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,KAAK,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAEnC,IAAI,KAAK,IAAI,CAAC;gBAAE;QACpB;IACJ;IAEQ,WAAW,CAAC,KAAsB,EAAE,aAAqB,EAAA;QAC7D,IAAI,KAAK,GAAG,aAAa;AAEzB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;YAC3D,IAAI,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE;AACzC,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,KAAK,IAAI,IAAI,CAAC,mBAAmB,EAAE;YACvC;QACJ;IACJ;kIApLS,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAdP,CAAC,+BAA+B,CAAC,gFAqBvB,yBAAyB,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAMzB,aAAa,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArCxB;;AAET,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,m2MAAA,EAAA,k0PAAA,EAAA,6/PAAA,EAAA,iQAAA,EAAA,k2EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAsBQ,SAAS,EAAA,UAAA,EAAA,CAAA;kBA1BrB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,QAAA,EACZ;;KAET,EAAA,SAAA,EAQU,CAAC,+BAA+B,CAAC,EAAA,eAAA,EAC3B,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACF,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,WAAW,EAAE;qBAChB,EAAA,cAAA,EACe,CAAC,sBAAsB,CAAC,EAAA,MAAA,EAAA,CAAA,m2MAAA,EAAA,k0PAAA,EAAA,6/PAAA,EAAA,iQAAA,EAAA,k2EAAA,CAAA,EAAA;+GASpC,UAAU,CAAC,MAAM,yBAAyB,CAAC,EAAA,EAAA,GAC3C,EAAE,WAAW,EAAE,IAAI,EAAE,yEAKrB,UAAU,CAAC,MAAM,aAAa,CAAC,EAAA,EAAA,GAC/B,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AClP7B;AACA;AACO,MAAM,uCAAuC,GAAiC,cAAc,CAAC;AAEpG;AACA;AACO,MAAM,+BAA+B,GAAG,IAAI,cAAc,CAC7D,8BAA8B,EAC9B,EAAE,OAAO,EAAE,MAAM,uCAAuC,EAAE;AAG9D;;;AAGG;AACI,MAAM,oCAAoC,GAAG,CAChD,aAA2D,KAChD,sCAAsC,CAAC,QAAQ,EAAE,aAAa;AAE7E;AACO,MAAM,yCAAyC,GAAG;AACzD;AACO,MAAM,iCAAiC,GAAG;AA4C3C,MAAO,iBAAkB,SAAQ,qBAAqB,CAAA;AAqCxD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AArCX;;;;;;;AAOG;AACM,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,2BAA2B,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACnF,QAAQ,EACR,+BAA+B,CAClC;;AAGQ,QAAA,IAAA,CAAA,iBAAiB,GAAG,eAAe,CACxC,UAAU,CAAC,MAAM,yBAAyB,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,8BAAA,EAAA,CAAA,EACzC,WAAW,EAAE,IAAI,GACtB;;AAGQ,QAAA,IAAA,CAAA,KAAK,GAAG,eAAe,CAC5B,UAAU,CAAC,MAAM,aAAa,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,OAAA,EAAA,8BAAA,EAAA,CAAA,EAC7B,WAAW,EAAE,IAAI,GACtB;;QAGQ,IAAA,CAAA,KAAK,GAAG,YAAY,CAAiB,UAAU,CAAC,MAAM,cAAc,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;AAGtE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAGhC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAOrC,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEtE,MAAM,CAAC,MAAK;;AAER,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;YAEhC,IAAI,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACtC,gBAAA,IAAI,CAAC,WAAW,GAAG,UAAU;AAC7B,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ;AAC9B,YAAA,CAAC,CAAC;YAEF,IAAI,CAAC,kBAAkB,EAAE;AAC7B,QAAA,CAAC,CAAC;IACN;;IAGA,kBAAkB,GAAA;QACd,KAAK,CAAC,kBAAkB,EAAE;AAE1B,QAAA,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC;IACjD;;IAGA,MAAM,GAAA;;;AAGF,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD;;AAGU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACpC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;;AAG7B,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC;QAE1C,IACI,CAAE,KAAK,CAAC,MAAsB,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC;aACjE,kBAAkB,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAC5D;YACE,KAAK,CAAC,cAAc,EAAE;QAC1B;AAEA,QAAA,IAAI,OAAO,KAAK,GAAG,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;YAE7B;QACJ;AAAO,aAAA,IAAI,OAAO,KAAK,UAAU,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;QACvC;AAAO,aAAA,IAAI,OAAO,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;QAC3C;aAAO;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;QACpC;IACJ;AAEA;;;;AAIG;IACK,kBAAkB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE;;AAGzC,QAAA,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE;QAEtB,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,MACjC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,EAAE,2BAA2B,EAAE,CAAC,CAC3E;IACL;kIAhHS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,qCAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,SAAA,EAvBf,CAAC,+BAA+B,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAuCvB,yBAAyB,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAMzB,aAAa,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAK6B,cAAc,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnEnE;;;;;;;;;AAST,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,g7NAAA,EAAA,k0PAAA,EAAA,6/PAAA,EAAA,iQAAA,EAAA,k2EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FA+BQ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA1C7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,QAAA,EACrB;;;;;;;;;KAST,EAAA,SAAA,EAQU,CAAC,+BAA+B,CAAC,EAAA,eAAA,EAC3B,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACF,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,uCAAuC,EAAE,YAAY;AACrD,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,wBAAA,+BAA+B,EAAE,MAAM;AAEvC,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,QAAQ,EAAE,QAAQ;AAElB,wBAAA,WAAW,EAAE;qBAChB,EAAA,cAAA,EACe;wBACZ,eAAe;wBACf,EAAE,SAAS,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,qCAAqC,CAAC,EAAE;wBAC3F;AACH,qBAAA,EAAA,QAAA,EACS,mBAAmB,EAAA,MAAA,EAAA,CAAA,g7NAAA,EAAA,k0PAAA,EAAA,6/PAAA,EAAA,iQAAA,EAAA,k2EAAA,CAAA,EAAA;AAkBzB,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,yBAAyB,CAAC,EAAA,EAAA,GAC3C,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAKrB,UAAU,CAAC,MAAM,aAAa,CAAC,EAAA,EAAA,GAC/B,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAIqB,UAAU,CAAC,MAAM,cAAc,CAAC,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACvGlF;;;;;;;;AAQG;MAEU,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAEvB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAmB;AA0B7C,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,KAAoB,KAAU;AACnD,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;gBAAE;AAEvE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;AAEnC,YAAA,IAAI,CAAC,MAAM;gBAAE;AAEb,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AAC1C,QAAA,CAAC;AASJ,IAAA;;AAxCG,IAAA,GAAG,CAAC,MAAuB,EAAA;QACvB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACpG;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;IAC5B;;AAGA,IAAA,MAAM,CAAC,MAAuB,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAE3B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;QAClE;IACJ;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;AAE9D,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;IACxB;IAYQ,aAAa,GAAA;QACjB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;AACjC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;QACjD,MAAM,OAAO,GAAG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAEzF,QAAA,OAAO,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC;IAChC;kIA/CS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA,CAAA;;4FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;MAwFrB,eAAe,CAAA;;AAWxB,IAAA,IAAc,KAAK,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ;cACrB,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC;cACzC,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,MAAM;IACzD;AAEA,IAAA,WAAA,GAAA;QAhBiB,IAAA,CAAA,aAAa,GAAG,sBAAsB,EAAE;AACxC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC1C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;QAEtC,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;AAGjD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAwD7C,IAAA,CAAA,oBAAoB,GAAG,MAAK;YAChC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK;AACrC,QAAA,CAAC;AAhDG,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3B;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;QAC1B,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,eAAe,CAAC,KAAK;AAErD,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC;;;;QAK1F,MAAM,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC7C;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9B;;AAGA,IAAA,QAAQ,CAAC,OAAgB,EAAA;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;IACnG;;IAGA,MAAM,GAAA;;;QAGF,SAAS,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACvB,QAAA,CAAC,CAAC;IACN;;AAGU,IAAA,cAAc,CAAC,MAAqB,EAAA;AAC1C,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACzC,IAAI,CAAC,MAAM,EAAE;YAEb,MAAM,CAAC,eAAe,EAAE;YACxB,MAAM,CAAC,cAAc,EAAE;QAC3B;IACJ;kIA9DS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gCAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhCd;;;;;;;;;;AAUT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qmCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAZG,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAkCR,eAAe,EAAA,UAAA,EAAA,CAAA;kBArC3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wCAAwC,EAAA,OAAA,EACzC;wBACL;qBACH,EAAA,QAAA,EACS;;;;;;;;;;AAUT,IAAA,CAAA,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACF,wBAAA,KAAK,EAAE,gCAAgC;AACvC,wBAAA,uBAAuB,EAAE,oBAAoB;AAC7C,wBAAA,sBAAsB,EAAE,mBAAmB;;;;AAK3C,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,sBAAsB,EAAE,mBAAmB;AAC3C,wBAAA,mBAAmB,EAAE,OAAO;AAC5B,wBAAA,mBAAmB,EAAE,WAAW;AAEhC,wBAAA,WAAW,EAAE,wBAAwB;AACrC,wBAAA,SAAS,EAAE;AACd,qBAAA,EAAA,cAAA,EACe,CAAC,eAAe,EAAE,iBAAiB,CAAC,EAAA,MAAA,EAAA,CAAA,qmCAAA,CAAA,EAAA;;;MChE3C,eAAe,CAAA;kIAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YApCpB,UAAU;YACV,cAAc;YACd,aAAa;YACb,gBAAgB;YAChB,SAAS;YACT,kBAAkB;YAClB,cAAc;YACd,aAAa;YACb,cAAc;YACd,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,gBAAgB;YAChB,sBAAsB;YACtB,yBAAyB;YACzB,cAAc;YACd,oBAAoB;AACpB,YAAA,mBAAmB,aAGnB,SAAS;YACT,kBAAkB;YAClB,cAAc;YACd,aAAa;YACb,cAAc;YACd,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,gBAAgB;YAChB,sBAAsB;YACtB,yBAAyB;YACzB,cAAc;YACd,oBAAoB;YACpB,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YApCpB,UAAU;YACV,cAAc;YACd,aAAa;YACb,gBAAgB;YAIhB,aAAa;YAGb,eAAe,CAAA,EAAA,CAAA,CAAA;;4FA0BV,eAAe,EAAA,UAAA,EAAA,CAAA;kBAtC3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,UAAU;wBACV,cAAc;wBACd,aAAa;wBACb,gBAAgB;wBAChB,SAAS;wBACT,kBAAkB;wBAClB,cAAc;wBACd,aAAa;wBACb,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,iBAAiB;wBACjB,gBAAgB;wBAChB,sBAAsB;wBACtB,yBAAyB;wBACzB,cAAc;wBACd,oBAAoB;wBACpB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,SAAS;wBACT,kBAAkB;wBAClB,cAAc;wBACd,aAAa;wBACb,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,iBAAiB;wBACjB,gBAAgB;wBAChB,sBAAsB;wBACtB,yBAAyB;wBACzB,cAAc;wBACd,oBAAoB;wBACpB;AACH;AACJ,iBAAA;;;AC1DD;;AAEG;;;;"}
|