@ngstarter-ui/components 1.0.28 → 1.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ngstarter-ui-components-action-required.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-action-required.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-alert.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-alert.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-announcement.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-announcement.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-autocomplete.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-autocomplete.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-avatar.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-avatar.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-badge.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-badge.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-block-loader.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-block-loader.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-breadcrumbs.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-button-toggle.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-button-toggle.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-button.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-button.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-card.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-card.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-checkbox.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-checkbox.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-chips.mjs +21 -7
- package/fesm2022/ngstarter-ui-components-chips.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-code-highlighter.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-code-highlighter.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-color-picker.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-color-picker.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-color-switcher.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-color-switcher.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-command-bar.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-command-bar.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-comment-editor.mjs +6 -6
- package/fesm2022/ngstarter-ui-components-comment-editor.mjs.map +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-Bk6QTli8.mjs → ngstarter-ui-components-content-editor-code-block.component-CpZ5gJOc.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-Bk6QTli8.mjs.map → ngstarter-ui-components-content-editor-code-block.component-CpZ5gJOc.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-BbkC_t86.mjs → ngstarter-ui-components-content-editor-embed-block-ghm0_0AF.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-BbkC_t86.mjs.map → ngstarter-ui-components-content-editor-embed-block-ghm0_0AF.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-D9_CxTY1.mjs → ngstarter-ui-components-content-editor-heading-block.component-C1FH89Sj.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-D9_CxTY1.mjs.map → ngstarter-ui-components-content-editor-heading-block.component-C1FH89Sj.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-B4zJyUg1.mjs → ngstarter-ui-components-content-editor-image-block.component-ahCIfpvQ.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-B4zJyUg1.mjs.map → ngstarter-ui-components-content-editor-image-block.component-ahCIfpvQ.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-Cv6wx5Xe.mjs → ngstarter-ui-components-content-editor-list-block.component-guhW_EyK.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-Cv6wx5Xe.mjs.map → ngstarter-ui-components-content-editor-list-block.component-guhW_EyK.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-1Zi2nAX5.mjs → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DNLTNGYa.mjs} +15 -15
- package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-1Zi2nAX5.mjs.map → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DNLTNGYa.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-C9bQvDYU.mjs → ngstarter-ui-components-content-editor-paragraph-block.component-DjgGUc7s.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-C9bQvDYU.mjs.map → ngstarter-ui-components-content-editor-paragraph-block.component-DjgGUc7s.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-BbHds2r2.mjs → ngstarter-ui-components-content-editor-quote-block.component-B3pek1H6.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-BbHds2r2.mjs.map → ngstarter-ui-components-content-editor-quote-block.component-B3pek1H6.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-DlDh7Fnn.mjs → ngstarter-ui-components-content-editor-table-block.component-bgBNjf4d.mjs} +6 -6
- package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-DlDh7Fnn.mjs.map → ngstarter-ui-components-content-editor-table-block.component-bgBNjf4d.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-m4DTihP2.mjs → ngstarter-ui-components-content-editor-video-block.component-DPlYe-_8.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-m4DTihP2.mjs.map → ngstarter-ui-components-content-editor-video-block.component-DPlYe-_8.mjs.map} +1 -1
- package/fesm2022/ngstarter-ui-components-content-editor.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-content-fade.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-content-fade.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-cookie-popup.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-cookie-popup.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-core.mjs +137 -34
- package/fesm2022/ngstarter-ui-components-core.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-country-select.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-country-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-data-view.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-data-view.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-datepicker.mjs +10 -10
- package/fesm2022/ngstarter-ui-components-datepicker.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-dialog.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-dialog.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-divider.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-divider.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-drawer.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-drawer.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-emoji-picker.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-emoji-picker.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-empty-state.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-empty-state.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-expand.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-expand.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-expansion.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-expansion.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-filter-builder.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-filter-builder.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-form-field.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-form-field.mjs.map +1 -1
- package/fesm2022/{ngstarter-ui-components-form-renderer-divider-content-CwGzDCZv.mjs → ngstarter-ui-components-form-renderer-divider-content-D8Sffofu.mjs} +3 -3
- package/fesm2022/{ngstarter-ui-components-form-renderer-divider-content-CwGzDCZv.mjs.map → ngstarter-ui-components-form-renderer-divider-content-D8Sffofu.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-form-renderer-radio-group-field-Cv3AGpoq.mjs → ngstarter-ui-components-form-renderer-radio-group-field-DUCSU3iT.mjs} +3 -3
- package/fesm2022/{ngstarter-ui-components-form-renderer-radio-group-field-Cv3AGpoq.mjs.map → ngstarter-ui-components-form-renderer-radio-group-field-DUCSU3iT.mjs.map} +1 -1
- package/fesm2022/ngstarter-ui-components-form-renderer.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-gauge.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-gauge.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-grid.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-grid.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-guided-tour.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-guided-tour.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-image-placeholder.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-image-placeholder.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-image-resizer.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-image-resizer.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-image-viewer.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-image-viewer.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-image-zoom-viewer.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-image-zoom-viewer.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-incidents.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-incidents.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-inline-text-edit.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-inline-text-edit.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-kanban-board.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-kanban-board.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-kbd.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-kbd.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-list.mjs +10 -10
- package/fesm2022/ngstarter-ui-components-list.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-logo.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-logo.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-menu.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-menu.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-micro-chart.mjs +10 -10
- package/fesm2022/ngstarter-ui-components-micro-chart.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-navigation.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-navigation.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-notifications.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-notifications.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-number-input.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-number-input.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-option.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-option.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-paginator.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-paginator.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-password-strength.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-password-strength.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-phone-input.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-phone-input.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-popover.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-popover.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-progress-bar.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-progress-bar.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-radio-card.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-radio-card.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-radio.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-radio.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-rail-nav.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-rail-nav.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-resizable-container.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-resizable-container.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-screen-loader.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-screen-loader.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-scroll-spy.mjs +6 -6
- package/fesm2022/ngstarter-ui-components-scroll-spy.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-scrollbar-area.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-scrollbar-area.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-segmented.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-segmented.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-select.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-side-panel.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-side-panel.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-sidebar.mjs +14 -14
- package/fesm2022/ngstarter-ui-components-sidebar.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-sidenav.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-sidenav.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-signature-pad.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-signature-pad.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-skeleton.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-skeleton.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-slide-toggle.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-slide-toggle.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-slider.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-slider.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-snack-bar.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-snack-bar.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-spinner.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-spinner.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-splash-screen.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-splash-screen.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-split.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-split.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-stepper.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-stepper.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-suggestions.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-suggestions.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-tab-panel.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-tab-panel.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-table.mjs +6 -6
- package/fesm2022/ngstarter-ui-components-table.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-tabs.mjs +6 -6
- package/fesm2022/ngstarter-ui-components-tabs.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-text-editor.mjs +10 -10
- package/fesm2022/ngstarter-ui-components-text-editor.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-thumbnail-maker.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-thumbnail-maker.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-tiles.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-tiles.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-timeline.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-timeline.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-timepicker.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-timepicker.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-toolbar.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-toolbar.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-tooltip.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-tooltip.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-upload.mjs +10 -10
- package/fesm2022/ngstarter-ui-components-upload.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-video-viewer.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-video-viewer.mjs.map +1 -1
- package/package.json +15 -3
- package/schematics/collection.json +10 -0
- package/schematics/migrations.json +11 -0
- package/schematics/ng-add/index.d.ts +6 -0
- package/schematics/ng-add/index.js +14 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/schema.json +17 -0
- package/schematics/ng-update/index.d.ts +6 -0
- package/schematics/ng-update/index.js +14 -0
- package/schematics/ng-update/index.js.map +1 -0
- package/schematics/ng-update/schema.json +17 -0
- package/schematics/utils.d.ts +8 -0
- package/schematics/utils.js +400 -0
- package/schematics/utils.js.map +1 -0
- package/styles/_common.scss +84 -390
- package/styles/_global.scss +12 -12
- package/styles/_tokens.scss +1043 -0
- package/styles/themes/compact.scss +9 -0
- package/styles/themes/enterprise.scss +349 -0
- package/styles/themes/modern.scss +352 -0
- package/types/ngstarter-ui-components-chips.d.ts +9 -4
- package/types/ngstarter-ui-components-core.d.ts +41 -5
|
@@ -76,13 +76,13 @@ class SplashScreen {
|
|
|
76
76
|
}, this.animationDuration());
|
|
77
77
|
}
|
|
78
78
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SplashScreen, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
79
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: SplashScreen, isStandalone: true, selector: "ngs-splash-screen", inputs: { animationDuration: { classPropertyName: "animationDuration", publicName: "animationDuration", isSignal: true, isRequired: false, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "hideDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "ngs-splash-screen" }, exportAs: ["ngsSplashScreen"], ngImport: i0, template: "<div>\n <ng-content select=\"ngs-logo\"/>\n <ng-content/>\n</div>\n", styles: [":host{--ngs-splash-screen-bg: var(--color-background);-webkit-user-select:none;user-select:none;position:fixed;inset:0;z-index:9999999;display:flex;align-items:center;justify-content:center;flex-direction:column;visibility:visible;background:var(--ngs-splash-screen-bg);--ngs-splash-screen-hide-animation-duration: .5s}:host.hide{opacity:0;transition:opacity var(--ngs-splash-screen-hide-animation-duration) ease-in-out}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
|
|
79
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: SplashScreen, isStandalone: true, selector: "ngs-splash-screen", inputs: { animationDuration: { classPropertyName: "animationDuration", publicName: "animationDuration", isSignal: true, isRequired: false, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "hideDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "ngs-splash-screen" }, exportAs: ["ngsSplashScreen"], ngImport: i0, template: "<div>\n <ng-content select=\"ngs-logo\"/>\n <ng-content/>\n</div>\n", styles: [":host{--ngs-splash-screen-bg: var(--ngs-color-background);-webkit-user-select:none;user-select:none;position:fixed;inset:0;z-index:9999999;display:flex;align-items:center;justify-content:center;flex-direction:column;visibility:visible;background:var(--ngs-splash-screen-bg);--ngs-splash-screen-hide-animation-duration: .5s}:host.hide{opacity:0;transition:opacity var(--ngs-splash-screen-hide-animation-duration) ease-in-out}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
|
|
80
80
|
}
|
|
81
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SplashScreen, decorators: [{
|
|
82
82
|
type: Component,
|
|
83
83
|
args: [{ selector: 'ngs-splash-screen', exportAs: 'ngsSplashScreen', imports: [], host: {
|
|
84
84
|
'class': 'ngs-splash-screen',
|
|
85
|
-
}, template: "<div>\n <ng-content select=\"ngs-logo\"/>\n <ng-content/>\n</div>\n", styles: [":host{--ngs-splash-screen-bg: var(--color-background);-webkit-user-select:none;user-select:none;position:fixed;inset:0;z-index:9999999;display:flex;align-items:center;justify-content:center;flex-direction:column;visibility:visible;background:var(--ngs-splash-screen-bg);--ngs-splash-screen-hide-animation-duration: .5s}:host.hide{opacity:0;transition:opacity var(--ngs-splash-screen-hide-animation-duration) ease-in-out}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
85
|
+
}, template: "<div>\n <ng-content select=\"ngs-logo\"/>\n <ng-content/>\n</div>\n", styles: [":host{--ngs-splash-screen-bg: var(--ngs-color-background);-webkit-user-select:none;user-select:none;position:fixed;inset:0;z-index:9999999;display:flex;align-items:center;justify-content:center;flex-direction:column;visibility:visible;background:var(--ngs-splash-screen-bg);--ngs-splash-screen-hide-animation-duration: .5s}:host.hide{opacity:0;transition:opacity var(--ngs-splash-screen-hide-animation-duration) ease-in-out}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
86
86
|
}], ctorParameters: () => [], propDecorators: { animationDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "animationDuration", required: false }] }], hideDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideDelay", required: false }] }] } });
|
|
87
87
|
|
|
88
88
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-splash-screen.mjs","sources":["../../../projects/components/splash-screen/src/splash-screen.store.ts","../../../projects/components/splash-screen/src/splash-screen/splash-screen.ts","../../../projects/components/splash-screen/src/splash-screen/splash-screen.html","../../../projects/components/splash-screen/ngstarter-ui-components-splash-screen.ts"],"sourcesContent":["import { patchState, signalStore, withMethods, withState } from '@ngrx/signals';\n\nexport interface SplashScreenState {\n visible: boolean;\n}\n\nconst initialState: SplashScreenState = {\n visible: true\n};\n\nexport const SplashScreenStore = signalStore(\n { providedIn: 'root' },\n withState(initialState),\n withMethods((store) => ({\n show(): void {\n patchState(store, {\n visible: true\n });\n },\n hide(): void {\n patchState(store, {\n visible: false\n });\n }\n }))\n);\n","import {\n afterNextRender,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n Renderer2\n} from '@angular/core';\nimport { getState } from '@ngrx/signals';\nimport { SplashScreenState, SplashScreenStore } from '../splash-screen.store';\nimport { filter } from 'rxjs';\nimport { NavigationEnd, Router } from '@angular/router';\n\n@Component({\n selector: 'ngs-splash-screen',\n exportAs: 'ngsSplashScreen',\n imports: [],\n templateUrl: './splash-screen.html',\n styleUrl: './splash-screen.scss',\n host: {\n 'class': 'ngs-splash-screen',\n }\n})\nexport class SplashScreen {\n private _store = inject(SplashScreenStore);\n private _renderer = inject(Renderer2);\n private _elementRef = inject(ElementRef);\n private _router = inject(Router);\n\n animationDuration = input(500, {\n transform: numberAttribute\n }); // in milliseconds\n hideDelay = input(1000, {\n transform: numberAttribute\n }); // in milliseconds\n\n constructor() {\n const initialState = getState<SplashScreenState>(this._store);\n\n effect(() => {\n const currentState = getState<SplashScreenState>(this._store);\n\n if (initialState.visible === currentState.visible) {\n return;\n }\n\n if (currentState.visible) {\n this._show();\n } else {\n this._hide();\n }\n });\n\n afterNextRender(() => {\n const hideOnNavigationEnd = () => {\n setTimeout(() => {\n this._hide();\n }, this.hideDelay());\n };\n\n if (this._router.navigated) {\n hideOnNavigationEnd();\n return;\n }\n\n const subscription = this._router.events\n .pipe(\n filter(event=> event instanceof NavigationEnd)\n )\n .subscribe(() => {\n subscription.unsubscribe();\n hideOnNavigationEnd();\n });\n });\n }\n\n ngOnInit() {\n this._renderer.setProperty(\n this._elementRef.nativeElement, '--ngs-splash-screen-hide-animation-duration', (this.animationDuration() / 1000) + 's'\n );\n }\n\n private _show(): void {\n const loaderEl = this._elementRef.nativeElement as HTMLElement;\n this._renderer.setStyle(loaderEl, 'visibility', 'visible');\n this._renderer.setStyle(loaderEl, 'zIndex', '9999999');\n }\n\n private _hide(): void {\n const loaderEl = this._elementRef.nativeElement as HTMLElement;\n this._renderer.addClass(loaderEl, 'hide');\n setTimeout(() => {\n this._renderer.setStyle(loaderEl, 'visibility', 'hidden');\n this._renderer.setStyle(loaderEl, 'zIndex', '-9999999');\n }, this.animationDuration());\n }\n}\n","<div>\n <ng-content select=\"ngs-logo\"/>\n <ng-content/>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-splash-screen.mjs","sources":["../../../projects/components/splash-screen/src/splash-screen.store.ts","../../../projects/components/splash-screen/src/splash-screen/splash-screen.ts","../../../projects/components/splash-screen/src/splash-screen/splash-screen.html","../../../projects/components/splash-screen/ngstarter-ui-components-splash-screen.ts"],"sourcesContent":["import { patchState, signalStore, withMethods, withState } from '@ngrx/signals';\n\nexport interface SplashScreenState {\n visible: boolean;\n}\n\nconst initialState: SplashScreenState = {\n visible: true\n};\n\nexport const SplashScreenStore = signalStore(\n { providedIn: 'root' },\n withState(initialState),\n withMethods((store) => ({\n show(): void {\n patchState(store, {\n visible: true\n });\n },\n hide(): void {\n patchState(store, {\n visible: false\n });\n }\n }))\n);\n","import {\n afterNextRender,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n Renderer2\n} from '@angular/core';\nimport { getState } from '@ngrx/signals';\nimport { SplashScreenState, SplashScreenStore } from '../splash-screen.store';\nimport { filter } from 'rxjs';\nimport { NavigationEnd, Router } from '@angular/router';\n\n@Component({\n selector: 'ngs-splash-screen',\n exportAs: 'ngsSplashScreen',\n imports: [],\n templateUrl: './splash-screen.html',\n styleUrl: './splash-screen.scss',\n host: {\n 'class': 'ngs-splash-screen',\n }\n})\nexport class SplashScreen {\n private _store = inject(SplashScreenStore);\n private _renderer = inject(Renderer2);\n private _elementRef = inject(ElementRef);\n private _router = inject(Router);\n\n animationDuration = input(500, {\n transform: numberAttribute\n }); // in milliseconds\n hideDelay = input(1000, {\n transform: numberAttribute\n }); // in milliseconds\n\n constructor() {\n const initialState = getState<SplashScreenState>(this._store);\n\n effect(() => {\n const currentState = getState<SplashScreenState>(this._store);\n\n if (initialState.visible === currentState.visible) {\n return;\n }\n\n if (currentState.visible) {\n this._show();\n } else {\n this._hide();\n }\n });\n\n afterNextRender(() => {\n const hideOnNavigationEnd = () => {\n setTimeout(() => {\n this._hide();\n }, this.hideDelay());\n };\n\n if (this._router.navigated) {\n hideOnNavigationEnd();\n return;\n }\n\n const subscription = this._router.events\n .pipe(\n filter(event=> event instanceof NavigationEnd)\n )\n .subscribe(() => {\n subscription.unsubscribe();\n hideOnNavigationEnd();\n });\n });\n }\n\n ngOnInit() {\n this._renderer.setProperty(\n this._elementRef.nativeElement, '--ngs-splash-screen-hide-animation-duration', (this.animationDuration() / 1000) + 's'\n );\n }\n\n private _show(): void {\n const loaderEl = this._elementRef.nativeElement as HTMLElement;\n this._renderer.setStyle(loaderEl, 'visibility', 'visible');\n this._renderer.setStyle(loaderEl, 'zIndex', '9999999');\n }\n\n private _hide(): void {\n const loaderEl = this._elementRef.nativeElement as HTMLElement;\n this._renderer.addClass(loaderEl, 'hide');\n setTimeout(() => {\n this._renderer.setStyle(loaderEl, 'visibility', 'hidden');\n this._renderer.setStyle(loaderEl, 'zIndex', '-9999999');\n }, this.animationDuration());\n }\n}\n","<div>\n <ng-content select=\"ngs-logo\"/>\n <ng-content/>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAMA,MAAM,YAAY,GAAsB;AACtC,IAAA,OAAO,EAAE;CACV;AAEM,MAAM,iBAAiB,GAAG,WAAW,CAC1C,EAAE,UAAU,EAAE,MAAM,EAAE,EACtB,SAAS,CAAC,YAAY,CAAC,EACvB,WAAW,CAAC,CAAC,KAAK,MAAM;IACtB,IAAI,GAAA;QACF,UAAU,CAAC,KAAK,EAAE;AAChB,YAAA,OAAO,EAAE;AACV,SAAA,CAAC;IACJ,CAAC;IACD,IAAI,GAAA;QACF,UAAU,CAAC,KAAK,EAAE;AAChB,YAAA,OAAO,EAAE;AACV,SAAA,CAAC;IACJ;CACD,CAAC,CAAC;;MCCQ,YAAY,CAAA;AACf,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAClC,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IAEhC,iBAAiB,GAAG,KAAK,CAAC,GAAG,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,8BAAA,EAAA,CAAA,EAC3B,SAAS,EAAE,eAAe,EAAA,CAC1B,CAAC;IACH,SAAS,GAAG,KAAK,CAAC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EACpB,SAAS,EAAE,eAAe,EAAA,CAC1B,CAAC;AAEH,IAAA,WAAA,GAAA;QACE,MAAM,YAAY,GAAG,QAAQ,CAAoB,IAAI,CAAC,MAAM,CAAC;QAE7D,MAAM,CAAC,MAAK;YACV,MAAM,YAAY,GAAG,QAAQ,CAAoB,IAAI,CAAC,MAAM,CAAC;YAE7D,IAAI,YAAY,CAAC,OAAO,KAAK,YAAY,CAAC,OAAO,EAAE;gBACjD;YACF;AAEA,YAAA,IAAI,YAAY,CAAC,OAAO,EAAE;gBACxB,IAAI,CAAC,KAAK,EAAE;YACd;iBAAO;gBACL,IAAI,CAAC,KAAK,EAAE;YACd;AACF,QAAA,CAAC,CAAC;QAEF,eAAe,CAAC,MAAK;YACnB,MAAM,mBAAmB,GAAG,MAAK;gBAC/B,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACtB,YAAA,CAAC;AAED,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAC1B,gBAAA,mBAAmB,EAAE;gBACrB;YACF;AAEA,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;iBAC/B,IAAI,CACH,MAAM,CAAC,KAAK,IAAG,KAAK,YAAY,aAAa,CAAC;iBAE/C,SAAS,CAAC,MAAK;gBACd,YAAY,CAAC,WAAW,EAAE;AAC1B,gBAAA,mBAAmB,EAAE;AACvB,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,CAAC,WAAW,CACxB,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,6CAA6C,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,IAAI,GAAG,CACvH;IACH;IAEQ,KAAK,GAAA;AACX,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAA4B;QAC9D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;IACxD;IAEQ,KAAK,GAAA;AACX,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAA4B;QAC9D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QACzC,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC;YACzD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;AACzD,QAAA,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC9B;uGAxEW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,ucCzBzB,uEAIA,EAAA,MAAA,EAAA,CAAA,+eAAA,CAAA,EAAA,CAAA;;2FDqBa,YAAY,EAAA,UAAA,EAAA,CAAA;kBAVxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,QAAA,EACnB,iBAAiB,EAAA,OAAA,EAClB,EAAE,EAAA,IAAA,EAGL;AACJ,wBAAA,OAAO,EAAE,mBAAmB;AAC7B,qBAAA,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,+eAAA,CAAA,EAAA;;;AEvBH;;AAEG;;;;"}
|
|
@@ -756,7 +756,7 @@ class Split {
|
|
|
756
756
|
this.stopDragging();
|
|
757
757
|
}
|
|
758
758
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Split, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
759
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: Split, isStandalone: true, selector: "ngs-split", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null }, gutterSize: { classPropertyName: "gutterSize", publicName: "gutterSize", isSignal: true, isRequired: false, transformFunction: null }, gutterStep: { classPropertyName: "gutterStep", publicName: "gutterStep", isSignal: true, isRequired: false, transformFunction: null }, restrictMove: { classPropertyName: "restrictMove", publicName: "restrictMove", isSignal: true, isRequired: false, transformFunction: null }, useTransition: { classPropertyName: "useTransition", publicName: "useTransition", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, gutterDblClickDuration: { classPropertyName: "gutterDblClickDuration", publicName: "gutterDblClickDuration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dragStart: "dragStart", dragEnd: "dragEnd", gutterClick: "gutterClick", gutterDblClick: "gutterDblClick", transitionEnd: "transitionEnd" }, host: { properties: { "class.ngs-split-horizontal": "direction() === \"horizontal\"", "class.ngs-split-vertical": "direction() === \"vertical\"", "class.ngs-split-percent": "unit() === \"percent\"", "class.ngs-split-pixel": "unit() === \"pixel\"", "class.ngs-split-disabled": "disabled()", "class.ngs-split-transition": "useTransition()", "class.ngs-dragging": "isDraggingSignal()", "class.ngs-split-init": "isInitSignal()" }, classAttribute: "ngs-split" }, viewQueries: [{ propertyName: "gutterEls", predicate: ["gutterEls"], descendants: true, isSignal: true }], exportAs: ["ngsSplit"], ngImport: i0, template: "<ng-content/>\n@for (area of displayedAreas; track area; let index = $index; let last = $last) {\n @if (!last) {\n <div\n #gutterEls\n class=\"ngs-split-gutter\"\n [style.flex-basis.px]=\"gutterSize()\"\n [style.order]=\"index * 2 + 1\"\n (mousedown)=\"startDragging($event, index * 2 + 1, index + 1)\"\n (touchstart)=\"startDragging($event, index * 2 + 1, index + 1)\"\n (mouseup)=\"clickGutter($event, index + 1)\"\n (touchend)=\"clickGutter($event, index + 1)\"\n >\n <div class=\"ngs-split-gutter-handle\" [class.has-dots]=\"shouldShowHandle(index)\">\n @if (shouldShowHandle(index)) {\n <div class=\"ngs-split-gutter-dot\"></div>\n <div class=\"ngs-split-gutter-dot\"></div>\n <div class=\"ngs-split-gutter-dot\"></div>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{--ngs-split-gutter-size: 5px;--ngs-split-handle-size: 10px;--ngs-split-handle-offset: calc((var(--ngs-split-handle-size) - var(--ngs-split-gutter-size)) * .5);--ngs-split-gutter-bg: var(--color-surface-container-high);--ngs-split-gutter-hover-bg: var(--color-primary);display:flex;flex-wrap:nowrap;justify-content:flex-start;align-items:stretch;overflow:hidden;width:100%;height:100%}:host ::ng-deep>.ngs-split-gutter{position:relative;display:flex;flex-grow:0;flex-shrink:0;align-items:center;justify-content:center;background-color:transparent;z-index:10}:host ::ng-deep>.ngs-split-gutter:before{content:\"\";position:absolute;background-color:var(--ngs-split-gutter-bg);transition:background-color .2s}:host ::ng-deep>.ngs-split-gutter:hover:before{background-color:var(--ngs-split-gutter-hover-bg)}:host ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle{position:absolute;opacity:0;display:flex;align-items:center;justify-content:center}:host ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle.has-dots{opacity:1}:host ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle .ngs-split-gutter-dot{width:2px;height:2px;border-radius:50%;background-color:var(--color-on-surface)}:host ::ng-deep>.ngs-split-pane{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;min-width:0;min-height:0;overflow:hidden auto}:host ::ng-deep>.ngs-split-pane.ngs-dragging{-webkit-user-select:none;user-select:none}:host ::ng-deep>.ngs-split-pane>*{flex-shrink:0}:host ::ng-deep>.ngs-split-pane.ngs-split-pane-hidden{flex:0 1 0!important;overflow:hidden}:host.ngs-split-horizontal{flex-direction:row}:host.ngs-split-horizontal.ngs-dragging{cursor:col-resize}:host.ngs-split-horizontal ::ng-deep>.ngs-split-gutter{flex-direction:row;height:100%;width:var(--ngs-split-gutter-size);cursor:col-resize}:host.ngs-split-horizontal ::ng-deep>.ngs-split-gutter:before{width:100%;height:100%;top:0;left:0}:host.ngs-split-horizontal ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle{width:var(--ngs-split-handle-size);height:100%;left:calc(-1 * var(--ngs-split-handle-offset));flex-direction:column;gap:2px}:host.ngs-split-horizontal ::ng-deep>.ngs-split-pane{height:100%;min-height:0}:host.ngs-split-vertical{flex-direction:column}:host.ngs-split-vertical.ngs-dragging{cursor:row-resize}:host.ngs-split-vertical ::ng-deep>.ngs-split-gutter{flex-direction:column;width:100%;height:var(--ngs-split-gutter-size);cursor:row-resize}:host.ngs-split-vertical ::ng-deep>.ngs-split-gutter:before{width:100%;height:100%;top:0;left:0}:host.ngs-split-vertical ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle{width:100%;height:var(--ngs-split-handle-size);top:calc(-1 * var(--ngs-split-handle-offset));flex-direction:row;gap:3px}:host.ngs-split-vertical ::ng-deep>.ngs-split-pane{width:100%;min-width:0}:host.ngs-split-vertical ::ng-deep>.ngs-split-pane.ngs-split-pane-hidden{max-width:0}:host.ngs-split-disabled ::ng-deep>.ngs-split-gutter{cursor:default}:host.ngs-split-disabled ::ng-deep>.ngs-split-gutter .ngs-split-gutter-handle{background-image:none}:host.ngs-split-transition.ngs-split-init:not(.ngs-dragging) ::ng-deep>.ngs-split-gutter,:host.ngs-split-transition.ngs-split-init:not(.ngs-dragging) ::ng-deep>.ngs-split-pane{transition:flex-basis .3s}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
759
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: Split, isStandalone: true, selector: "ngs-split", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null }, gutterSize: { classPropertyName: "gutterSize", publicName: "gutterSize", isSignal: true, isRequired: false, transformFunction: null }, gutterStep: { classPropertyName: "gutterStep", publicName: "gutterStep", isSignal: true, isRequired: false, transformFunction: null }, restrictMove: { classPropertyName: "restrictMove", publicName: "restrictMove", isSignal: true, isRequired: false, transformFunction: null }, useTransition: { classPropertyName: "useTransition", publicName: "useTransition", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, gutterDblClickDuration: { classPropertyName: "gutterDblClickDuration", publicName: "gutterDblClickDuration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dragStart: "dragStart", dragEnd: "dragEnd", gutterClick: "gutterClick", gutterDblClick: "gutterDblClick", transitionEnd: "transitionEnd" }, host: { properties: { "class.ngs-split-horizontal": "direction() === \"horizontal\"", "class.ngs-split-vertical": "direction() === \"vertical\"", "class.ngs-split-percent": "unit() === \"percent\"", "class.ngs-split-pixel": "unit() === \"pixel\"", "class.ngs-split-disabled": "disabled()", "class.ngs-split-transition": "useTransition()", "class.ngs-dragging": "isDraggingSignal()", "class.ngs-split-init": "isInitSignal()" }, classAttribute: "ngs-split" }, viewQueries: [{ propertyName: "gutterEls", predicate: ["gutterEls"], descendants: true, isSignal: true }], exportAs: ["ngsSplit"], ngImport: i0, template: "<ng-content/>\n@for (area of displayedAreas; track area; let index = $index; let last = $last) {\n @if (!last) {\n <div\n #gutterEls\n class=\"ngs-split-gutter\"\n [style.flex-basis.px]=\"gutterSize()\"\n [style.order]=\"index * 2 + 1\"\n (mousedown)=\"startDragging($event, index * 2 + 1, index + 1)\"\n (touchstart)=\"startDragging($event, index * 2 + 1, index + 1)\"\n (mouseup)=\"clickGutter($event, index + 1)\"\n (touchend)=\"clickGutter($event, index + 1)\"\n >\n <div class=\"ngs-split-gutter-handle\" [class.has-dots]=\"shouldShowHandle(index)\">\n @if (shouldShowHandle(index)) {\n <div class=\"ngs-split-gutter-dot\"></div>\n <div class=\"ngs-split-gutter-dot\"></div>\n <div class=\"ngs-split-gutter-dot\"></div>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{--ngs-split-gutter-size: 5px;--ngs-split-handle-size: 10px;--ngs-split-handle-offset: calc((var(--ngs-split-handle-size) - var(--ngs-split-gutter-size)) * .5);--ngs-split-gutter-bg: var(--ngs-color-surface-container-high);--ngs-split-gutter-hover-bg: var(--ngs-color-primary);display:flex;flex-wrap:nowrap;justify-content:flex-start;align-items:stretch;overflow:hidden;width:100%;height:100%}:host ::ng-deep>.ngs-split-gutter{position:relative;display:flex;flex-grow:0;flex-shrink:0;align-items:center;justify-content:center;background-color:transparent;z-index:10}:host ::ng-deep>.ngs-split-gutter:before{content:\"\";position:absolute;background-color:var(--ngs-split-gutter-bg);transition:background-color .2s}:host ::ng-deep>.ngs-split-gutter:hover:before{background-color:var(--ngs-split-gutter-hover-bg)}:host ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle{position:absolute;opacity:0;display:flex;align-items:center;justify-content:center}:host ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle.has-dots{opacity:1}:host ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle .ngs-split-gutter-dot{width:2px;height:2px;border-radius:50%;background-color:var(--ngs-color-on-surface)}:host ::ng-deep>.ngs-split-pane{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;min-width:0;min-height:0;overflow:hidden auto}:host ::ng-deep>.ngs-split-pane.ngs-dragging{-webkit-user-select:none;user-select:none}:host ::ng-deep>.ngs-split-pane>*{flex-shrink:0}:host ::ng-deep>.ngs-split-pane.ngs-split-pane-hidden{flex:0 1 0!important;overflow:hidden}:host.ngs-split-horizontal{flex-direction:row}:host.ngs-split-horizontal.ngs-dragging{cursor:col-resize}:host.ngs-split-horizontal ::ng-deep>.ngs-split-gutter{flex-direction:row;height:100%;width:var(--ngs-split-gutter-size);cursor:col-resize}:host.ngs-split-horizontal ::ng-deep>.ngs-split-gutter:before{width:100%;height:100%;top:0;left:0}:host.ngs-split-horizontal ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle{width:var(--ngs-split-handle-size);height:100%;left:calc(-1 * var(--ngs-split-handle-offset));flex-direction:column;gap:2px}:host.ngs-split-horizontal ::ng-deep>.ngs-split-pane{height:100%;min-height:0}:host.ngs-split-vertical{flex-direction:column}:host.ngs-split-vertical.ngs-dragging{cursor:row-resize}:host.ngs-split-vertical ::ng-deep>.ngs-split-gutter{flex-direction:column;width:100%;height:var(--ngs-split-gutter-size);cursor:row-resize}:host.ngs-split-vertical ::ng-deep>.ngs-split-gutter:before{width:100%;height:100%;top:0;left:0}:host.ngs-split-vertical ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle{width:100%;height:var(--ngs-split-handle-size);top:calc(-1 * var(--ngs-split-handle-offset));flex-direction:row;gap:3px}:host.ngs-split-vertical ::ng-deep>.ngs-split-pane{width:100%;min-width:0}:host.ngs-split-vertical ::ng-deep>.ngs-split-pane.ngs-split-pane-hidden{max-width:0}:host.ngs-split-disabled ::ng-deep>.ngs-split-gutter{cursor:default}:host.ngs-split-disabled ::ng-deep>.ngs-split-gutter .ngs-split-gutter-handle{background-image:none}:host.ngs-split-transition.ngs-split-init:not(.ngs-dragging) ::ng-deep>.ngs-split-gutter,:host.ngs-split-transition.ngs-split-init:not(.ngs-dragging) ::ng-deep>.ngs-split-pane{transition:flex-basis .3s}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
760
760
|
}
|
|
761
761
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Split, decorators: [{
|
|
762
762
|
type: Component,
|
|
@@ -770,7 +770,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
770
770
|
'[class.ngs-split-transition]': 'useTransition()',
|
|
771
771
|
'[class.ngs-dragging]': 'isDraggingSignal()',
|
|
772
772
|
'[class.ngs-split-init]': 'isInitSignal()',
|
|
773
|
-
}, template: "<ng-content/>\n@for (area of displayedAreas; track area; let index = $index; let last = $last) {\n @if (!last) {\n <div\n #gutterEls\n class=\"ngs-split-gutter\"\n [style.flex-basis.px]=\"gutterSize()\"\n [style.order]=\"index * 2 + 1\"\n (mousedown)=\"startDragging($event, index * 2 + 1, index + 1)\"\n (touchstart)=\"startDragging($event, index * 2 + 1, index + 1)\"\n (mouseup)=\"clickGutter($event, index + 1)\"\n (touchend)=\"clickGutter($event, index + 1)\"\n >\n <div class=\"ngs-split-gutter-handle\" [class.has-dots]=\"shouldShowHandle(index)\">\n @if (shouldShowHandle(index)) {\n <div class=\"ngs-split-gutter-dot\"></div>\n <div class=\"ngs-split-gutter-dot\"></div>\n <div class=\"ngs-split-gutter-dot\"></div>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{--ngs-split-gutter-size: 5px;--ngs-split-handle-size: 10px;--ngs-split-handle-offset: calc((var(--ngs-split-handle-size) - var(--ngs-split-gutter-size)) * .5);--ngs-split-gutter-bg: var(--color-surface-container-high);--ngs-split-gutter-hover-bg: var(--color-primary);display:flex;flex-wrap:nowrap;justify-content:flex-start;align-items:stretch;overflow:hidden;width:100%;height:100%}:host ::ng-deep>.ngs-split-gutter{position:relative;display:flex;flex-grow:0;flex-shrink:0;align-items:center;justify-content:center;background-color:transparent;z-index:10}:host ::ng-deep>.ngs-split-gutter:before{content:\"\";position:absolute;background-color:var(--ngs-split-gutter-bg);transition:background-color .2s}:host ::ng-deep>.ngs-split-gutter:hover:before{background-color:var(--ngs-split-gutter-hover-bg)}:host ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle{position:absolute;opacity:0;display:flex;align-items:center;justify-content:center}:host ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle.has-dots{opacity:1}:host ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle .ngs-split-gutter-dot{width:2px;height:2px;border-radius:50%;background-color:var(--color-on-surface)}:host ::ng-deep>.ngs-split-pane{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;min-width:0;min-height:0;overflow:hidden auto}:host ::ng-deep>.ngs-split-pane.ngs-dragging{-webkit-user-select:none;user-select:none}:host ::ng-deep>.ngs-split-pane>*{flex-shrink:0}:host ::ng-deep>.ngs-split-pane.ngs-split-pane-hidden{flex:0 1 0!important;overflow:hidden}:host.ngs-split-horizontal{flex-direction:row}:host.ngs-split-horizontal.ngs-dragging{cursor:col-resize}:host.ngs-split-horizontal ::ng-deep>.ngs-split-gutter{flex-direction:row;height:100%;width:var(--ngs-split-gutter-size);cursor:col-resize}:host.ngs-split-horizontal ::ng-deep>.ngs-split-gutter:before{width:100%;height:100%;top:0;left:0}:host.ngs-split-horizontal ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle{width:var(--ngs-split-handle-size);height:100%;left:calc(-1 * var(--ngs-split-handle-offset));flex-direction:column;gap:2px}:host.ngs-split-horizontal ::ng-deep>.ngs-split-pane{height:100%;min-height:0}:host.ngs-split-vertical{flex-direction:column}:host.ngs-split-vertical.ngs-dragging{cursor:row-resize}:host.ngs-split-vertical ::ng-deep>.ngs-split-gutter{flex-direction:column;width:100%;height:var(--ngs-split-gutter-size);cursor:row-resize}:host.ngs-split-vertical ::ng-deep>.ngs-split-gutter:before{width:100%;height:100%;top:0;left:0}:host.ngs-split-vertical ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle{width:100%;height:var(--ngs-split-handle-size);top:calc(-1 * var(--ngs-split-handle-offset));flex-direction:row;gap:3px}:host.ngs-split-vertical ::ng-deep>.ngs-split-pane{width:100%;min-width:0}:host.ngs-split-vertical ::ng-deep>.ngs-split-pane.ngs-split-pane-hidden{max-width:0}:host.ngs-split-disabled ::ng-deep>.ngs-split-gutter{cursor:default}:host.ngs-split-disabled ::ng-deep>.ngs-split-gutter .ngs-split-gutter-handle{background-image:none}:host.ngs-split-transition.ngs-split-init:not(.ngs-dragging) ::ng-deep>.ngs-split-gutter,:host.ngs-split-transition.ngs-split-init:not(.ngs-dragging) ::ng-deep>.ngs-split-pane{transition:flex-basis .3s}\n"] }]
|
|
773
|
+
}, template: "<ng-content/>\n@for (area of displayedAreas; track area; let index = $index; let last = $last) {\n @if (!last) {\n <div\n #gutterEls\n class=\"ngs-split-gutter\"\n [style.flex-basis.px]=\"gutterSize()\"\n [style.order]=\"index * 2 + 1\"\n (mousedown)=\"startDragging($event, index * 2 + 1, index + 1)\"\n (touchstart)=\"startDragging($event, index * 2 + 1, index + 1)\"\n (mouseup)=\"clickGutter($event, index + 1)\"\n (touchend)=\"clickGutter($event, index + 1)\"\n >\n <div class=\"ngs-split-gutter-handle\" [class.has-dots]=\"shouldShowHandle(index)\">\n @if (shouldShowHandle(index)) {\n <div class=\"ngs-split-gutter-dot\"></div>\n <div class=\"ngs-split-gutter-dot\"></div>\n <div class=\"ngs-split-gutter-dot\"></div>\n }\n </div>\n </div>\n }\n}\n", styles: [":host{--ngs-split-gutter-size: 5px;--ngs-split-handle-size: 10px;--ngs-split-handle-offset: calc((var(--ngs-split-handle-size) - var(--ngs-split-gutter-size)) * .5);--ngs-split-gutter-bg: var(--ngs-color-surface-container-high);--ngs-split-gutter-hover-bg: var(--ngs-color-primary);display:flex;flex-wrap:nowrap;justify-content:flex-start;align-items:stretch;overflow:hidden;width:100%;height:100%}:host ::ng-deep>.ngs-split-gutter{position:relative;display:flex;flex-grow:0;flex-shrink:0;align-items:center;justify-content:center;background-color:transparent;z-index:10}:host ::ng-deep>.ngs-split-gutter:before{content:\"\";position:absolute;background-color:var(--ngs-split-gutter-bg);transition:background-color .2s}:host ::ng-deep>.ngs-split-gutter:hover:before{background-color:var(--ngs-split-gutter-hover-bg)}:host ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle{position:absolute;opacity:0;display:flex;align-items:center;justify-content:center}:host ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle.has-dots{opacity:1}:host ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle .ngs-split-gutter-dot{width:2px;height:2px;border-radius:50%;background-color:var(--ngs-color-on-surface)}:host ::ng-deep>.ngs-split-pane{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;min-width:0;min-height:0;overflow:hidden auto}:host ::ng-deep>.ngs-split-pane.ngs-dragging{-webkit-user-select:none;user-select:none}:host ::ng-deep>.ngs-split-pane>*{flex-shrink:0}:host ::ng-deep>.ngs-split-pane.ngs-split-pane-hidden{flex:0 1 0!important;overflow:hidden}:host.ngs-split-horizontal{flex-direction:row}:host.ngs-split-horizontal.ngs-dragging{cursor:col-resize}:host.ngs-split-horizontal ::ng-deep>.ngs-split-gutter{flex-direction:row;height:100%;width:var(--ngs-split-gutter-size);cursor:col-resize}:host.ngs-split-horizontal ::ng-deep>.ngs-split-gutter:before{width:100%;height:100%;top:0;left:0}:host.ngs-split-horizontal ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle{width:var(--ngs-split-handle-size);height:100%;left:calc(-1 * var(--ngs-split-handle-offset));flex-direction:column;gap:2px}:host.ngs-split-horizontal ::ng-deep>.ngs-split-pane{height:100%;min-height:0}:host.ngs-split-vertical{flex-direction:column}:host.ngs-split-vertical.ngs-dragging{cursor:row-resize}:host.ngs-split-vertical ::ng-deep>.ngs-split-gutter{flex-direction:column;width:100%;height:var(--ngs-split-gutter-size);cursor:row-resize}:host.ngs-split-vertical ::ng-deep>.ngs-split-gutter:before{width:100%;height:100%;top:0;left:0}:host.ngs-split-vertical ::ng-deep>.ngs-split-gutter>.ngs-split-gutter-handle{width:100%;height:var(--ngs-split-handle-size);top:calc(-1 * var(--ngs-split-handle-offset));flex-direction:row;gap:3px}:host.ngs-split-vertical ::ng-deep>.ngs-split-pane{width:100%;min-width:0}:host.ngs-split-vertical ::ng-deep>.ngs-split-pane.ngs-split-pane-hidden{max-width:0}:host.ngs-split-disabled ::ng-deep>.ngs-split-gutter{cursor:default}:host.ngs-split-disabled ::ng-deep>.ngs-split-gutter .ngs-split-gutter-handle{background-image:none}:host.ngs-split-transition.ngs-split-init:not(.ngs-dragging) ::ng-deep>.ngs-split-gutter,:host.ngs-split-transition.ngs-split-init:not(.ngs-dragging) ::ng-deep>.ngs-split-pane{transition:flex-basis .3s}\n"] }]
|
|
774
774
|
}], ctorParameters: () => [], propDecorators: { direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], unit: [{ type: i0.Input, args: [{ isSignal: true, alias: "unit", required: false }] }], gutterSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "gutterSize", required: false }] }], gutterStep: [{ type: i0.Input, args: [{ isSignal: true, alias: "gutterStep", required: false }] }], restrictMove: [{ type: i0.Input, args: [{ isSignal: true, alias: "restrictMove", required: false }] }], useTransition: [{ type: i0.Input, args: [{ isSignal: true, alias: "useTransition", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], dir: [{ type: i0.Input, args: [{ isSignal: true, alias: "dir", required: false }] }], gutterDblClickDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "gutterDblClickDuration", required: false }] }], dragStart: [{ type: i0.Output, args: ["dragStart"] }], dragEnd: [{ type: i0.Output, args: ["dragEnd"] }], gutterClick: [{ type: i0.Output, args: ["gutterClick"] }], gutterDblClick: [{ type: i0.Output, args: ["gutterDblClick"] }], transitionEnd: [{ type: i0.Output, args: ["transitionEnd"] }], gutterEls: [{ type: i0.ViewChildren, args: ['gutterEls', { isSignal: true }] }] } });
|
|
775
775
|
|
|
776
776
|
class SplitPane {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-split.mjs","sources":["../../../projects/components/split/src/utils.ts","../../../projects/components/split/src/split/split.ts","../../../projects/components/split/src/split/split.html","../../../projects/components/split/src/split-pane.ts","../../../projects/components/split/ngstarter-ui-components-split.ts"],"sourcesContent":["import { ElementRef } from '@angular/core';\n\nimport {\n SplitArea,\n SplitPoint,\n SplitAreaSnapshot,\n SplitSideAbsorptionCapacity,\n SplitAreaAbsorptionCapacity,\n} from './interfaces';\n\nexport function getPointFromEvent(event: MouseEvent | TouchEvent): SplitPoint | null {\n // TouchEvent\n if (\n (event as TouchEvent).changedTouches !== undefined &&\n (event as TouchEvent).changedTouches.length > 0\n ) {\n return {\n x: (event as TouchEvent).changedTouches[0].clientX,\n y: (event as TouchEvent).changedTouches[0].clientY,\n };\n }\n // MouseEvent\n else if (\n (event as MouseEvent).clientX !== undefined &&\n (event as MouseEvent).clientY !== undefined\n ) {\n return {\n x: (event as MouseEvent).clientX,\n y: (event as MouseEvent).clientY,\n };\n }\n return null;\n}\n\nexport function getElementPixelSize(\n elRef: ElementRef,\n direction: 'horizontal' | 'vertical'\n): number {\n const rect = (elRef.nativeElement as HTMLElement).getBoundingClientRect();\n\n return direction === 'horizontal' ? rect.width : rect.height;\n}\n\nexport function getInputPositiveNumber<T>(v: any, defaultValue: T): number | T {\n if (v === null || v === undefined) {\n return defaultValue;\n }\n\n v = Number(v);\n return !isNaN(v) && v >= 0 ? v : defaultValue;\n}\n\nexport function isUserSizesValid(\n unit: 'percent' | 'pixel',\n sizes: number[]\n): boolean | number | void {\n // All sizes have to be not null and total should be 100\n if (unit === 'percent') {\n const total = sizes.reduce((_total, s) => (s !== null ? _total + s : _total), 0);\n return sizes.every(s => s !== null) && total && total > 99.9 && total < 100.1;\n }\n\n // A size at null is mandatory but only one.\n if (unit === 'pixel') {\n return sizes.filter(s => s === null).length === 1;\n }\n}\n\nexport function getAreaMinSize(a: SplitArea): number {\n if (a.size === null) {\n return 0;\n }\n\n if (a.component.isLocked() === true) {\n return a.size;\n }\n\n if (a.component.getMinSize() === null) {\n return 0;\n }\n\n if ((a.component.getMinSize() as number) > a.size) {\n return a.size;\n }\n\n return a.component.getMinSize() as number;\n}\n\nexport function getAreaMaxSize(a: SplitArea): null | number {\n if (a.size === null) {\n return null;\n }\n\n if (a.component.isLocked() === true) {\n return a.size;\n }\n\n if (a.component.getMaxSize() === null) {\n return null;\n }\n\n if ((a.component.getMaxSize() as number) < a.size) {\n return a.size;\n }\n\n return a.component.getMaxSize() as number;\n}\n\nexport function getGutterSideAbsorptionCapacity(\n unit: 'percent' | 'pixel',\n sideAreas: SplitAreaSnapshot[],\n pixels: number,\n allAreasSizePixel: number\n): SplitSideAbsorptionCapacity {\n return sideAreas.reduce(\n (acc: any, area) => {\n const res = getAreaAbsorptionCapacity(unit, area, acc.remain, allAreasSizePixel);\n acc.list.push(res);\n acc.remain = res && res.pixelRemain;\n return acc;\n },\n { remain: pixels, list: [] }\n );\n}\n\nexport function getAreaAbsorptionCapacity(\n unit: 'percent' | 'pixel',\n areaSnapshot: SplitAreaSnapshot,\n pixels: number,\n allAreasSizePixel: number\n): SplitAreaAbsorptionCapacity | void {\n // No pain no gain\n if (pixels === 0) {\n return {\n areaSnapshot,\n pixelAbsorb: 0,\n percentAfterAbsorption: areaSnapshot.sizePercentAtStart,\n pixelRemain: 0,\n };\n }\n\n // Area start at zero and need to be reduced, not possible\n if (areaSnapshot.sizePixelAtStart === 0 && pixels < 0) {\n return {\n areaSnapshot,\n pixelAbsorb: 0,\n percentAfterAbsorption: 0,\n pixelRemain: pixels,\n };\n }\n\n if (unit === 'percent') {\n return getAreaAbsorptionCapacityPercent(areaSnapshot, pixels, allAreasSizePixel);\n }\n\n if (unit === 'pixel') {\n return getAreaAbsorptionCapacityPixel(areaSnapshot, pixels, allAreasSizePixel);\n }\n}\n\nexport function getAreaAbsorptionCapacityPercent(\n areaSnapshot: SplitAreaSnapshot,\n pixels: number,\n allAreasSizePixel: number\n): SplitAreaAbsorptionCapacity | void {\n const tempPixelSize = areaSnapshot.sizePixelAtStart + pixels;\n const tempPercentSize = (tempPixelSize / allAreasSizePixel) * 100;\n\n // ENLARGE AREA\n\n if (pixels > 0) {\n // If maxSize & newSize bigger than it > absorb to max and return remaining pixels\n if (areaSnapshot.area.maxSize !== null && tempPercentSize > areaSnapshot.area.maxSize) {\n // Use area.area.maxSize as newPercentSize and return calculate pixels remaining\n const maxSizePixel = (areaSnapshot.area.maxSize / 100) * allAreasSizePixel;\n return {\n areaSnapshot,\n pixelAbsorb: maxSizePixel,\n percentAfterAbsorption: areaSnapshot.area.maxSize,\n pixelRemain: areaSnapshot.sizePixelAtStart + pixels - maxSizePixel,\n };\n }\n return {\n areaSnapshot,\n pixelAbsorb: pixels,\n percentAfterAbsorption: tempPercentSize > 100 ? 100 : tempPercentSize,\n pixelRemain: 0,\n };\n }\n\n // REDUCE AREA\n else if (pixels < 0) {\n // If minSize & newSize smaller than it > absorb to min and return remaining pixels\n if (areaSnapshot.area.minSize !== null && tempPercentSize < areaSnapshot.area.minSize) {\n // Use area.area.minSize as newPercentSize and return calculate pixels remaining\n const minSizePixel = (areaSnapshot.area.minSize / 100) * allAreasSizePixel;\n return {\n areaSnapshot,\n pixelAbsorb: minSizePixel,\n percentAfterAbsorption: areaSnapshot.area.minSize,\n pixelRemain: areaSnapshot.sizePixelAtStart + pixels - minSizePixel,\n };\n }\n // If reduced under zero > return remaining pixels\n else if (tempPercentSize < 0) {\n // Use 0 as newPercentSize and return calculate pixels remaining\n return {\n areaSnapshot,\n pixelAbsorb: -areaSnapshot.sizePixelAtStart,\n percentAfterAbsorption: 0,\n pixelRemain: pixels + areaSnapshot.sizePixelAtStart,\n };\n }\n return {\n areaSnapshot,\n pixelAbsorb: pixels,\n percentAfterAbsorption: tempPercentSize,\n pixelRemain: 0,\n };\n }\n}\n\nexport function getAreaAbsorptionCapacityPixel(\n areaSnapshot: SplitAreaSnapshot,\n pixels: number,\n containerSizePixel: number\n): SplitAreaAbsorptionCapacity | void {\n const tempPixelSize = areaSnapshot.sizePixelAtStart + pixels;\n\n // ENLARGE AREA\n\n if (pixels > 0) {\n // If maxSize & newSize bigger than it > absorb to max and return remaining pixels\n if (areaSnapshot.area.maxSize !== null && tempPixelSize > areaSnapshot.area.maxSize) {\n return {\n areaSnapshot,\n pixelAbsorb: areaSnapshot.area.maxSize - areaSnapshot.sizePixelAtStart,\n percentAfterAbsorption: -1,\n pixelRemain: tempPixelSize - areaSnapshot.area.maxSize,\n };\n }\n return {\n areaSnapshot,\n pixelAbsorb: pixels,\n percentAfterAbsorption: -1,\n pixelRemain: 0,\n };\n }\n\n // REDUCE AREA\n else if (pixels < 0) {\n // If minSize & newSize smaller than it > absorb to min and return remaining pixels\n if (areaSnapshot.area.minSize !== null && tempPixelSize < areaSnapshot.area.minSize) {\n return {\n areaSnapshot,\n pixelAbsorb: areaSnapshot.area.minSize + pixels - tempPixelSize,\n percentAfterAbsorption: -1,\n pixelRemain: tempPixelSize - areaSnapshot.area.minSize,\n };\n }\n // If reduced under zero > return remaining pixels\n else if (tempPixelSize < 0) {\n return {\n areaSnapshot,\n pixelAbsorb: -areaSnapshot.sizePixelAtStart,\n percentAfterAbsorption: -1,\n pixelRemain: pixels + areaSnapshot.sizePixelAtStart,\n };\n }\n return {\n areaSnapshot,\n pixelAbsorb: pixels,\n percentAfterAbsorption: -1,\n pixelRemain: 0,\n };\n }\n}\n\nexport function updateAreaSize(unit: 'percent' | 'pixel', item: SplitAreaAbsorptionCapacity) {\n if (unit === 'percent') {\n item.areaSnapshot.area.component.setSize(item.percentAfterAbsorption);\n } else if (unit === 'pixel') {\n // Update size except for the wildcard size area\n if (item.areaSnapshot.area.size !== null) {\n item.areaSnapshot.area.component.setSize(\n item.areaSnapshot.sizePixelAtStart + item.pixelAbsorb\n );\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EnvironmentProviders,\n InjectionToken,\n NgZone,\n OnDestroy,\n Renderer2,\n booleanAttribute,\n effect,\n inject,\n input,\n makeEnvironmentProviders,\n output,\n signal,\n viewChildren,\n} from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport {\n SplitArea,\n SplitAreaSnapshot,\n SplitDefaultOptions,\n SplitOutputAreaSizes,\n SplitOutputData,\n SplitPoint,\n SplitSnapshot,\n} from '../interfaces';\nimport { SplitPane } from '../split-pane';\nimport {\n getAreaMaxSize,\n getAreaMinSize,\n getElementPixelSize,\n getGutterSideAbsorptionCapacity,\n getInputPositiveNumber,\n getPointFromEvent,\n isUserSizesValid,\n updateAreaSize,\n} from '../utils';\n\n/** Injection token that can be used to specify default split options. */\nexport const SPLIT_DEFAULT_OPTIONS = new InjectionToken<SplitDefaultOptions>(\n 'SPLIT_DEFAULT_OPTIONS'\n);\n\n/**\n * Configures the default options for the split component.\n * @param options The default options to use.\n * @returns The environment providers.\n */\nexport function provideSplit(options: SplitDefaultOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: SPLIT_DEFAULT_OPTIONS, useValue: options },\n ]);\n}\n\n@Component({\n selector: 'ngs-split',\n exportAs: 'ngsSplit',\n standalone: true,\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './split.html',\n styleUrl: './split.scss',\n host: {\n class: 'ngs-split',\n '[class.ngs-split-horizontal]': 'direction() === \"horizontal\"',\n '[class.ngs-split-vertical]': 'direction() === \"vertical\"',\n '[class.ngs-split-percent]': 'unit() === \"percent\"',\n '[class.ngs-split-pixel]': 'unit() === \"pixel\"',\n '[class.ngs-split-disabled]': 'disabled()',\n '[class.ngs-split-transition]': 'useTransition()',\n '[class.ngs-dragging]': 'isDraggingSignal()',\n '[class.ngs-split-init]': 'isInitSignal()',\n },\n})\nexport class Split implements AfterViewInit, OnDestroy {\n shouldShowHandle(gutterIndex: number): boolean {\n // show if either adjacent pane has withHandle=true\n const left = this.displayedAreas[gutterIndex]?.component as SplitPane | undefined;\n const right = this.displayedAreas[gutterIndex + 1]?.component as SplitPane | undefined;\n return !!(left?.hasHandle() || right?.hasHandle());\n }\n private ngZone = inject(NgZone);\n private elRef = inject(ElementRef);\n private cdRef = inject(ChangeDetectorRef);\n private renderer = inject(Renderer2);\n private isInit = signal(false);\n protected _defaultOptions = inject<SplitDefaultOptions>(SPLIT_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n /** The split direction. */\n direction = input<'horizontal' | 'vertical'>(this._defaultOptions?.direction ?? 'horizontal');\n\n /** The unit you want to specify area sizes. */\n unit = input<'percent' | 'pixel'>(this._defaultOptions?.unit ?? 'percent');\n\n /** Gutters's size (dragging elements) in pixels. */\n gutterSize = input(this._defaultOptions?.gutterSize ?? 5, {\n transform: (v: number | string) => getInputPositiveNumber(v, 4),\n });\n\n /** Gutter step while moving in pixels. */\n gutterStep = input(this._defaultOptions?.gutterStep ?? 1, {\n transform: (v: number | string) => getInputPositiveNumber(v, 1),\n });\n\n /** Set to true if you want to limit gutter move to adjacent areas only. */\n restrictMove = input(this._defaultOptions?.restrictMove ?? false, { transform: booleanAttribute });\n\n /** Add transition when toggling visibility using `visible` or `size` changes. */\n useTransition = input(this._defaultOptions?.useTransition ?? false, { transform: booleanAttribute });\n\n /**\n * Disable the dragging feature (remove cursor/image on gutters).\n * `gutterClick`/`gutterDblClick` still emits.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /** Indicates the directionality of the areas. */\n dir = input<'ltr' | 'rtl'>(this._defaultOptions?.dir ?? 'ltr');\n\n /**\n * Milliseconds to detect a double click on a gutter. Set it around 300-500ms if\n * you want to use `gutterDblClick` event.\n */\n gutterDblClickDuration = input(this._defaultOptions?.gutterDblClickDuration ?? 0, {\n transform: (v: number | string) => getInputPositiveNumber(v, 0),\n });\n\n /** Event emitted when drag starts. */\n dragStart = output<SplitOutputData>();\n /** Event emitted when drag ends. */\n dragEnd = output<SplitOutputData>();\n /** Event emitted when user clicks on a gutter. */\n gutterClick = output<SplitOutputData>();\n /** Event emitted when user double clicks on a gutter. */\n gutterDblClick = output<SplitOutputData>();\n /** Event emitted when transition ends (debounced). */\n transitionEnd = output<SplitOutputAreaSizes>();\n private transitionEndSubject = new Subject<SplitOutputAreaSizes>();\n\n private dragProgressSubject = new Subject<SplitOutputData>();\n dragProgress$: Observable<SplitOutputData> = this.dragProgressSubject.asObservable();\n\n\n private isDragging = signal(false);\n private dragListeners: (() => void)[] = [];\n private snapshot: SplitSnapshot | null = null;\n private startPoint: SplitPoint | null = null;\n private endPoint: SplitPoint | null = null;\n\n public readonly displayedAreas: SplitArea[] = [];\n private readonly hidedAreas: SplitArea[] = [];\n\n private gutterEls = viewChildren<ElementRef>('gutterEls');\n\n protected isDraggingSignal = this.isDragging.asReadonly();\n public readonly isDraggingPublic = this.isDragging.asReadonly();\n protected isInitSignal = this.isInit.asReadonly();\n\n constructor() {\n // Debounce transitionEnd output\n this.transitionEndSubject.pipe(debounceTime<any>(20)).subscribe(sizes => {\n this.transitionEnd.emit(sizes);\n });\n\n effect(() => {\n this.direction();\n this.cdRef.markForCheck();\n this.build(false, false);\n });\n\n effect(() => {\n this.unit();\n this.cdRef.markForCheck();\n this.build(false, true);\n });\n\n effect(() => {\n this.gutterSize();\n this.build(false, false);\n });\n\n effect(() => {\n this.useTransition();\n this.cdRef.markForCheck();\n });\n\n effect(() => {\n this.disabled();\n this.cdRef.markForCheck();\n });\n\n effect(() => {\n this.renderer.setAttribute(this.elRef.nativeElement, 'dir', this.dir());\n });\n }\n\n ngAfterViewInit() {\n this.ngZone.runOutsideAngular(() => {\n // To avoid transition at first rendering\n setTimeout(() => {\n this.isInit.set(true);\n this.cdRef.markForCheck();\n });\n });\n }\n\n private getNbGutters(): number {\n return this.displayedAreas.length === 0 ? 0 : this.displayedAreas.length - 1;\n }\n\n addArea(component: SplitPane): void {\n const newArea: SplitArea = {\n component,\n order: 0,\n size: 0,\n minSize: null,\n maxSize: null,\n };\n\n if (component.isVisible() === true) {\n this.displayedAreas.push(newArea);\n\n this.build(true, true);\n } else {\n this.hidedAreas.push(newArea);\n }\n }\n\n removeArea(component: SplitPane): void {\n if (this.displayedAreas.some(a => a.component === component)) {\n const area = this.displayedAreas.find(a => a.component === component) as SplitArea;\n this.displayedAreas.splice(this.displayedAreas.indexOf(area), 1);\n\n this.build(true, true);\n } else if (this.hidedAreas.some(a => a.component === component)) {\n const area = this.hidedAreas.find(a => a.component === component) as SplitArea;\n this.hidedAreas.splice(this.hidedAreas.indexOf(area), 1);\n }\n }\n\n updateArea(component: SplitPane, resetOrders: boolean, resetSizes: boolean): void {\n if (component.isVisible() === true) {\n this.build(resetOrders, resetSizes);\n }\n }\n\n updateAreaInternal(component: SplitPane): void {\n const area = this.displayedAreas.find(a => a.component === component);\n if (area) {\n area.size = component.getSize();\n }\n }\n\n showArea(component: SplitPane): void {\n const area = this.hidedAreas.find(a => a.component === component);\n if (area === undefined) {\n return;\n }\n\n const areas = this.hidedAreas.splice(this.hidedAreas.indexOf(area), 1);\n this.displayedAreas.push(...areas);\n\n this.build(true, true);\n }\n\n hideArea(comp: SplitPane): void {\n const area = this.displayedAreas.find(a => a.component === comp);\n if (area === undefined) {\n return;\n }\n\n const areas = this.displayedAreas.splice(this.displayedAreas.indexOf(area), 1);\n areas.forEach(_area => {\n _area.order = 0;\n _area.size = 0;\n });\n this.hidedAreas.push(...areas);\n\n this.build(true, true);\n }\n\n getVisibleAreaSizes(): SplitOutputAreaSizes {\n return this.displayedAreas.map(a => (a.size === null ? '*' : a.size));\n }\n\n setVisibleAreaSizes(sizes: SplitOutputAreaSizes): boolean {\n if (sizes.length !== this.displayedAreas.length) {\n return false;\n }\n\n const formatedSizes = sizes.map(s => getInputPositiveNumber(s, null)) as number[];\n const isValid = isUserSizesValid(this.unit(), formatedSizes);\n\n if (isValid === false) {\n return false;\n }\n\n this.displayedAreas.forEach((area, i) => area.component.setSize(formatedSizes[i]));\n\n this.build(false, true);\n return true;\n }\n\n private build(resetOrders: boolean, resetSizes: boolean): void {\n // ¤ AREAS ORDER\n\n if (resetOrders === true) {\n // If user provided 'order' for each area, use it to sort them.\n if (this.displayedAreas.every(a => a.component.getOrder() !== null)) {\n this.displayedAreas.sort(\n (a, b) => (a.component.getOrder() as number) - (b.component.getOrder() as number)\n );\n }\n\n // Then set real order with multiples of 2, numbers between will be used by gutters.\n this.displayedAreas.forEach((area, i) => {\n area.order = i * 2;\n area.component.setStyleOrder(area.order);\n });\n }\n\n // ¤ AREAS SIZE\n\n if (resetSizes === true) {\n const useUserSizes = isUserSizesValid(\n this.unit(),\n this.displayedAreas.map(a => a.component.getSize()) as number[]\n );\n\n switch (this.unit()) {\n case 'percent': {\n const defaultSize = 100 / this.displayedAreas.length;\n\n this.displayedAreas.forEach(area => {\n area.size = useUserSizes ? (area.component.getSize() as number) : defaultSize;\n area.minSize = getAreaMinSize(area);\n area.maxSize = getAreaMaxSize(area);\n });\n break;\n }\n case 'pixel': {\n if (useUserSizes) {\n this.displayedAreas.forEach(area => {\n area.size = area.component.getSize();\n area.minSize = getAreaMinSize(area);\n area.maxSize = getAreaMaxSize(area);\n });\n } else {\n const wildcardSizeAreas = this.displayedAreas.filter(a => a.component.getSize() === null);\n\n // No wildcard area > Need to select one arbitrarily > first\n if (wildcardSizeAreas.length === 0 && this.displayedAreas.length > 0) {\n this.displayedAreas.forEach((area, i) => {\n area.size = i === 0 ? null : area.component.getSize();\n area.minSize = i === 0 ? null : getAreaMinSize(area);\n area.maxSize = i === 0 ? null : getAreaMaxSize(area);\n });\n }\n // More than one wildcard area > Need to keep only one arbitrarly > first\n else if (wildcardSizeAreas.length > 1) {\n let alreadyGotOne = false;\n this.displayedAreas.forEach(area => {\n if (area.component.getSize() === null) {\n if (alreadyGotOne === false) {\n area.size = null;\n area.minSize = null;\n area.maxSize = null;\n alreadyGotOne = true;\n } else {\n area.size = 100;\n area.minSize = null;\n area.maxSize = null;\n }\n } else {\n area.size = area.component.getSize();\n area.minSize = getAreaMinSize(area);\n area.maxSize = getAreaMaxSize(area);\n }\n });\n }\n }\n break;\n }\n }\n }\n\n this.refreshStyleSizes();\n this.cdRef.markForCheck();\n }\n\n private refreshStyleSizes(): void {\n ///////////////////////////////////////////\n // PERCENT MODE\n if (this.unit() === 'percent') {\n // Only one area > flex-basis 100%\n if (this.displayedAreas.length === 1) {\n this.displayedAreas[0].component.setStyleFlex(0, 0, `100%`, false, false);\n }\n // Multiple areas > use each percent basis\n else {\n const sumGutterSize = this.getNbGutters() * this.gutterSize();\n\n this.displayedAreas.forEach(area => {\n area.component.setStyleFlex(\n 0,\n 0,\n `calc( ${area.size}% - ${((area.size as number) / 100) * sumGutterSize}px )`,\n area.minSize !== null && area.minSize === area.size ? true : false,\n area.maxSize !== null && area.maxSize === area.size ? true : false\n );\n });\n }\n }\n ///////////////////////////////////////////\n // PIXEL MODE\n else if (this.unit() === 'pixel') {\n this.displayedAreas.forEach(area => {\n // Area with wildcard size\n if (area.size === null) {\n if (this.displayedAreas.length === 1) {\n area.component.setStyleFlex(1, 1, `100%`, false, false);\n } else {\n area.component.setStyleFlex(1, 1, `auto`, false, false);\n }\n }\n // Area with pixel size\n else {\n // Only one area > flex-basis 100%\n if (this.displayedAreas.length === 1) {\n area.component.setStyleFlex(0, 0, `100%`, false, false);\n }\n // Multiple areas > use each pixel basis\n else {\n area.component.setStyleFlex(\n 0,\n 0,\n `${area.size}px`,\n area.minSize !== null && area.minSize === area.size ? true : false,\n area.maxSize !== null && area.maxSize === area.size ? true : false\n );\n }\n }\n });\n }\n }\n\n _clickTimeout: number | null = null;\n\n clickGutter(event: MouseEvent | TouchEvent, gutterNum: number): void {\n const tempPoint = getPointFromEvent(event) as SplitPoint;\n\n // Be sure mouseup/touchend happened at same point as mousedown/touchstart to trigger click/dblclick\n if (this.startPoint && this.startPoint.x === tempPoint.x && this.startPoint.y === tempPoint.y) {\n // If timeout in progress and new click > clearTimeout & dblClickEvent\n if (this._clickTimeout !== null) {\n window.clearTimeout(this._clickTimeout);\n this._clickTimeout = null;\n this.notify('dblclick', gutterNum);\n this.stopDragging();\n }\n // Else start timeout to call clickEvent at end\n else {\n this._clickTimeout = window.setTimeout(() => {\n this._clickTimeout = null;\n this.notify('click', gutterNum);\n this.stopDragging();\n }, this.gutterDblClickDuration());\n }\n }\n }\n\n startDragging(event: MouseEvent | TouchEvent, gutterOrder: number, gutterNum: number): void {\n if (event.cancelable) {\n event.preventDefault();\n }\n event.stopPropagation();\n\n this.startPoint = getPointFromEvent(event);\n if (this.startPoint === null || this.disabled() === true) {\n return;\n }\n\n this.isDragging.set(true);\n this.cdRef.markForCheck();\n\n this.snapshot = {\n gutterNum,\n lastSteppedOffset: 0,\n allAreasSizePixel:\n getElementPixelSize(this.elRef, this.direction()) - this.getNbGutters() * this.gutterSize(),\n allInvolvedAreasSizePercent: 100,\n areasBeforeGutter: [],\n areasAfterGutter: [],\n };\n\n this.displayedAreas.forEach(area => {\n const areaSnapshot: SplitAreaSnapshot = {\n area,\n sizePixelAtStart: getElementPixelSize(area.component.elRef, this.direction()),\n sizePercentAtStart: (this.unit() === 'percent' ? area.size : -1) as number, // If pixel mode, anyway, will not be used.\n };\n\n if (area.order < gutterOrder) {\n if (this.restrictMove() === true) {\n (this.snapshot as SplitSnapshot).areasBeforeGutter = [areaSnapshot];\n } else {\n (this.snapshot as SplitSnapshot).areasBeforeGutter.unshift(areaSnapshot);\n }\n } else if (area.order > gutterOrder) {\n if (this.restrictMove() === true) {\n if ((this.snapshot as SplitSnapshot).areasAfterGutter.length === 0) {\n (this.snapshot as SplitSnapshot).areasAfterGutter = [areaSnapshot];\n }\n } else {\n (this.snapshot as SplitSnapshot).areasAfterGutter.push(areaSnapshot);\n }\n }\n });\n\n this.snapshot.allInvolvedAreasSizePercent = [\n ...this.snapshot.areasBeforeGutter,\n ...this.snapshot.areasAfterGutter,\n ].reduce((t, a) => t + (a.sizePercentAtStart > 0 ? a.sizePercentAtStart : 0), 0);\n\n if (\n this.snapshot.areasBeforeGutter.length === 0 ||\n this.snapshot.areasAfterGutter.length === 0\n ) {\n return;\n }\n\n this.dragListeners.push(\n this.renderer.listen('document', 'mouseup', this.stopDragging.bind(this))\n );\n this.dragListeners.push(\n this.renderer.listen('document', 'touchend', this.stopDragging.bind(this))\n );\n this.dragListeners.push(\n this.renderer.listen('document', 'touchcancel', this.stopDragging.bind(this))\n );\n\n this.ngZone.runOutsideAngular(() => {\n this.dragListeners.push(\n this.renderer.listen('document', 'mousemove', this.dragEvent.bind(this))\n );\n this.dragListeners.push(\n this.renderer.listen('document', 'touchmove', this.dragEvent.bind(this))\n );\n });\n\n this.displayedAreas.forEach(area => area.component.lockEvents());\n\n this.isDragging.set(true);\n this.renderer.addClass(this.elRef.nativeElement, 'ngs-dragging');\n this.renderer.addClass(\n this.gutterEls()![this.snapshot.gutterNum - 1].nativeElement,\n 'ngs-dragged'\n );\n\n this.notify('start', this.snapshot.gutterNum);\n }\n\n private dragEvent(event: MouseEvent | TouchEvent): void {\n if (event.cancelable) {\n event.preventDefault();\n }\n event.stopPropagation();\n\n if (this._clickTimeout !== null) {\n window.clearTimeout(this._clickTimeout);\n this._clickTimeout = null;\n }\n\n if (this.isDragging() === false) {\n return;\n }\n\n this.endPoint = getPointFromEvent(event);\n if (this.endPoint === null) {\n return;\n }\n\n // Calculate steppedOffset\n\n let offset =\n this.direction() === 'horizontal'\n ? (this.startPoint as SplitPoint).x - this.endPoint.x\n : (this.startPoint as SplitPoint).y - this.endPoint.y;\n if (this.dir() === 'rtl' && this.direction() === 'horizontal') {\n offset = -offset;\n }\n const steppedOffset = Math.round(offset / this.gutterStep()) * this.gutterStep();\n\n if (steppedOffset === (this.snapshot as SplitSnapshot).lastSteppedOffset) {\n return;\n }\n\n (this.snapshot as SplitSnapshot).lastSteppedOffset = steppedOffset;\n\n // Need to know if each gutter side areas could reacts to steppedOffset\n\n let areasBefore = getGutterSideAbsorptionCapacity(\n this.unit(),\n (this.snapshot as SplitSnapshot).areasBeforeGutter,\n -steppedOffset,\n (this.snapshot as SplitSnapshot).allAreasSizePixel\n );\n let areasAfter = getGutterSideAbsorptionCapacity(\n this.unit(),\n (this.snapshot as SplitSnapshot).areasAfterGutter,\n steppedOffset,\n (this.snapshot as SplitSnapshot).allAreasSizePixel\n );\n\n // Each gutter side areas can't absorb all offset\n if (areasBefore.remain !== 0 && areasAfter.remain !== 0) {\n if (Math.abs(areasBefore.remain) === Math.abs(areasAfter.remain)) {\n /** */\n } else if (Math.abs(areasBefore.remain) > Math.abs(areasAfter.remain)) {\n areasAfter = getGutterSideAbsorptionCapacity(\n this.unit(),\n (this.snapshot as SplitSnapshot).areasAfterGutter,\n steppedOffset + areasBefore.remain,\n (this.snapshot as SplitSnapshot).allAreasSizePixel\n );\n } else {\n areasBefore = getGutterSideAbsorptionCapacity(\n this.unit(),\n (this.snapshot as SplitSnapshot).areasBeforeGutter,\n -(steppedOffset - areasAfter.remain),\n (this.snapshot as SplitSnapshot).allAreasSizePixel\n );\n }\n }\n // Areas before gutter can't absorbs all offset > need to recalculate sizes for areas after gutter.\n else if (areasBefore.remain !== 0) {\n areasAfter = getGutterSideAbsorptionCapacity(\n this.unit(),\n (this.snapshot as SplitSnapshot).areasAfterGutter,\n steppedOffset + areasBefore.remain,\n (this.snapshot as SplitSnapshot).allAreasSizePixel\n );\n }\n // Areas after gutter can't absorbs all offset > need to recalculate sizes for areas before gutter.\n else if (areasAfter.remain !== 0) {\n areasBefore = getGutterSideAbsorptionCapacity(\n this.unit(),\n (this.snapshot as SplitSnapshot).areasBeforeGutter,\n -(steppedOffset - areasAfter.remain),\n (this.snapshot as SplitSnapshot).allAreasSizePixel\n );\n }\n\n if (this.unit() === 'percent') {\n // Hack because of browser messing up with sizes using calc(X% - Ypx) -> el.getBoundingClientRect()\n // If not there, playing with gutters makes total going down to 99.99875% then 99.99286%, 99.98986%,..\n const all = [...areasBefore.list, ...areasAfter.list];\n const areaToReset = all.find(\n a =>\n a.percentAfterAbsorption !== 0 &&\n a.percentAfterAbsorption !== a.areaSnapshot.area.minSize &&\n a.percentAfterAbsorption !== a.areaSnapshot.area.maxSize\n );\n\n if (areaToReset) {\n areaToReset.percentAfterAbsorption =\n (this.snapshot as SplitSnapshot).allInvolvedAreasSizePercent -\n all\n .filter(a => a !== areaToReset)\n .reduce((total, a) => total + a.percentAfterAbsorption, 0);\n }\n }\n\n // Now we know areas could absorb steppedOffset, time to really update sizes\n\n areasBefore.list.forEach(item => updateAreaSize(this.unit(), item));\n areasAfter.list.forEach(item => updateAreaSize(this.unit(), item));\n\n this.refreshStyleSizes();\n this.notify('progress', (this.snapshot as SplitSnapshot).gutterNum);\n }\n\n private stopDragging(event?: Event): void {\n if (event && event.cancelable) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (this.isDragging() === false) {\n return;\n }\n\n this.displayedAreas.forEach(area => area.component.unlockEvents());\n\n while (this.dragListeners.length > 0) {\n const fct = this.dragListeners.pop();\n if (fct) {\n fct();\n }\n }\n\n // Warning: Have to be before \"notify('end')\"\n // because \"notify('end')\"\" can be linked to \"[size]='x'\" > \"build()\" > \"stopDragging()\"\n this.isDragging.set(false);\n this.cdRef.markForCheck();\n\n // If moved from starting point, notify end\n if (\n this.endPoint &&\n ((this.startPoint as SplitPoint).x !== this.endPoint.x ||\n (this.startPoint as SplitPoint).y !== this.endPoint.y)\n ) {\n this.notify('end', (this.snapshot as SplitSnapshot).gutterNum);\n }\n\n this.renderer.removeClass(this.elRef.nativeElement, 'ngs-dragging');\n this.renderer.removeClass(\n this.gutterEls()![ (this.snapshot as SplitSnapshot).gutterNum - 1].nativeElement,\n 'ngs-dragged'\n );\n this.snapshot = null;\n\n // Needed to let (click)=\"clickGutter(...)\" event run and verify if mouse moved or not\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.startPoint = null;\n this.endPoint = null;\n });\n });\n }\n\n notify(\n type: 'start' | 'progress' | 'end' | 'click' | 'dblclick' | 'transitionEnd',\n gutterNum: number\n ): void {\n const sizes = this.getVisibleAreaSizes();\n\n if (type === 'start') {\n this.dragStart.emit({ gutterNum, sizes });\n } else if (type === 'end') {\n this.dragEnd.emit({ gutterNum, sizes });\n } else if (type === 'click') {\n this.gutterClick.emit({ gutterNum, sizes });\n } else if (type === 'dblclick') {\n this.gutterDblClick.emit({ gutterNum, sizes });\n } else if (type === 'transitionEnd') {\n this.ngZone.run(() => this.transitionEndSubject.next(sizes));\n } else if (type === 'progress') {\n // Stay outside zone to allow users do what they want about change detection mechanism.\n this.dragProgressSubject.next({ gutterNum, sizes });\n }\n }\n\n ngOnDestroy(): void {\n this.stopDragging();\n }\n}\n","<ng-content/>\n@for (area of displayedAreas; track area; let index = $index; let last = $last) {\n @if (!last) {\n <div\n #gutterEls\n class=\"ngs-split-gutter\"\n [style.flex-basis.px]=\"gutterSize()\"\n [style.order]=\"index * 2 + 1\"\n (mousedown)=\"startDragging($event, index * 2 + 1, index + 1)\"\n (touchstart)=\"startDragging($event, index * 2 + 1, index + 1)\"\n (mouseup)=\"clickGutter($event, index + 1)\"\n (touchend)=\"clickGutter($event, index + 1)\"\n >\n <div class=\"ngs-split-gutter-handle\" [class.has-dots]=\"shouldShowHandle(index)\">\n @if (shouldShowHandle(index)) {\n <div class=\"ngs-split-gutter-dot\"></div>\n <div class=\"ngs-split-gutter-dot\"></div>\n <div class=\"ngs-split-gutter-dot\"></div>\n }\n </div>\n </div>\n }\n}\n","import {\n Directive,\n ElementRef,\n NgZone,\n OnDestroy,\n Renderer2,\n booleanAttribute,\n effect,\n inject,\n input,\n} from '@angular/core';\n\nimport { Split } from './split/split';\nimport { getInputPositiveNumber } from './utils';\nimport { signal, WritableSignal } from '@angular/core';\n\n@Directive({\n selector: 'ngs-split-pane, [ngs-split-pane]',\n exportAs: 'ngsSplitPane',\n standalone: true,\n})\nexport class SplitPane implements OnDestroy {\n private ngZone = inject(NgZone);\n private renderer = inject(Renderer2);\n private split = inject(Split);\n\n elRef = inject(ElementRef);\n\n /**\n * Order of the area. Used to maintain the order of areas when toggling their visibility.\n * Toggling area visibility without specifying an `order` leads to weird behavior.\n */\n orderIn = input<number | null, number | string | null>(null, {\n alias: 'order',\n transform: v => getInputPositiveNumber(v, null),\n });\n\n /**\n * Size of the area in selected unit (percent/pixel).\n * - Percent: All areas sizes should equal to `100`, If not, all areas will have the same size.\n * - Pixel: An area with wildcard size (`size=\"*\"`) is mandatory (only one) and\n * can't have `visible=\"false\"` or `minSize`/`maxSize`/`lockSize` properties.\n */\n sizeIn = input<number | null, number | string | null>(null, {\n alias: 'size',\n transform: v => getInputPositiveNumber(v, null),\n });\n\n /** Minimum pixel or percent size, should be equal to or smaller than provided `size`. */\n minSizeIn = input<number | null, number | string | null>(null, {\n alias: 'minSize',\n transform: v => getInputPositiveNumber(v, null),\n });\n\n /** Maximum pixel or percent size, should be equal to or larger than provided `size`. */\n maxSizeIn = input<number | null, number | string | null>(null, {\n alias: 'maxSize',\n transform: v => getInputPositiveNumber(v, null),\n });\n\n /** Lock area size, same as `minSize`=`maxSize`=`size`. */\n lockSizeIn = input(false, { alias: 'lockSize', transform: booleanAttribute });\n\n /** Hide area visually but still present in the DOM, use `ngIf` to completely remove it. */\n visibleIn = input(true, { alias: 'visible', transform: booleanAttribute });\n\n /** Show handle (three dots) on the gutter adjacent to this pane. */\n withHandleIn = input(false, { alias: 'withHandle', transform: booleanAttribute });\n\n // Writable state reflecting current effective values (can be changed programmatically by Split)\n private orderSig: WritableSignal<number | null> = signal<number | null>(null, { equal: Object.is });\n private sizeSig: WritableSignal<number | null> = signal<number | null>(null, { equal: Object.is });\n private minSizeSig: WritableSignal<number | null> = signal<number | null>(null, { equal: Object.is });\n private maxSizeSig: WritableSignal<number | null> = signal<number | null>(null, { equal: Object.is });\n private lockSizeSig: WritableSignal<boolean> = signal(false, { equal: Object.is });\n private visibleSig: WritableSignal<boolean> = signal(true, { equal: Object.is });\n private withHandleSig: WritableSignal<boolean> = signal(false, { equal: Object.is });\n\n private transitionListener!: () => void;\n private readonly lockListeners: (() => void)[] = [];\n\n constructor() {\n this.renderer.addClass(this.elRef.nativeElement, 'ngs-split-pane');\n this.split.addArea(this);\n\n this.ngZone.runOutsideAngular(() => {\n this.transitionListener = this.renderer.listen(\n this.elRef.nativeElement,\n 'transitionend',\n (event: TransitionEvent) => {\n // Limit only flex-basis transition to trigger the event\n if (event.propertyName === 'flex-basis') {\n this.split.notify('transitionEnd', -1);\n }\n }\n );\n });\n\n // Sync inputs to writable state\n effect(() => this.orderSig.set(this.orderIn()));\n effect(() => this.sizeSig.set(this.sizeIn()));\n effect(() => this.minSizeSig.set(this.minSizeIn()));\n effect(() => this.maxSizeSig.set(this.maxSizeIn()));\n effect(() => this.lockSizeSig.set(this.lockSizeIn()));\n effect(() => this.withHandleSig.set(this.withHandleIn()));\n\n // React to visibility changes\n effect(() => {\n const isVisible = this.visibleIn();\n this.visibleSig.set(isVisible);\n if (isVisible) {\n this.split.showArea(this);\n this.renderer.removeClass(this.elRef.nativeElement, 'ngs-split-pane-hidden');\n } else {\n this.split.hideArea(this);\n this.renderer.addClass(this.elRef.nativeElement, 'ngs-split-pane-hidden');\n }\n });\n\n // React to state changes that require rebuild\n effect(() => {\n this.orderSig();\n if (!this.split.isDraggingPublic()) {\n this.split.updateArea(this, true, false);\n }\n });\n effect(() => {\n this.sizeSig();\n this.minSizeSig();\n this.maxSizeSig();\n this.lockSizeSig();\n if (!this.split.isDraggingPublic()) {\n this.split.updateArea(this, false, true);\n }\n });\n effect(() => {\n this.withHandleSig();\n if (!this.split.isDraggingPublic()) {\n this.split.updateArea(this, false, false);\n }\n });\n }\n\n // Imperative API used by Split\n getOrder(): number | null { return this.orderSig(); }\n getSize(): number | null { return this.sizeSig(); }\n setSize(v: number | null): void {\n this.sizeSig.set(v);\n this.split.updateAreaInternal(this);\n }\n getMinSize(): number | null { return this.minSizeSig(); }\n getMaxSize(): number | null { return this.maxSizeSig(); }\n isLocked(): boolean { return this.lockSizeSig(); }\n isVisible(): boolean { return this.visibleSig(); }\n hasHandle(): boolean { return this.withHandleSig(); }\n\n setStyleOrder(value: number): void {\n this.renderer.setStyle(this.elRef.nativeElement, 'order', value);\n }\n\n setStyleFlex(grow: number, shrink: number, basis: string, isMin: boolean, isMax: boolean): void {\n // Need 3 separated properties to work on IE11 (https://github.com/angular/flex-layout/issues/323)\n this.renderer.setStyle(this.elRef.nativeElement, 'flex-grow', grow);\n this.renderer.setStyle(this.elRef.nativeElement, 'flex-shrink', shrink);\n this.renderer.setStyle(this.elRef.nativeElement, 'flex-basis', basis);\n\n if (basis === '0px' || basis === '0%') {\n this.renderer.setStyle(this.elRef.nativeElement, 'overflow', 'hidden');\n } else {\n this.renderer.removeStyle(this.elRef.nativeElement, 'overflow');\n }\n\n if (isMin === true) {\n this.renderer.addClass(this.elRef.nativeElement, 'ngs-min');\n } else {\n this.renderer.removeClass(this.elRef.nativeElement, 'ngs-min');\n }\n\n if (isMax === true) {\n this.renderer.addClass(this.elRef.nativeElement, 'ngs-max');\n } else {\n this.renderer.removeClass(this.elRef.nativeElement, 'ngs-max');\n }\n }\n\n lockEvents(): void {\n this.ngZone.runOutsideAngular(() => {\n this.lockListeners.push(\n this.renderer.listen(this.elRef.nativeElement, 'selectstart', (e: Event) => false)\n );\n this.lockListeners.push(\n this.renderer.listen(this.elRef.nativeElement, 'dragstart', (e: Event) => false)\n );\n });\n }\n\n unlockEvents(): void {\n while (this.lockListeners.length > 0) {\n const fct = this.lockListeners.pop();\n if (fct) {\n fct();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.unlockEvents();\n\n if (this.transitionListener) {\n this.transitionListener();\n }\n\n this.split.removeArea(this);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAUM,SAAU,iBAAiB,CAAC,KAA8B,EAAA;;AAE9D,IAAA,IACG,KAAoB,CAAC,cAAc,KAAK,SAAS;AACjD,QAAA,KAAoB,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAC/C;QACA,OAAO;YACL,CAAC,EAAG,KAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO;YAClD,CAAC,EAAG,KAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO;SACnD;IACH;;AAEK,SAAA,IACF,KAAoB,CAAC,OAAO,KAAK,SAAS;AAC1C,QAAA,KAAoB,CAAC,OAAO,KAAK,SAAS,EAC3C;QACA,OAAO;YACL,CAAC,EAAG,KAAoB,CAAC,OAAO;YAChC,CAAC,EAAG,KAAoB,CAAC,OAAO;SACjC;IACH;AACA,IAAA,OAAO,IAAI;AACb;AAEM,SAAU,mBAAmB,CACjC,KAAiB,EACjB,SAAoC,EAAA;IAEpC,MAAM,IAAI,GAAI,KAAK,CAAC,aAA6B,CAAC,qBAAqB,EAAE;AAEzE,IAAA,OAAO,SAAS,KAAK,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM;AAC9D;AAEM,SAAU,sBAAsB,CAAI,CAAM,EAAE,YAAe,EAAA;IAC/D,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE;AACjC,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACb,IAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY;AAC/C;AAEM,SAAU,gBAAgB,CAC9B,IAAyB,EACzB,KAAe,EAAA;;AAGf,IAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAChF,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,KAAK;IAC/E;;AAGA,IAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;IACnD;AACF;AAEM,SAAU,cAAc,CAAC,CAAY,EAAA;AACzC,IAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE;AACnB,QAAA,OAAO,CAAC;IACV;IAEA,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACnC,OAAO,CAAC,CAAC,IAAI;IACf;IAEA,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;AACrC,QAAA,OAAO,CAAC;IACV;IAEA,IAAK,CAAC,CAAC,SAAS,CAAC,UAAU,EAAa,GAAG,CAAC,CAAC,IAAI,EAAE;QACjD,OAAO,CAAC,CAAC,IAAI;IACf;AAEA,IAAA,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,EAAY;AAC3C;AAEM,SAAU,cAAc,CAAC,CAAY,EAAA;AACzC,IAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE;AACnB,QAAA,OAAO,IAAI;IACb;IAEA,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACnC,OAAO,CAAC,CAAC,IAAI;IACf;IAEA,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;AACrC,QAAA,OAAO,IAAI;IACb;IAEA,IAAK,CAAC,CAAC,SAAS,CAAC,UAAU,EAAa,GAAG,CAAC,CAAC,IAAI,EAAE;QACjD,OAAO,CAAC,CAAC,IAAI;IACf;AAEA,IAAA,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,EAAY;AAC3C;AAEM,SAAU,+BAA+B,CAC7C,IAAyB,EACzB,SAA8B,EAC9B,MAAc,EACd,iBAAyB,EAAA;IAEzB,OAAO,SAAS,CAAC,MAAM,CACrB,CAAC,GAAQ,EAAE,IAAI,KAAI;AACjB,QAAA,MAAM,GAAG,GAAG,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC;AAChF,QAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAClB,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW;AACnC,QAAA,OAAO,GAAG;IACZ,CAAC,EACD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAC7B;AACH;AAEM,SAAU,yBAAyB,CACvC,IAAyB,EACzB,YAA+B,EAC/B,MAAc,EACd,iBAAyB,EAAA;;AAGzB,IAAA,IAAI,MAAM,KAAK,CAAC,EAAE;QAChB,OAAO;YACL,YAAY;AACZ,YAAA,WAAW,EAAE,CAAC;YACd,sBAAsB,EAAE,YAAY,CAAC,kBAAkB;AACvD,YAAA,WAAW,EAAE,CAAC;SACf;IACH;;IAGA,IAAI,YAAY,CAAC,gBAAgB,KAAK,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;QACrD,OAAO;YACL,YAAY;AACZ,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,sBAAsB,EAAE,CAAC;AACzB,YAAA,WAAW,EAAE,MAAM;SACpB;IACH;AAEA,IAAA,IAAI,IAAI,KAAK,SAAS,EAAE;QACtB,OAAO,gCAAgC,CAAC,YAAY,EAAE,MAAM,EAAE,iBAAiB,CAAC;IAClF;AAEA,IAAA,IAAI,IAAI,KAAK,OAAO,EAAE;QACpB,OAAO,8BAA8B,CAAC,YAAY,EAAE,MAAM,EAAE,iBAAiB,CAAC;IAChF;AACF;SAEgB,gCAAgC,CAC9C,YAA+B,EAC/B,MAAc,EACd,iBAAyB,EAAA;AAEzB,IAAA,MAAM,aAAa,GAAG,YAAY,CAAC,gBAAgB,GAAG,MAAM;IAC5D,MAAM,eAAe,GAAG,CAAC,aAAa,GAAG,iBAAiB,IAAI,GAAG;;AAIjE,IAAA,IAAI,MAAM,GAAG,CAAC,EAAE;;AAEd,QAAA,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE;;AAErF,YAAA,MAAM,YAAY,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,iBAAiB;YAC1E,OAAO;gBACL,YAAY;AACZ,gBAAA,WAAW,EAAE,YAAY;AACzB,gBAAA,sBAAsB,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO;AACjD,gBAAA,WAAW,EAAE,YAAY,CAAC,gBAAgB,GAAG,MAAM,GAAG,YAAY;aACnE;QACH;QACA,OAAO;YACL,YAAY;AACZ,YAAA,WAAW,EAAE,MAAM;YACnB,sBAAsB,EAAE,eAAe,GAAG,GAAG,GAAG,GAAG,GAAG,eAAe;AACrE,YAAA,WAAW,EAAE,CAAC;SACf;IACH;;AAGK,SAAA,IAAI,MAAM,GAAG,CAAC,EAAE;;AAEnB,QAAA,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE;;AAErF,YAAA,MAAM,YAAY,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,iBAAiB;YAC1E,OAAO;gBACL,YAAY;AACZ,gBAAA,WAAW,EAAE,YAAY;AACzB,gBAAA,sBAAsB,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO;AACjD,gBAAA,WAAW,EAAE,YAAY,CAAC,gBAAgB,GAAG,MAAM,GAAG,YAAY;aACnE;QACH;;AAEK,aAAA,IAAI,eAAe,GAAG,CAAC,EAAE;;YAE5B,OAAO;gBACL,YAAY;AACZ,gBAAA,WAAW,EAAE,CAAC,YAAY,CAAC,gBAAgB;AAC3C,gBAAA,sBAAsB,EAAE,CAAC;AACzB,gBAAA,WAAW,EAAE,MAAM,GAAG,YAAY,CAAC,gBAAgB;aACpD;QACH;QACA,OAAO;YACL,YAAY;AACZ,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,sBAAsB,EAAE,eAAe;AACvC,YAAA,WAAW,EAAE,CAAC;SACf;IACH;AACF;SAEgB,8BAA8B,CAC5C,YAA+B,EAC/B,MAAc,EACd,kBAA0B,EAAA;AAE1B,IAAA,MAAM,aAAa,GAAG,YAAY,CAAC,gBAAgB,GAAG,MAAM;;AAI5D,IAAA,IAAI,MAAM,GAAG,CAAC,EAAE;;AAEd,QAAA,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE;YACnF,OAAO;gBACL,YAAY;gBACZ,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,gBAAgB;gBACtE,sBAAsB,EAAE,CAAC,CAAC;AAC1B,gBAAA,WAAW,EAAE,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO;aACvD;QACH;QACA,OAAO;YACL,YAAY;AACZ,YAAA,WAAW,EAAE,MAAM;YACnB,sBAAsB,EAAE,CAAC,CAAC;AAC1B,YAAA,WAAW,EAAE,CAAC;SACf;IACH;;AAGK,SAAA,IAAI,MAAM,GAAG,CAAC,EAAE;;AAEnB,QAAA,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE;YACnF,OAAO;gBACL,YAAY;gBACZ,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,aAAa;gBAC/D,sBAAsB,EAAE,CAAC,CAAC;AAC1B,gBAAA,WAAW,EAAE,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO;aACvD;QACH;;AAEK,aAAA,IAAI,aAAa,GAAG,CAAC,EAAE;YAC1B,OAAO;gBACL,YAAY;AACZ,gBAAA,WAAW,EAAE,CAAC,YAAY,CAAC,gBAAgB;gBAC3C,sBAAsB,EAAE,CAAC,CAAC;AAC1B,gBAAA,WAAW,EAAE,MAAM,GAAG,YAAY,CAAC,gBAAgB;aACpD;QACH;QACA,OAAO;YACL,YAAY;AACZ,YAAA,WAAW,EAAE,MAAM;YACnB,sBAAsB,EAAE,CAAC,CAAC;AAC1B,YAAA,WAAW,EAAE,CAAC;SACf;IACH;AACF;AAEM,SAAU,cAAc,CAAC,IAAyB,EAAE,IAAiC,EAAA;AACzF,IAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC;IACvE;AAAO,SAAA,IAAI,IAAI,KAAK,OAAO,EAAE;;QAE3B,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AACxC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CACtC,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CACtD;QACH;IACF;AACF;;ACpPA;MACa,qBAAqB,GAAG,IAAI,cAAc,CACrD,uBAAuB;AAGzB;;;;AAIG;AACG,SAAU,YAAY,CAAC,OAA4B,EAAA;AACvD,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE;AACtD,KAAA,CAAC;AACJ;MAsBa,KAAK,CAAA;AAChB,IAAA,gBAAgB,CAAC,WAAmB,EAAA;;QAElC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,SAAkC;AACjF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,SAAkC;AACtF,QAAA,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,KAAK,EAAE,SAAS,EAAE,CAAC;IACpD;AACQ,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1B,IAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACjC,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;AACpB,IAAA,eAAe,GAAG,MAAM,CAAsB,qBAAqB,EAAE;AAC7E,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;;IAGF,SAAS,GAAG,KAAK,CAA4B,IAAI,CAAC,eAAe,EAAE,SAAS,IAAI,YAAY,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;IAG7F,IAAI,GAAG,KAAK,CAAsB,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;IAG1E,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,IAAI,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EACtD,SAAS,EAAE,CAAC,CAAkB,KAAK,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAA,CAC/D;;IAGF,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,IAAI,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EACtD,SAAS,EAAE,CAAC,CAAkB,KAAK,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAA,CAC/D;;AAGF,IAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,IAAI,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,gBAAgB,GAAG;;AAGlG,IAAA,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,IAAI,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,gBAAgB,GAAG;AAEpG;;;AAGG;IACH,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;IAGxD,GAAG,GAAG,KAAK,CAAgB,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE9D;;;AAGG;IACH,sBAAsB,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,sBAAsB,IAAI,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,8BAAA,EAAA,CAAA,EAC9E,SAAS,EAAE,CAAC,CAAkB,KAAK,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAA,CAC/D;;IAGF,SAAS,GAAG,MAAM,EAAmB;;IAErC,OAAO,GAAG,MAAM,EAAmB;;IAEnC,WAAW,GAAG,MAAM,EAAmB;;IAEvC,cAAc,GAAG,MAAM,EAAmB;;IAE1C,aAAa,GAAG,MAAM,EAAwB;AACtC,IAAA,oBAAoB,GAAG,IAAI,OAAO,EAAwB;AAE1D,IAAA,mBAAmB,GAAG,IAAI,OAAO,EAAmB;AAC5D,IAAA,aAAa,GAAgC,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;AAG5E,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;IAC1B,aAAa,GAAmB,EAAE;IAClC,QAAQ,GAAyB,IAAI;IACrC,UAAU,GAAsB,IAAI;IACpC,QAAQ,GAAsB,IAAI;IAE1B,cAAc,GAAgB,EAAE;IAC/B,UAAU,GAAgB,EAAE;AAErC,IAAA,SAAS,GAAG,YAAY,CAAa,WAAW,gFAAC;AAE/C,IAAA,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AACzC,IAAA,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AACrD,IAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAEjD,IAAA,WAAA,GAAA;;AAEE,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACtE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;AAC1B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;AACzB,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;AAC1B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AAC3B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACzE,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;;YAEjC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AAC3B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,YAAY,GAAA;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;IAC9E;AAEA,IAAA,OAAO,CAAC,SAAoB,EAAA;AAC1B,QAAA,MAAM,OAAO,GAAc;YACzB,SAAS;AACT,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,OAAO,EAAE,IAAI;SACd;AAED,QAAA,IAAI,SAAS,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AAEjC,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;QACxB;aAAO;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/B;IACF;AAEA,IAAA,UAAU,CAAC,SAAoB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE;AAC5D,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAc;AAClF,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEhE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;QACxB;AAAO,aAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE;AAC/D,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAc;AAC9E,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D;IACF;AAEA,IAAA,UAAU,CAAC,SAAoB,EAAE,WAAoB,EAAE,UAAmB,EAAA;AACxE,QAAA,IAAI,SAAS,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;AAClC,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC;QACrC;IACF;AAEA,IAAA,kBAAkB,CAAC,SAAoB,EAAA;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;QACrE,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE;QACjC;IACF;AAEA,IAAA,QAAQ,CAAC,SAAoB,EAAA;AAC3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;AACjE,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAElC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IACxB;AAEA,IAAA,QAAQ,CAAC,IAAe,EAAA;AACtB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC;AAChE,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9E,QAAA,KAAK,CAAC,OAAO,CAAC,KAAK,IAAG;AACpB,YAAA,KAAK,CAAC,KAAK,GAAG,CAAC;AACf,YAAA,KAAK,CAAC,IAAI,GAAG,CAAC;AAChB,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAE9B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IACxB;IAEA,mBAAmB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE;AAEA,IAAA,mBAAmB,CAAC,KAA2B,EAAA;QAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC/C,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAa;QACjF,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC;AAE5D,QAAA,IAAI,OAAO,KAAK,KAAK,EAAE;AACrB,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAElF,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;AACvB,QAAA,OAAO,IAAI;IACb;IAEQ,KAAK,CAAC,WAAoB,EAAE,UAAmB,EAAA;;AAGrD,QAAA,IAAI,WAAW,KAAK,IAAI,EAAE;;YAExB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;gBACnE,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,CAAC,KAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAa,GAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAa,CAClF;YACH;;YAGA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;AACtC,gBAAA,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC;gBAClB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C,YAAA,CAAC,CAAC;QACJ;;AAIA,QAAA,IAAI,UAAU,KAAK,IAAI,EAAE;YACvB,MAAM,YAAY,GAAG,gBAAgB,CACnC,IAAI,CAAC,IAAI,EAAE,EACX,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAa,CAChE;AAED,YAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACjB,KAAK,SAAS,EAAE;oBACd,MAAM,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;AAEpD,oBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAG;AACjC,wBAAA,IAAI,CAAC,IAAI,GAAG,YAAY,GAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAa,GAAG,WAAW;AAC7E,wBAAA,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC;AACnC,wBAAA,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC;AACrC,oBAAA,CAAC,CAAC;oBACF;gBACF;gBACA,KAAK,OAAO,EAAE;oBACZ,IAAI,YAAY,EAAE;AAChB,wBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAG;4BACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACpC,4BAAA,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC;AACnC,4BAAA,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC;AACrC,wBAAA,CAAC,CAAC;oBACJ;yBAAO;wBACL,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC;;AAGzF,wBAAA,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;4BACpE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;AACtC,gCAAA,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACrD,gCAAA,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;AACpD,gCAAA,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;AACtD,4BAAA,CAAC,CAAC;wBACJ;;AAEK,6BAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;4BACrC,IAAI,aAAa,GAAG,KAAK;AACzB,4BAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAG;gCACjC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;AACrC,oCAAA,IAAI,aAAa,KAAK,KAAK,EAAE;AAC3B,wCAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,wCAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,wCAAA,IAAI,CAAC,OAAO,GAAG,IAAI;wCACnB,aAAa,GAAG,IAAI;oCACtB;yCAAO;AACL,wCAAA,IAAI,CAAC,IAAI,GAAG,GAAG;AACf,wCAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,wCAAA,IAAI,CAAC,OAAO,GAAG,IAAI;oCACrB;gCACF;qCAAO;oCACL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACpC,oCAAA,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC;AACnC,oCAAA,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC;gCACrC;AACF,4BAAA,CAAC,CAAC;wBACJ;oBACF;oBACA;gBACF;;QAEJ;QAEA,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;IAC3B;IAEQ,iBAAiB,GAAA;;;AAGvB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,EAAE;;YAE7B,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA,IAAA,CAAM,EAAE,KAAK,EAAE,KAAK,CAAC;YAC3E;;iBAEK;gBACH,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAE7D,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAG;AACjC,oBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CACzB,CAAC,EACD,CAAC,EACD,CAAA,MAAA,EAAS,IAAI,CAAC,IAAI,OAAO,CAAE,IAAI,CAAC,IAAe,GAAG,GAAG,IAAI,aAAa,CAAA,IAAA,CAAM,EAC5E,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,EAClE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CACnE;AACH,gBAAA,CAAC,CAAC;YACJ;QACF;;;AAGK,aAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE;AAChC,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAG;;AAEjC,gBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;oBACtB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,wBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;oBACzD;yBAAO;AACL,wBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;oBACzD;gBACF;;qBAEK;;oBAEH,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,wBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;oBACzD;;yBAEK;wBACH,IAAI,CAAC,SAAS,CAAC,YAAY,CACzB,CAAC,EACD,CAAC,EACD,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI,EAChB,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,EAClE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CACnE;oBACH;gBACF;AACF,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,aAAa,GAAkB,IAAI;IAEnC,WAAW,CAAC,KAA8B,EAAE,SAAiB,EAAA;AAC3D,QAAA,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAe;;QAGxD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,EAAE;;AAE7F,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;AAC/B,gBAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AACvC,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,gBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC;gBAClC,IAAI,CAAC,YAAY,EAAE;YACrB;;iBAEK;gBACH,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AAC1C,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC;oBAC/B,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACnC;QACF;IACF;AAEA,IAAA,aAAa,CAAC,KAA8B,EAAE,WAAmB,EAAE,SAAiB,EAAA;AAClF,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;YACpB,KAAK,CAAC,cAAc,EAAE;QACxB;QACA,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC;AAC1C,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YACxD;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;QAEzB,IAAI,CAAC,QAAQ,GAAG;YACd,SAAS;AACT,YAAA,iBAAiB,EAAE,CAAC;YACpB,iBAAiB,EACf,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAC7F,YAAA,2BAA2B,EAAE,GAAG;AAChC,YAAA,iBAAiB,EAAE,EAAE;AACrB,YAAA,gBAAgB,EAAE,EAAE;SACrB;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAG;AACjC,YAAA,MAAM,YAAY,GAAsB;gBACtC,IAAI;AACJ,gBAAA,gBAAgB,EAAE,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7E,kBAAkB,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAW;aAC3E;AAED,YAAA,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE;AAC5B,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;oBAC/B,IAAI,CAAC,QAA0B,CAAC,iBAAiB,GAAG,CAAC,YAAY,CAAC;gBACrE;qBAAO;oBACJ,IAAI,CAAC,QAA0B,CAAC,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC1E;YACF;AAAO,iBAAA,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE;AACnC,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;oBAChC,IAAK,IAAI,CAAC,QAA0B,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;wBACjE,IAAI,CAAC,QAA0B,CAAC,gBAAgB,GAAG,CAAC,YAAY,CAAC;oBACpE;gBACF;qBAAO;oBACJ,IAAI,CAAC,QAA0B,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC;gBACtE;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,2BAA2B,GAAG;AAC1C,YAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB;AAClC,YAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB;AAClC,SAAA,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAEhF,IACE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAC3C;YACA;QACF;QAEA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC1E;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC3E;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC9E;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACzE;YACD,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACzE;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AAEhE,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,cAAc,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,CAAC,SAAS,EAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,aAAa,EAC5D,aAAa,CACd;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC/C;AAEQ,IAAA,SAAS,CAAC,KAA8B,EAAA;AAC9C,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;YACpB,KAAK,CAAC,cAAc,EAAE;QACxB;QACA,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;AAC/B,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AACvC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAC3B;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,KAAK,EAAE;YAC/B;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC;AACxC,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC1B;QACF;;AAIA,QAAA,IAAI,MAAM,GACR,IAAI,CAAC,SAAS,EAAE,KAAK;cAChB,IAAI,CAAC,UAAyB,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpD,cAAG,IAAI,CAAC,UAAyB,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzD,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,YAAY,EAAE;YAC7D,MAAM,GAAG,CAAC,MAAM;QAClB;AACA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE;QAEhF,IAAI,aAAa,KAAM,IAAI,CAAC,QAA0B,CAAC,iBAAiB,EAAE;YACxE;QACF;AAEC,QAAA,IAAI,CAAC,QAA0B,CAAC,iBAAiB,GAAG,aAAa;;QAIlE,IAAI,WAAW,GAAG,+BAA+B,CAC/C,IAAI,CAAC,IAAI,EAAE,EACV,IAAI,CAAC,QAA0B,CAAC,iBAAiB,EAClD,CAAC,aAAa,EACb,IAAI,CAAC,QAA0B,CAAC,iBAAiB,CACnD;QACD,IAAI,UAAU,GAAG,+BAA+B,CAC9C,IAAI,CAAC,IAAI,EAAE,EACV,IAAI,CAAC,QAA0B,CAAC,gBAAgB,EACjD,aAAa,EACZ,IAAI,CAAC,QAA0B,CAAC,iBAAiB,CACnD;;AAGD,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACvD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;;YAElE;AAAO,iBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBACrE,UAAU,GAAG,+BAA+B,CAC1C,IAAI,CAAC,IAAI,EAAE,EACV,IAAI,CAAC,QAA0B,CAAC,gBAAgB,EACjD,aAAa,GAAG,WAAW,CAAC,MAAM,EACjC,IAAI,CAAC,QAA0B,CAAC,iBAAiB,CACnD;YACH;iBAAO;AACL,gBAAA,WAAW,GAAG,+BAA+B,CAC3C,IAAI,CAAC,IAAI,EAAE,EACV,IAAI,CAAC,QAA0B,CAAC,iBAAiB,EAClD,EAAE,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,EACnC,IAAI,CAAC,QAA0B,CAAC,iBAAiB,CACnD;YACH;QACF;;AAEK,aAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,UAAU,GAAG,+BAA+B,CAC1C,IAAI,CAAC,IAAI,EAAE,EACV,IAAI,CAAC,QAA0B,CAAC,gBAAgB,EACjD,aAAa,GAAG,WAAW,CAAC,MAAM,EACjC,IAAI,CAAC,QAA0B,CAAC,iBAAiB,CACnD;QACH;;AAEK,aAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAA,WAAW,GAAG,+BAA+B,CAC3C,IAAI,CAAC,IAAI,EAAE,EACV,IAAI,CAAC,QAA0B,CAAC,iBAAiB,EAClD,EAAE,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,EACnC,IAAI,CAAC,QAA0B,CAAC,iBAAiB,CACnD;QACH;AAEA,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,EAAE;;;AAG7B,YAAA,MAAM,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC;AACrD,YAAA,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAC1B,CAAC,IACC,CAAC,CAAC,sBAAsB,KAAK,CAAC;gBAC9B,CAAC,CAAC,sBAAsB,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO;gBACxD,CAAC,CAAC,sBAAsB,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAC3D;YAED,IAAI,WAAW,EAAE;AACf,gBAAA,WAAW,CAAC,sBAAsB;oBAC/B,IAAI,CAAC,QAA0B,CAAC,2BAA2B;wBAC5D;6BACG,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW;AAC7B,6BAAA,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAChE;QACF;;AAIA,QAAA,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AACnE,QAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAElE,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAG,IAAI,CAAC,QAA0B,CAAC,SAAS,CAAC;IACrE;AAEQ,IAAA,YAAY,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE;YAC7B,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;QACzB;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,KAAK,EAAE;YAC/B;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QAElE,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;YACpC,IAAI,GAAG,EAAE;AACP,gBAAA,GAAG,EAAE;YACP;QACF;;;AAIA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;;QAGzB,IACE,IAAI,CAAC,QAAQ;aACX,IAAI,CAAC,UAAyB,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,gBAAA,IAAI,CAAC,UAAyB,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EACxD;YACA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG,IAAI,CAAC,QAA0B,CAAC,SAAS,CAAC;QAChE;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,cAAc,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,IAAI,CAAC,SAAS,EAAG,CAAG,IAAI,CAAC,QAA0B,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,aAAa,EAChF,aAAa,CACd;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAGpB,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YACjC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACtB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,CACJ,IAA2E,EAC3E,SAAiB,EAAA;AAEjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAExC,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC3C;AAAO,aAAA,IAAI,IAAI,KAAK,KAAK,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACzC;AAAO,aAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC7C;AAAO,aAAA,IAAI,IAAI,KAAK,UAAU,EAAE;YAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAChD;AAAO,aAAA,IAAI,IAAI,KAAK,eAAe,EAAE;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D;AAAO,aAAA,IAAI,IAAI,KAAK,UAAU,EAAE;;YAE9B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACrD;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,EAAE;IACrB;uGA3qBW,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAL,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAK,u/DCjFlB,21BAuBA,EAAA,MAAA,EAAA,CAAA,+qGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FD0Da,KAAK,EAAA,UAAA,EAAA,CAAA;kBApBjB,SAAS;+BACE,WAAW,EAAA,QAAA,EACX,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,eAAA,EACM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EAGzC;AACJ,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,8BAA8B,EAAE,8BAA8B;AAC9D,wBAAA,4BAA4B,EAAE,4BAA4B;AAC1D,wBAAA,2BAA2B,EAAE,sBAAsB;AACnD,wBAAA,yBAAyB,EAAE,oBAAoB;AAC/C,wBAAA,4BAA4B,EAAE,YAAY;AAC1C,wBAAA,8BAA8B,EAAE,iBAAiB;AACjD,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,wBAAwB,EAAE,gBAAgB;AAC3C,qBAAA,EAAA,QAAA,EAAA,21BAAA,EAAA,MAAA,EAAA,CAAA,+qGAAA,CAAA,EAAA;+wCAkF4C,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME5I7C,SAAS,CAAA;AACZ,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAE7B,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAE1B;;;AAGG;AACH,IAAA,OAAO,GAAG,KAAK,CAAwC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,CAAA,EACzD,KAAK,EAAE,OAAO;AACd,QAAA,SAAS,EAAE,CAAC,IAAI,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAA,CAC/C;AAEF;;;;;AAKG;AACH,IAAA,MAAM,GAAG,KAAK,CAAwC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,CAAA,EACxD,KAAK,EAAE,MAAM;AACb,QAAA,SAAS,EAAE,CAAC,IAAI,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAA,CAC/C;;AAGF,IAAA,SAAS,GAAG,KAAK,CAAwC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EAC3D,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,CAAC,IAAI,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAA,CAC/C;;AAGF,IAAA,SAAS,GAAG,KAAK,CAAwC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EAC3D,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,CAAC,IAAI,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAA,CAC/C;;AAGF,IAAA,UAAU,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,GAAG;;AAG7E,IAAA,SAAS,GAAG,KAAK,CAAC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,GAAG;;AAG1E,IAAA,YAAY,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,GAAG;;IAGzE,QAAQ,GAAkC,MAAM,CAAgB,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,MAAM,CAAC,EAAE,EAAA,CAAG;IAC3F,OAAO,GAAkC,MAAM,CAAgB,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,MAAM,CAAC,EAAE,EAAA,CAAG;IAC1F,UAAU,GAAkC,MAAM,CAAgB,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,MAAM,CAAC,EAAE,EAAA,CAAG;IAC7F,UAAU,GAAkC,MAAM,CAAgB,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,MAAM,CAAC,EAAE,EAAA,CAAG;IAC7F,WAAW,GAA4B,MAAM,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,aAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,MAAM,CAAC,EAAE,EAAA,CAAG;IAC1E,UAAU,GAA4B,MAAM,CAAC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,MAAM,CAAC,EAAE,EAAA,CAAG;IACxE,aAAa,GAA4B,MAAM,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,MAAM,CAAC,EAAE,EAAA,CAAG;AAE5E,IAAA,kBAAkB;IACT,aAAa,GAAmB,EAAE;AAEnD,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,gBAAgB,CAAC;AAClE,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YACjC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAC5C,IAAI,CAAC,KAAK,CAAC,aAAa,EACxB,eAAe,EACf,CAAC,KAAsB,KAAI;;AAEzB,gBAAA,IAAI,KAAK,CAAC,YAAY,KAAK,YAAY,EAAE;oBACvC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;gBACxC;AACF,YAAA,CAAC,CACF;AACH,QAAA,CAAC,CAAC;;AAGF,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/C,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7C,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AACnD,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AACnD,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACrD,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;;QAGzD,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;YAC9B,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzB,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,uBAAuB,CAAC;YAC9E;iBAAO;AACL,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzB,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,uBAAuB,CAAC;YAC3E;AACF,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;YAC1C;AACF,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;YAC1C;AACF,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;YAC3C;AACF,QAAA,CAAC,CAAC;IACJ;;IAGA,QAAQ,GAAA,EAAoB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpD,OAAO,GAAA,EAAoB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAClD,IAAA,OAAO,CAAC,CAAgB,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACrC;IACA,UAAU,GAAA,EAAoB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACxD,UAAU,GAAA,EAAoB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACxD,QAAQ,GAAA,EAAc,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACjD,SAAS,GAAA,EAAc,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACjD,SAAS,GAAA,EAAc,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AAEpD,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC;IAClE;IAEA,YAAY,CAAC,IAAY,EAAE,MAAc,EAAE,KAAa,EAAE,KAAc,EAAE,KAAc,EAAA;;AAEtF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC;AACnE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC;AACvE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC;QAErE,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE;AACrC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC;QACxE;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC;QACjE;AAEA,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC;QAC7D;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC;QAChE;AAEA,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC;QAC7D;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC;QAChE;IACF;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,CAAC,CAAQ,KAAK,KAAK,CAAC,CACnF;YACD,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,CAAQ,KAAK,KAAK,CAAC,CACjF;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;YACpC,IAAI,GAAG,EAAE;AACP,gBAAA,GAAG,EAAE;YACP;QACF;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,EAAE;QAC3B;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;IAC7B;uGAhMW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBALrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACpBD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-split.mjs","sources":["../../../projects/components/split/src/utils.ts","../../../projects/components/split/src/split/split.ts","../../../projects/components/split/src/split/split.html","../../../projects/components/split/src/split-pane.ts","../../../projects/components/split/ngstarter-ui-components-split.ts"],"sourcesContent":["import { ElementRef } from '@angular/core';\n\nimport {\n SplitArea,\n SplitPoint,\n SplitAreaSnapshot,\n SplitSideAbsorptionCapacity,\n SplitAreaAbsorptionCapacity,\n} from './interfaces';\n\nexport function getPointFromEvent(event: MouseEvent | TouchEvent): SplitPoint | null {\n // TouchEvent\n if (\n (event as TouchEvent).changedTouches !== undefined &&\n (event as TouchEvent).changedTouches.length > 0\n ) {\n return {\n x: (event as TouchEvent).changedTouches[0].clientX,\n y: (event as TouchEvent).changedTouches[0].clientY,\n };\n }\n // MouseEvent\n else if (\n (event as MouseEvent).clientX !== undefined &&\n (event as MouseEvent).clientY !== undefined\n ) {\n return {\n x: (event as MouseEvent).clientX,\n y: (event as MouseEvent).clientY,\n };\n }\n return null;\n}\n\nexport function getElementPixelSize(\n elRef: ElementRef,\n direction: 'horizontal' | 'vertical'\n): number {\n const rect = (elRef.nativeElement as HTMLElement).getBoundingClientRect();\n\n return direction === 'horizontal' ? rect.width : rect.height;\n}\n\nexport function getInputPositiveNumber<T>(v: any, defaultValue: T): number | T {\n if (v === null || v === undefined) {\n return defaultValue;\n }\n\n v = Number(v);\n return !isNaN(v) && v >= 0 ? v : defaultValue;\n}\n\nexport function isUserSizesValid(\n unit: 'percent' | 'pixel',\n sizes: number[]\n): boolean | number | void {\n // All sizes have to be not null and total should be 100\n if (unit === 'percent') {\n const total = sizes.reduce((_total, s) => (s !== null ? _total + s : _total), 0);\n return sizes.every(s => s !== null) && total && total > 99.9 && total < 100.1;\n }\n\n // A size at null is mandatory but only one.\n if (unit === 'pixel') {\n return sizes.filter(s => s === null).length === 1;\n }\n}\n\nexport function getAreaMinSize(a: SplitArea): number {\n if (a.size === null) {\n return 0;\n }\n\n if (a.component.isLocked() === true) {\n return a.size;\n }\n\n if (a.component.getMinSize() === null) {\n return 0;\n }\n\n if ((a.component.getMinSize() as number) > a.size) {\n return a.size;\n }\n\n return a.component.getMinSize() as number;\n}\n\nexport function getAreaMaxSize(a: SplitArea): null | number {\n if (a.size === null) {\n return null;\n }\n\n if (a.component.isLocked() === true) {\n return a.size;\n }\n\n if (a.component.getMaxSize() === null) {\n return null;\n }\n\n if ((a.component.getMaxSize() as number) < a.size) {\n return a.size;\n }\n\n return a.component.getMaxSize() as number;\n}\n\nexport function getGutterSideAbsorptionCapacity(\n unit: 'percent' | 'pixel',\n sideAreas: SplitAreaSnapshot[],\n pixels: number,\n allAreasSizePixel: number\n): SplitSideAbsorptionCapacity {\n return sideAreas.reduce(\n (acc: any, area) => {\n const res = getAreaAbsorptionCapacity(unit, area, acc.remain, allAreasSizePixel);\n acc.list.push(res);\n acc.remain = res && res.pixelRemain;\n return acc;\n },\n { remain: pixels, list: [] }\n );\n}\n\nexport function getAreaAbsorptionCapacity(\n unit: 'percent' | 'pixel',\n areaSnapshot: SplitAreaSnapshot,\n pixels: number,\n allAreasSizePixel: number\n): SplitAreaAbsorptionCapacity | void {\n // No pain no gain\n if (pixels === 0) {\n return {\n areaSnapshot,\n pixelAbsorb: 0,\n percentAfterAbsorption: areaSnapshot.sizePercentAtStart,\n pixelRemain: 0,\n };\n }\n\n // Area start at zero and need to be reduced, not possible\n if (areaSnapshot.sizePixelAtStart === 0 && pixels < 0) {\n return {\n areaSnapshot,\n pixelAbsorb: 0,\n percentAfterAbsorption: 0,\n pixelRemain: pixels,\n };\n }\n\n if (unit === 'percent') {\n return getAreaAbsorptionCapacityPercent(areaSnapshot, pixels, allAreasSizePixel);\n }\n\n if (unit === 'pixel') {\n return getAreaAbsorptionCapacityPixel(areaSnapshot, pixels, allAreasSizePixel);\n }\n}\n\nexport function getAreaAbsorptionCapacityPercent(\n areaSnapshot: SplitAreaSnapshot,\n pixels: number,\n allAreasSizePixel: number\n): SplitAreaAbsorptionCapacity | void {\n const tempPixelSize = areaSnapshot.sizePixelAtStart + pixels;\n const tempPercentSize = (tempPixelSize / allAreasSizePixel) * 100;\n\n // ENLARGE AREA\n\n if (pixels > 0) {\n // If maxSize & newSize bigger than it > absorb to max and return remaining pixels\n if (areaSnapshot.area.maxSize !== null && tempPercentSize > areaSnapshot.area.maxSize) {\n // Use area.area.maxSize as newPercentSize and return calculate pixels remaining\n const maxSizePixel = (areaSnapshot.area.maxSize / 100) * allAreasSizePixel;\n return {\n areaSnapshot,\n pixelAbsorb: maxSizePixel,\n percentAfterAbsorption: areaSnapshot.area.maxSize,\n pixelRemain: areaSnapshot.sizePixelAtStart + pixels - maxSizePixel,\n };\n }\n return {\n areaSnapshot,\n pixelAbsorb: pixels,\n percentAfterAbsorption: tempPercentSize > 100 ? 100 : tempPercentSize,\n pixelRemain: 0,\n };\n }\n\n // REDUCE AREA\n else if (pixels < 0) {\n // If minSize & newSize smaller than it > absorb to min and return remaining pixels\n if (areaSnapshot.area.minSize !== null && tempPercentSize < areaSnapshot.area.minSize) {\n // Use area.area.minSize as newPercentSize and return calculate pixels remaining\n const minSizePixel = (areaSnapshot.area.minSize / 100) * allAreasSizePixel;\n return {\n areaSnapshot,\n pixelAbsorb: minSizePixel,\n percentAfterAbsorption: areaSnapshot.area.minSize,\n pixelRemain: areaSnapshot.sizePixelAtStart + pixels - minSizePixel,\n };\n }\n // If reduced under zero > return remaining pixels\n else if (tempPercentSize < 0) {\n // Use 0 as newPercentSize and return calculate pixels remaining\n return {\n areaSnapshot,\n pixelAbsorb: -areaSnapshot.sizePixelAtStart,\n percentAfterAbsorption: 0,\n pixelRemain: pixels + areaSnapshot.sizePixelAtStart,\n };\n }\n return {\n areaSnapshot,\n pixelAbsorb: pixels,\n percentAfterAbsorption: tempPercentSize,\n pixelRemain: 0,\n };\n }\n}\n\nexport function getAreaAbsorptionCapacityPixel(\n areaSnapshot: SplitAreaSnapshot,\n pixels: number,\n containerSizePixel: number\n): SplitAreaAbsorptionCapacity | void {\n const tempPixelSize = areaSnapshot.sizePixelAtStart + pixels;\n\n // ENLARGE AREA\n\n if (pixels > 0) {\n // If maxSize & newSize bigger than it > absorb to max and return remaining pixels\n if (areaSnapshot.area.maxSize !== null && tempPixelSize > areaSnapshot.area.maxSize) {\n return {\n areaSnapshot,\n pixelAbsorb: areaSnapshot.area.maxSize - areaSnapshot.sizePixelAtStart,\n percentAfterAbsorption: -1,\n pixelRemain: tempPixelSize - areaSnapshot.area.maxSize,\n };\n }\n return {\n areaSnapshot,\n pixelAbsorb: pixels,\n percentAfterAbsorption: -1,\n pixelRemain: 0,\n };\n }\n\n // REDUCE AREA\n else if (pixels < 0) {\n // If minSize & newSize smaller than it > absorb to min and return remaining pixels\n if (areaSnapshot.area.minSize !== null && tempPixelSize < areaSnapshot.area.minSize) {\n return {\n areaSnapshot,\n pixelAbsorb: areaSnapshot.area.minSize + pixels - tempPixelSize,\n percentAfterAbsorption: -1,\n pixelRemain: tempPixelSize - areaSnapshot.area.minSize,\n };\n }\n // If reduced under zero > return remaining pixels\n else if (tempPixelSize < 0) {\n return {\n areaSnapshot,\n pixelAbsorb: -areaSnapshot.sizePixelAtStart,\n percentAfterAbsorption: -1,\n pixelRemain: pixels + areaSnapshot.sizePixelAtStart,\n };\n }\n return {\n areaSnapshot,\n pixelAbsorb: pixels,\n percentAfterAbsorption: -1,\n pixelRemain: 0,\n };\n }\n}\n\nexport function updateAreaSize(unit: 'percent' | 'pixel', item: SplitAreaAbsorptionCapacity) {\n if (unit === 'percent') {\n item.areaSnapshot.area.component.setSize(item.percentAfterAbsorption);\n } else if (unit === 'pixel') {\n // Update size except for the wildcard size area\n if (item.areaSnapshot.area.size !== null) {\n item.areaSnapshot.area.component.setSize(\n item.areaSnapshot.sizePixelAtStart + item.pixelAbsorb\n );\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EnvironmentProviders,\n InjectionToken,\n NgZone,\n OnDestroy,\n Renderer2,\n booleanAttribute,\n effect,\n inject,\n input,\n makeEnvironmentProviders,\n output,\n signal,\n viewChildren,\n} from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport {\n SplitArea,\n SplitAreaSnapshot,\n SplitDefaultOptions,\n SplitOutputAreaSizes,\n SplitOutputData,\n SplitPoint,\n SplitSnapshot,\n} from '../interfaces';\nimport { SplitPane } from '../split-pane';\nimport {\n getAreaMaxSize,\n getAreaMinSize,\n getElementPixelSize,\n getGutterSideAbsorptionCapacity,\n getInputPositiveNumber,\n getPointFromEvent,\n isUserSizesValid,\n updateAreaSize,\n} from '../utils';\n\n/** Injection token that can be used to specify default split options. */\nexport const SPLIT_DEFAULT_OPTIONS = new InjectionToken<SplitDefaultOptions>(\n 'SPLIT_DEFAULT_OPTIONS'\n);\n\n/**\n * Configures the default options for the split component.\n * @param options The default options to use.\n * @returns The environment providers.\n */\nexport function provideSplit(options: SplitDefaultOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: SPLIT_DEFAULT_OPTIONS, useValue: options },\n ]);\n}\n\n@Component({\n selector: 'ngs-split',\n exportAs: 'ngsSplit',\n standalone: true,\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './split.html',\n styleUrl: './split.scss',\n host: {\n class: 'ngs-split',\n '[class.ngs-split-horizontal]': 'direction() === \"horizontal\"',\n '[class.ngs-split-vertical]': 'direction() === \"vertical\"',\n '[class.ngs-split-percent]': 'unit() === \"percent\"',\n '[class.ngs-split-pixel]': 'unit() === \"pixel\"',\n '[class.ngs-split-disabled]': 'disabled()',\n '[class.ngs-split-transition]': 'useTransition()',\n '[class.ngs-dragging]': 'isDraggingSignal()',\n '[class.ngs-split-init]': 'isInitSignal()',\n },\n})\nexport class Split implements AfterViewInit, OnDestroy {\n shouldShowHandle(gutterIndex: number): boolean {\n // show if either adjacent pane has withHandle=true\n const left = this.displayedAreas[gutterIndex]?.component as SplitPane | undefined;\n const right = this.displayedAreas[gutterIndex + 1]?.component as SplitPane | undefined;\n return !!(left?.hasHandle() || right?.hasHandle());\n }\n private ngZone = inject(NgZone);\n private elRef = inject(ElementRef);\n private cdRef = inject(ChangeDetectorRef);\n private renderer = inject(Renderer2);\n private isInit = signal(false);\n protected _defaultOptions = inject<SplitDefaultOptions>(SPLIT_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n /** The split direction. */\n direction = input<'horizontal' | 'vertical'>(this._defaultOptions?.direction ?? 'horizontal');\n\n /** The unit you want to specify area sizes. */\n unit = input<'percent' | 'pixel'>(this._defaultOptions?.unit ?? 'percent');\n\n /** Gutters's size (dragging elements) in pixels. */\n gutterSize = input(this._defaultOptions?.gutterSize ?? 5, {\n transform: (v: number | string) => getInputPositiveNumber(v, 4),\n });\n\n /** Gutter step while moving in pixels. */\n gutterStep = input(this._defaultOptions?.gutterStep ?? 1, {\n transform: (v: number | string) => getInputPositiveNumber(v, 1),\n });\n\n /** Set to true if you want to limit gutter move to adjacent areas only. */\n restrictMove = input(this._defaultOptions?.restrictMove ?? false, { transform: booleanAttribute });\n\n /** Add transition when toggling visibility using `visible` or `size` changes. */\n useTransition = input(this._defaultOptions?.useTransition ?? false, { transform: booleanAttribute });\n\n /**\n * Disable the dragging feature (remove cursor/image on gutters).\n * `gutterClick`/`gutterDblClick` still emits.\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /** Indicates the directionality of the areas. */\n dir = input<'ltr' | 'rtl'>(this._defaultOptions?.dir ?? 'ltr');\n\n /**\n * Milliseconds to detect a double click on a gutter. Set it around 300-500ms if\n * you want to use `gutterDblClick` event.\n */\n gutterDblClickDuration = input(this._defaultOptions?.gutterDblClickDuration ?? 0, {\n transform: (v: number | string) => getInputPositiveNumber(v, 0),\n });\n\n /** Event emitted when drag starts. */\n dragStart = output<SplitOutputData>();\n /** Event emitted when drag ends. */\n dragEnd = output<SplitOutputData>();\n /** Event emitted when user clicks on a gutter. */\n gutterClick = output<SplitOutputData>();\n /** Event emitted when user double clicks on a gutter. */\n gutterDblClick = output<SplitOutputData>();\n /** Event emitted when transition ends (debounced). */\n transitionEnd = output<SplitOutputAreaSizes>();\n private transitionEndSubject = new Subject<SplitOutputAreaSizes>();\n\n private dragProgressSubject = new Subject<SplitOutputData>();\n dragProgress$: Observable<SplitOutputData> = this.dragProgressSubject.asObservable();\n\n\n private isDragging = signal(false);\n private dragListeners: (() => void)[] = [];\n private snapshot: SplitSnapshot | null = null;\n private startPoint: SplitPoint | null = null;\n private endPoint: SplitPoint | null = null;\n\n public readonly displayedAreas: SplitArea[] = [];\n private readonly hidedAreas: SplitArea[] = [];\n\n private gutterEls = viewChildren<ElementRef>('gutterEls');\n\n protected isDraggingSignal = this.isDragging.asReadonly();\n public readonly isDraggingPublic = this.isDragging.asReadonly();\n protected isInitSignal = this.isInit.asReadonly();\n\n constructor() {\n // Debounce transitionEnd output\n this.transitionEndSubject.pipe(debounceTime<any>(20)).subscribe(sizes => {\n this.transitionEnd.emit(sizes);\n });\n\n effect(() => {\n this.direction();\n this.cdRef.markForCheck();\n this.build(false, false);\n });\n\n effect(() => {\n this.unit();\n this.cdRef.markForCheck();\n this.build(false, true);\n });\n\n effect(() => {\n this.gutterSize();\n this.build(false, false);\n });\n\n effect(() => {\n this.useTransition();\n this.cdRef.markForCheck();\n });\n\n effect(() => {\n this.disabled();\n this.cdRef.markForCheck();\n });\n\n effect(() => {\n this.renderer.setAttribute(this.elRef.nativeElement, 'dir', this.dir());\n });\n }\n\n ngAfterViewInit() {\n this.ngZone.runOutsideAngular(() => {\n // To avoid transition at first rendering\n setTimeout(() => {\n this.isInit.set(true);\n this.cdRef.markForCheck();\n });\n });\n }\n\n private getNbGutters(): number {\n return this.displayedAreas.length === 0 ? 0 : this.displayedAreas.length - 1;\n }\n\n addArea(component: SplitPane): void {\n const newArea: SplitArea = {\n component,\n order: 0,\n size: 0,\n minSize: null,\n maxSize: null,\n };\n\n if (component.isVisible() === true) {\n this.displayedAreas.push(newArea);\n\n this.build(true, true);\n } else {\n this.hidedAreas.push(newArea);\n }\n }\n\n removeArea(component: SplitPane): void {\n if (this.displayedAreas.some(a => a.component === component)) {\n const area = this.displayedAreas.find(a => a.component === component) as SplitArea;\n this.displayedAreas.splice(this.displayedAreas.indexOf(area), 1);\n\n this.build(true, true);\n } else if (this.hidedAreas.some(a => a.component === component)) {\n const area = this.hidedAreas.find(a => a.component === component) as SplitArea;\n this.hidedAreas.splice(this.hidedAreas.indexOf(area), 1);\n }\n }\n\n updateArea(component: SplitPane, resetOrders: boolean, resetSizes: boolean): void {\n if (component.isVisible() === true) {\n this.build(resetOrders, resetSizes);\n }\n }\n\n updateAreaInternal(component: SplitPane): void {\n const area = this.displayedAreas.find(a => a.component === component);\n if (area) {\n area.size = component.getSize();\n }\n }\n\n showArea(component: SplitPane): void {\n const area = this.hidedAreas.find(a => a.component === component);\n if (area === undefined) {\n return;\n }\n\n const areas = this.hidedAreas.splice(this.hidedAreas.indexOf(area), 1);\n this.displayedAreas.push(...areas);\n\n this.build(true, true);\n }\n\n hideArea(comp: SplitPane): void {\n const area = this.displayedAreas.find(a => a.component === comp);\n if (area === undefined) {\n return;\n }\n\n const areas = this.displayedAreas.splice(this.displayedAreas.indexOf(area), 1);\n areas.forEach(_area => {\n _area.order = 0;\n _area.size = 0;\n });\n this.hidedAreas.push(...areas);\n\n this.build(true, true);\n }\n\n getVisibleAreaSizes(): SplitOutputAreaSizes {\n return this.displayedAreas.map(a => (a.size === null ? '*' : a.size));\n }\n\n setVisibleAreaSizes(sizes: SplitOutputAreaSizes): boolean {\n if (sizes.length !== this.displayedAreas.length) {\n return false;\n }\n\n const formatedSizes = sizes.map(s => getInputPositiveNumber(s, null)) as number[];\n const isValid = isUserSizesValid(this.unit(), formatedSizes);\n\n if (isValid === false) {\n return false;\n }\n\n this.displayedAreas.forEach((area, i) => area.component.setSize(formatedSizes[i]));\n\n this.build(false, true);\n return true;\n }\n\n private build(resetOrders: boolean, resetSizes: boolean): void {\n // ¤ AREAS ORDER\n\n if (resetOrders === true) {\n // If user provided 'order' for each area, use it to sort them.\n if (this.displayedAreas.every(a => a.component.getOrder() !== null)) {\n this.displayedAreas.sort(\n (a, b) => (a.component.getOrder() as number) - (b.component.getOrder() as number)\n );\n }\n\n // Then set real order with multiples of 2, numbers between will be used by gutters.\n this.displayedAreas.forEach((area, i) => {\n area.order = i * 2;\n area.component.setStyleOrder(area.order);\n });\n }\n\n // ¤ AREAS SIZE\n\n if (resetSizes === true) {\n const useUserSizes = isUserSizesValid(\n this.unit(),\n this.displayedAreas.map(a => a.component.getSize()) as number[]\n );\n\n switch (this.unit()) {\n case 'percent': {\n const defaultSize = 100 / this.displayedAreas.length;\n\n this.displayedAreas.forEach(area => {\n area.size = useUserSizes ? (area.component.getSize() as number) : defaultSize;\n area.minSize = getAreaMinSize(area);\n area.maxSize = getAreaMaxSize(area);\n });\n break;\n }\n case 'pixel': {\n if (useUserSizes) {\n this.displayedAreas.forEach(area => {\n area.size = area.component.getSize();\n area.minSize = getAreaMinSize(area);\n area.maxSize = getAreaMaxSize(area);\n });\n } else {\n const wildcardSizeAreas = this.displayedAreas.filter(a => a.component.getSize() === null);\n\n // No wildcard area > Need to select one arbitrarily > first\n if (wildcardSizeAreas.length === 0 && this.displayedAreas.length > 0) {\n this.displayedAreas.forEach((area, i) => {\n area.size = i === 0 ? null : area.component.getSize();\n area.minSize = i === 0 ? null : getAreaMinSize(area);\n area.maxSize = i === 0 ? null : getAreaMaxSize(area);\n });\n }\n // More than one wildcard area > Need to keep only one arbitrarly > first\n else if (wildcardSizeAreas.length > 1) {\n let alreadyGotOne = false;\n this.displayedAreas.forEach(area => {\n if (area.component.getSize() === null) {\n if (alreadyGotOne === false) {\n area.size = null;\n area.minSize = null;\n area.maxSize = null;\n alreadyGotOne = true;\n } else {\n area.size = 100;\n area.minSize = null;\n area.maxSize = null;\n }\n } else {\n area.size = area.component.getSize();\n area.minSize = getAreaMinSize(area);\n area.maxSize = getAreaMaxSize(area);\n }\n });\n }\n }\n break;\n }\n }\n }\n\n this.refreshStyleSizes();\n this.cdRef.markForCheck();\n }\n\n private refreshStyleSizes(): void {\n ///////////////////////////////////////////\n // PERCENT MODE\n if (this.unit() === 'percent') {\n // Only one area > flex-basis 100%\n if (this.displayedAreas.length === 1) {\n this.displayedAreas[0].component.setStyleFlex(0, 0, `100%`, false, false);\n }\n // Multiple areas > use each percent basis\n else {\n const sumGutterSize = this.getNbGutters() * this.gutterSize();\n\n this.displayedAreas.forEach(area => {\n area.component.setStyleFlex(\n 0,\n 0,\n `calc( ${area.size}% - ${((area.size as number) / 100) * sumGutterSize}px )`,\n area.minSize !== null && area.minSize === area.size ? true : false,\n area.maxSize !== null && area.maxSize === area.size ? true : false\n );\n });\n }\n }\n ///////////////////////////////////////////\n // PIXEL MODE\n else if (this.unit() === 'pixel') {\n this.displayedAreas.forEach(area => {\n // Area with wildcard size\n if (area.size === null) {\n if (this.displayedAreas.length === 1) {\n area.component.setStyleFlex(1, 1, `100%`, false, false);\n } else {\n area.component.setStyleFlex(1, 1, `auto`, false, false);\n }\n }\n // Area with pixel size\n else {\n // Only one area > flex-basis 100%\n if (this.displayedAreas.length === 1) {\n area.component.setStyleFlex(0, 0, `100%`, false, false);\n }\n // Multiple areas > use each pixel basis\n else {\n area.component.setStyleFlex(\n 0,\n 0,\n `${area.size}px`,\n area.minSize !== null && area.minSize === area.size ? true : false,\n area.maxSize !== null && area.maxSize === area.size ? true : false\n );\n }\n }\n });\n }\n }\n\n _clickTimeout: number | null = null;\n\n clickGutter(event: MouseEvent | TouchEvent, gutterNum: number): void {\n const tempPoint = getPointFromEvent(event) as SplitPoint;\n\n // Be sure mouseup/touchend happened at same point as mousedown/touchstart to trigger click/dblclick\n if (this.startPoint && this.startPoint.x === tempPoint.x && this.startPoint.y === tempPoint.y) {\n // If timeout in progress and new click > clearTimeout & dblClickEvent\n if (this._clickTimeout !== null) {\n window.clearTimeout(this._clickTimeout);\n this._clickTimeout = null;\n this.notify('dblclick', gutterNum);\n this.stopDragging();\n }\n // Else start timeout to call clickEvent at end\n else {\n this._clickTimeout = window.setTimeout(() => {\n this._clickTimeout = null;\n this.notify('click', gutterNum);\n this.stopDragging();\n }, this.gutterDblClickDuration());\n }\n }\n }\n\n startDragging(event: MouseEvent | TouchEvent, gutterOrder: number, gutterNum: number): void {\n if (event.cancelable) {\n event.preventDefault();\n }\n event.stopPropagation();\n\n this.startPoint = getPointFromEvent(event);\n if (this.startPoint === null || this.disabled() === true) {\n return;\n }\n\n this.isDragging.set(true);\n this.cdRef.markForCheck();\n\n this.snapshot = {\n gutterNum,\n lastSteppedOffset: 0,\n allAreasSizePixel:\n getElementPixelSize(this.elRef, this.direction()) - this.getNbGutters() * this.gutterSize(),\n allInvolvedAreasSizePercent: 100,\n areasBeforeGutter: [],\n areasAfterGutter: [],\n };\n\n this.displayedAreas.forEach(area => {\n const areaSnapshot: SplitAreaSnapshot = {\n area,\n sizePixelAtStart: getElementPixelSize(area.component.elRef, this.direction()),\n sizePercentAtStart: (this.unit() === 'percent' ? area.size : -1) as number, // If pixel mode, anyway, will not be used.\n };\n\n if (area.order < gutterOrder) {\n if (this.restrictMove() === true) {\n (this.snapshot as SplitSnapshot).areasBeforeGutter = [areaSnapshot];\n } else {\n (this.snapshot as SplitSnapshot).areasBeforeGutter.unshift(areaSnapshot);\n }\n } else if (area.order > gutterOrder) {\n if (this.restrictMove() === true) {\n if ((this.snapshot as SplitSnapshot).areasAfterGutter.length === 0) {\n (this.snapshot as SplitSnapshot).areasAfterGutter = [areaSnapshot];\n }\n } else {\n (this.snapshot as SplitSnapshot).areasAfterGutter.push(areaSnapshot);\n }\n }\n });\n\n this.snapshot.allInvolvedAreasSizePercent = [\n ...this.snapshot.areasBeforeGutter,\n ...this.snapshot.areasAfterGutter,\n ].reduce((t, a) => t + (a.sizePercentAtStart > 0 ? a.sizePercentAtStart : 0), 0);\n\n if (\n this.snapshot.areasBeforeGutter.length === 0 ||\n this.snapshot.areasAfterGutter.length === 0\n ) {\n return;\n }\n\n this.dragListeners.push(\n this.renderer.listen('document', 'mouseup', this.stopDragging.bind(this))\n );\n this.dragListeners.push(\n this.renderer.listen('document', 'touchend', this.stopDragging.bind(this))\n );\n this.dragListeners.push(\n this.renderer.listen('document', 'touchcancel', this.stopDragging.bind(this))\n );\n\n this.ngZone.runOutsideAngular(() => {\n this.dragListeners.push(\n this.renderer.listen('document', 'mousemove', this.dragEvent.bind(this))\n );\n this.dragListeners.push(\n this.renderer.listen('document', 'touchmove', this.dragEvent.bind(this))\n );\n });\n\n this.displayedAreas.forEach(area => area.component.lockEvents());\n\n this.isDragging.set(true);\n this.renderer.addClass(this.elRef.nativeElement, 'ngs-dragging');\n this.renderer.addClass(\n this.gutterEls()![this.snapshot.gutterNum - 1].nativeElement,\n 'ngs-dragged'\n );\n\n this.notify('start', this.snapshot.gutterNum);\n }\n\n private dragEvent(event: MouseEvent | TouchEvent): void {\n if (event.cancelable) {\n event.preventDefault();\n }\n event.stopPropagation();\n\n if (this._clickTimeout !== null) {\n window.clearTimeout(this._clickTimeout);\n this._clickTimeout = null;\n }\n\n if (this.isDragging() === false) {\n return;\n }\n\n this.endPoint = getPointFromEvent(event);\n if (this.endPoint === null) {\n return;\n }\n\n // Calculate steppedOffset\n\n let offset =\n this.direction() === 'horizontal'\n ? (this.startPoint as SplitPoint).x - this.endPoint.x\n : (this.startPoint as SplitPoint).y - this.endPoint.y;\n if (this.dir() === 'rtl' && this.direction() === 'horizontal') {\n offset = -offset;\n }\n const steppedOffset = Math.round(offset / this.gutterStep()) * this.gutterStep();\n\n if (steppedOffset === (this.snapshot as SplitSnapshot).lastSteppedOffset) {\n return;\n }\n\n (this.snapshot as SplitSnapshot).lastSteppedOffset = steppedOffset;\n\n // Need to know if each gutter side areas could reacts to steppedOffset\n\n let areasBefore = getGutterSideAbsorptionCapacity(\n this.unit(),\n (this.snapshot as SplitSnapshot).areasBeforeGutter,\n -steppedOffset,\n (this.snapshot as SplitSnapshot).allAreasSizePixel\n );\n let areasAfter = getGutterSideAbsorptionCapacity(\n this.unit(),\n (this.snapshot as SplitSnapshot).areasAfterGutter,\n steppedOffset,\n (this.snapshot as SplitSnapshot).allAreasSizePixel\n );\n\n // Each gutter side areas can't absorb all offset\n if (areasBefore.remain !== 0 && areasAfter.remain !== 0) {\n if (Math.abs(areasBefore.remain) === Math.abs(areasAfter.remain)) {\n /** */\n } else if (Math.abs(areasBefore.remain) > Math.abs(areasAfter.remain)) {\n areasAfter = getGutterSideAbsorptionCapacity(\n this.unit(),\n (this.snapshot as SplitSnapshot).areasAfterGutter,\n steppedOffset + areasBefore.remain,\n (this.snapshot as SplitSnapshot).allAreasSizePixel\n );\n } else {\n areasBefore = getGutterSideAbsorptionCapacity(\n this.unit(),\n (this.snapshot as SplitSnapshot).areasBeforeGutter,\n -(steppedOffset - areasAfter.remain),\n (this.snapshot as SplitSnapshot).allAreasSizePixel\n );\n }\n }\n // Areas before gutter can't absorbs all offset > need to recalculate sizes for areas after gutter.\n else if (areasBefore.remain !== 0) {\n areasAfter = getGutterSideAbsorptionCapacity(\n this.unit(),\n (this.snapshot as SplitSnapshot).areasAfterGutter,\n steppedOffset + areasBefore.remain,\n (this.snapshot as SplitSnapshot).allAreasSizePixel\n );\n }\n // Areas after gutter can't absorbs all offset > need to recalculate sizes for areas before gutter.\n else if (areasAfter.remain !== 0) {\n areasBefore = getGutterSideAbsorptionCapacity(\n this.unit(),\n (this.snapshot as SplitSnapshot).areasBeforeGutter,\n -(steppedOffset - areasAfter.remain),\n (this.snapshot as SplitSnapshot).allAreasSizePixel\n );\n }\n\n if (this.unit() === 'percent') {\n // Hack because of browser messing up with sizes using calc(X% - Ypx) -> el.getBoundingClientRect()\n // If not there, playing with gutters makes total going down to 99.99875% then 99.99286%, 99.98986%,..\n const all = [...areasBefore.list, ...areasAfter.list];\n const areaToReset = all.find(\n a =>\n a.percentAfterAbsorption !== 0 &&\n a.percentAfterAbsorption !== a.areaSnapshot.area.minSize &&\n a.percentAfterAbsorption !== a.areaSnapshot.area.maxSize\n );\n\n if (areaToReset) {\n areaToReset.percentAfterAbsorption =\n (this.snapshot as SplitSnapshot).allInvolvedAreasSizePercent -\n all\n .filter(a => a !== areaToReset)\n .reduce((total, a) => total + a.percentAfterAbsorption, 0);\n }\n }\n\n // Now we know areas could absorb steppedOffset, time to really update sizes\n\n areasBefore.list.forEach(item => updateAreaSize(this.unit(), item));\n areasAfter.list.forEach(item => updateAreaSize(this.unit(), item));\n\n this.refreshStyleSizes();\n this.notify('progress', (this.snapshot as SplitSnapshot).gutterNum);\n }\n\n private stopDragging(event?: Event): void {\n if (event && event.cancelable) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (this.isDragging() === false) {\n return;\n }\n\n this.displayedAreas.forEach(area => area.component.unlockEvents());\n\n while (this.dragListeners.length > 0) {\n const fct = this.dragListeners.pop();\n if (fct) {\n fct();\n }\n }\n\n // Warning: Have to be before \"notify('end')\"\n // because \"notify('end')\"\" can be linked to \"[size]='x'\" > \"build()\" > \"stopDragging()\"\n this.isDragging.set(false);\n this.cdRef.markForCheck();\n\n // If moved from starting point, notify end\n if (\n this.endPoint &&\n ((this.startPoint as SplitPoint).x !== this.endPoint.x ||\n (this.startPoint as SplitPoint).y !== this.endPoint.y)\n ) {\n this.notify('end', (this.snapshot as SplitSnapshot).gutterNum);\n }\n\n this.renderer.removeClass(this.elRef.nativeElement, 'ngs-dragging');\n this.renderer.removeClass(\n this.gutterEls()![ (this.snapshot as SplitSnapshot).gutterNum - 1].nativeElement,\n 'ngs-dragged'\n );\n this.snapshot = null;\n\n // Needed to let (click)=\"clickGutter(...)\" event run and verify if mouse moved or not\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.startPoint = null;\n this.endPoint = null;\n });\n });\n }\n\n notify(\n type: 'start' | 'progress' | 'end' | 'click' | 'dblclick' | 'transitionEnd',\n gutterNum: number\n ): void {\n const sizes = this.getVisibleAreaSizes();\n\n if (type === 'start') {\n this.dragStart.emit({ gutterNum, sizes });\n } else if (type === 'end') {\n this.dragEnd.emit({ gutterNum, sizes });\n } else if (type === 'click') {\n this.gutterClick.emit({ gutterNum, sizes });\n } else if (type === 'dblclick') {\n this.gutterDblClick.emit({ gutterNum, sizes });\n } else if (type === 'transitionEnd') {\n this.ngZone.run(() => this.transitionEndSubject.next(sizes));\n } else if (type === 'progress') {\n // Stay outside zone to allow users do what they want about change detection mechanism.\n this.dragProgressSubject.next({ gutterNum, sizes });\n }\n }\n\n ngOnDestroy(): void {\n this.stopDragging();\n }\n}\n","<ng-content/>\n@for (area of displayedAreas; track area; let index = $index; let last = $last) {\n @if (!last) {\n <div\n #gutterEls\n class=\"ngs-split-gutter\"\n [style.flex-basis.px]=\"gutterSize()\"\n [style.order]=\"index * 2 + 1\"\n (mousedown)=\"startDragging($event, index * 2 + 1, index + 1)\"\n (touchstart)=\"startDragging($event, index * 2 + 1, index + 1)\"\n (mouseup)=\"clickGutter($event, index + 1)\"\n (touchend)=\"clickGutter($event, index + 1)\"\n >\n <div class=\"ngs-split-gutter-handle\" [class.has-dots]=\"shouldShowHandle(index)\">\n @if (shouldShowHandle(index)) {\n <div class=\"ngs-split-gutter-dot\"></div>\n <div class=\"ngs-split-gutter-dot\"></div>\n <div class=\"ngs-split-gutter-dot\"></div>\n }\n </div>\n </div>\n }\n}\n","import {\n Directive,\n ElementRef,\n NgZone,\n OnDestroy,\n Renderer2,\n booleanAttribute,\n effect,\n inject,\n input,\n} from '@angular/core';\n\nimport { Split } from './split/split';\nimport { getInputPositiveNumber } from './utils';\nimport { signal, WritableSignal } from '@angular/core';\n\n@Directive({\n selector: 'ngs-split-pane, [ngs-split-pane]',\n exportAs: 'ngsSplitPane',\n standalone: true,\n})\nexport class SplitPane implements OnDestroy {\n private ngZone = inject(NgZone);\n private renderer = inject(Renderer2);\n private split = inject(Split);\n\n elRef = inject(ElementRef);\n\n /**\n * Order of the area. Used to maintain the order of areas when toggling their visibility.\n * Toggling area visibility without specifying an `order` leads to weird behavior.\n */\n orderIn = input<number | null, number | string | null>(null, {\n alias: 'order',\n transform: v => getInputPositiveNumber(v, null),\n });\n\n /**\n * Size of the area in selected unit (percent/pixel).\n * - Percent: All areas sizes should equal to `100`, If not, all areas will have the same size.\n * - Pixel: An area with wildcard size (`size=\"*\"`) is mandatory (only one) and\n * can't have `visible=\"false\"` or `minSize`/`maxSize`/`lockSize` properties.\n */\n sizeIn = input<number | null, number | string | null>(null, {\n alias: 'size',\n transform: v => getInputPositiveNumber(v, null),\n });\n\n /** Minimum pixel or percent size, should be equal to or smaller than provided `size`. */\n minSizeIn = input<number | null, number | string | null>(null, {\n alias: 'minSize',\n transform: v => getInputPositiveNumber(v, null),\n });\n\n /** Maximum pixel or percent size, should be equal to or larger than provided `size`. */\n maxSizeIn = input<number | null, number | string | null>(null, {\n alias: 'maxSize',\n transform: v => getInputPositiveNumber(v, null),\n });\n\n /** Lock area size, same as `minSize`=`maxSize`=`size`. */\n lockSizeIn = input(false, { alias: 'lockSize', transform: booleanAttribute });\n\n /** Hide area visually but still present in the DOM, use `ngIf` to completely remove it. */\n visibleIn = input(true, { alias: 'visible', transform: booleanAttribute });\n\n /** Show handle (three dots) on the gutter adjacent to this pane. */\n withHandleIn = input(false, { alias: 'withHandle', transform: booleanAttribute });\n\n // Writable state reflecting current effective values (can be changed programmatically by Split)\n private orderSig: WritableSignal<number | null> = signal<number | null>(null, { equal: Object.is });\n private sizeSig: WritableSignal<number | null> = signal<number | null>(null, { equal: Object.is });\n private minSizeSig: WritableSignal<number | null> = signal<number | null>(null, { equal: Object.is });\n private maxSizeSig: WritableSignal<number | null> = signal<number | null>(null, { equal: Object.is });\n private lockSizeSig: WritableSignal<boolean> = signal(false, { equal: Object.is });\n private visibleSig: WritableSignal<boolean> = signal(true, { equal: Object.is });\n private withHandleSig: WritableSignal<boolean> = signal(false, { equal: Object.is });\n\n private transitionListener!: () => void;\n private readonly lockListeners: (() => void)[] = [];\n\n constructor() {\n this.renderer.addClass(this.elRef.nativeElement, 'ngs-split-pane');\n this.split.addArea(this);\n\n this.ngZone.runOutsideAngular(() => {\n this.transitionListener = this.renderer.listen(\n this.elRef.nativeElement,\n 'transitionend',\n (event: TransitionEvent) => {\n // Limit only flex-basis transition to trigger the event\n if (event.propertyName === 'flex-basis') {\n this.split.notify('transitionEnd', -1);\n }\n }\n );\n });\n\n // Sync inputs to writable state\n effect(() => this.orderSig.set(this.orderIn()));\n effect(() => this.sizeSig.set(this.sizeIn()));\n effect(() => this.minSizeSig.set(this.minSizeIn()));\n effect(() => this.maxSizeSig.set(this.maxSizeIn()));\n effect(() => this.lockSizeSig.set(this.lockSizeIn()));\n effect(() => this.withHandleSig.set(this.withHandleIn()));\n\n // React to visibility changes\n effect(() => {\n const isVisible = this.visibleIn();\n this.visibleSig.set(isVisible);\n if (isVisible) {\n this.split.showArea(this);\n this.renderer.removeClass(this.elRef.nativeElement, 'ngs-split-pane-hidden');\n } else {\n this.split.hideArea(this);\n this.renderer.addClass(this.elRef.nativeElement, 'ngs-split-pane-hidden');\n }\n });\n\n // React to state changes that require rebuild\n effect(() => {\n this.orderSig();\n if (!this.split.isDraggingPublic()) {\n this.split.updateArea(this, true, false);\n }\n });\n effect(() => {\n this.sizeSig();\n this.minSizeSig();\n this.maxSizeSig();\n this.lockSizeSig();\n if (!this.split.isDraggingPublic()) {\n this.split.updateArea(this, false, true);\n }\n });\n effect(() => {\n this.withHandleSig();\n if (!this.split.isDraggingPublic()) {\n this.split.updateArea(this, false, false);\n }\n });\n }\n\n // Imperative API used by Split\n getOrder(): number | null { return this.orderSig(); }\n getSize(): number | null { return this.sizeSig(); }\n setSize(v: number | null): void {\n this.sizeSig.set(v);\n this.split.updateAreaInternal(this);\n }\n getMinSize(): number | null { return this.minSizeSig(); }\n getMaxSize(): number | null { return this.maxSizeSig(); }\n isLocked(): boolean { return this.lockSizeSig(); }\n isVisible(): boolean { return this.visibleSig(); }\n hasHandle(): boolean { return this.withHandleSig(); }\n\n setStyleOrder(value: number): void {\n this.renderer.setStyle(this.elRef.nativeElement, 'order', value);\n }\n\n setStyleFlex(grow: number, shrink: number, basis: string, isMin: boolean, isMax: boolean): void {\n // Need 3 separated properties to work on IE11 (https://github.com/angular/flex-layout/issues/323)\n this.renderer.setStyle(this.elRef.nativeElement, 'flex-grow', grow);\n this.renderer.setStyle(this.elRef.nativeElement, 'flex-shrink', shrink);\n this.renderer.setStyle(this.elRef.nativeElement, 'flex-basis', basis);\n\n if (basis === '0px' || basis === '0%') {\n this.renderer.setStyle(this.elRef.nativeElement, 'overflow', 'hidden');\n } else {\n this.renderer.removeStyle(this.elRef.nativeElement, 'overflow');\n }\n\n if (isMin === true) {\n this.renderer.addClass(this.elRef.nativeElement, 'ngs-min');\n } else {\n this.renderer.removeClass(this.elRef.nativeElement, 'ngs-min');\n }\n\n if (isMax === true) {\n this.renderer.addClass(this.elRef.nativeElement, 'ngs-max');\n } else {\n this.renderer.removeClass(this.elRef.nativeElement, 'ngs-max');\n }\n }\n\n lockEvents(): void {\n this.ngZone.runOutsideAngular(() => {\n this.lockListeners.push(\n this.renderer.listen(this.elRef.nativeElement, 'selectstart', (e: Event) => false)\n );\n this.lockListeners.push(\n this.renderer.listen(this.elRef.nativeElement, 'dragstart', (e: Event) => false)\n );\n });\n }\n\n unlockEvents(): void {\n while (this.lockListeners.length > 0) {\n const fct = this.lockListeners.pop();\n if (fct) {\n fct();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.unlockEvents();\n\n if (this.transitionListener) {\n this.transitionListener();\n }\n\n this.split.removeArea(this);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|