@koobiq/components 20.4.2 → 21.0.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/accordion/accordion-trigger.scss +3 -10
- package/accordion/accordion.scss +4 -6
- package/actions-panel/actions-panel-container.scss +45 -1
- package/alert/alert.component.scss +3 -2
- package/app-switcher/_app-switcher-theme.scss +0 -4
- package/app-switcher/app-switcher-dropdown-app.scss +3 -2
- package/app-switcher/app-switcher-dropdown-site.scss +2 -1
- package/app-switcher/{kbq-app-switcher-list-item.scss → app-switcher-list-item.scss} +18 -4
- package/app-switcher/app-switcher-tokens.scss +15 -0
- package/app-switcher/app-switcher.scss +14 -4
- package/autocomplete/autocomplete.scss +7 -6
- package/badge/badge.component.scss +5 -8
- package/breadcrumbs/breadcrumbs.scss +25 -10
- package/button/_button-base.scss +30 -7
- package/button/_button-theme.scss +16 -0
- package/button/button-group.scss +7 -0
- package/button/button-tokens.scss +0 -2
- package/button/button.scss +34 -2
- package/button-toggle/_button-toggle-theme.scss +7 -2
- package/button-toggle/button-toggle.scss +65 -15
- package/checkbox/_checkbox-theme.scss +4 -3
- package/checkbox/checkbox.scss +3 -6
- package/clamped-text/clamped-text.scss +6 -2
- package/code-block/code-block-tokens.scss +0 -224
- package/code-block/code-block.scss +20 -9
- package/content-panel/content-panel-aside.scss +3 -2
- package/content-panel/content-panel-container.scss +37 -0
- package/content-panel/content-panel.scss +4 -3
- package/core/highlight/_highlight-theme.scss +3 -1
- package/core/option/action-container.scss +2 -2
- package/core/option/action.scss +2 -1
- package/core/option/option.scss +2 -1
- package/core/pop-up/_pop-up.scss +0 -37
- package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +5 -10
- package/core/styles/_core.scss +3 -0
- package/core/styles/_koobiq-theme.scss +5 -6
- package/core/styles/common/_animation.scss +44 -16
- package/core/styles/common/_groups-mixins.scss +21 -19
- package/core/styles/common/_groups.scss +4 -32
- package/core/styles/common/_index.scss +0 -2
- package/core/styles/common/_link.scss +117 -0
- package/core/styles/common/_list.scss +0 -26
- package/core/styles/common/_overlay.scss +8 -10
- package/core/styles/common/_rtl.scss +0 -14
- package/core/styles/common/_select.scss +33 -15
- package/core/styles/common/_squircle.scss +63 -0
- package/core/styles/common/_tokens.scss +0 -11
- package/core/styles/common/_vendor-prefixes.scss +0 -20
- package/core/styles/functions/_timing.scss +0 -22
- package/core/styles/theming/_scrollbar-theme.scss +6 -1
- package/core/styles/theming/_theming.scss +13 -65
- package/core/styles/typography/_index.scss +0 -1
- package/core/styles/typography/_typography.scss +0 -143
- package/core/styles/visual/_body.scss +1 -6
- package/core/styles/visual/_layout.scss +0 -12
- package/datepicker/calendar-body.scss +3 -1
- package/datepicker/calendar-header.scss +0 -1
- package/datepicker/datepicker-content.scss +33 -1
- package/datepicker/datepicker-toggle.scss +0 -38
- package/dl/dl-tokens.scss +10 -0
- package/dl/dl.scss +113 -13
- package/dropdown/_dropdown-theme.scss +4 -16
- package/dropdown/dropdown-item.scss +4 -10
- package/dropdown/dropdown.scss +2 -1
- package/empty-state/_empty-state-theme.scss +10 -4
- package/empty-state/empty-state-tokens.scss +4 -4
- package/empty-state/empty-state.scss +4 -0
- package/fesm2022/koobiq-components-accordion.mjs +347 -229
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +302 -187
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +39 -39
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +677 -367
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +620 -253
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +46 -48
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +221 -169
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +565 -196
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +332 -116
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +172 -132
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +165 -158
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +755 -601
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +260 -143
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +4342 -1595
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +1713 -1606
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +73 -36
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +447 -89
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +703 -599
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +20 -20
- package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +46 -31
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +116 -60
- package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +550 -290
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +2810 -2538
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +79 -24
- package/fesm2022/koobiq-components-flag.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +389 -525
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +366 -136
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +429 -212
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +601 -459
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link-deprecated.mjs +196 -0
- package/fesm2022/koobiq-components-link-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-link.mjs +328 -125
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +583 -433
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +167 -68
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +55 -78
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +853 -475
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +895 -556
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +680 -310
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +46 -64
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +684 -285
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +87 -33
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +52 -43
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +450 -231
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-resizer.mjs +127 -21
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs +299 -0
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-scrollbar.mjs +745 -222
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +288 -126
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +883 -693
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +207 -88
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +689 -296
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +815 -41
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +109 -88
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter-deprecated.mjs +591 -0
- package/fesm2022/koobiq-components-splitter-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-splitter.mjs +890 -501
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +63 -49
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +1062 -603
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +886 -733
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +213 -185
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +299 -147
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +233 -245
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +344 -142
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +229 -145
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +463 -143
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +177 -130
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +657 -214
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +61 -32
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +719 -488
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +1506 -558
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +290 -135
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/file-upload/dropzone.scss +31 -3
- package/file-upload/file-upload-tokens.scss +2 -22
- package/file-upload/file-upload.scss +6 -0
- package/file-upload/multiple-file-upload.component.scss +14 -12
- package/file-upload/single-file-upload.component.scss +3 -2
- package/filter-bar/filters.scss +7 -0
- package/filter-bar/pipes/base-pipe.scss +3 -3
- package/filter-bar/pipes/pipe-date.scss +8 -1
- package/flag/flag-tokens.scss +22 -0
- package/flag/flag.scss +34 -21
- package/form-field/{_fiedset-theme.scss → _fieldset-theme.scss} +1 -5
- package/form-field/_form-field-theme.scss +4 -9
- package/form-field/cleaner.scss +3 -1
- package/form-field/fieldset.scss +3 -4
- package/form-field/form-field.scss +26 -21
- package/form-field/password-toggle.scss +3 -1
- package/icon/_icon-button-theme.scss +7 -0
- package/icon/_icon-theme.scss +10 -7
- package/icon/icon-button.scss +0 -2
- package/icon/icon-tokens.scss +12 -9
- package/inline-edit/inline-edit.scss +40 -54
- package/input/input.scss +4 -0
- package/link/{_link-theme.scss → deprecated/_link-theme.scss} +11 -6
- package/link/deprecated/link-tokens.scss +27 -0
- package/link/link-tokens.scss +6 -25
- package/link/link.scss +137 -0
- package/list/list.scss +3 -2
- package/loader-overlay/_loader-overlay-theme.scss +19 -10
- package/loader-overlay/loader-overlay-tokens.scss +0 -2
- package/loader-overlay/loader-overlay.scss +7 -1
- package/markdown/_markdown-theme.scss +16 -0
- package/markdown/markdown-tokens.scss +5 -0
- package/markdown/markdown.scss +2 -1
- package/modal/_modal-animation.scss +23 -14
- package/modal/modal-tokens.scss +2 -1
- package/modal/modal.scss +35 -31
- package/navbar/_navbar-item_horizontal.scss +8 -6
- package/navbar/_navbar-item_vertical.scss +18 -6
- package/navbar/_navbar-theme.scss +9 -1
- package/navbar/navbar-brand.scss +8 -6
- package/navbar/navbar-divider.scss +1 -1
- package/navbar/navbar-item.scss +8 -9
- package/navbar/navbar-toggle.scss +3 -3
- package/navbar/navbar-tokens.scss +14 -0
- package/navbar/navbar.scss +1 -2
- package/navbar/vertical-navbar.scss +2 -2
- package/notification-center/_notification-center-theme.scss +11 -6
- package/notification-center/notification-center-tokens.scss +33 -0
- package/notification-center/notification-center.scss +58 -20
- package/notification-center/notification-item.scss +15 -6
- package/package.json +112 -81
- package/popover/popover-tokens.scss +0 -2
- package/popover/popover.scss +41 -19
- package/prebuilt-themes/theme.css +1 -1
- package/progress-bar/_progress-bar-theme.scss +20 -3
- package/progress-bar/progress-bar-tokens.scss +3 -0
- package/progress-bar/progress-bar.scss +36 -8
- package/progress-spinner/progress-spinner.scss +4 -3
- package/radio/_radio-theme.scss +21 -4
- package/radio/radio-tokens.scss +7 -3
- package/radio/radio.scss +55 -8
- package/schematics/collection.json +399 -7
- package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
- package/schematics/migrations/accordion-state-saving-default/data.js +75 -0
- package/schematics/migrations/accordion-state-saving-default/index.js +60 -0
- package/schematics/migrations/accordion-state-saving-default/schema.json +15 -0
- package/schematics/migrations/actions-panel-overlay-container/README.md +35 -0
- package/schematics/migrations/actions-panel-overlay-container/data.js +47 -0
- package/schematics/migrations/actions-panel-overlay-container/index.js +54 -0
- package/schematics/migrations/actions-panel-overlay-container/schema.json +15 -0
- package/schematics/migrations/alert-signals/README.md +13 -7
- package/schematics/migrations/alert-signals/data.js +3 -0
- package/schematics/migrations/alert-signals/index.js +70 -203
- package/schematics/migrations/angular-animations-removal/README.md +46 -0
- package/schematics/migrations/angular-animations-removal/data.js +150 -0
- package/schematics/migrations/angular-animations-removal/index.js +20 -0
- package/schematics/migrations/angular-animations-removal/schema.json +15 -0
- package/schematics/migrations/app-switcher-signals/README.md +88 -0
- package/schematics/migrations/app-switcher-signals/data.js +136 -0
- package/schematics/migrations/app-switcher-signals/index.js +365 -0
- package/schematics/migrations/app-switcher-signals/schema.json +20 -0
- package/schematics/migrations/autocomplete-panel-width-auto/README.md +2 -2
- package/schematics/migrations/autocomplete-panel-width-auto/index.js +1 -1
- package/schematics/migrations/autocomplete-signals/README.md +92 -0
- package/schematics/migrations/autocomplete-signals/data.js +149 -0
- package/schematics/migrations/autocomplete-signals/index.js +706 -0
- package/schematics/migrations/autocomplete-signals/schema.json +20 -0
- package/schematics/migrations/badge-signals/README.md +77 -0
- package/schematics/migrations/badge-signals/data.js +109 -0
- package/schematics/migrations/badge-signals/index.js +693 -0
- package/schematics/migrations/badge-signals/schema.json +20 -0
- package/schematics/migrations/button-state-and-styles/README.md +129 -0
- package/schematics/migrations/button-state-and-styles/data.js +136 -0
- package/schematics/migrations/button-state-and-styles/index.js +220 -0
- package/schematics/migrations/button-state-and-styles/schema.json +20 -0
- package/schematics/migrations/button-supported-colors/README.md +73 -0
- package/schematics/migrations/button-supported-colors/data.js +106 -0
- package/schematics/migrations/button-supported-colors/index.js +260 -0
- package/schematics/migrations/button-supported-colors/schema.json +20 -0
- package/schematics/migrations/button-toggle-signals-and-aria/README.md +137 -0
- package/schematics/migrations/button-toggle-signals-and-aria/data.js +200 -0
- package/schematics/migrations/button-toggle-signals-and-aria/index.js +496 -0
- package/schematics/migrations/button-toggle-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/button-truncation/README.md +110 -0
- package/schematics/migrations/button-truncation/data.js +88 -0
- package/schematics/migrations/button-truncation/index.js +269 -0
- package/schematics/migrations/button-truncation/schema.json +20 -0
- package/schematics/migrations/checkbox-signals/README.md +76 -0
- package/schematics/migrations/checkbox-signals/data.js +114 -0
- package/schematics/migrations/checkbox-signals/index.js +634 -0
- package/schematics/migrations/checkbox-signals/schema.json +20 -0
- package/schematics/migrations/clamped-text-disclosure/README.md +62 -0
- package/schematics/migrations/clamped-text-disclosure/data.js +101 -0
- package/schematics/migrations/clamped-text-disclosure/index.js +59 -0
- package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
- package/schematics/migrations/code-block-signals/README.md +84 -0
- package/schematics/migrations/code-block-signals/data.js +121 -0
- package/schematics/migrations/code-block-signals/index.js +700 -0
- package/schematics/migrations/code-block-signals/schema.json +20 -0
- package/schematics/migrations/color-signals/README.md +46 -0
- package/schematics/migrations/color-signals/data.js +131 -0
- package/schematics/migrations/color-signals/index.js +19 -0
- package/schematics/migrations/color-signals/schema.json +20 -0
- package/schematics/migrations/core-mixins-removal/README.md +20 -0
- package/schematics/migrations/core-mixins-removal/data.js +27 -0
- package/schematics/migrations/core-mixins-removal/index.js +17 -0
- package/schematics/migrations/core-mixins-removal/schema.json +15 -0
- package/schematics/migrations/css-selectors/README.md +2 -2
- package/schematics/migrations/css-selectors/index.js +1 -1
- package/schematics/migrations/datepicker-signals/README.md +24 -0
- package/schematics/migrations/datepicker-signals/data.js +49 -0
- package/schematics/migrations/datepicker-signals/index.js +17 -0
- package/schematics/migrations/datepicker-signals/schema.json +15 -0
- package/schematics/migrations/deprecated-icons/README.md +2 -2
- package/schematics/migrations/deprecated-icons/index.js +1 -1
- package/schematics/migrations/design-tokens-v4/README.md +75 -0
- package/schematics/migrations/design-tokens-v4/index.js +59 -0
- package/schematics/migrations/design-tokens-v4/schema.json +15 -0
- package/schematics/migrations/divider-signals-and-aria/README.md +47 -0
- package/schematics/migrations/divider-signals-and-aria/data.js +62 -0
- package/schematics/migrations/divider-signals-and-aria/index.js +211 -0
- package/schematics/migrations/divider-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/dl-attribute-coercion/README.md +59 -0
- package/schematics/migrations/dl-attribute-coercion/data.js +85 -0
- package/schematics/migrations/dl-attribute-coercion/index.js +161 -0
- package/schematics/migrations/dl-attribute-coercion/schema.json +15 -0
- package/schematics/migrations/dl-standalone-names/README.md +49 -0
- package/schematics/migrations/dl-standalone-names/data.js +44 -0
- package/schematics/migrations/dl-standalone-names/index.js +321 -0
- package/schematics/migrations/dl-standalone-names/schema.json +20 -0
- package/schematics/migrations/dropdown-demote-overlay/README.md +137 -0
- package/schematics/migrations/dropdown-demote-overlay/data.js +84 -0
- package/schematics/migrations/dropdown-demote-overlay/index.js +288 -0
- package/schematics/migrations/dropdown-demote-overlay/schema.json +20 -0
- package/schematics/migrations/dropdown-signals/README.md +83 -0
- package/schematics/migrations/dropdown-signals/data.js +152 -0
- package/schematics/migrations/dropdown-signals/index.js +19 -0
- package/schematics/migrations/dropdown-signals/schema.json +20 -0
- package/schematics/migrations/empty-state-error-color/README.md +84 -0
- package/schematics/migrations/empty-state-error-color/data.js +85 -0
- package/schematics/migrations/empty-state-error-color/index.js +71 -0
- package/schematics/migrations/empty-state-error-color/schema.json +15 -0
- package/schematics/migrations/empty-state-size-attr/README.md +2 -2
- package/schematics/migrations/empty-state-size-attr/index.js +1 -1
- package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
- package/schematics/migrations/file-upload-cva-and-primitives/data.js +97 -0
- package/schematics/migrations/file-upload-cva-and-primitives/index.js +60 -0
- package/schematics/migrations/file-upload-cva-and-primitives/schema.json +15 -0
- package/schematics/migrations/file-upload-deprecated-outputs/README.md +90 -0
- package/schematics/migrations/file-upload-deprecated-outputs/data.js +20 -0
- package/schematics/migrations/file-upload-deprecated-outputs/index.js +70 -0
- package/schematics/migrations/file-upload-deprecated-outputs/schema.json +20 -0
- package/schematics/migrations/filter-bar-rename-action/README.md +183 -0
- package/schematics/migrations/filter-bar-rename-action/data.js +151 -0
- package/schematics/migrations/filter-bar-rename-action/index.js +177 -0
- package/schematics/migrations/filter-bar-rename-action/schema.json +20 -0
- package/schematics/migrations/filter-bar-signals/README.md +27 -16
- package/schematics/migrations/filter-bar-signals/data.js +1 -2
- package/schematics/migrations/filter-bar-signals/index.js +100 -195
- package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
- package/schematics/migrations/filter-bar-state-saving-default/data.js +87 -0
- package/schematics/migrations/filter-bar-state-saving-default/index.js +61 -0
- package/schematics/migrations/filter-bar-state-saving-default/schema.json +15 -0
- package/schematics/migrations/flag-inner-html/README.md +67 -0
- package/schematics/migrations/flag-inner-html/data.js +58 -0
- package/schematics/migrations/flag-inner-html/index.js +61 -0
- package/schematics/migrations/flag-inner-html/schema.json +15 -0
- package/schematics/migrations/form-field-signals/README.md +125 -0
- package/schematics/migrations/form-field-signals/data.js +288 -0
- package/schematics/migrations/form-field-signals/index.js +382 -0
- package/schematics/migrations/form-field-signals/schema.json +20 -0
- package/schematics/migrations/icon-semantics-and-api/README.md +65 -0
- package/schematics/migrations/icon-semantics-and-api/data.js +97 -0
- package/schematics/migrations/icon-semantics-and-api/index.js +64 -0
- package/schematics/migrations/icon-semantics-and-api/schema.json +15 -0
- package/schematics/migrations/icons-replacement/README.md +5 -5
- package/schematics/migrations/icons-replacement/index.js +1 -1
- package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
- package/schematics/migrations/inline-edit-a11y-and-types/data.js +117 -0
- package/schematics/migrations/inline-edit-a11y-and-types/index.js +97 -0
- package/schematics/migrations/inline-edit-a11y-and-types/schema.json +20 -0
- package/schematics/migrations/input-number-surface/README.md +140 -0
- package/schematics/migrations/input-number-surface/data.js +135 -0
- package/schematics/migrations/input-number-surface/index.js +292 -0
- package/schematics/migrations/input-number-surface/schema.json +20 -0
- package/schematics/migrations/input-signals/README.md +20 -0
- package/schematics/migrations/input-signals/data.js +30 -0
- package/schematics/migrations/input-signals/index.js +17 -0
- package/schematics/migrations/input-signals/schema.json +15 -0
- package/schematics/migrations/link-deprecated-path/README.md +144 -0
- package/schematics/migrations/link-deprecated-path/index.js +19 -0
- package/schematics/migrations/link-deprecated-path/schema.json +20 -0
- package/schematics/migrations/link-signals/README.md +71 -0
- package/schematics/migrations/link-signals/data.js +116 -0
- package/schematics/migrations/link-signals/index.js +415 -0
- package/schematics/migrations/link-signals/schema.json +20 -0
- package/schematics/migrations/list-signals/README.md +22 -0
- package/schematics/migrations/list-signals/data.js +35 -0
- package/schematics/migrations/list-signals/index.js +17 -0
- package/schematics/migrations/list-signals/schema.json +15 -0
- package/schematics/migrations/list-tree-multiple-input/README.md +105 -0
- package/schematics/migrations/list-tree-multiple-input/data.js +74 -0
- package/schematics/migrations/list-tree-multiple-input/index.js +221 -0
- package/schematics/migrations/list-tree-multiple-input/schema.json +20 -0
- package/schematics/migrations/loader-overlay-signals/README.md +62 -0
- package/schematics/migrations/loader-overlay-signals/data.js +101 -0
- package/schematics/migrations/loader-overlay-signals/index.js +697 -0
- package/schematics/migrations/loader-overlay-signals/schema.json +20 -0
- package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
- package/schematics/migrations/loader-overlay-size-attr/index.js +1 -1
- package/schematics/migrations/locale-configuration-providers/README.md +163 -0
- package/schematics/migrations/locale-configuration-providers/data.js +257 -0
- package/schematics/migrations/locale-configuration-providers/index.js +294 -0
- package/schematics/migrations/locale-configuration-providers/schema.json +20 -0
- package/schematics/migrations/mandatory-peer-dependencies/README.md +70 -0
- package/schematics/migrations/mandatory-peer-dependencies/index.js +42 -0
- package/schematics/migrations/mandatory-peer-dependencies/schema.json +15 -0
- package/schematics/migrations/markdown-signals/README.md +58 -0
- package/schematics/migrations/markdown-signals/data.js +79 -0
- package/schematics/migrations/markdown-signals/index.js +639 -0
- package/schematics/migrations/markdown-signals/schema.json +20 -0
- package/schematics/migrations/modal-dialog-semantics/README.md +106 -0
- package/schematics/migrations/modal-dialog-semantics/data.js +110 -0
- package/schematics/migrations/modal-dialog-semantics/index.js +58 -0
- package/schematics/migrations/modal-dialog-semantics/schema.json +15 -0
- package/schematics/migrations/modal-signals/README.md +88 -0
- package/schematics/migrations/modal-signals/data.js +132 -0
- package/schematics/migrations/modal-signals/index.js +19 -0
- package/schematics/migrations/modal-signals/schema.json +20 -0
- package/schematics/migrations/navbar-signals-and-aria/README.md +111 -0
- package/schematics/migrations/navbar-signals-and-aria/data.js +198 -0
- package/schematics/migrations/navbar-signals-and-aria/index.js +568 -0
- package/schematics/migrations/navbar-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/new-icons-pack/README.md +10 -10
- package/schematics/migrations/new-icons-pack/index.js +1 -1
- package/schematics/migrations/notification-center-signals/README.md +67 -0
- package/schematics/migrations/notification-center-signals/data.js +66 -0
- package/schematics/migrations/notification-center-signals/index.js +61 -0
- package/schematics/migrations/notification-center-signals/schema.json +15 -0
- package/schematics/migrations/option-signals/README.md +37 -0
- package/schematics/migrations/option-signals/data.js +86 -0
- package/schematics/migrations/option-signals/index.js +19 -0
- package/schematics/migrations/option-signals/schema.json +20 -0
- package/schematics/migrations/popover-leave-delay/README.md +51 -0
- package/schematics/migrations/popover-leave-delay/data.js +61 -0
- package/schematics/migrations/popover-leave-delay/index.js +54 -0
- package/schematics/migrations/popover-leave-delay/schema.json +15 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/README.md +54 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/data.js +76 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/index.js +58 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/schema.json +15 -0
- package/schematics/migrations/progress-spinner-signals/README.md +72 -0
- package/schematics/migrations/progress-spinner-signals/data.js +83 -0
- package/schematics/migrations/progress-spinner-signals/index.js +694 -0
- package/schematics/migrations/progress-spinner-signals/schema.json +20 -0
- package/schematics/migrations/query-list-signals/README.md +32 -0
- package/schematics/migrations/query-list-signals/data.js +70 -0
- package/schematics/migrations/query-list-signals/index.js +17 -0
- package/schematics/migrations/query-list-signals/schema.json +15 -0
- package/schematics/migrations/radio-signals-and-aria/README.md +82 -0
- package/schematics/migrations/radio-signals-and-aria/data.js +163 -0
- package/schematics/migrations/radio-signals-and-aria/index.js +39 -0
- package/schematics/migrations/radio-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/read-state-dwell-handlers/README.md +125 -0
- package/schematics/migrations/read-state-dwell-handlers/data.js +45 -0
- package/schematics/migrations/read-state-dwell-handlers/index.js +215 -0
- package/schematics/migrations/read-state-dwell-handlers/schema.json +20 -0
- package/schematics/migrations/scrollbar-deprecated-path/README.md +128 -0
- package/schematics/migrations/scrollbar-deprecated-path/index.js +20 -0
- package/schematics/migrations/scrollbar-deprecated-path/schema.json +20 -0
- package/schematics/migrations/select-signal-inputs/README.md +61 -0
- package/schematics/migrations/select-signal-inputs/data.js +99 -0
- package/schematics/migrations/select-signal-inputs/index.js +57 -0
- package/schematics/migrations/select-signal-inputs/schema.json +15 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/README.md +57 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/data.js +111 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/index.js +57 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/schema.json +15 -0
- package/schematics/migrations/signal-inputs-subclasses/README.md +28 -0
- package/schematics/migrations/signal-inputs-subclasses/data.js +69 -0
- package/schematics/migrations/signal-inputs-subclasses/index.js +17 -0
- package/schematics/migrations/signal-inputs-subclasses/schema.json +15 -0
- package/schematics/migrations/split-button-optional-disabled/README.md +47 -0
- package/schematics/migrations/split-button-optional-disabled/data.js +53 -0
- package/schematics/migrations/split-button-optional-disabled/index.js +57 -0
- package/schematics/migrations/split-button-optional-disabled/schema.json +15 -0
- package/schematics/migrations/splitter-deprecated-path/README.md +136 -0
- package/schematics/migrations/splitter-deprecated-path/index.js +20 -0
- package/schematics/migrations/splitter-deprecated-path/schema.json +20 -0
- package/schematics/migrations/state-saving-default/README.md +67 -0
- package/schematics/migrations/state-saving-default/data.js +88 -0
- package/schematics/migrations/state-saving-default/index.js +62 -0
- package/schematics/migrations/state-saving-default/schema.json +15 -0
- package/schematics/migrations/table-cell-content/README.md +55 -0
- package/schematics/migrations/table-cell-content/data.js +66 -0
- package/schematics/migrations/table-cell-content/index.js +66 -0
- package/schematics/migrations/table-cell-content/schema.json +15 -0
- package/schematics/migrations/tabs-signals-and-aria/README.md +93 -0
- package/schematics/migrations/tabs-signals-and-aria/data.js +139 -0
- package/schematics/migrations/tabs-signals-and-aria/index.js +65 -0
- package/schematics/migrations/tabs-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/tag-list-cleaner/README.md +58 -0
- package/schematics/migrations/tag-list-cleaner/data.js +42 -0
- package/schematics/migrations/tag-list-cleaner/index.js +196 -0
- package/schematics/migrations/tag-list-cleaner/schema.json +20 -0
- package/schematics/migrations/tag-slots/README.md +41 -0
- package/schematics/migrations/tag-slots/index.js +190 -0
- package/schematics/migrations/tag-slots/schema.json +20 -0
- package/schematics/migrations/tags-signals/README.md +85 -0
- package/schematics/migrations/tags-signals/data.js +103 -0
- package/schematics/migrations/tags-signals/index.js +673 -0
- package/schematics/migrations/tags-signals/schema.json +20 -0
- package/schematics/migrations/textarea-signals/README.md +72 -0
- package/schematics/migrations/textarea-signals/data.js +121 -0
- package/schematics/migrations/textarea-signals/index.js +379 -0
- package/schematics/migrations/textarea-signals/schema.json +20 -0
- package/schematics/migrations/time-range-title-for/README.md +164 -0
- package/schematics/migrations/time-range-title-for/data.js +139 -0
- package/schematics/migrations/time-range-title-for/index.js +163 -0
- package/schematics/migrations/time-range-title-for/schema.json +20 -0
- package/schematics/migrations/timepicker-signals/README.md +78 -0
- package/schematics/migrations/timepicker-signals/data.js +82 -0
- package/schematics/migrations/timepicker-signals/index.js +709 -0
- package/schematics/migrations/timepicker-signals/schema.json +20 -0
- package/schematics/migrations/timezone-grouping-utils/README.md +73 -0
- package/schematics/migrations/timezone-grouping-utils/data.js +101 -0
- package/schematics/migrations/timezone-grouping-utils/index.js +64 -0
- package/schematics/migrations/timezone-grouping-utils/schema.json +15 -0
- package/schematics/migrations/title-encapsulation/README.md +49 -0
- package/schematics/migrations/title-encapsulation/data.js +69 -0
- package/schematics/migrations/title-encapsulation/index.js +57 -0
- package/schematics/migrations/title-encapsulation/schema.json +15 -0
- package/schematics/migrations/toast-stack-and-defaults/README.md +102 -0
- package/schematics/migrations/toast-stack-and-defaults/data.js +79 -0
- package/schematics/migrations/toast-stack-and-defaults/index.js +53 -0
- package/schematics/migrations/toast-stack-and-defaults/schema.json +15 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/README.md +53 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/data.js +89 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/index.js +60 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/schema.json +15 -0
- package/schematics/migrations/top-bar-container-selectors/README.md +111 -0
- package/schematics/migrations/top-bar-container-selectors/data.js +56 -0
- package/schematics/migrations/top-bar-container-selectors/index.js +84 -0
- package/schematics/migrations/top-bar-container-selectors/schema.json +20 -0
- package/schematics/migrations/tree-select-signals/README.md +61 -0
- package/schematics/migrations/tree-select-signals/data.js +106 -0
- package/schematics/migrations/tree-select-signals/index.js +58 -0
- package/schematics/migrations/tree-select-signals/schema.json +15 -0
- package/schematics/migrations/tree-signals/README.md +82 -0
- package/schematics/migrations/tree-signals/data.js +123 -0
- package/schematics/migrations/tree-signals/index.js +54 -0
- package/schematics/migrations/tree-signals/schema.json +15 -0
- package/schematics/migrations/tree-state-saving-default/README.md +66 -0
- package/schematics/migrations/tree-state-saving-default/data.js +78 -0
- package/schematics/migrations/tree-state-saving-default/index.js +60 -0
- package/schematics/migrations/tree-state-saving-default/schema.json +15 -0
- package/schematics/migrations/username-pipe-injection/README.md +59 -0
- package/schematics/migrations/username-pipe-injection/data.js +78 -0
- package/schematics/migrations/username-pipe-injection/index.js +58 -0
- package/schematics/migrations/username-pipe-injection/schema.json +15 -0
- package/schematics/migrations/v20-upgrade/README.md +36 -16
- package/schematics/migrations/v20-upgrade/data.js +124 -77
- package/schematics/migrations/v20-upgrade/index.js +6 -213
- package/schematics/migrations/v21-upgrade/README.md +271 -0
- package/schematics/migrations/v21-upgrade/data.js +1371 -0
- package/schematics/migrations/v21-upgrade/index.js +94 -0
- package/schematics/migrations/v21-upgrade/schema.json +20 -0
- package/schematics/migrations/zoneless-change-detection/README.md +30 -0
- package/schematics/migrations/zoneless-change-detection/data.js +29 -0
- package/schematics/migrations/zoneless-change-detection/index.js +20 -0
- package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
- package/schematics/migrations.json +392 -2
- package/schematics/ng-add/index.js +515 -14
- package/schematics/ng-add/schema.json +15 -0
- package/schematics/utils/deprecated-path-migration.js +61 -0
- package/schematics/utils/package-config.js +9 -105
- package/scrollbar/{_scrollbar-component-theme.scss → deprecated/_scrollbar-component-theme.scss} +1 -1
- package/scrollbar/{scrollbar.component.scss → deprecated/scrollbar.component.scss} +1 -1
- package/scrollbar/native-scrollbar.scss +68 -0
- package/scrollbar/scrollbar-tokens.scss +13 -22
- package/scrollbar/scrollbar-track.scss +94 -0
- package/scrollbar/scrollbar-viewport.scss +33 -0
- package/scrollbar/scrollbar.scss +24 -0
- package/search-expandable/search-expandable-tokens.scss +4 -0
- package/search-expandable/search-expandable.scss +4 -2
- package/select/_select-theme.scss +3 -16
- package/select/select.scss +0 -6
- package/sidebar/sidebar.scss +20 -0
- package/sidepanel/_sidepanel-theme.scss +1 -1
- package/sidepanel/sidepanel-tokens.scss +7 -1
- package/sidepanel/sidepanel.scss +41 -5
- package/skeleton/skeleton-presets.scss +350 -0
- package/skeleton/skeleton-tokens.scss +127 -0
- package/skeleton/skeleton.scss +53 -45
- package/split-button/_split-button-theme.scss +4 -4
- package/split-button/split-button.scss +2 -6
- package/splitter/{_splitter-theme.scss → deprecated/_splitter-theme.scss} +1 -1
- package/splitter/deprecated/splitter.scss +51 -0
- package/splitter/splitter-tokens.scss +19 -0
- package/splitter/splitter.scss +148 -28
- package/table/_table-theme.scss +13 -12
- package/table/table-tokens.scss +8 -0
- package/table/table.scss +47 -22
- package/tabs/_tabs-common.scss +14 -14
- package/tabs/_tabs-theme.scss +4 -5
- package/tabs/tab-body.scss +49 -1
- package/tabs/tab-header.scss +2 -1
- package/tags/tag-list.scss +4 -0
- package/tags/tag.scss +19 -1
- package/time-range/time-range.scss +9 -0
- package/timezone/timezone-option.component.scss +4 -7
- package/timezone/timezone-select.component.scss +3 -0
- package/toast/_toast-theme.scss +1 -4
- package/toast/toast-container.component.scss +19 -13
- package/toast/toast-tokens.scss +12 -6
- package/toast/toast.component.scss +42 -19
- package/toggle/_toggle-theme.scss +4 -10
- package/toggle/toggle.scss +67 -26
- package/tooltip/_tooltip-theme.scss +7 -1
- package/tooltip/tooltip-tokens.scss +1 -2
- package/tooltip/tooltip.scss +55 -9
- package/top-bar/top-bar-tokens.scss +13 -2
- package/top-bar/top-bar.scss +24 -19
- package/tree/_tree-theme.scss +0 -1
- package/tree/toggle.scss +5 -9
- package/tree/tree-option.scss +2 -4
- package/tree/tree-tokens.scss +2 -1
- package/tree/tree.scss +3 -5
- package/tree-select/_tree-select-theme.scss +4 -15
- package/tree-select/tree-select-tokens.scss +16 -0
- package/tree-select/tree-select.scss +0 -6
- package/{accordion/index.d.ts → types/koobiq-components-accordion.d.ts} +102 -84
- package/{actions-panel/index.d.ts → types/koobiq-components-actions-panel.d.ts} +44 -59
- package/{alert/index.d.ts → types/koobiq-components-alert.d.ts} +8 -3
- package/types/koobiq-components-app-switcher.d.ts +406 -0
- package/types/koobiq-components-autocomplete.d.ts +443 -0
- package/{badge/index.d.ts → types/koobiq-components-badge.d.ts} +25 -20
- package/{breadcrumbs/index.d.ts → types/koobiq-components-breadcrumbs.d.ts} +97 -46
- package/types/koobiq-components-button-toggle.d.ts +340 -0
- package/types/koobiq-components-button.d.ts +296 -0
- package/types/koobiq-components-checkbox.d.ts +172 -0
- package/types/koobiq-components-clamped-text.d.ts +184 -0
- package/{code-block/index.d.ts → types/koobiq-components-code-block.d.ts} +114 -79
- package/{content-panel/index.d.ts → types/koobiq-components-content-panel.d.ts} +81 -25
- package/{core/index.d.ts → types/koobiq-components-core.d.ts} +2827 -865
- package/{datepicker/index.d.ts → types/koobiq-components-datepicker.d.ts} +161 -116
- package/types/koobiq-components-divider.d.ts +43 -0
- package/types/koobiq-components-dl.d.ts +235 -0
- package/{dropdown/index.d.ts → types/koobiq-components-dropdown.d.ts} +245 -239
- package/types/koobiq-components-ellipsis-center.d.ts +85 -0
- package/types/koobiq-components-empty-state.d.ts +106 -0
- package/{file-upload/index.d.ts → types/koobiq-components-file-upload.d.ts} +214 -107
- package/{filter-bar/index.d.ts → types/koobiq-components-filter-bar.d.ts} +410 -495
- package/types/koobiq-components-flag.d.ts +68 -0
- package/{form-field/index.d.ts → types/koobiq-components-form-field.d.ts} +167 -191
- package/types/koobiq-components-icon.d.ts +333 -0
- package/{inline-edit/index.d.ts → types/koobiq-components-inline-edit.d.ts} +109 -46
- package/types/koobiq-components-input.d.ts +477 -0
- package/types/koobiq-components-link-deprecated.d.ts +101 -0
- package/types/koobiq-components-link.d.ts +176 -0
- package/{list/index.d.ts → types/koobiq-components-list.d.ts} +162 -99
- package/types/koobiq-components-loader-overlay.d.ts +101 -0
- package/{markdown/index.d.ts → types/koobiq-components-markdown.d.ts} +16 -24
- package/types/koobiq-components-modal.d.ts +666 -0
- package/types/koobiq-components-navbar.d.ts +569 -0
- package/types/koobiq-components-notification-center.d.ts +500 -0
- package/{overflow-items/index.d.ts → types/koobiq-components-overflow-items.d.ts} +8 -22
- package/types/koobiq-components-popover.d.ts +468 -0
- package/types/koobiq-components-progress-bar.d.ts +67 -0
- package/{progress-spinner/index.d.ts → types/koobiq-components-progress-spinner.d.ts} +33 -10
- package/types/koobiq-components-radio.d.ts +294 -0
- package/{resizer/index.d.ts → types/koobiq-components-resizer.d.ts} +37 -2
- package/{scrollbar/index.d.ts → types/koobiq-components-scrollbar-deprecated.d.ts} +18 -1
- package/types/koobiq-components-scrollbar.d.ts +154 -0
- package/types/koobiq-components-search-expandable.d.ts +164 -0
- package/{select/index.d.ts → types/koobiq-components-select.d.ts} +360 -167
- package/types/koobiq-components-sidebar.d.ts +152 -0
- package/types/koobiq-components-sidepanel.d.ts +436 -0
- package/types/koobiq-components-skeleton.d.ts +234 -0
- package/types/koobiq-components-split-button.d.ts +65 -0
- package/{splitter/index.d.ts → types/koobiq-components-splitter-deprecated.d.ts} +44 -1
- package/types/koobiq-components-splitter.d.ts +406 -0
- package/types/koobiq-components-table.d.ts +44 -0
- package/types/koobiq-components-tabs.d.ts +888 -0
- package/{tags/index.d.ts → types/koobiq-components-tags.d.ts} +249 -133
- package/types/koobiq-components-textarea.d.ts +178 -0
- package/{time-range/index.d.ts → types/koobiq-components-time-range.d.ts} +135 -62
- package/types/koobiq-components-timepicker.d.ts +223 -0
- package/types/koobiq-components-timezone.d.ts +266 -0
- package/types/koobiq-components-title.d.ts +184 -0
- package/types/koobiq-components-toast.d.ts +289 -0
- package/types/koobiq-components-toggle.d.ts +121 -0
- package/types/koobiq-components-tooltip.d.ts +610 -0
- package/types/koobiq-components-top-bar.d.ts +61 -0
- package/types/koobiq-components-tree-select.d.ts +667 -0
- package/types/koobiq-components-tree.d.ts +1290 -0
- package/types/koobiq-components-username.d.ts +340 -0
- package/username/_username-theme.scss +35 -0
- package/username/username.scss +10 -34
- package/app-switcher/index.d.ts +0 -276
- package/autocomplete/index.d.ts +0 -286
- package/button/index.d.ts +0 -153
- package/button-toggle/index.d.ts +0 -162
- package/checkbox/index.d.ts +0 -163
- package/clamped-text/index.d.ts +0 -146
- package/core/styles/_tokens.scss +0 -7
- package/core/styles/common/_clearfix.scss +0 -13
- package/core/styles/common/_popup.scss +0 -6
- package/core/styles/functions/_index.scss +0 -3
- package/core/styles/functions/_number.scss +0 -60
- package/core/styles/functions/_string.scss +0 -18
- package/core/styles/theming/scrollbar-tokens.scss +0 -25
- package/core/styles/typography/_typography-utils.scss +0 -84
- package/divider/index.d.ts +0 -20
- package/dl/index.d.ts +0 -45
- package/ellipsis-center/index.d.ts +0 -71
- package/empty-state/index.d.ts +0 -45
- package/flag/index.d.ts +0 -44
- package/icon/index.d.ts +0 -200
- package/input/index.d.ts +0 -354
- package/link/index.d.ts +0 -56
- package/loader-overlay/index.d.ts +0 -57
- package/modal/index.d.ts +0 -339
- package/navbar/index.d.ts +0 -372
- package/notification-center/index.d.ts +0 -323
- package/popover/index.d.ts +0 -182
- package/prebuilt-themes/dark-theme.css +0 -1
- package/prebuilt-themes/light-theme.css +0 -1
- package/progress-bar/index.d.ts +0 -31
- package/radio/index.d.ts +0 -203
- package/search-expandable/index.d.ts +0 -101
- package/sidebar/index.d.ts +0 -94
- package/sidepanel/index.d.ts +0 -272
- package/skeleton/index.d.ts +0 -26
- package/split-button/index.d.ts +0 -46
- package/table/index.d.ts +0 -25
- package/tabs/index.d.ts +0 -677
- package/textarea/index.d.ts +0 -138
- package/timepicker/index.d.ts +0 -197
- package/timezone/index.d.ts +0 -125
- package/title/index.d.ts +0 -139
- package/toast/index.d.ts +0 -178
- package/toggle/index.d.ts +0 -104
- package/tooltip/index.d.ts +0 -335
- package/top-bar/index.d.ts +0 -33
- package/tree/index.d.ts +0 -802
- package/tree-select/index.d.ts +0 -475
- package/username/index.d.ts +0 -194
- /package/{dynamic-translation/index.d.ts → types/koobiq-components-dynamic-translation.d.ts} +0 -0
- /package/{index.d.ts → types/koobiq-components.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-radio.mjs","sources":["../../../packages/components/radio/radio.component.ts","../../../packages/components/radio/radio.component.html","../../../packages/components/radio/radio.module.ts","../../../packages/components/radio/koobiq-components-radio.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport { UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n Input,\n input,\n numberAttribute,\n OnDestroy,\n OnInit,\n output,\n QueryList,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KbqColorDirective } from '@koobiq/components/core';\n\n// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\n\n/** Change event object emitted by KbqRadio. */\nexport class KbqRadioChange {\n constructor(\n /** The KbqRadioButton that emits the change event. */\n public source: KbqRadioButton,\n /** The value of the KbqRadioButton. */\n public value: any\n ) {}\n}\n\n/**\n * Provider Expression that allows kbq-radio-group to register as a ControlValueAccessor. This\n * allows it to support [(ngModel)] and ngControl.\n * @docs-private\n */\nexport const KBQ_RADIO_GROUP_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KbqRadioGroup),\n multi: true\n};\n\n@Directive({\n selector: 'kbq-radio-group',\n providers: [KBQ_RADIO_GROUP_CONTROL_VALUE_ACCESSOR],\n host: {\n role: 'radiogroup',\n class: 'kbq-radio-group',\n '[class.kbq-radio-group_normal]': '!big()',\n '[class.kbq-radio-group_big]': 'big()'\n },\n exportAs: 'kbqRadioGroup'\n})\nexport class KbqRadioGroup implements AfterContentInit, ControlValueAccessor {\n private readonly changeDetector = inject(ChangeDetectorRef);\n\n readonly big = input<boolean>(false);\n\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get name(): string {\n return this._name;\n }\n\n set name(value: string) {\n this._name = value;\n this.updateRadioButtonNames();\n }\n\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get labelPosition(): 'before' | 'after' {\n return this._labelPosition;\n }\n\n set labelPosition(v) {\n this._labelPosition = v === 'before' ? 'before' : 'after';\n this.markRadiosForCheck();\n }\n\n /** Value of the radio button. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get value(): any {\n return this._value;\n }\n\n set value(newValue: any) {\n if (this._value !== newValue) {\n // Set this before proceeding to ensure no circular loop occurs with selection.\n this._value = newValue;\n\n this.updateSelectedRadioFromValue();\n this.checkSelectedRadioButton();\n }\n }\n\n /** Whether the radio button is selected. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get selected() {\n return this._selected;\n }\n\n set selected(selected: KbqRadioButton | null) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n this.checkSelectedRadioButton();\n }\n\n /** Whether the radio group is disabled */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = value;\n this.markRadiosForCheck();\n }\n\n private _disabled: boolean = false;\n\n /** Whether the radio group is required */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = value;\n this.markRadiosForCheck();\n }\n\n /** Whether the radio group is required. */\n private _required: boolean = false;\n\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type-\"radio\">`).\n */\n readonly change = output<KbqRadioChange>();\n\n /** Child radio buttons. */\n @ContentChildren(forwardRef(() => KbqRadioButton), { descendants: true })\n radios: QueryList<KbqRadioButton>;\n\n /**\n * Selected value for group. Should equal the value of the selected radio button if there *is*\n * a corresponding radio button with a matching value. If there is *not* such a corresponding\n * radio button, this value persists to be applied in case a new radio button is added with a\n * matching value.\n */\n private _value: any = null;\n\n /** The HTML name attribute applied to radio buttons in this group. */\n private _name: string = `kbq-radio-group-${nextUniqueId++}`;\n\n /** The currently selected radio button. Should match value. */\n private _selected: KbqRadioButton | null = null;\n\n /** Whether the `value` has been set to its initial value. */\n private isInitialized: boolean = false;\n\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n private _labelPosition: 'before' | 'after' = 'after';\n\n /** The method to be called in order to update ngModel */\n controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private\n */\n onTouched: () => any = () => {};\n\n checkSelectedRadioButton() {\n if (this._selected && !this._selected.checked) {\n this._selected.checked = true;\n }\n }\n\n /**\n * Initialize properties once content children are available.\n * This allows us to propagate relevant attributes to associated buttons.\n */\n ngAfterContentInit() {\n // Mark this component as initialized in AfterContentInit because the initial value can\n // possibly be set by NgModel on KbqRadioGroup, and it is possible that the OnInit of the\n // NgModel occurs *after* the OnInit of the KbqRadioGroup.\n this.isInitialized = true;\n }\n\n /**\n * Mark this group as being \"touched\" (for ngModel). Meant to be called by the contained\n * radio buttons upon their blur.\n */\n touch() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n /** Dispatch change event with current selection and group value. */\n emitChangeEvent(): void {\n if (this.isInitialized) {\n this.change.emit(new KbqRadioChange(this._selected!, this._value));\n }\n }\n\n markRadiosForCheck() {\n if (this.radios) {\n this.radios.forEach((radio) => radio.markForCheck());\n }\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n */\n writeValue(value: any) {\n this.value = value;\n this.changeDetector.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: (value: any) => void) {\n this.controlValueAccessorChangeFn = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.changeDetector.markForCheck();\n }\n\n private updateRadioButtonNames(): void {\n this.radios?.forEach((radio) => (radio.name = this.name));\n }\n\n /** Updates the `selected` radio button from the internal _value state. */\n private updateSelectedRadioFromValue(): void {\n // If the value already matches the selected radio, do nothing.\n const isAlreadySelected = this._selected !== null && this._selected.value === this._value;\n\n if (this.radios != null && !isAlreadySelected) {\n this._selected = null;\n\n this.radios.forEach((radio) => {\n radio.checked = this.value === radio.value;\n\n if (radio.checked) {\n this._selected = radio;\n }\n });\n }\n }\n}\n\n@Component({\n selector: 'kbq-radio-button',\n templateUrl: 'radio.component.html',\n styleUrls: ['radio.scss', 'radio-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-radio-button',\n '[attr.id]': 'id',\n '[class.kbq-radio-button_big]': 'radioGroup?.big()',\n '[class.kbq-selected]': 'checked',\n '[class.kbq-disabled]': 'disabled'\n },\n exportAs: 'kbqRadioButton'\n})\nexport class KbqRadioButton extends KbqColorDirective implements OnInit, AfterViewInit, OnDestroy {\n private readonly changeDetector = inject(ChangeDetectorRef);\n private focusMonitor = inject(FocusMonitor);\n private readonly radioDispatcher = inject(UniqueSelectionDispatcher);\n\n /** Whether this radio button is checked. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get checked(): boolean {\n return this._checked;\n }\n\n set checked(value: boolean) {\n if (this._checked !== value) {\n this._checked = value;\n\n if (value && this.radioGroup && this.radioGroup.value !== this.value) {\n this.radioGroup.selected = this;\n } else if (!value && this.radioGroup && this.radioGroup.value === this.value) {\n // When unchecking the selected radio button, update the selected radio\n // property on the group.\n this.radioGroup.selected = null;\n }\n\n if (value) {\n // Notify all radio buttons with the same name to un-check.\n this.radioDispatcher.notify(this.id, this.name);\n }\n\n this.changeDetector.markForCheck();\n }\n }\n\n /** The value of this radio button. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get value(): any {\n return this._value;\n }\n\n set value(value: any) {\n if (this._value !== value) {\n this._value = value;\n\n if (this.radioGroup != null) {\n if (!this.checked) {\n // Update checked when the value changed to match the radio group's value\n this.checked = this.radioGroup.value === value;\n }\n\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n }\n }\n }\n\n /** Whether the radio button is disabled. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled || (this.radioGroup != null && this.radioGroup.disabled);\n }\n\n set disabled(value: boolean) {\n if (this._disabled !== value) {\n this._disabled = value;\n this.changeDetector.markForCheck();\n }\n }\n\n private _disabled: boolean;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: numberAttribute })\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n\n set tabIndex(value: number) {\n this._tabIndex = value;\n }\n\n private _tabIndex = 0;\n\n /** Whether the radio button is required. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get required(): boolean {\n return this._required || (this.radioGroup && this.radioGroup.required);\n }\n\n set required(value: boolean) {\n this._required = value;\n }\n\n /** Whether this radio is required. */\n private _required: boolean;\n\n /** Whether the label should appear after or before the radio button. Defaults to 'after' */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get labelPosition(): 'before' | 'after' {\n return this._labelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'after';\n }\n /** @docs-private */\n set labelPosition(value) {\n this._labelPosition = value;\n }\n\n /** Analog to HTML 'name' attribute used to group radios for unique selection. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() name: string;\n\n /** The native `<input type=radio>` element */\n readonly inputElement = viewChild.required<ElementRef>('input');\n\n /**\n * Event emitted when the checked state of this radio button changes.\n * Change events are only emitted when the value changes due to user interaction with\n * the radio button (the same behavior as `<input type-\"radio\">`).\n */\n\n readonly change = output<KbqRadioChange>();\n\n /** The parent radio group. May or may not be present. */\n radioGroup: KbqRadioGroup;\n\n readonly isFocused = input<boolean>(false);\n\n /** The unique ID for the radio button. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() id: string;\n\n /** ID of the native input element inside `<kbq-radio-button>` */\n get inputId(): string {\n return `${this.id || this.uniqueId}-input`;\n }\n\n private _labelPosition: 'before' | 'after';\n\n private readonly uniqueId: string = `kbq-radio-${++nextUniqueId}`;\n\n /** Whether this radio is checked. */\n private _checked: boolean = false;\n\n /** Value assigned to this radio. */\n private _value: any = null;\n\n constructor() {\n const radioGroup = inject(KbqRadioGroup, { optional: true })!;\n\n super();\n const radioDispatcher = this.radioDispatcher;\n\n this.id = this.uniqueId;\n\n this.radioGroup = radioGroup;\n\n this.removeUniqueSelectionListener = radioDispatcher.listen((id: string, name: string) => {\n if (id !== this.id && name === this.name) {\n this.checked = false;\n }\n });\n }\n\n ngOnInit() {\n if (this.radioGroup) {\n // If the radio is inside a radio group, determine if it should be checked\n this.checked = this.radioGroup.value === this._value;\n // Copy name from parent radio group\n this.name = this.radioGroup.name;\n }\n }\n\n ngAfterViewInit() {\n this.focusMonitor.monitor(this.elementRef, true).subscribe((focusOrigin) => {\n if (!focusOrigin && this.radioGroup) {\n this.radioGroup.touch();\n }\n });\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef);\n this.removeUniqueSelectionListener();\n }\n\n /** Focuses the radio button. */\n focus(): void {\n this.inputElement().nativeElement.focus();\n }\n\n /**\n * Marks the radio button as needing checking for change detection.\n * This method is exposed because the parent radio group will directly\n * update bound properties of the radio button.\n */\n markForCheck() {\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\n // update radio button's status\n this.changeDetector.markForCheck();\n }\n\n onInputClick(event: Event) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `radio-button` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling & forcing skip event from closing actions for the second event will solve that issue.\n event.stopPropagation();\n (event as Event & { kbqPopoverPreventHide: boolean }).kbqPopoverPreventHide = true;\n }\n\n onInputChange(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\n\n this.checked = true;\n this.emitChangeEvent();\n\n if (this.radioGroup) {\n this.radioGroup.controlValueAccessorChangeFn(this.value);\n this.radioGroup.touch();\n\n if (groupValueChanged) {\n this.radioGroup.emitChangeEvent();\n }\n }\n }\n\n /** Unregister function for _radioDispatcher */\n private readonly removeUniqueSelectionListener: () => void = () => {};\n\n /** Dispatch change event with current value. */\n private emitChangeEvent(): void {\n this.change.emit(new KbqRadioChange(this, this._value));\n }\n}\n","<label #label class=\"kbq-radio-label\" [attr.for]=\"inputId\">\n <input\n #input\n type=\"radio\"\n class=\"kbq-radio-input cdk-visually-hidden\"\n [attr.name]=\"name\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInputChange($event)\"\n (click)=\"onInputClick($event)\"\n />\n\n <div class=\"kbq-radio-label-content\" [class.kbq-radio-label-before]=\"labelPosition === 'before'\">\n <div class=\"kbq-radio-button__outer-circle\">\n <div class=\"kbq-radio-button__inner-circle\"></div>\n </div>\n\n <div class=\"kbq-radio__text-container\">\n <span class=\"kbq-radio__text\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n </div>\n</label>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { KbqRadioButton, KbqRadioGroup } from './radio.component';\n\n@NgModule({\n imports: [A11yModule, KbqRadioGroup, KbqRadioButton],\n exports: [KbqRadioGroup, KbqRadioButton]\n})\nexport class KbqRadioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AA2BA;AACA,IAAI,YAAY,GAAG,CAAC;AAEpB;MACa,cAAc,CAAA;AACvB,IAAA,WAAA;;IAEW,MAAsB;;IAEtB,KAAU,EAAA;QAFV,IAAA,CAAA,MAAM,GAAN,MAAM;QAEN,IAAA,CAAA,KAAK,GAAL,KAAK;IACb;AACN;AAED;;;;AAIG;AACI,MAAM,sCAAsC,GAAQ;AACvD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,aAAa,CAAC;AAC5C,IAAA,KAAK,EAAE;;MAcE,aAAa,CAAA;AAX1B,IAAA,WAAA,GAAA;AAYqB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAElD,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAU,KAAK,+CAAC;QAyE5B,IAAA,CAAA,SAAS,GAAY,KAAK;;QAgB1B,IAAA,CAAA,SAAS,GAAY,KAAK;AAElC;;;;AAIG;QACM,IAAA,CAAA,MAAM,GAAG,MAAM,EAAkB;AAM1C;;;;;AAKG;QACK,IAAA,CAAA,MAAM,GAAQ,IAAI;;AAGlB,QAAA,IAAA,CAAA,KAAK,GAAW,CAAA,gBAAA,EAAmB,YAAY,EAAE,EAAE;;QAGnD,IAAA,CAAA,SAAS,GAA0B,IAAI;;QAGvC,IAAA,CAAA,aAAa,GAAY,KAAK;;QAG9B,IAAA,CAAA,cAAc,GAAuB,OAAO;;AAGpD,QAAA,IAAA,CAAA,4BAA4B,GAAyB,MAAK,EAAE,CAAC;AAE7D;;;AAGG;AACH,QAAA,IAAA,CAAA,SAAS,GAAc,MAAK,EAAE,CAAC;AAkGlC,IAAA;;;;AA9NG,IAAA,IACI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAI,IAAI,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,IAAI,CAAC,sBAAsB,EAAE;IACjC;;;;AAKA,IAAA,IACI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,cAAc;IAC9B;IAEA,IAAI,aAAa,CAAC,CAAC,EAAA;AACf,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,KAAK,QAAQ,GAAG,QAAQ,GAAG,OAAO;QACzD,IAAI,CAAC,kBAAkB,EAAE;IAC7B;;;;AAKA,IAAA,IACI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,IAAI,KAAK,CAAC,QAAa,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;;AAE1B,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;YAEtB,IAAI,CAAC,4BAA4B,EAAE;YACnC,IAAI,CAAC,wBAAwB,EAAE;QACnC;IACJ;;;;AAKA,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAI,QAAQ,CAAC,QAA+B,EAAA;AACxC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI;QAC7C,IAAI,CAAC,wBAAwB,EAAE;IACnC;;;;AAKA,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,kBAAkB,EAAE;IAC7B;;;;AAOA,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,kBAAkB,EAAE;IAC7B;IA6CA,wBAAwB,GAAA;QACpB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC3C,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI;QACjC;IACJ;AAEA;;;AAGG;IACH,kBAAkB,GAAA;;;;AAId,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;IAC7B;AAEA;;;AAGG;IACH,KAAK,GAAA;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,EAAE;QACpB;IACJ;;IAGA,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,SAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACtE;IACJ;IAEA,kBAAkB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC;QACxD;IACJ;AAEA;;AAEG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;IACtC;AAEA;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACrC,QAAA,IAAI,CAAC,4BAA4B,GAAG,EAAE;IAC1C;AAEA;;;;AAIG;AACH,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACvB;AAEA;;;AAGG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;IACtC;IAEQ,sBAAsB,GAAA;QAC1B,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D;;IAGQ,4BAA4B,GAAA;;AAEhC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM;QAEzF,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC3C,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;YAErB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBAC1B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAE1C,gBAAA,IAAI,KAAK,CAAC,OAAO,EAAE;AACf,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;gBAC1B;AACJ,YAAA,CAAC,CAAC;QACN;IACJ;kIArOS,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,iBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAkEF,gBAAgB,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAehB,gBAAgB,mOA1FzB,CAAC,sCAAsC,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MA+GjB,cAAc,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAtGvC,aAAa,EAAA,UAAA,EAAA,CAAA;kBAXzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;oBAC3B,SAAS,EAAE,CAAC,sCAAsC,CAAC;AACnD,oBAAA,IAAI,EAAE;AACF,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,gCAAgC,EAAE,QAAQ;AAC1C,wBAAA,6BAA6B,EAAE;AAClC,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACb,iBAAA;;sBASI;;sBAaA;;sBAaA;;sBAkBA;;sBAcA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAerC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAqBrC,eAAe;uBAAC,UAAU,CAAC,MAAM,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;AAiJtE,MAAO,cAAe,SAAQ,iBAAiB,CAAA;;;;AAQjD,IAAA,IACI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,IAAI,OAAO,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AAErB,YAAA,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AAClE,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI;YACnC;AAAO,iBAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;;;AAG1E,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI;YACnC;YAEA,IAAI,KAAK,EAAE;;AAEP,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;YACnD;AAEA,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;QACtC;IACJ;;;;AAKA,IAAA,IACI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,IAAI,KAAK,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AAEnB,YAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AACzB,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;;oBAEf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,KAAK;gBAClD;AAEA,gBAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,oBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI;gBACnC;YACJ;QACJ;IACJ;;;;AAKA,IAAA,IACI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IAClF;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;QACtC;IACJ;;;AAMA,IAAA,IACI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS;IAC9C;IAEA,IAAI,QAAQ,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IAC1B;;;;AAOA,IAAA,IACI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IAC1E;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IAC1B;;;;AAQA,IAAA,IACI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,OAAO;IAC/F;;IAEA,IAAI,aAAa,CAAC,KAAK,EAAA;AACnB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC/B;;AA6BA,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,CAAA,EAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAA,MAAA,CAAQ;IAC9C;AAYA,IAAA,WAAA,GAAA;AACI,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE;AAE7D,QAAA,KAAK,EAAE;AA/JM,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACnD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAC1B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,yBAAyB,CAAC;QAoF5D,IAAA,CAAA,SAAS,GAAG,CAAC;;AAmCZ,QAAA,IAAA,CAAA,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAa,OAAO,CAAC;AAE/D;;;;AAIG;QAEM,IAAA,CAAA,MAAM,GAAG,MAAM,EAAkB;AAKjC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AAczB,QAAA,IAAA,CAAA,QAAQ,GAAW,CAAA,UAAA,EAAa,EAAE,YAAY,EAAE;;QAGzD,IAAA,CAAA,QAAQ,GAAY,KAAK;;QAGzB,IAAA,CAAA,MAAM,GAAQ,IAAI;;AA2FT,QAAA,IAAA,CAAA,6BAA6B,GAAe,MAAK,EAAE,CAAC;AArFjE,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe;AAE5C,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ;AAEvB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAE5B,QAAA,IAAI,CAAC,6BAA6B,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,EAAU,EAAE,IAAY,KAAI;AACrF,YAAA,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AACtC,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACxB;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;;AAEjB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM;;YAEpD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI;QACpC;IACJ;IAEA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;AACvE,YAAA,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YAC3B;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;QACjD,IAAI,CAAC,6BAA6B,EAAE;IACxC;;IAGA,KAAK,GAAA;QACD,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;IAC7C;AAEA;;;;AAIG;IACH,YAAY,GAAA;;;AAGR,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;IACtC;AAEA,IAAA,YAAY,CAAC,KAAY,EAAA;;;;;;;;QAQrB,KAAK,CAAC,eAAe,EAAE;AACtB,QAAA,KAAoD,CAAC,qBAAqB,GAAG,IAAI;IACtF;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;;;;QAItB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK;AAEjF,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,eAAe,EAAE;AAEtB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC;AACxD,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YAEvB,IAAI,iBAAiB,EAAE;AACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;YACrC;QACJ;IACJ;;IAMQ,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D;kIA3PS,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,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAQH,gBAAgB,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAsDhB,gBAAgB,8HAgBhB,eAAe,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAcf,gBAAgB,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjZxC,66BA6BA,EAAA,MAAA,EAAA,CAAA,yiYAAA,EAAA,+jLAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDwRa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAf1B,SAAS;+BACI,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACF,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,8BAA8B,EAAE,mBAAmB;AACnD,wBAAA,sBAAsB,EAAE,SAAS;AACjC,wBAAA,sBAAsB,EAAE;AAC3B,qBAAA,EAAA,QAAA,EACS,gBAAgB,EAAA,QAAA,EAAA,66BAAA,EAAA,MAAA,EAAA,CAAA,yiYAAA,EAAA,+jLAAA,CAAA,EAAA;;sBAUzB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBA6BrC;;sBAyBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAgBrC,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBAcpC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAerC;;sBAYA;4DAGsD,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA;sBAkB7D;;;MEzbQ,cAAc,CAAA;kIAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mIAAd,cAAc,EAAA,OAAA,EAAA,CAHb,UAAU,EAAE,aAAa,EAAE,cAAc,CAAA,EAAA,OAAA,EAAA,CACzC,aAAa,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;AAE9B,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,cAAc,YAHb,UAAU,CAAA,EAAA,CAAA,CAAA;;4FAGX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,cAAc,CAAC;AACpD,oBAAA,OAAO,EAAE,CAAC,aAAa,EAAE,cAAc;AAC1C,iBAAA;;;ACPD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-radio.mjs","sources":["../../../packages/components/radio/radio.component.ts","../../../packages/components/radio/radio.component.html","../../../packages/components/radio/radio.module.ts","../../../packages/components/radio/koobiq-components-radio.ts"],"sourcesContent":["import { _IdGenerator, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChild,\n contentChildren,\n DoCheck,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n Provider,\n QueryList,\n Renderer2,\n signal,\n SimpleChanges,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, FormGroupDirective, NG_VALUE_ACCESSOR, NgControl, NgForm } from '@angular/forms';\nimport {\n CanUpdateErrorState,\n ErrorStateMatcher,\n KbqColorDirective,\n KbqErrorStateTracker,\n kbqOptionalNumberAttribute,\n kbqQueryListFrom\n} from '@koobiq/components/core';\nimport { KbqError, KbqHint } from '@koobiq/components/form-field';\n\n/** Change event object emitted by KbqRadio. */\nexport class KbqRadioChange {\n constructor(\n /** The KbqRadioButton that emits the change event. */\n public source: KbqRadioButton,\n /** The value of the KbqRadioButton. */\n public value: any\n ) {}\n}\n\n/**\n * Provider Expression that allows kbq-radio-group to register as a ControlValueAccessor. This\n * allows it to support [(ngModel)] and ngControl.\n *\n * @docs-private\n */\nexport const KBQ_RADIO_GROUP_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KbqRadioGroup),\n multi: true\n};\n\n/**\n * Selection group for `KbqRadioButton`.\n *\n * The host is a `radiogroup`, which is not a name-from-content role, so it reaches assistive\n * technology unnamed unless the consumer names it. Name it with a plain `aria-label` /\n * `aria-labelledby` attribute pointing at the visible group label: the host is the very element the\n * consumer writes, so an input aliased to the same name would only write back what is already there —\n * and would wipe an `[attr.aria-label]` binding, which never reaches the input.\n *\n * To show a validation error, bind the group to a form control and put the error text in a `kbq-error` inside the\n * group. A `kbq-hint` put inside the group is shown under the options, below the error.\n */\n@Component({\n selector: 'kbq-radio-group',\n // Styled by `radio.scss`, which the buttons carry: the error and the hints of a group stand under its buttons.\n template: `\n <ng-content />\n\n <!--\n Under the options, as in a form field: the error first, rendered only in the error state so that\n assistive technology announces the alert as it appears, then the hints of the group.\n -->\n @if (showError() || hints().length) {\n <div class=\"kbq-radio-group__subscript\">\n @if (showError()) {\n <div class=\"kbq-radio-group__error\" [id]=\"errorId\">\n <ng-content select=\"kbq-error\" />\n </div>\n }\n\n <ng-content select=\"kbq-hint\" />\n </div>\n }\n `,\n providers: [KBQ_RADIO_GROUP_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n role: 'radiogroup',\n class: 'kbq-radio-group',\n '[class.kbq-radio-group_normal]': '!big()',\n '[class.kbq-radio-group_big]': 'big()',\n '[class.kbq-radio-group_label-before]': \"labelPosition() === 'before'\",\n '[class.kbq-invalid]': 'errorState()',\n '[attr.aria-required]': \"required() ? 'true' : null\",\n // A signal of its own: the color class binding reads `color` first, and the host bindings of every group in a\n // view run in that view's reactive consumer, where a signal read again after others costs a scan of all it has\n // read so far.\n '[attr.aria-invalid]': 'ariaInvalid()'\n },\n exportAs: 'kbqRadioGroup'\n})\nexport class KbqRadioGroup\n extends KbqColorDirective\n implements\n AfterContentChecked,\n OnChanges,\n OnInit,\n DoCheck,\n AfterContentInit,\n ControlValueAccessor,\n CanUpdateErrorState\n{\n private readonly injector = inject(Injector);\n\n // The control is resolved in `ngOnInit`: `NgControl` injects the group as its value accessor, so injecting it\n // back from the constructor is a cyclic dependency.\n private readonly errorStateTracker = new KbqErrorStateTracker(\n inject(ErrorStateMatcher),\n null,\n inject(FormGroupDirective, { optional: true }),\n inject(NgForm, { optional: true })\n );\n\n /** Whether the radio group is in an error state. */\n readonly errorState = this.errorStateTracker.errorState;\n\n /** An object used to control when the error state is shown. */\n readonly errorStateMatcher = input<ErrorStateMatcher>();\n\n readonly big = input<boolean>(false);\n\n /**\n * Name of the radio button group. All radio buttons inside this group will use this name,\n * unless they were given one of their own.\n */\n readonly name = input<string>(inject(_IdGenerator).getId('kbq-radio-group-'));\n\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n readonly labelPosition = input<'before' | 'after', 'before' | 'after'>('after', {\n transform: (value) => (value === 'before' ? 'before' : 'after')\n });\n\n /** Value of the radio button. */\n // `value`, `selected` and `disabled` are accessors over signals, fed by aliased inputs, because code outside the\n // template writes them too: `writeValue` and `setDisabledState` the first and last, the buttons their selection\n // back into `selected`. `disabled` is no `model()` because it coerces with `booleanAttribute`, which a `model()`\n // cannot carry; `value` is none because `writeValue` has to resolve the checked button synchronously before the\n // first render, and a `model()` would also publish a `valueChange` output that duplicates `change`.\n get value(): any {\n return this._value();\n }\n\n set value(newValue: any) {\n // Untracked, as the other setters and methods that select: called from a consumer's `effect()`, the selection\n // read on the way — the group's and its buttons' — would make the effect run again whenever the user picks\n // another button.\n untracked(() => {\n if (this._value() !== newValue) {\n // Set this before proceeding to ensure no circular loop occurs with selection.\n this._value.set(newValue);\n\n this.updateSelectedRadioFromValue();\n this.checkSelectedRadioButton();\n }\n });\n }\n\n /** Whether the radio button is selected. */\n get selected() {\n return this._selected();\n }\n\n set selected(selected: KbqRadioButton | null) {\n untracked(() => {\n this._selected.set(selected);\n this.value = selected ? selected.value : null;\n this.checkSelectedRadioButton();\n });\n }\n\n /** Whether the radio group is disabled */\n get disabled(): boolean {\n return this._disabled();\n }\n\n set disabled(value: boolean) {\n this._disabled.set(value);\n }\n\n private readonly _disabled = signal(false);\n\n /** @docs-private */\n readonly valueInput = input<NonNullable<unknown> | null | undefined>(undefined, { alias: 'value' });\n\n /** @docs-private */\n readonly selectedInput = input<KbqRadioButton | null | undefined>(undefined, { alias: 'selected' });\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, a bound `undefined` included;\n // unbound, it leaves what code wrote.\n if (changes['valueInput']) {\n this.value = this.valueInput();\n }\n\n if (changes['selectedInput']) {\n this.selected = this.selectedInput() ?? null;\n }\n\n if (changes['disabledInput']) {\n const disabled = this.disabledInput();\n\n if (disabled !== undefined) this.disabled = disabled;\n }\n }\n\n /** Whether the radio group is required */\n readonly required = input(false, { transform: booleanAttribute });\n\n /**\n * Value of `aria-invalid`: set whenever the group is painted as invalid.\n *\n * @internal\n */\n protected readonly ariaInvalid = computed(() => (this.errorState() || this.color() === 'error' ? 'true' : null));\n\n /** Error text projected into the group. */\n private readonly error = contentChild(KbqError, { descendants: false });\n\n /**\n * Whether the projected `kbq-error` is shown. Without one, nothing is rendered under the options.\n *\n * @internal\n */\n protected readonly showError = computed(() => this.errorState() && !!this.error());\n\n /**\n * Id of the element wrapping the projected `kbq-error`.\n *\n * @internal\n */\n protected readonly errorId = inject(_IdGenerator).getId('kbq-radio-group-error-');\n\n /**\n * Hints of the group itself, shown under the options. The hints of the buttons are their own.\n *\n * @internal\n */\n protected readonly hints = contentChildren(KbqHint, { descendants: false });\n\n /** Ids the group last added to `aria-describedby` of the host, so the consumer's own survive an update. */\n private ownDescribedByIds: string[] = [];\n\n private readonly renderer = inject(Renderer2);\n private readonly isBrowser = inject(Platform).isBrowser;\n\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type-\"radio\">`).\n */\n readonly change = output<KbqRadioChange>();\n\n private readonly radiosQuery = contentChildren<KbqRadioButton>(\n forwardRef(() => KbqRadioButton),\n { descendants: true }\n );\n private readonly radiosList = kbqQueryListFrom(this.radiosQuery);\n\n /** Child radio buttons. */\n get radios(): QueryList<KbqRadioButton> {\n return this.radiosList();\n }\n\n /**\n * Selected value for group. Should equal the value of the selected radio button if there *is*\n * a corresponding radio button with a matching value. If there is *not* such a corresponding\n * radio button, this value persists to be applied in case a new radio button is added with a\n * matching value.\n */\n private readonly _value = signal<any>(null);\n\n /** The currently selected radio button. Should match value. */\n private readonly _selected = signal<KbqRadioButton | null>(null);\n\n /** Whether the `value` has been set to its initial value. */\n private isInitialized: boolean = false;\n\n /**\n * Called when the value changes. Needed to properly implement `ControlValueAccessor`.\n *\n * @docs-private\n */\n controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n *\n * @docs-private\n */\n onTouched: () => any = () => {};\n\n checkSelectedRadioButton() {\n untracked(() => {\n const selected = this._selected();\n\n if (selected && !selected.checked) {\n selected.checked = true;\n }\n });\n }\n\n constructor() {\n super();\n\n // Written by hand rather than bound: the host is the element the consumer writes, and a host binding would\n // overwrite an `[attr.aria-describedby]` the consumer binds on it. Not on the server: after hydration the ids\n // it wrote would be read back as the consumer's own.\n effect(() => {\n if (!this.isBrowser) return;\n\n const ids = [...(this.showError() ? [this.errorId] : []), ...this.hints().map((hint) => hint.id())];\n\n untracked(() => this.setDescribedByIds(ids));\n });\n }\n\n ngOnInit(): void {\n this.errorStateTracker.ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\n }\n\n ngDoCheck(): void {\n // Re-evaluated on every check: a submit of the parent form notifies nothing a signal could follow.\n if (this.errorStateTracker.ngControl) this.updateErrorState();\n }\n\n /** Updates the error state based on the error state matcher. */\n updateErrorState(): void {\n this.errorStateTracker.errorStateMatcher = this.errorStateMatcher();\n this.errorStateTracker.updateErrorState();\n }\n\n /** Writes the error and the hints of the group to `aria-describedby` of the host, after the consumer's own ids. */\n private setDescribedByIds(ids: string[]): void {\n const element = this.elementRef.nativeElement;\n const consumerIds = (element.getAttribute('aria-describedby') ?? '')\n .split(/\\s+/)\n .filter((id) => id && !this.ownDescribedByIds.includes(id));\n const next = [...consumerIds, ...ids];\n\n this.ownDescribedByIds = ids;\n\n if (next.length) {\n this.renderer.setAttribute(element, 'aria-describedby', next.join(' '));\n } else {\n this.renderer.removeAttribute(element, 'aria-describedby');\n }\n }\n\n ngAfterContentInit() {\n // Mark this component as initialized in AfterContentInit because the initial value can\n // possibly be set by NgModel on KbqRadioGroup, and it is possible that the OnInit of the\n // NgModel occurs *after* the OnInit of the KbqRadioGroup.\n this.isInitialized = true;\n }\n\n /**\n * Initialize properties once content children are available.\n * This allows us to propagate relevant attributes to associated buttons.\n */\n ngAfterContentChecked(): void {\n // Syncs the list here so `changes` emits after the projected items are bound and before the host bindings.\n this.radiosList();\n }\n\n /**\n * Moves focus to the checked radio button, or to the first enabled one when nothing is checked —\n * the same rule the browser follows when the group is reached with <kbd>Tab</kbd>.\n */\n focus(origin: FocusOrigin = 'program'): void {\n untracked(() => {\n const target = this._selected() ?? this.radios?.find((radio) => !radio.disabled);\n\n target?.focus(origin);\n });\n }\n\n /**\n * Mark this group as being \"touched\" (for ngModel). Meant to be called by the contained\n * radio buttons upon their blur.\n */\n touch() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n /** Dispatch change event with current selection and group value. */\n emitChangeEvent(): void {\n if (this.isInitialized) {\n this.change.emit(new KbqRadioChange(untracked(this._selected)!, untracked(this._value)));\n }\n }\n\n /**\n * Marks every radio button of the group for a change-detection check.\n *\n * Kept for back-compatibility. A button derives `checked` and `disabled` from signals, its own and its\n * group's, so it re-renders on its own and nothing in the library calls this any more.\n */\n markRadiosForCheck() {\n // Kept at the DS-2196 review, like `KbqButtonToggle.markForCheck()`, which the migration guide promises stays.\n if (this.radios) {\n this.radios.forEach((radio) => radio.markForCheck());\n }\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n */\n writeValue(value: any) {\n this.value = value;\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n *\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: (value: any) => void) {\n this.controlValueAccessorChangeFn = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n *\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n *\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /** Updates the `selected` radio button from the internal _value state. */\n private updateSelectedRadioFromValue(): void {\n // If the value already matches the selected radio, do nothing.\n const selected = this._selected();\n const isAlreadySelected = selected !== null && selected.value === this._value();\n\n // Before the content is initialized the buttons are not bound yet; each one reads the group value itself.\n if (this.isInitialized && !isAlreadySelected) {\n this._selected.set(null);\n\n this.radios.forEach((radio) => {\n radio.checked = this.value === radio.value;\n\n if (radio.checked) {\n this._selected.set(radio);\n }\n });\n }\n }\n}\n\n@Component({\n selector: 'kbq-radio-button',\n templateUrl: 'radio.component.html',\n styleUrls: ['radio.scss', 'radio-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-radio-button',\n '[attr.id]': 'id()',\n // The group's `big` through a signal of the button's own: the group's host bindings read `big`, and they run in\n // the same reactive consumer, where a signal read again after others costs a scan of all it has read so far.\n '[class.kbq-radio-button_big]': 'big()',\n '[class.kbq-selected]': 'checked',\n '[class.kbq-disabled]': 'disabled'\n },\n exportAs: 'kbqRadioButton'\n})\nexport class KbqRadioButton extends KbqColorDirective implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n private readonly changeDetector = inject(ChangeDetectorRef);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly radioDispatcher = inject(UniqueSelectionDispatcher);\n\n /** Whether this radio button is checked. */\n get checked(): boolean {\n return this._checked();\n }\n\n set checked(value: boolean) {\n // Untracked, as the `value` setter: called from a consumer's `effect()`, the selection read on the way — the\n // button's, its group's and its siblings' — would make the effect run again whenever the user picks another\n // button.\n untracked(() => {\n if (this._checked() !== value) {\n this._checked.set(value);\n\n if (value && this.radioGroup && this.radioGroup.value !== this.value) {\n this.radioGroup.selected = this;\n } else if (!value && this.radioGroup && this.radioGroup.value === this.value) {\n // When unchecking the selected radio button, update the selected radio\n // property on the group.\n this.radioGroup.selected = null;\n }\n\n if (value) {\n // Notify all radio buttons with the same name to un-check.\n this.radioDispatcher.notify(this.id(), this.name);\n }\n }\n });\n }\n\n /** The value of this radio button. */\n get value(): any {\n return this._value();\n }\n\n set value(value: any) {\n untracked(() => {\n if (this._value() !== value) {\n this._value.set(value);\n\n if (this.radioGroup) {\n if (!this.checked) {\n // Update checked when the value changed to match the radio group's value\n this.checked = this.radioGroup.value === value;\n }\n\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n }\n }\n });\n }\n\n /** Whether the radio button is disabled. A button inside a disabled group is disabled as well. */\n get disabled(): boolean {\n return this._disabled() || !!this.radioGroup?.disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled.set(value);\n }\n\n private readonly _disabled = signal(false);\n\n /** Tabindex of the native input. A disabled button is taken out of the tab order. */\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex();\n }\n\n set tabIndex(value: number) {\n this._tabIndex.set(value);\n }\n\n private readonly _tabIndex = signal(0);\n\n /** Whether the radio button is required. A button inside a required group is required as well. */\n get required(): boolean {\n return this._required() || !!this.radioGroup?.required();\n }\n\n set required(value: boolean) {\n this._required.set(value);\n }\n\n /** Whether this radio is required. */\n private readonly _required = signal(false);\n\n /** Whether the label should appear after or before the radio button. Defaults to 'after' */\n get labelPosition(): 'before' | 'after' {\n return this._labelPosition() || this.radioGroup?.labelPosition() || 'after';\n }\n /** @docs-private */\n set labelPosition(value: 'before' | 'after' | undefined) {\n this._labelPosition.set(value);\n }\n\n /**\n * Analog to HTML 'name' attribute used to group radios for unique selection. Defaults to the\n * parent group's name, or — outside a group — to an id unique to this button.\n */\n // An accessor rather than a plain field: the app-global UniqueSelectionDispatcher isolates its\n // listeners by name alone, so a button that resolved to `undefined` would share one selection\n // group with every other unnamed radio button in the application. Resolving the group's name here\n // rather than copying it in `ngOnInit` is also what keeps an explicitly bound `[name]` alive.\n get name(): string {\n return this._name() ?? this.radioGroup?.name() ?? this.uniqueId;\n }\n\n set name(value: string | undefined) {\n this._name.set(value);\n }\n\n /** The native `<input type=radio>` element */\n readonly inputElement = viewChild.required<ElementRef<HTMLInputElement>>('input');\n\n /**\n * Event emitted when the checked state of this radio button changes.\n * Change events are only emitted when the value changes due to user interaction with\n * the radio button (the same behavior as `<input type-\"radio\">`).\n */\n\n readonly change = output<KbqRadioChange>();\n\n /** The parent radio group. `null` when the button is used outside one. */\n radioGroup: KbqRadioGroup | null = inject(KbqRadioGroup, { optional: true });\n\n /**\n * Whether the button takes the big size of its group.\n *\n * @internal\n */\n protected readonly big = computed(() => !!this.radioGroup?.big());\n\n private readonly uniqueId: string = inject(_IdGenerator).getId('kbq-radio-');\n\n /**\n * A unique id for the radio button. If none is supplied — or `null` is bound explicitly — it is\n * auto-generated, so a read always yields the id the element actually carries.\n */\n readonly id = input(this.uniqueId, {\n transform: (value: string | null | undefined) => value || this.uniqueId\n });\n\n /** ID of the native input element inside `<kbq-radio-button>` */\n readonly inputId = computed(() => `${this.id()}-input`);\n\n /**\n * ID of the element holding the option text. The native input points its `aria-labelledby` at it,\n * so the accessible name is the option text alone rather than everything the wrapping `<label>`\n * contains — the projected hint included.\n */\n protected readonly labelId = computed(() => `${this.id()}-label`);\n\n /**\n * The `value` attribute of the native input. An `<input type=\"radio\">` with no `value` submits the\n * literal string `\"on\"`, so only string-like values round-trip through native form submission.\n */\n protected get nativeValue(): string | null {\n const value = this._value();\n\n return value == null ? null : String(value);\n }\n\n /** Hint projected into the button, referenced by the native input's `aria-describedby`. */\n protected readonly hint = contentChild(KbqHint);\n\n private readonly _labelPosition = signal<'before' | 'after' | undefined>(undefined);\n\n private readonly _name = signal<string | undefined>(undefined);\n\n /** @docs-private */\n readonly valueInput = input<NonNullable<unknown> | null | undefined>(undefined, { alias: 'value' });\n\n /** @docs-private */\n readonly checkedInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'checked',\n transform: booleanAttribute\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 /** @docs-private */\n readonly tabIndexInput = input<number | undefined, number | string | null | undefined>(undefined, {\n alias: 'tabIndex',\n transform: kbqOptionalNumberAttribute\n });\n\n /** @docs-private */\n readonly requiredInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'required',\n transform: booleanAttribute\n });\n\n /** @docs-private */\n readonly labelPositionInput = input<'before' | 'after' | undefined>(undefined, { alias: 'labelPosition' });\n\n /** @docs-private */\n readonly nameInput = input<string | undefined>(undefined, { alias: 'name' });\n\n ngOnChanges(changes: SimpleChanges): void {\n // A bound input is handed to its member, a bound `undefined` included;\n // unbound, it leaves what code wrote.\n if (changes['valueInput']) {\n this.value = this.valueInput();\n }\n\n if (changes['checkedInput']) {\n const checked = this.checkedInput();\n\n if (checked !== undefined) this.checked = checked;\n }\n\n if (changes['disabledInput']) {\n const disabled = this.disabledInput();\n\n if (disabled !== undefined) this.disabled = disabled;\n }\n\n if (changes['tabIndexInput']) this.tabIndex = this.tabIndexInput() ?? 0;\n\n if (changes['requiredInput']) {\n const required = this.requiredInput();\n\n if (required !== undefined) this.required = required;\n }\n\n if (changes['labelPositionInput']) {\n this.labelPosition = this.labelPositionInput();\n }\n\n if (changes['nameInput']) {\n this.name = this.nameInput();\n }\n }\n\n /** Whether this radio is checked. */\n private readonly _checked = signal(false);\n\n /** Value assigned to this radio. */\n private readonly _value = signal<any>(null);\n\n constructor() {\n super();\n\n this.removeUniqueSelectionListener = this.radioDispatcher.listen((id: string, name: string) => {\n if (id !== this.id() && name === this.name) {\n this.checked = false;\n }\n });\n }\n\n ngOnInit() {\n if (this.radioGroup) {\n // If the radio is inside a radio group, determine if it should be checked\n this.checked = this.radioGroup.value === this._value();\n }\n }\n\n ngAfterViewInit() {\n this.focusMonitor.monitor(this.elementRef, true).subscribe((focusOrigin) => {\n if (!focusOrigin && this.radioGroup) {\n this.radioGroup.touch();\n }\n });\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef);\n this.removeUniqueSelectionListener();\n }\n\n /**\n * Focuses the radio button.\n *\n * Routed through the `FocusMonitor` so the origin is recorded: the focus ring is keyed off\n * `.cdk-keyboard-focused`, which a bare `element.focus()` never produces.\n */\n focus(origin: FocusOrigin = 'program'): void {\n this.focusMonitor.focusVia(this.inputElement(), origin);\n }\n\n /**\n * Marks the radio button as needing checking for change detection.\n *\n * Kept for back-compatibility. A button derives its state from signals, its own and its group's, so it\n * re-renders on its own and nothing in the library calls this any more.\n */\n markForCheck() {\n // Kept at the DS-2196 review, like `KbqButtonToggle.markForCheck()`, which the migration guide promises stays.\n this.changeDetector.markForCheck();\n }\n\n onInputClick(event: Event) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `radio-button` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling & forcing skip event from closing actions for the second event will solve that issue.\n event.stopPropagation();\n (event as Event & { kbqPopoverPreventHide: boolean }).kbqPopoverPreventHide = true;\n }\n\n onInputChange(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\n\n this.checked = true;\n this.emitChangeEvent();\n\n if (this.radioGroup) {\n this.radioGroup.controlValueAccessorChangeFn(this.value);\n this.radioGroup.touch();\n\n if (groupValueChanged) {\n this.radioGroup.emitChangeEvent();\n }\n }\n }\n\n /** Unregister function for _radioDispatcher */\n private readonly removeUniqueSelectionListener: () => void = () => {};\n\n /** Dispatch change event with current value. */\n private emitChangeEvent(): void {\n this.change.emit(new KbqRadioChange(this, this._value()));\n }\n}\n","<label #label class=\"kbq-radio-label\" [attr.for]=\"inputId()\">\n <!--\n The wrapping label would fold everything it contains — the projected hint included — into the\n accessible name, so the name is overridden with an explicit `aria-labelledby` pointing at the\n option text alone, and the hint arrives as a description instead.\n -->\n <input\n #input\n type=\"radio\"\n class=\"kbq-radio-input cdk-visually-hidden\"\n [attr.aria-describedby]=\"hint()?.id() ?? null\"\n [attr.aria-labelledby]=\"labelId()\"\n [attr.name]=\"name\"\n [attr.value]=\"nativeValue\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId()\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInputChange($event)\"\n (click)=\"onInputClick($event)\"\n />\n\n <div class=\"kbq-radio-label-content\" [class.kbq-radio-label-before]=\"labelPosition === 'before'\">\n <div class=\"kbq-radio-button__outer-circle\">\n <div class=\"kbq-radio-button__inner-circle\"></div>\n </div>\n\n <div class=\"kbq-radio__text-container\">\n <span class=\"kbq-radio__text\" [id]=\"labelId()\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n </div>\n</label>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { KbqRadioButton, KbqRadioGroup } from './radio.component';\n\n@NgModule({\n imports: [A11yModule, KbqRadioGroup, KbqRadioButton],\n exports: [KbqRadioGroup, KbqRadioButton]\n})\nexport class KbqRadioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, inject, NgZone, DestroyRef, Renderer2, input, output, computed, afterNextRender, NgModule } from '@angular/core';
|
|
2
|
+
import { Directive, inject, NgZone, DestroyRef, Renderer2, signal, input, booleanAttribute, output, computed, effect, afterNextRender, RendererStyleFlags2, NgModule } from '@angular/core';
|
|
3
3
|
import { coerceCssPixelValue } from '@angular/cdk/coercion';
|
|
4
4
|
import { DOCUMENT } from '@angular/common';
|
|
5
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
@@ -24,10 +24,10 @@ class KbqResizable {
|
|
|
24
24
|
*/
|
|
25
25
|
this.element = kbqInjectNativeElement();
|
|
26
26
|
}
|
|
27
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
27
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqResizable, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
28
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: KbqResizable, isStandalone: true, selector: "[kbqResizable]", host: { classAttribute: "kbq-resizable" }, exportAs: ["kbqResizable"], ngImport: i0 }); }
|
|
29
29
|
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqResizable, decorators: [{
|
|
31
31
|
type: Directive,
|
|
32
32
|
args: [{
|
|
33
33
|
selector: '[kbqResizable]',
|
|
@@ -53,10 +53,34 @@ class KbqResizer {
|
|
|
53
53
|
this.y = NaN;
|
|
54
54
|
this.width = 0;
|
|
55
55
|
this.height = 0;
|
|
56
|
+
this.dragging = signal(false, ...(ngDevMode ? [{ debugName: "dragging" }] : /* istanbul ignore next */ []));
|
|
57
|
+
this.activePointerId = null;
|
|
58
|
+
/** Body cursor captured on pointer-down and restored when the drag finishes. `null` while not dragging. */
|
|
59
|
+
this.previousBodyCursor = null;
|
|
60
|
+
// CSS priority is only ever `'important'` or `''`, so a boolean is enough to restore it faithfully.
|
|
61
|
+
this.previousBodyCursorImportant = false;
|
|
56
62
|
/**
|
|
57
63
|
* Direction of element resizing.
|
|
58
64
|
*/
|
|
59
|
-
this.direction = input.required(...(ngDevMode ?
|
|
65
|
+
this.direction = input.required({ ...(ngDevMode ? { debugName: "direction" } : /* istanbul ignore next */ {}), alias: 'kbqResizer' });
|
|
66
|
+
/**
|
|
67
|
+
* Overrides the cursor that is otherwise derived from the resizing direction.
|
|
68
|
+
*/
|
|
69
|
+
this.cursor = input(null, ...(ngDevMode ? [{ debugName: "cursor" }] : /* istanbul ignore next */ []));
|
|
70
|
+
/**
|
|
71
|
+
* Stops the directive from writing the new size onto the resizable element, leaving the host in
|
|
72
|
+
* control: {@link resizeStart} and {@link sizeChange} still report the size the drag asks for, and the
|
|
73
|
+
* host decides what to apply. Use it when the element's size is owned by a layout the directive must
|
|
74
|
+
* not fight — `KbqSplitter` sizes its panels through a grid template on their common parent.
|
|
75
|
+
*
|
|
76
|
+
* The reported size stays measured from where the drag started rather than from the element, so a host
|
|
77
|
+
* that clamps or ignores a move does not accumulate drift over the rest of the drag.
|
|
78
|
+
*/
|
|
79
|
+
this.disableSizeUpdate = input(false, { ...(ngDevMode ? { debugName: "disableSizeUpdate" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
80
|
+
/**
|
|
81
|
+
* Emits the element size when a pointer drag begins, after the directive has committed to the resize.
|
|
82
|
+
*/
|
|
83
|
+
this.resizeStart = output();
|
|
60
84
|
/**
|
|
61
85
|
* Emits the new size of the element after resizing.
|
|
62
86
|
*/
|
|
@@ -64,7 +88,10 @@ class KbqResizer {
|
|
|
64
88
|
/**
|
|
65
89
|
* @docs-private
|
|
66
90
|
*/
|
|
67
|
-
this.
|
|
91
|
+
this.resolvedCursor = computed(() => {
|
|
92
|
+
const cursor = this.cursor();
|
|
93
|
+
if (cursor)
|
|
94
|
+
return cursor;
|
|
68
95
|
const [x, y] = this.direction();
|
|
69
96
|
if (x === 0 && y === 0)
|
|
70
97
|
return 'default';
|
|
@@ -75,7 +102,13 @@ class KbqResizer {
|
|
|
75
102
|
if (x * y > 0)
|
|
76
103
|
return 'nwse-resize';
|
|
77
104
|
return 'nesw-resize';
|
|
78
|
-
}, ...(ngDevMode ? [{ debugName: "
|
|
105
|
+
}, ...(ngDevMode ? [{ debugName: "resolvedCursor" }] : /* istanbul ignore next */ []));
|
|
106
|
+
effect(() => {
|
|
107
|
+
const cursor = this.resolvedCursor();
|
|
108
|
+
if (this.dragging())
|
|
109
|
+
this.updateDocumentCursor(cursor);
|
|
110
|
+
});
|
|
111
|
+
this.destroyRef.onDestroy(() => this.finishDrag());
|
|
79
112
|
afterNextRender(() => {
|
|
80
113
|
this.zone.runOutsideAngular(() => {
|
|
81
114
|
fromEvent(this.element, 'pointerdown')
|
|
@@ -87,16 +120,35 @@ class KbqResizer {
|
|
|
87
120
|
fromEvent(this.document, 'pointerup')
|
|
88
121
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
89
122
|
.subscribe((event) => this.handleDocumentPointerUp(event));
|
|
123
|
+
fromEvent(this.document, 'pointercancel')
|
|
124
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
125
|
+
.subscribe((event) => this.handleDocumentPointerUp(event));
|
|
126
|
+
fromEvent(this.element, 'lostpointercapture')
|
|
127
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
128
|
+
.subscribe((event) => this.handleDocumentPointerUp(event));
|
|
90
129
|
});
|
|
91
130
|
});
|
|
92
131
|
}
|
|
93
132
|
handleElementPointerDown(event) {
|
|
133
|
+
const [directionX, directionY] = this.direction();
|
|
134
|
+
// A handle with no direction is not resizable.
|
|
135
|
+
if (!directionX && !directionY)
|
|
136
|
+
return;
|
|
137
|
+
// Start only on the primary left button, and never begin a second drag while one is active.
|
|
138
|
+
if (event.button !== 0 || event.isPrimary === false || this.activePointerId !== null)
|
|
139
|
+
return;
|
|
94
140
|
event.preventDefault();
|
|
141
|
+
this.activePointerId = this.getPointerId(event);
|
|
95
142
|
this.x = event.x;
|
|
96
143
|
this.y = event.y;
|
|
97
144
|
const { width, height } = this.getResizableSize();
|
|
98
145
|
this.width = width;
|
|
99
146
|
this.height = height;
|
|
147
|
+
// Keep the resize cursor when the pointer leaves a handle that has stopped at a size boundary.
|
|
148
|
+
this.element.setPointerCapture?.(this.activePointerId);
|
|
149
|
+
this.dragging.set(true);
|
|
150
|
+
this.applyDocumentCursor(this.resolvedCursor());
|
|
151
|
+
this.resizeStart.emit({ width, height });
|
|
100
152
|
}
|
|
101
153
|
/**
|
|
102
154
|
* Reads the resizable element in whichever box model `style.width`/`style.height` will be
|
|
@@ -117,47 +169,101 @@ class KbqResizer {
|
|
|
117
169
|
return { width: parseFloat(style.width) || 0, height: parseFloat(style.height) || 0 };
|
|
118
170
|
}
|
|
119
171
|
handleDocumentPointerMove(event) {
|
|
172
|
+
// Ignore moves from any pointer other than the one that started this drag.
|
|
173
|
+
if (!this.isActivePointer(event))
|
|
174
|
+
return;
|
|
175
|
+
// The button was released without a pointerup reaching us (e.g. outside the window) — end the drag.
|
|
120
176
|
if (!event.buttons)
|
|
121
177
|
return this.handleDocumentPointerUp(event);
|
|
122
178
|
this.updateSize(event);
|
|
123
179
|
}
|
|
124
|
-
handleDocumentPointerUp(
|
|
180
|
+
handleDocumentPointerUp(event) {
|
|
181
|
+
// Only the pointer that owns the drag can end it.
|
|
182
|
+
if (!this.isActivePointer(event))
|
|
183
|
+
return;
|
|
184
|
+
this.finishDrag();
|
|
185
|
+
}
|
|
186
|
+
finishDrag() {
|
|
187
|
+
const pointerId = this.activePointerId;
|
|
188
|
+
this.activePointerId = null;
|
|
125
189
|
this.x = NaN;
|
|
190
|
+
this.y = NaN;
|
|
191
|
+
this.dragging.set(false);
|
|
192
|
+
this.restoreDocumentCursor();
|
|
193
|
+
if (pointerId !== null && this.element.hasPointerCapture?.(pointerId)) {
|
|
194
|
+
this.element.releasePointerCapture?.(pointerId);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
getPointerId(event) {
|
|
198
|
+
return event.pointerId ?? 1;
|
|
199
|
+
}
|
|
200
|
+
isActivePointer(event) {
|
|
201
|
+
return this.activePointerId !== null && this.activePointerId === this.getPointerId(event);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Forces the resize cursor onto `document.body` for the whole drag: when the handle stops at a size
|
|
205
|
+
* boundary the pointer can leave its hit-area, and only a document-level cursor keeps the feedback from
|
|
206
|
+
* flickering to whatever sits underneath. The consumer's own body cursor is saved for {@link restoreDocumentCursor}.
|
|
207
|
+
*/
|
|
208
|
+
applyDocumentCursor(cursor) {
|
|
209
|
+
const { style } = this.document.body;
|
|
210
|
+
this.previousBodyCursor = style.getPropertyValue('cursor');
|
|
211
|
+
this.previousBodyCursorImportant = style.getPropertyPriority('cursor') === 'important';
|
|
212
|
+
this.renderer.setStyle(this.document.body, 'cursor', cursor, RendererStyleFlags2.Important);
|
|
213
|
+
}
|
|
214
|
+
/** Reflects a mid-drag cursor change (e.g. the boundary switch to `e-resize`/`w-resize`) onto the document. */
|
|
215
|
+
updateDocumentCursor(cursor) {
|
|
216
|
+
this.renderer.setStyle(this.document.body, 'cursor', cursor, RendererStyleFlags2.Important);
|
|
217
|
+
}
|
|
218
|
+
restoreDocumentCursor() {
|
|
219
|
+
if (this.previousBodyCursor === null)
|
|
220
|
+
return;
|
|
221
|
+
if (this.previousBodyCursor) {
|
|
222
|
+
this.renderer.setStyle(this.document.body, 'cursor', this.previousBodyCursor, this.previousBodyCursorImportant ? RendererStyleFlags2.Important : undefined);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
this.renderer.removeStyle(this.document.body, 'cursor');
|
|
226
|
+
}
|
|
227
|
+
this.previousBodyCursor = null;
|
|
126
228
|
}
|
|
127
229
|
updateSize({ x, y }) {
|
|
230
|
+
// Guard against moves that arrive before a drag has captured its origin.
|
|
128
231
|
if (Number.isNaN(this.x))
|
|
129
232
|
return;
|
|
130
233
|
const [directionX, directionY] = this.direction();
|
|
131
234
|
const width = this.width + directionX * (x - this.x);
|
|
132
235
|
const height = this.height + directionY * (y - this.y);
|
|
133
|
-
if (
|
|
134
|
-
this
|
|
135
|
-
|
|
136
|
-
|
|
236
|
+
if (!this.disableSizeUpdate()) {
|
|
237
|
+
// Write only the axis this handle resizes; the other keeps the element's current size.
|
|
238
|
+
if (directionX)
|
|
239
|
+
this.renderer.setStyle(this.resizable.element, 'width', coerceCssPixelValue(width));
|
|
240
|
+
if (directionY)
|
|
241
|
+
this.renderer.setStyle(this.resizable.element, 'height', coerceCssPixelValue(height));
|
|
242
|
+
}
|
|
137
243
|
this.sizeChange.emit({ width, height });
|
|
138
244
|
}
|
|
139
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
140
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
245
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqResizer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
246
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqResizer, isStandalone: true, selector: "[kbqResizer]", inputs: { direction: { classPropertyName: "direction", publicName: "kbqResizer", isSignal: true, isRequired: true, transformFunction: null }, cursor: { classPropertyName: "cursor", publicName: "cursor", isSignal: true, isRequired: false, transformFunction: null }, disableSizeUpdate: { classPropertyName: "disableSizeUpdate", publicName: "disableSizeUpdate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { resizeStart: "resizeStart", sizeChange: "sizeChange" }, host: { properties: { "style.cursor": "resolvedCursor()" }, classAttribute: "kbq-resizer" }, exportAs: ["kbqResizer"], ngImport: i0 }); }
|
|
141
247
|
}
|
|
142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
248
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqResizer, decorators: [{
|
|
143
249
|
type: Directive,
|
|
144
250
|
args: [{
|
|
145
251
|
selector: '[kbqResizer]',
|
|
146
252
|
host: {
|
|
147
253
|
class: 'kbq-resizer',
|
|
148
|
-
'[style.cursor]': '
|
|
254
|
+
'[style.cursor]': 'resolvedCursor()'
|
|
149
255
|
},
|
|
150
256
|
exportAs: 'kbqResizer'
|
|
151
257
|
}]
|
|
152
|
-
}], ctorParameters: () => [], propDecorators: { direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqResizer", required: true }] }], sizeChange: [{ type: i0.Output, args: ["sizeChange"] }] } });
|
|
258
|
+
}], ctorParameters: () => [], propDecorators: { direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqResizer", required: true }] }], cursor: [{ type: i0.Input, args: [{ isSignal: true, alias: "cursor", required: false }] }], disableSizeUpdate: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableSizeUpdate", required: false }] }], resizeStart: [{ type: i0.Output, args: ["resizeStart"] }], sizeChange: [{ type: i0.Output, args: ["sizeChange"] }] } });
|
|
153
259
|
|
|
154
260
|
const COMPONENTS = [KbqResizable, KbqResizer];
|
|
155
261
|
class KbqResizerModule {
|
|
156
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
157
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
158
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
262
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqResizerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
263
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: KbqResizerModule, imports: [KbqResizable, KbqResizer], exports: [KbqResizable, KbqResizer] }); }
|
|
264
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqResizerModule }); }
|
|
159
265
|
}
|
|
160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
266
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqResizerModule, decorators: [{
|
|
161
267
|
type: NgModule,
|
|
162
268
|
args: [{
|
|
163
269
|
imports: COMPONENTS,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-resizer.mjs","sources":["../../../packages/components/resizer/resizer.ts","../../../packages/components/resizer/module.ts","../../../packages/components/resizer/koobiq-components-resizer.ts"],"sourcesContent":["import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n afterNextRender,\n computed,\n DestroyRef,\n Directive,\n inject,\n input,\n NgZone,\n output,\n Renderer2\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_WINDOW, kbqInjectNativeElement } from '@koobiq/components/core';\nimport { fromEvent } from 'rxjs';\n\n/**\n * Directions for resizing.\n *\n * Horizontal direction (x):\n * - Left: -1\n * - None: 0\n * - Right: 1\n *\n * Vertical direction (y):\n * - Up: -1\n * - None: 0\n * - Down: 1\n */\nexport type KbqResizerDirection = [x: -1 | 0 | 1, y: -1 | 0 | 1];\n\n/**\n * Event emitted when the size of the resizable element changes.\n */\nexport type KbqResizerSizeChangeEvent = {\n width: number;\n height: number;\n};\n\n/**\n * Directive (container) sets whether the element is resizable.\n *\n * @example\n *\n * ```html\n * <div kbqResizable>\n * <div [kbqResizer]=\"[-1, 0]\"></div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[kbqResizable]',\n host: {\n class: 'kbq-resizable'\n },\n exportAs: 'kbqResizable'\n})\nexport class KbqResizable {\n /**\n * @docs-private\n */\n readonly element = kbqInjectNativeElement();\n}\n\n/**\n * Directive which defines element resizing direction.\n */\n@Directive({\n selector: '[kbqResizer]',\n host: {\n class: 'kbq-resizer',\n '[style.cursor]': 'cursor()'\n },\n exportAs: 'kbqResizer'\n})\nexport class KbqResizer {\n private readonly element = kbqInjectNativeElement();\n private readonly resizable = inject(KbqResizable);\n private readonly zone = inject(NgZone);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly renderer = inject(Renderer2);\n private readonly window = inject(KBQ_WINDOW);\n\n private x = NaN;\n private y = NaN;\n\n private width = 0;\n private height = 0;\n\n /**\n * Direction of element resizing.\n */\n readonly direction = input.required<KbqResizerDirection>({ alias: 'kbqResizer' });\n\n /**\n * Emits the new size of the element after resizing.\n */\n readonly sizeChange = output<KbqResizerSizeChangeEvent>();\n\n /**\n * @docs-private\n */\n protected readonly cursor = computed(() => {\n const [x, y] = this.direction();\n\n if (x === 0 && y === 0) return 'default';\n if (!x) return 'ns-resize';\n if (!y) return 'ew-resize';\n if (x * y > 0) return 'nwse-resize';\n\n return 'nesw-resize';\n });\n\n constructor() {\n afterNextRender(() => {\n this.zone.runOutsideAngular(() => {\n fromEvent<PointerEvent>(this.element, 'pointerdown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.handleElementPointerDown(event));\n\n fromEvent<PointerEvent>(this.document, 'pointermove')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.handleDocumentPointerMove(event));\n\n fromEvent<PointerEvent>(this.document, 'pointerup')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.handleDocumentPointerUp(event));\n });\n });\n }\n\n private handleElementPointerDown(event: PointerEvent): void {\n event.preventDefault();\n\n this.x = event.x;\n this.y = event.y;\n\n const { width, height } = this.getResizableSize();\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * Reads the resizable element in whichever box model `style.width`/`style.height` will be\n * interpreted in when `updateSize()` writes them back.\n *\n * `clientWidth`/`clientHeight` are the padding box, so feeding them straight into `style.width`\n * made the element jump on the first pointer-down — outward by its padding under the default\n * `content-box`, inward by its border under a consuming application's `border-box` reset. The\n * directive ships no stylesheet of its own, so it inherits whatever the host sets and has to ask\n * rather than assume. Same branch as `KbqFieldSizingContent.calculateWidth()`.\n */\n private getResizableSize(): { width: number; height: number } {\n const style = this.window.getComputedStyle(this.resizable.element);\n\n if (style.boxSizing === 'border-box') {\n const { width, height } = this.resizable.element.getBoundingClientRect();\n\n return { width, height };\n }\n\n return { width: parseFloat(style.width) || 0, height: parseFloat(style.height) || 0 };\n }\n\n private handleDocumentPointerMove(event: PointerEvent): void {\n if (!event.buttons) return this.handleDocumentPointerUp(event);\n\n this.updateSize(event);\n }\n\n private handleDocumentPointerUp(_event: PointerEvent): void {\n this.x = NaN;\n }\n\n private updateSize({ x, y }: PointerEvent): void {\n if (Number.isNaN(this.x)) return;\n\n const [directionX, directionY] = this.direction();\n const width = this.width + directionX * (x - this.x);\n const height = this.height + directionY * (y - this.y);\n\n if (directionX) this.renderer.setStyle(this.resizable.element, 'width', coerceCssPixelValue(width));\n if (directionY) this.renderer.setStyle(this.resizable.element, 'height', coerceCssPixelValue(height));\n\n this.sizeChange.emit({ width, height });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqResizable, KbqResizer } from './resizer';\n\nconst COMPONENTS = [KbqResizable, KbqResizer];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqResizerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-resizer.mjs","sources":["../../../packages/components/resizer/resizer.ts","../../../packages/components/resizer/module.ts","../../../packages/components/resizer/koobiq-components-resizer.ts"],"sourcesContent":["import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n input,\n NgZone,\n output,\n Renderer2,\n RendererStyleFlags2,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_WINDOW, kbqInjectNativeElement } from '@koobiq/components/core';\nimport { fromEvent } from 'rxjs';\n\n/**\n * Directions for resizing.\n *\n * Horizontal direction (x):\n * - Left: -1\n * - None: 0\n * - Right: 1\n *\n * Vertical direction (y):\n * - Up: -1\n * - None: 0\n * - Down: 1\n */\nexport type KbqResizerDirection = [x: -1 | 0 | 1, y: -1 | 0 | 1];\n\n/**\n * Event emitted when the size of the resizable element changes.\n */\nexport type KbqResizerSizeChangeEvent = {\n width: number;\n height: number;\n};\n\n/**\n * Directive (container) sets whether the element is resizable.\n *\n * @example\n *\n * ```html\n * <div kbqResizable>\n * <div [kbqResizer]=\"[-1, 0]\"></div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[kbqResizable]',\n host: {\n class: 'kbq-resizable'\n },\n exportAs: 'kbqResizable'\n})\nexport class KbqResizable {\n /**\n * @docs-private\n */\n readonly element = kbqInjectNativeElement();\n}\n\n/**\n * Directive which defines element resizing direction.\n */\n@Directive({\n selector: '[kbqResizer]',\n host: {\n class: 'kbq-resizer',\n '[style.cursor]': 'resolvedCursor()'\n },\n exportAs: 'kbqResizer'\n})\nexport class KbqResizer {\n private readonly element = kbqInjectNativeElement();\n private readonly resizable = inject(KbqResizable);\n private readonly zone = inject(NgZone);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly renderer = inject(Renderer2);\n private readonly window = inject(KBQ_WINDOW);\n\n private x = NaN;\n private y = NaN;\n\n private width = 0;\n private height = 0;\n private readonly dragging = signal(false);\n private activePointerId: number | null = null;\n\n /** Body cursor captured on pointer-down and restored when the drag finishes. `null` while not dragging. */\n private previousBodyCursor: string | null = null;\n // CSS priority is only ever `'important'` or `''`, so a boolean is enough to restore it faithfully.\n private previousBodyCursorImportant = false;\n\n /**\n * Direction of element resizing.\n */\n readonly direction = input.required<KbqResizerDirection>({ alias: 'kbqResizer' });\n\n /**\n * Overrides the cursor that is otherwise derived from the resizing direction.\n */\n readonly cursor = input<string | null>(null);\n\n /**\n * Stops the directive from writing the new size onto the resizable element, leaving the host in\n * control: {@link resizeStart} and {@link sizeChange} still report the size the drag asks for, and the\n * host decides what to apply. Use it when the element's size is owned by a layout the directive must\n * not fight — `KbqSplitter` sizes its panels through a grid template on their common parent.\n *\n * The reported size stays measured from where the drag started rather than from the element, so a host\n * that clamps or ignores a move does not accumulate drift over the rest of the drag.\n */\n readonly disableSizeUpdate = input(false, { transform: booleanAttribute });\n\n /**\n * Emits the element size when a pointer drag begins, after the directive has committed to the resize.\n */\n readonly resizeStart = output<KbqResizerSizeChangeEvent>();\n\n /**\n * Emits the new size of the element after resizing.\n */\n readonly sizeChange = output<KbqResizerSizeChangeEvent>();\n\n /**\n * @docs-private\n */\n protected readonly resolvedCursor = computed(() => {\n const cursor = this.cursor();\n\n if (cursor) return cursor;\n\n const [x, y] = this.direction();\n\n if (x === 0 && y === 0) return 'default';\n if (!x) return 'ns-resize';\n if (!y) return 'ew-resize';\n if (x * y > 0) return 'nwse-resize';\n\n return 'nesw-resize';\n });\n\n constructor() {\n effect(() => {\n const cursor = this.resolvedCursor();\n\n if (this.dragging()) this.updateDocumentCursor(cursor);\n });\n\n this.destroyRef.onDestroy(() => this.finishDrag());\n\n afterNextRender(() => {\n this.zone.runOutsideAngular(() => {\n fromEvent<PointerEvent>(this.element, 'pointerdown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.handleElementPointerDown(event));\n\n fromEvent<PointerEvent>(this.document, 'pointermove')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.handleDocumentPointerMove(event));\n\n fromEvent<PointerEvent>(this.document, 'pointerup')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.handleDocumentPointerUp(event));\n\n fromEvent<PointerEvent>(this.document, 'pointercancel')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.handleDocumentPointerUp(event));\n\n fromEvent<PointerEvent>(this.element, 'lostpointercapture')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.handleDocumentPointerUp(event));\n });\n });\n }\n\n private handleElementPointerDown(event: PointerEvent): void {\n const [directionX, directionY] = this.direction();\n\n // A handle with no direction is not resizable.\n if (!directionX && !directionY) return;\n // Start only on the primary left button, and never begin a second drag while one is active.\n if (event.button !== 0 || event.isPrimary === false || this.activePointerId !== null) return;\n\n event.preventDefault();\n\n this.activePointerId = this.getPointerId(event);\n this.x = event.x;\n this.y = event.y;\n\n const { width, height } = this.getResizableSize();\n\n this.width = width;\n this.height = height;\n\n // Keep the resize cursor when the pointer leaves a handle that has stopped at a size boundary.\n this.element.setPointerCapture?.(this.activePointerId);\n this.dragging.set(true);\n this.applyDocumentCursor(this.resolvedCursor());\n this.resizeStart.emit({ width, height });\n }\n\n /**\n * Reads the resizable element in whichever box model `style.width`/`style.height` will be\n * interpreted in when `updateSize()` writes them back.\n *\n * `clientWidth`/`clientHeight` are the padding box, so feeding them straight into `style.width`\n * made the element jump on the first pointer-down — outward by its padding under the default\n * `content-box`, inward by its border under a consuming application's `border-box` reset. The\n * directive ships no stylesheet of its own, so it inherits whatever the host sets and has to ask\n * rather than assume. Same branch as `KbqFieldSizingContent.calculateWidth()`.\n */\n private getResizableSize(): { width: number; height: number } {\n const style = this.window.getComputedStyle(this.resizable.element);\n\n if (style.boxSizing === 'border-box') {\n const { width, height } = this.resizable.element.getBoundingClientRect();\n\n return { width, height };\n }\n\n return { width: parseFloat(style.width) || 0, height: parseFloat(style.height) || 0 };\n }\n\n private handleDocumentPointerMove(event: PointerEvent): void {\n // Ignore moves from any pointer other than the one that started this drag.\n if (!this.isActivePointer(event)) return;\n // The button was released without a pointerup reaching us (e.g. outside the window) — end the drag.\n if (!event.buttons) return this.handleDocumentPointerUp(event);\n\n this.updateSize(event);\n }\n\n private handleDocumentPointerUp(event: PointerEvent): void {\n // Only the pointer that owns the drag can end it.\n if (!this.isActivePointer(event)) return;\n\n this.finishDrag();\n }\n\n private finishDrag(): void {\n const pointerId = this.activePointerId;\n\n this.activePointerId = null;\n\n this.x = NaN;\n this.y = NaN;\n this.dragging.set(false);\n this.restoreDocumentCursor();\n\n if (pointerId !== null && this.element.hasPointerCapture?.(pointerId)) {\n this.element.releasePointerCapture?.(pointerId);\n }\n }\n\n private getPointerId(event: PointerEvent): number {\n return event.pointerId ?? 1;\n }\n\n private isActivePointer(event: PointerEvent): boolean {\n return this.activePointerId !== null && this.activePointerId === this.getPointerId(event);\n }\n\n /**\n * Forces the resize cursor onto `document.body` for the whole drag: when the handle stops at a size\n * boundary the pointer can leave its hit-area, and only a document-level cursor keeps the feedback from\n * flickering to whatever sits underneath. The consumer's own body cursor is saved for {@link restoreDocumentCursor}.\n */\n private applyDocumentCursor(cursor: string): void {\n const { style } = this.document.body;\n\n this.previousBodyCursor = style.getPropertyValue('cursor');\n this.previousBodyCursorImportant = style.getPropertyPriority('cursor') === 'important';\n this.renderer.setStyle(this.document.body, 'cursor', cursor, RendererStyleFlags2.Important);\n }\n\n /** Reflects a mid-drag cursor change (e.g. the boundary switch to `e-resize`/`w-resize`) onto the document. */\n private updateDocumentCursor(cursor: string): void {\n this.renderer.setStyle(this.document.body, 'cursor', cursor, RendererStyleFlags2.Important);\n }\n\n private restoreDocumentCursor(): void {\n if (this.previousBodyCursor === null) return;\n\n if (this.previousBodyCursor) {\n this.renderer.setStyle(\n this.document.body,\n 'cursor',\n this.previousBodyCursor,\n this.previousBodyCursorImportant ? RendererStyleFlags2.Important : undefined\n );\n } else {\n this.renderer.removeStyle(this.document.body, 'cursor');\n }\n\n this.previousBodyCursor = null;\n }\n\n private updateSize({ x, y }: PointerEvent): void {\n // Guard against moves that arrive before a drag has captured its origin.\n if (Number.isNaN(this.x)) return;\n\n const [directionX, directionY] = this.direction();\n const width = this.width + directionX * (x - this.x);\n const height = this.height + directionY * (y - this.y);\n\n if (!this.disableSizeUpdate()) {\n // Write only the axis this handle resizes; the other keeps the element's current size.\n if (directionX) this.renderer.setStyle(this.resizable.element, 'width', coerceCssPixelValue(width));\n if (directionY) this.renderer.setStyle(this.resizable.element, 'height', coerceCssPixelValue(height));\n }\n\n this.sizeChange.emit({ width, height });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqResizable, KbqResizer } from './resizer';\n\nconst COMPONENTS = [KbqResizable, KbqResizer];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqResizerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AA4CA;;;;;;;;;;AAUG;MAQU,YAAY,CAAA;AAPzB,IAAA,WAAA,GAAA;AAQI;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,sBAAsB,EAAE;AAC9C,IAAA;kIALY,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAPxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACb,iBAAA;;AAQD;;AAEG;MASU,UAAU,CAAA;AAuEnB,IAAA,WAAA,GAAA;QAtEiB,IAAA,CAAA,OAAO,GAAG,sBAAsB,EAAE;AAClC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAChC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,QAAQ,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAEpC,IAAA,CAAA,CAAC,GAAG,GAAG;QACP,IAAA,CAAA,CAAC,GAAG,GAAG;QAEP,IAAA,CAAA,KAAK,GAAG,CAAC;QACT,IAAA,CAAA,MAAM,GAAG,CAAC;AACD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;QACjC,IAAA,CAAA,eAAe,GAAkB,IAAI;;QAGrC,IAAA,CAAA,kBAAkB,GAAkB,IAAI;;QAExC,IAAA,CAAA,2BAA2B,GAAG,KAAK;AAE3C;;AAEG;QACM,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,gFAAwB,KAAK,EAAE,YAAY,EAAA,CAAG;AAEjF;;AAEG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAgB,IAAI,6EAAC;AAE5C;;;;;;;;AAQG;QACM,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,KAAK,yFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE1E;;AAEG;QACM,IAAA,CAAA,WAAW,GAAG,MAAM,EAA6B;AAE1D;;AAEG;QACM,IAAA,CAAA,UAAU,GAAG,MAAM,EAA6B;AAEzD;;AAEG;AACgB,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC9C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAE5B,YAAA,IAAI,MAAM;AAAE,gBAAA,OAAO,MAAM;YAEzB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;AAE/B,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAAE,gBAAA,OAAO,SAAS;AACxC,YAAA,IAAI,CAAC,CAAC;AAAE,gBAAA,OAAO,WAAW;AAC1B,YAAA,IAAI,CAAC,CAAC;AAAE,gBAAA,OAAO,WAAW;AAC1B,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,aAAa;AAEnC,YAAA,OAAO,aAAa;AACxB,QAAA,CAAC,qFAAC;QAGE,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;YAEpC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAC1D,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAElD,eAAe,CAAC,MAAK;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC7B,gBAAA,SAAS,CAAe,IAAI,CAAC,OAAO,EAAE,aAAa;AAC9C,qBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,qBAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAE/D,gBAAA,SAAS,CAAe,IAAI,CAAC,QAAQ,EAAE,aAAa;AAC/C,qBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,qBAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;AAEhE,gBAAA,SAAS,CAAe,IAAI,CAAC,QAAQ,EAAE,WAAW;AAC7C,qBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,qBAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAE9D,gBAAA,SAAS,CAAe,IAAI,CAAC,QAAQ,EAAE,eAAe;AACjD,qBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,qBAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAE9D,gBAAA,SAAS,CAAe,IAAI,CAAC,OAAO,EAAE,oBAAoB;AACrD,qBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,qBAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAClE,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,wBAAwB,CAAC,KAAmB,EAAA;QAChD,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;;AAGjD,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU;YAAE;;AAEhC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI;YAAE;QAEtF,KAAK,CAAC,cAAc,EAAE;QAEtB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC/C,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QAEhB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAEjD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;;QAGpB,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC;AACtD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC5C;AAEA;;;;;;;;;AASG;IACK,gBAAgB,GAAA;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AAElE,QAAA,IAAI,KAAK,CAAC,SAAS,KAAK,YAAY,EAAE;AAClC,YAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE;AAExE,YAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;QAC5B;QAEA,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IACzF;AAEQ,IAAA,yBAAyB,CAAC,KAAmB,EAAA;;AAEjD,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAAE;;QAElC,IAAI,CAAC,KAAK,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AAE9D,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC1B;AAEQ,IAAA,uBAAuB,CAAC,KAAmB,EAAA;;AAE/C,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAAE;QAElC,IAAI,CAAC,UAAU,EAAE;IACrB;IAEQ,UAAU,GAAA;AACd,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe;AAEtC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAE3B,QAAA,IAAI,CAAC,CAAC,GAAG,GAAG;AACZ,QAAA,IAAI,CAAC,CAAC,GAAG,GAAG;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,qBAAqB,EAAE;AAE5B,QAAA,IAAI,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,EAAE;YACnE,IAAI,CAAC,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;QACnD;IACJ;AAEQ,IAAA,YAAY,CAAC,KAAmB,EAAA;AACpC,QAAA,OAAO,KAAK,CAAC,SAAS,IAAI,CAAC;IAC/B;AAEQ,IAAA,eAAe,CAAC,KAAmB,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC7F;AAEA;;;;AAIG;AACK,IAAA,mBAAmB,CAAC,MAAc,EAAA;QACtC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;QAEpC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QAC1D,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,WAAW;AACtF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,CAAC,SAAS,CAAC;IAC/F;;AAGQ,IAAA,oBAAoB,CAAC,MAAc,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,CAAC,SAAS,CAAC;IAC/F;IAEQ,qBAAqB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI;YAAE;AAEtC,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB,QAAQ,EACR,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,2BAA2B,GAAG,mBAAmB,CAAC,SAAS,GAAG,SAAS,CAC/E;QACL;aAAO;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC3D;AAEA,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;IAClC;AAEQ,IAAA,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAgB,EAAA;;AAErC,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE;QAE1B,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;AACjD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACpD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAEtD,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;;AAE3B,YAAA,IAAI,UAAU;AAAE,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACnG,YAAA,IAAI,UAAU;AAAE,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACzG;QAEA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC3C;kIAlPS,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBARtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,aAAa;AACpB,wBAAA,gBAAgB,EAAE;AACrB,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;AC5ED,MAAM,UAAU,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC;MAMhC,gBAAgB,CAAA;kIAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,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,gBAAgB,YANT,YAAY,EAAE,UAAU,CAAA,EAAA,OAAA,EAAA,CAAxB,YAAY,EAAE,UAAU,CAAA,EAAA,CAAA,CAAA;mIAM/B,gBAAgB,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,UAAU;AACnB,oBAAA,OAAO,EAAE;AACZ,iBAAA;;;ACRD;;AAEG;;;;"}
|