@ngstarter-ui/components 1.0.27 → 1.0.30
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 +6 -6
- 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 +34 -21
- 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 +305 -0
- package/schematics/utils.js.map +1 -0
- package/styles/_common.scss +84 -390
- package/styles/_global.scss +12 -12
- package/styles/_tokens.scss +1041 -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-comment-editor.d.ts +10 -2
- package/types/ngstarter-ui-components-core.d.ts +41 -5
|
@@ -364,7 +364,7 @@ class Slider {
|
|
|
364
364
|
return Math.max(min, Math.min(max, value));
|
|
365
365
|
}
|
|
366
366
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Slider, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
367
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: Slider, isStandalone: true, selector: "ngs-slider", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, discrete: { classPropertyName: "discrete", publicName: "discrete", isSignal: true, isRequired: false, transformFunction: null }, showTickMarks: { classPropertyName: "showTickMarks", publicName: "showTickMarks", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ngs-slider-disabled": "disabled()", "class.ngs-slider-discrete": "discrete()", "class.ngs-slider-show-tick-marks": "showTickMarks()" }, classAttribute: "ngs-slider" }, queries: [{ propertyName: "_allThumbs", predicate: SliderThumb, descendants: true, isSignal: true }], exportAs: ["ngsSlider"], ngImport: i0, template: "<div class=\"ngs-slider-wrapper\">\n <div class=\"ngs-slider-track\">\n <div class=\"ngs-slider-track-background\"></div>\n <div class=\"ngs-slider-track-active\"\n [style.left.%]=\"(_trackLeft() / 100) * 100\"\n [style.right.%]=\"(_trackRight() / 100) * 100\"></div>\n @if (showTickMarks()) {\n <div class=\"ngs-slider-tick-marks\">\n @for (tick of _tickMarks(); track $index) {\n <div class=\"ngs-slider-tick-mark\" [class.ngs-slider-tick-mark-active]=\"tick === 0\"></div>\n }\n </div>\n }\n </div>\n\n <ng-content />\n\n <div class=\"ngs-slider-visual-thumbs\">\n @for (thumb of _allThumbs(); track thumb) {\n <div class=\"ngs-slider-visual-thumb\"\n [style.left.%]=\"thumb.percentage * 100\"\n [class.ngs-slider-visual-thumb-active]=\"thumb === _activeThumb()\">\n <div class=\"ngs-slider-thumb-knob\"></div>\n @if (discrete()) {\n <div class=\"ngs-slider-value-indicator-container\">\n <div class=\"ngs-slider-value-indicator\">\n <span class=\"ngs-slider-value-indicator-text\">{{ displayWith()(thumb.value) }}</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n", styles: [":host{--ngs-slider-track-height: 4px;--ngs-slider-track-active-height: 6px;--ngs-slider-track-color: var(--color-surface-container-high);--ngs-slider-track-active-color: var(--color-primary);--ngs-slider-thumb-size: 20px;--ngs-slider-thumb-color: var(--color-primary);--ngs-slider-thumb-ripple-color: var(--color-primary-100);--ngs-slider-tick-mark-color: var(--color-on-surface-variant);--ngs-slider-tick-mark-active-color: var(--color-on-primary);--ngs-slider-value-indicator-color: var(--color-on-surface);--ngs-slider-value-indicator-text-color: var(--color-surface);display:block;position:relative;box-sizing:border-box;padding:8px 0;width:100%;height:48px;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none}@supports (color: color-mix(in lab,red,red)){:host{--ngs-slider-tick-mark-active-color: color-mix(in srgb, var(--color-on-primary), transparent 40%)}}:host.ngs-slider-disabled{opacity:.38;pointer-events:none}:host .ngs-slider-wrapper{position:relative;width:100%;height:100%;display:flex;align-items:center;box-sizing:border-box}:host .ngs-slider-track{position:absolute;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:var(--ngs-slider-track-height);background:var(--ngs-slider-track-color);border-radius:calc(var(--ngs-slider-track-height) / 2)}:host .ngs-slider-track-active{position:absolute;height:var(--ngs-slider-track-active-height);background:var(--ngs-slider-track-active-color);border-radius:calc(var(--ngs-slider-track-active-height) / 2);top:50%;transform:translateY(-50%)}:host .ngs-slider-tick-marks{position:absolute;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:100%;display:flex;justify-content:space-between;align-items:center;box-sizing:border-box}:host .ngs-slider-tick-mark{width:2px;height:2px;background:var(--ngs-slider-tick-mark-color);border-radius:50%}:host .ngs-slider-tick-mark.ngs-slider-tick-mark-active{background:var(--ngs-slider-tick-mark-active-color)}:host ::ng-deep .ngs-slider-input{position:absolute;top:50%;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:var(--ngs-slider-thumb-size);transform:translateY(-50%);opacity:0;cursor:pointer;z-index:2;margin:0;padding:0;pointer-events:auto;width:calc(100% - var(--ngs-slider-thumb-size));appearance:none;background:transparent;border:none}:host ::ng-deep .ngs-slider-input::-webkit-slider-runnable-track{width:100%;height:100%;background:transparent;border:none;box-shadow:none}:host ::ng-deep .ngs-slider-input::-moz-range-track{width:100%;height:100%;background:transparent;border:none;box-shadow:none}:host ::ng-deep .ngs-slider-input::-webkit-slider-thumb{appearance:none;width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);background:transparent;border:none;margin-top:0;box-shadow:none}:host ::ng-deep .ngs-slider-input::-moz-range-thumb{width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);background:transparent;border:none;box-shadow:none;border-radius:0}:host ::ng-deep .ngs-slider-input::-ms-track{width:100%;height:100%;background:transparent;border-color:transparent;color:transparent}:host ::ng-deep .ngs-slider-input::-ms-thumb{width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);background:transparent;border:none;box-shadow:none}:host ::ng-deep .ngs-slider-input.ngs-slider-input-active{z-index:4;pointer-events:auto}:host ::ng-deep .ngs-slider-input:not(.ngs-slider-input-active){z-index:2}:host ::ng-deep .ngs-slider-input:focus+.ngs-slider-visual-thumbs .ngs-slider-thumb-knob{box-shadow:0 0 0 10px var(--ngs-slider-thumb-ripple-color)}:host .ngs-slider-visual-thumbs{position:absolute;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:100%;top:0;pointer-events:none}:host .ngs-slider-visual-thumb{position:absolute;top:50%;width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);transform:translate(-50%,-50%);z-index:1}:host .ngs-slider-visual-thumb.ngs-slider-visual-thumb-active{z-index:2}:host .ngs-slider-thumb-knob{width:100%;height:100%;background:var(--ngs-slider-thumb-color);border-radius:50%;transition:transform .1s ease-in-out,box-shadow .1s ease-in-out}:host .ngs-slider-value-indicator-container{position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(-8px);padding:4px 8px;background:var(--ngs-slider-value-indicator-color);color:var(--ngs-slider-value-indicator-text-color);border-radius:4px;font-size:12px;white-space:nowrap;opacity:0;transition:opacity .1s ease-in-out}:host .ngs-slider-value-indicator-container:after{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);border-width:4px;border-style:solid;border-color:var(--ngs-slider-value-indicator-color) transparent transparent transparent}:host:active .ngs-slider-value-indicator-container,:host .ngs-slider-input:focus~.ngs-slider-visual-thumbs .ngs-slider-value-indicator-container{opacity:1}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
367
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: Slider, isStandalone: true, selector: "ngs-slider", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, discrete: { classPropertyName: "discrete", publicName: "discrete", isSignal: true, isRequired: false, transformFunction: null }, showTickMarks: { classPropertyName: "showTickMarks", publicName: "showTickMarks", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ngs-slider-disabled": "disabled()", "class.ngs-slider-discrete": "discrete()", "class.ngs-slider-show-tick-marks": "showTickMarks()" }, classAttribute: "ngs-slider" }, queries: [{ propertyName: "_allThumbs", predicate: SliderThumb, descendants: true, isSignal: true }], exportAs: ["ngsSlider"], ngImport: i0, template: "<div class=\"ngs-slider-wrapper\">\n <div class=\"ngs-slider-track\">\n <div class=\"ngs-slider-track-background\"></div>\n <div class=\"ngs-slider-track-active\"\n [style.left.%]=\"(_trackLeft() / 100) * 100\"\n [style.right.%]=\"(_trackRight() / 100) * 100\"></div>\n @if (showTickMarks()) {\n <div class=\"ngs-slider-tick-marks\">\n @for (tick of _tickMarks(); track $index) {\n <div class=\"ngs-slider-tick-mark\" [class.ngs-slider-tick-mark-active]=\"tick === 0\"></div>\n }\n </div>\n }\n </div>\n\n <ng-content />\n\n <div class=\"ngs-slider-visual-thumbs\">\n @for (thumb of _allThumbs(); track thumb) {\n <div class=\"ngs-slider-visual-thumb\"\n [style.left.%]=\"thumb.percentage * 100\"\n [class.ngs-slider-visual-thumb-active]=\"thumb === _activeThumb()\">\n <div class=\"ngs-slider-thumb-knob\"></div>\n @if (discrete()) {\n <div class=\"ngs-slider-value-indicator-container\">\n <div class=\"ngs-slider-value-indicator\">\n <span class=\"ngs-slider-value-indicator-text\">{{ displayWith()(thumb.value) }}</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n", styles: [":host{--ngs-slider-track-height: 4px;--ngs-slider-track-active-height: 6px;--ngs-slider-track-color: var(--ngs-color-surface-container-high);--ngs-slider-track-active-color: var(--ngs-color-primary);--ngs-slider-thumb-size: 20px;--ngs-slider-thumb-color: var(--ngs-color-primary);--ngs-slider-thumb-ripple-color: var(--ngs-color-primary-100);--ngs-slider-tick-mark-color: var(--ngs-color-on-surface-variant);--ngs-slider-tick-mark-active-color: var(--ngs-color-on-primary);--ngs-slider-value-indicator-color: var(--ngs-color-on-surface);--ngs-slider-value-indicator-text-color: var(--ngs-color-surface);display:block;position:relative;box-sizing:border-box;padding:8px 0;width:100%;height:48px;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none}@supports (color: color-mix(in lab,red,red)){:host{--ngs-slider-tick-mark-active-color: color-mix(in srgb, var(--ngs-color-on-primary), transparent 40%)}}:host.ngs-slider-disabled{opacity:.38;pointer-events:none}:host .ngs-slider-wrapper{position:relative;width:100%;height:100%;display:flex;align-items:center;box-sizing:border-box}:host .ngs-slider-track{position:absolute;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:var(--ngs-slider-track-height);background:var(--ngs-slider-track-color);border-radius:calc(var(--ngs-slider-track-height) / 2)}:host .ngs-slider-track-active{position:absolute;height:var(--ngs-slider-track-active-height);background:var(--ngs-slider-track-active-color);border-radius:calc(var(--ngs-slider-track-active-height) / 2);top:50%;transform:translateY(-50%)}:host .ngs-slider-tick-marks{position:absolute;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:100%;display:flex;justify-content:space-between;align-items:center;box-sizing:border-box}:host .ngs-slider-tick-mark{width:2px;height:2px;background:var(--ngs-slider-tick-mark-color);border-radius:50%}:host .ngs-slider-tick-mark.ngs-slider-tick-mark-active{background:var(--ngs-slider-tick-mark-active-color)}:host ::ng-deep .ngs-slider-input{position:absolute;top:50%;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:var(--ngs-slider-thumb-size);transform:translateY(-50%);opacity:0;cursor:pointer;z-index:2;margin:0;padding:0;pointer-events:auto;width:calc(100% - var(--ngs-slider-thumb-size));appearance:none;background:transparent;border:none}:host ::ng-deep .ngs-slider-input::-webkit-slider-runnable-track{width:100%;height:100%;background:transparent;border:none;box-shadow:none}:host ::ng-deep .ngs-slider-input::-moz-range-track{width:100%;height:100%;background:transparent;border:none;box-shadow:none}:host ::ng-deep .ngs-slider-input::-webkit-slider-thumb{appearance:none;width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);background:transparent;border:none;margin-top:0;box-shadow:none}:host ::ng-deep .ngs-slider-input::-moz-range-thumb{width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);background:transparent;border:none;box-shadow:none;border-radius:0}:host ::ng-deep .ngs-slider-input::-ms-track{width:100%;height:100%;background:transparent;border-color:transparent;color:transparent}:host ::ng-deep .ngs-slider-input::-ms-thumb{width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);background:transparent;border:none;box-shadow:none}:host ::ng-deep .ngs-slider-input.ngs-slider-input-active{z-index:4;pointer-events:auto}:host ::ng-deep .ngs-slider-input:not(.ngs-slider-input-active){z-index:2}:host ::ng-deep .ngs-slider-input:focus+.ngs-slider-visual-thumbs .ngs-slider-thumb-knob{box-shadow:0 0 0 10px var(--ngs-slider-thumb-ripple-color)}:host .ngs-slider-visual-thumbs{position:absolute;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:100%;top:0;pointer-events:none}:host .ngs-slider-visual-thumb{position:absolute;top:50%;width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);transform:translate(-50%,-50%);z-index:1}:host .ngs-slider-visual-thumb.ngs-slider-visual-thumb-active{z-index:2}:host .ngs-slider-thumb-knob{width:100%;height:100%;background:var(--ngs-slider-thumb-color);border-radius:50%;transition:transform .1s ease-in-out,box-shadow .1s ease-in-out}:host .ngs-slider-value-indicator-container{position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(-8px);padding:4px 8px;background:var(--ngs-slider-value-indicator-color);color:var(--ngs-slider-value-indicator-text-color);border-radius:4px;font-size:12px;white-space:nowrap;opacity:0;transition:opacity .1s ease-in-out}:host .ngs-slider-value-indicator-container:after{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);border-width:4px;border-style:solid;border-color:var(--ngs-slider-value-indicator-color) transparent transparent transparent}:host:active .ngs-slider-value-indicator-container,:host .ngs-slider-input:focus~.ngs-slider-visual-thumbs .ngs-slider-value-indicator-container{opacity:1}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
368
368
|
}
|
|
369
369
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Slider, decorators: [{
|
|
370
370
|
type: Component,
|
|
@@ -373,7 +373,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
373
373
|
'[class.ngs-slider-disabled]': 'disabled()',
|
|
374
374
|
'[class.ngs-slider-discrete]': 'discrete()',
|
|
375
375
|
'[class.ngs-slider-show-tick-marks]': 'showTickMarks()',
|
|
376
|
-
}, template: "<div class=\"ngs-slider-wrapper\">\n <div class=\"ngs-slider-track\">\n <div class=\"ngs-slider-track-background\"></div>\n <div class=\"ngs-slider-track-active\"\n [style.left.%]=\"(_trackLeft() / 100) * 100\"\n [style.right.%]=\"(_trackRight() / 100) * 100\"></div>\n @if (showTickMarks()) {\n <div class=\"ngs-slider-tick-marks\">\n @for (tick of _tickMarks(); track $index) {\n <div class=\"ngs-slider-tick-mark\" [class.ngs-slider-tick-mark-active]=\"tick === 0\"></div>\n }\n </div>\n }\n </div>\n\n <ng-content />\n\n <div class=\"ngs-slider-visual-thumbs\">\n @for (thumb of _allThumbs(); track thumb) {\n <div class=\"ngs-slider-visual-thumb\"\n [style.left.%]=\"thumb.percentage * 100\"\n [class.ngs-slider-visual-thumb-active]=\"thumb === _activeThumb()\">\n <div class=\"ngs-slider-thumb-knob\"></div>\n @if (discrete()) {\n <div class=\"ngs-slider-value-indicator-container\">\n <div class=\"ngs-slider-value-indicator\">\n <span class=\"ngs-slider-value-indicator-text\">{{ displayWith()(thumb.value) }}</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n", styles: [":host{--ngs-slider-track-height: 4px;--ngs-slider-track-active-height: 6px;--ngs-slider-track-color: var(--color-surface-container-high);--ngs-slider-track-active-color: var(--color-primary);--ngs-slider-thumb-size: 20px;--ngs-slider-thumb-color: var(--color-primary);--ngs-slider-thumb-ripple-color: var(--color-primary-100);--ngs-slider-tick-mark-color: var(--color-on-surface-variant);--ngs-slider-tick-mark-active-color: var(--color-on-primary);--ngs-slider-value-indicator-color: var(--color-on-surface);--ngs-slider-value-indicator-text-color: var(--color-surface);display:block;position:relative;box-sizing:border-box;padding:8px 0;width:100%;height:48px;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none}@supports (color: color-mix(in lab,red,red)){:host{--ngs-slider-tick-mark-active-color: color-mix(in srgb, var(--color-on-primary), transparent 40%)}}:host.ngs-slider-disabled{opacity:.38;pointer-events:none}:host .ngs-slider-wrapper{position:relative;width:100%;height:100%;display:flex;align-items:center;box-sizing:border-box}:host .ngs-slider-track{position:absolute;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:var(--ngs-slider-track-height);background:var(--ngs-slider-track-color);border-radius:calc(var(--ngs-slider-track-height) / 2)}:host .ngs-slider-track-active{position:absolute;height:var(--ngs-slider-track-active-height);background:var(--ngs-slider-track-active-color);border-radius:calc(var(--ngs-slider-track-active-height) / 2);top:50%;transform:translateY(-50%)}:host .ngs-slider-tick-marks{position:absolute;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:100%;display:flex;justify-content:space-between;align-items:center;box-sizing:border-box}:host .ngs-slider-tick-mark{width:2px;height:2px;background:var(--ngs-slider-tick-mark-color);border-radius:50%}:host .ngs-slider-tick-mark.ngs-slider-tick-mark-active{background:var(--ngs-slider-tick-mark-active-color)}:host ::ng-deep .ngs-slider-input{position:absolute;top:50%;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:var(--ngs-slider-thumb-size);transform:translateY(-50%);opacity:0;cursor:pointer;z-index:2;margin:0;padding:0;pointer-events:auto;width:calc(100% - var(--ngs-slider-thumb-size));appearance:none;background:transparent;border:none}:host ::ng-deep .ngs-slider-input::-webkit-slider-runnable-track{width:100%;height:100%;background:transparent;border:none;box-shadow:none}:host ::ng-deep .ngs-slider-input::-moz-range-track{width:100%;height:100%;background:transparent;border:none;box-shadow:none}:host ::ng-deep .ngs-slider-input::-webkit-slider-thumb{appearance:none;width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);background:transparent;border:none;margin-top:0;box-shadow:none}:host ::ng-deep .ngs-slider-input::-moz-range-thumb{width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);background:transparent;border:none;box-shadow:none;border-radius:0}:host ::ng-deep .ngs-slider-input::-ms-track{width:100%;height:100%;background:transparent;border-color:transparent;color:transparent}:host ::ng-deep .ngs-slider-input::-ms-thumb{width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);background:transparent;border:none;box-shadow:none}:host ::ng-deep .ngs-slider-input.ngs-slider-input-active{z-index:4;pointer-events:auto}:host ::ng-deep .ngs-slider-input:not(.ngs-slider-input-active){z-index:2}:host ::ng-deep .ngs-slider-input:focus+.ngs-slider-visual-thumbs .ngs-slider-thumb-knob{box-shadow:0 0 0 10px var(--ngs-slider-thumb-ripple-color)}:host .ngs-slider-visual-thumbs{position:absolute;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:100%;top:0;pointer-events:none}:host .ngs-slider-visual-thumb{position:absolute;top:50%;width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);transform:translate(-50%,-50%);z-index:1}:host .ngs-slider-visual-thumb.ngs-slider-visual-thumb-active{z-index:2}:host .ngs-slider-thumb-knob{width:100%;height:100%;background:var(--ngs-slider-thumb-color);border-radius:50%;transition:transform .1s ease-in-out,box-shadow .1s ease-in-out}:host .ngs-slider-value-indicator-container{position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(-8px);padding:4px 8px;background:var(--ngs-slider-value-indicator-color);color:var(--ngs-slider-value-indicator-text-color);border-radius:4px;font-size:12px;white-space:nowrap;opacity:0;transition:opacity .1s ease-in-out}:host .ngs-slider-value-indicator-container:after{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);border-width:4px;border-style:solid;border-color:var(--ngs-slider-value-indicator-color) transparent transparent transparent}:host:active .ngs-slider-value-indicator-container,:host .ngs-slider-input:focus~.ngs-slider-visual-thumbs .ngs-slider-value-indicator-container{opacity:1}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
376
|
+
}, template: "<div class=\"ngs-slider-wrapper\">\n <div class=\"ngs-slider-track\">\n <div class=\"ngs-slider-track-background\"></div>\n <div class=\"ngs-slider-track-active\"\n [style.left.%]=\"(_trackLeft() / 100) * 100\"\n [style.right.%]=\"(_trackRight() / 100) * 100\"></div>\n @if (showTickMarks()) {\n <div class=\"ngs-slider-tick-marks\">\n @for (tick of _tickMarks(); track $index) {\n <div class=\"ngs-slider-tick-mark\" [class.ngs-slider-tick-mark-active]=\"tick === 0\"></div>\n }\n </div>\n }\n </div>\n\n <ng-content />\n\n <div class=\"ngs-slider-visual-thumbs\">\n @for (thumb of _allThumbs(); track thumb) {\n <div class=\"ngs-slider-visual-thumb\"\n [style.left.%]=\"thumb.percentage * 100\"\n [class.ngs-slider-visual-thumb-active]=\"thumb === _activeThumb()\">\n <div class=\"ngs-slider-thumb-knob\"></div>\n @if (discrete()) {\n <div class=\"ngs-slider-value-indicator-container\">\n <div class=\"ngs-slider-value-indicator\">\n <span class=\"ngs-slider-value-indicator-text\">{{ displayWith()(thumb.value) }}</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n", styles: [":host{--ngs-slider-track-height: 4px;--ngs-slider-track-active-height: 6px;--ngs-slider-track-color: var(--ngs-color-surface-container-high);--ngs-slider-track-active-color: var(--ngs-color-primary);--ngs-slider-thumb-size: 20px;--ngs-slider-thumb-color: var(--ngs-color-primary);--ngs-slider-thumb-ripple-color: var(--ngs-color-primary-100);--ngs-slider-tick-mark-color: var(--ngs-color-on-surface-variant);--ngs-slider-tick-mark-active-color: var(--ngs-color-on-primary);--ngs-slider-value-indicator-color: var(--ngs-color-on-surface);--ngs-slider-value-indicator-text-color: var(--ngs-color-surface);display:block;position:relative;box-sizing:border-box;padding:8px 0;width:100%;height:48px;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none}@supports (color: color-mix(in lab,red,red)){:host{--ngs-slider-tick-mark-active-color: color-mix(in srgb, var(--ngs-color-on-primary), transparent 40%)}}:host.ngs-slider-disabled{opacity:.38;pointer-events:none}:host .ngs-slider-wrapper{position:relative;width:100%;height:100%;display:flex;align-items:center;box-sizing:border-box}:host .ngs-slider-track{position:absolute;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:var(--ngs-slider-track-height);background:var(--ngs-slider-track-color);border-radius:calc(var(--ngs-slider-track-height) / 2)}:host .ngs-slider-track-active{position:absolute;height:var(--ngs-slider-track-active-height);background:var(--ngs-slider-track-active-color);border-radius:calc(var(--ngs-slider-track-active-height) / 2);top:50%;transform:translateY(-50%)}:host .ngs-slider-tick-marks{position:absolute;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:100%;display:flex;justify-content:space-between;align-items:center;box-sizing:border-box}:host .ngs-slider-tick-mark{width:2px;height:2px;background:var(--ngs-slider-tick-mark-color);border-radius:50%}:host .ngs-slider-tick-mark.ngs-slider-tick-mark-active{background:var(--ngs-slider-tick-mark-active-color)}:host ::ng-deep .ngs-slider-input{position:absolute;top:50%;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:var(--ngs-slider-thumb-size);transform:translateY(-50%);opacity:0;cursor:pointer;z-index:2;margin:0;padding:0;pointer-events:auto;width:calc(100% - var(--ngs-slider-thumb-size));appearance:none;background:transparent;border:none}:host ::ng-deep .ngs-slider-input::-webkit-slider-runnable-track{width:100%;height:100%;background:transparent;border:none;box-shadow:none}:host ::ng-deep .ngs-slider-input::-moz-range-track{width:100%;height:100%;background:transparent;border:none;box-shadow:none}:host ::ng-deep .ngs-slider-input::-webkit-slider-thumb{appearance:none;width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);background:transparent;border:none;margin-top:0;box-shadow:none}:host ::ng-deep .ngs-slider-input::-moz-range-thumb{width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);background:transparent;border:none;box-shadow:none;border-radius:0}:host ::ng-deep .ngs-slider-input::-ms-track{width:100%;height:100%;background:transparent;border-color:transparent;color:transparent}:host ::ng-deep .ngs-slider-input::-ms-thumb{width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);background:transparent;border:none;box-shadow:none}:host ::ng-deep .ngs-slider-input.ngs-slider-input-active{z-index:4;pointer-events:auto}:host ::ng-deep .ngs-slider-input:not(.ngs-slider-input-active){z-index:2}:host ::ng-deep .ngs-slider-input:focus+.ngs-slider-visual-thumbs .ngs-slider-thumb-knob{box-shadow:0 0 0 10px var(--ngs-slider-thumb-ripple-color)}:host .ngs-slider-visual-thumbs{position:absolute;left:calc(var(--ngs-slider-thumb-size) / 2);right:calc(var(--ngs-slider-thumb-size) / 2);height:100%;top:0;pointer-events:none}:host .ngs-slider-visual-thumb{position:absolute;top:50%;width:var(--ngs-slider-thumb-size);height:var(--ngs-slider-thumb-size);transform:translate(-50%,-50%);z-index:1}:host .ngs-slider-visual-thumb.ngs-slider-visual-thumb-active{z-index:2}:host .ngs-slider-thumb-knob{width:100%;height:100%;background:var(--ngs-slider-thumb-color);border-radius:50%;transition:transform .1s ease-in-out,box-shadow .1s ease-in-out}:host .ngs-slider-value-indicator-container{position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(-8px);padding:4px 8px;background:var(--ngs-slider-value-indicator-color);color:var(--ngs-slider-value-indicator-text-color);border-radius:4px;font-size:12px;white-space:nowrap;opacity:0;transition:opacity .1s ease-in-out}:host .ngs-slider-value-indicator-container:after{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);border-width:4px;border-style:solid;border-color:var(--ngs-slider-value-indicator-color) transparent transparent transparent}:host:active .ngs-slider-value-indicator-container,:host .ngs-slider-input:focus~.ngs-slider-visual-thumbs .ngs-slider-value-indicator-container{opacity:1}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
377
377
|
}], ctorParameters: () => [], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], discrete: [{ type: i0.Input, args: [{ isSignal: true, alias: "discrete", required: false }] }], showTickMarks: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTickMarks", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], displayWith: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayWith", required: false }] }], _allThumbs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SliderThumb), { ...{ descendants: true }, isSignal: true }] }] } });
|
|
378
378
|
|
|
379
379
|
class SliderStartThumb extends SliderThumb {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-slider.mjs","sources":["../../../projects/components/slider/src/slider-thumb.ts","../../../projects/components/slider/src/slider/slider.ts","../../../projects/components/slider/src/slider/slider.html","../../../projects/components/slider/src/slider-start-thumb.ts","../../../projects/components/slider/src/slider-end-thumb.ts","../../../projects/components/slider/ngstarter-ui-components-slider.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n signal,\n computed,\n numberAttribute, effect\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Slider } from './slider/slider';\n\n@Directive({\n selector: 'input[ngsSliderThumb]',\n exportAs: 'ngsSliderThumb',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderThumb),\n multi: true,\n },\n ],\n host: {\n 'class': 'ngs-slider-input',\n '[class.ngs-slider-input-active]': '_slider._activeThumb() === this',\n 'type': 'range',\n '[attr.min]': 'min',\n '[attr.max]': 'max',\n '[attr.step]': 'step',\n '[value]': 'value',\n '(input)': '_onInput($event)',\n '(change)': '_onChange($event)',\n '(blur)': '_onBlur()',\n '(focus)': '_onFocus()',\n },\n})\nexport class SliderThumb implements ControlValueAccessor, OnInit, OnDestroy {\n private _elementRef = inject(ElementRef<HTMLInputElement>);\n readonly _slider = inject(Slider);\n\n readonly valueChange = output<number>();\n\n valueInput = input(undefined, { transform: numberAttribute, alias: 'value' });\n\n private _value = signal(0);\n\n getId() {\n return 'base';\n }\n\n get value(): number {\n return this._value();\n }\n set value(v: number) {\n this._value.set(this._clampValue(v));\n this._updateHostValue();\n this._slider._onValueChange(this);\n }\n\n private _clampValue(v: number): number {\n const thumbs = this._slider._allThumbs();\n const min = this._slider.min();\n const max = this._slider.max();\n\n if (thumbs.length === 2) {\n const index = thumbs.indexOf(this);\n if (index === 0) {\n return Math.max(min, Math.min(v, thumbs[1].value));\n } else if (index === 1) {\n return Math.min(max, Math.max(v, thumbs[0].value));\n }\n }\n return Math.max(min, Math.min(max, v));\n }\n\n constructor() {\n effect(() => {\n const inputVal = this.valueInput();\n if (inputVal !== undefined && inputVal !== this.value && !this._isUserInteraction) {\n this.value = inputVal;\n }\n });\n }\n\n private _onChangeFn: (value: any) => void = () => {};\n private _onTouchedFn: () => void = () => {};\n\n ngOnInit() {\n if (this.valueInput() === undefined) {\n const initialValue = this._elementRef.nativeElement.getAttribute('value');\n if (initialValue !== null) {\n this.value = Number(initialValue);\n } else {\n this.value = this._slider.min();\n }\n } else {\n this._slider._onValueChange(this);\n }\n }\n\n get min(): number {\n return this._slider.min();\n }\n\n get max(): number {\n return this._slider.max();\n }\n\n get step(): number {\n return this._slider.step();\n }\n\n ngOnDestroy() {}\n\n _updateValueFromUser(value: number) {\n const clampedValue = this._clampValue(value);\n if (this._value() !== clampedValue) {\n this._isUserInteraction = true;\n this._value.set(clampedValue);\n this._updateHostValue();\n this._onChangeFn(clampedValue);\n this.valueChange.emit(clampedValue);\n this._slider._onValueChange(this);\n\n setTimeout(() => {\n this._isUserInteraction = false;\n });\n }\n }\n\n _onInput(event: Event) {\n if (this._slider._allThumbs().length > 1 && this._slider._activeThumb() !== this) {\n return;\n }\n let value = (event.target as HTMLInputElement).valueAsNumber;\n const initialValue = value;\n\n this._updateValueFromUser(value);\n\n if (value !== initialValue) {\n this._updateHostValue();\n }\n\n this._slider._activeThumb.set(this);\n }\n\n _onChange(event: Event) {\n this._onTouchedFn();\n }\n\n _onBlur() {\n this._onTouchedFn();\n }\n\n _onFocus() {\n this._slider._activeThumb.set(this);\n }\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n\n private _isUserInteraction = false;\n\n writeValue(value: any): void {\n this._isUserInteraction = true;\n this.value = value;\n setTimeout(() => {\n this._isUserInteraction = false;\n });\n }\n\n registerOnChange(fn: any): void {\n this._onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouchedFn = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this._elementRef.nativeElement.disabled = isDisabled;\n }\n\n private _updateHostValue() {\n this._elementRef.nativeElement.value = (this._value() ?? 0).toString();\n }\n\n get percentage(): number {\n const max = this._slider.max();\n const min = this._slider.min();\n\n if (max === min) {\n return 0;\n }\n\n const p = (this._value() - min) / (max - min);\n return Math.max(0, Math.min(1, p));\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n PLATFORM_ID,\n signal\n} from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { SliderThumb } from '../slider-thumb';\nimport { filter, fromEvent, merge, switchMap, takeUntil, tap } from 'rxjs';\n\n@Component({\n selector: 'ngs-slider',\n exportAs: 'ngsSlider',\n templateUrl: './slider.html',\n styleUrl: './slider.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-slider',\n '[class.ngs-slider-disabled]': 'disabled()',\n '[class.ngs-slider-discrete]': 'discrete()',\n '[class.ngs-slider-show-tick-marks]': 'showTickMarks()',\n },\n})\nexport class Slider {\n private elementRef = inject(ElementRef);\n readonly _cdr = inject(ChangeDetectorRef);\n private readonly _dir = inject(Directionality, { optional: true });\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _document = inject(DOCUMENT);\n private readonly _platformId = inject(PLATFORM_ID);\n\n disabled = input(false, { transform: booleanAttribute });\n discrete = input(false, { transform: booleanAttribute });\n showTickMarks = input(false, { transform: booleanAttribute });\n min = input(0, { transform: numberAttribute });\n max = input(100, { transform: numberAttribute });\n step = input(1, { transform: numberAttribute });\n displayWith = input<(value: number) => string>((value: number) => `${value}`);\n\n _allThumbs = contentChildren(SliderThumb, { descendants: true });\n\n _trackLeft = computed(() => {\n const thumbs = this._allThumbs();\n if (thumbs.length === 2) {\n const p1 = thumbs[0].percentage || 0;\n const p2 = thumbs[1].percentage || 0;\n return Math.min(p1, p2) * 100;\n }\n return 0;\n });\n\n _trackRight = computed(() => {\n const thumbs = this._allThumbs();\n if (thumbs.length === 2) {\n const p1 = thumbs[0].percentage || 0;\n const p2 = thumbs[1].percentage || 0;\n return (1 - Math.max(p1, p2)) * 100;\n }\n const thumb = thumbs[0];\n return (1 - (thumb?.percentage || 0)) * 100;\n });\n\n _activeThumb = signal<SliderThumb | null>(null);\n _isDragging = signal(false);\n _tickMarks = computed(() => {\n if (!this.showTickMarks() || this.step() <= 0) {\n return [];\n }\n\n const count = Math.floor((this.max() - this.min()) / this.step()) + 1;\n return Array(count).fill(1); // 1 = inactive by default\n });\n\n _isRtl = false;\n\n constructor() {\n if (this._dir) {\n this._dir.change.pipe(takeUntilDestroyed()).subscribe(() => {\n this._isRtl = this._dir!.value === 'rtl';\n this._cdr.markForCheck();\n });\n this._isRtl = this._dir.value === 'rtl';\n }\n\n effect(() => {\n this._allThumbs();\n this._cdr.markForCheck();\n });\n\n this._initializeEvents();\n }\n\n private _initializeEvents() {\n if (!isPlatformBrowser(this._platformId)) {\n return;\n }\n\n const sliderElement = this.elementRef.nativeElement as HTMLElement;\n\n const pointerDown$ = merge(\n fromEvent<MouseEvent>(sliderElement, 'mousedown'),\n fromEvent<TouchEvent>(sliderElement, 'touchstart', { passive: false })\n ).pipe(\n filter((event) => {\n if (this.disabled()) return false;\n return !(event instanceof MouseEvent && event.button !== 0);\n })\n );\n\n const pointerMove$ = merge(\n fromEvent<MouseEvent>(this._document, 'mousemove'),\n fromEvent<TouchEvent>(this._document, 'touchmove', { passive: false })\n );\n\n const pointerUp$ = merge(\n fromEvent<MouseEvent>(this._document, 'mouseup'),\n fromEvent<TouchEvent>(this._document, 'touchend', { passive: false }),\n fromEvent<TouchEvent>(this._document, 'touchcancel', { passive: false })\n );\n\n pointerDown$\n .pipe(\n filter(() => !this.disabled()),\n tap((event) => {\n if (event instanceof TouchEvent) {\n event.preventDefault();\n }\n this._isDragging.set(true);\n this._onPointerDown(event);\n this._cdr.markForCheck();\n }),\n switchMap(() =>\n pointerMove$.pipe(\n tap((event) => {\n if (event instanceof TouchEvent) {\n event.preventDefault();\n }\n }),\n takeUntil(\n pointerUp$.pipe(\n tap(() => {\n this._isDragging.set(false);\n this._cdr.markForCheck();\n })\n )\n )\n )\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event) => {\n this._onPointerMove(event);\n });\n\n merge(\n fromEvent<MouseEvent>(sliderElement, 'mousemove'),\n fromEvent<TouchEvent>(sliderElement, 'touchmove', { passive: false })\n )\n .pipe(\n filter(() => !this.disabled() && !this._isDragging()),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event) => {\n this._onPointerMove(event);\n });\n }\n\n _onValueChange(thumb: SliderThumb) {\n this._cdr.markForCheck();\n }\n\n private _findClosestThumb(percentage: number): SliderThumb | null {\n const thumbs = this._allThumbs();\n if (thumbs.length === 0) {\n return null;\n }\n\n let closestThumb = thumbs[0];\n let minDistance = Math.abs(thumbs[0].percentage - percentage);\n\n for (let i = 1; i < thumbs.length; i++) {\n const distance = Math.abs(thumbs[i].percentage - percentage);\n\n if (distance < minDistance) {\n minDistance = distance;\n closestThumb = thumbs[i];\n } else if (distance === minDistance) {\n // If distances are equal (e.g., thumbs are at the same point)\n if (percentage > thumbs[i].percentage) {\n // If click is to the right of the overlap point, select the \"right\" thumb\n // (in the array thumbs[1] is usually the end thumb)\n closestThumb = thumbs[i];\n } else if (percentage < thumbs[i].percentage) {\n // If click is to the left\n closestThumb = thumbs[i-1];\n } else {\n // If click is exactly at the overlap point\n // give priority to the already active one\n if (thumbs[i] === this._activeThumb()) {\n closestThumb = thumbs[i];\n }\n }\n }\n }\n\n return closestThumb;\n }\n\n _onPointerDown(event: MouseEvent | TouchEvent) {\n if (this.disabled()) {\n return;\n }\n\n const percentage = this._calculatePercentage(event);\n const closestThumb = this._findClosestThumb(percentage);\n\n if (closestThumb) {\n this._activeThumb.set(closestThumb);\n\n const value = this._calculateValueFromPercentage(percentage);\n closestThumb._updateValueFromUser(value);\n closestThumb.focus();\n this._cdr.markForCheck();\n }\n }\n\n _onPointerMove(event: MouseEvent | TouchEvent) {\n if (this.disabled()) {\n return;\n }\n\n const percentage = this._calculatePercentage(event);\n const isDragging = this._isDragging();\n const activeThumb = this._activeThumb();\n\n if (isDragging && activeThumb) {\n const value = this._calculateValueFromPercentage(percentage);\n activeThumb._updateValueFromUser(value);\n this._cdr.markForCheck();\n } else if (!isDragging) {\n const closestThumb = this._findClosestThumb(percentage);\n\n if (closestThumb && activeThumb !== closestThumb) {\n this._activeThumb.set(closestThumb);\n this._cdr.markForCheck();\n }\n }\n }\n\n private _calculatePercentage(event: MouseEvent | TouchEvent): number {\n const sliderElement = this.elementRef.nativeElement as HTMLElement;\n const wrapper = sliderElement.querySelector('.ngs-slider-wrapper') as HTMLElement;\n const rect = (wrapper || sliderElement).getBoundingClientRect();\n const clientX = 'touches' in event ? event.touches[0].clientX : (event as MouseEvent).clientX;\n\n let position = (clientX - rect.left) / rect.width;\n position = Math.max(0, Math.min(1, position));\n\n return this._isRtl ? 1 - position : position;\n }\n\n private _calculateValueFromPercentage(percentage: number): number {\n const min = this.min();\n const max = this.max();\n const step = this.step();\n\n const rawValue = min + percentage * (max - min);\n let value = rawValue;\n\n if (step > 0) {\n value = Math.round(rawValue / step) * step;\n }\n\n return Math.max(min, Math.min(max, value));\n }\n}\n","<div class=\"ngs-slider-wrapper\">\n <div class=\"ngs-slider-track\">\n <div class=\"ngs-slider-track-background\"></div>\n <div class=\"ngs-slider-track-active\"\n [style.left.%]=\"(_trackLeft() / 100) * 100\"\n [style.right.%]=\"(_trackRight() / 100) * 100\"></div>\n @if (showTickMarks()) {\n <div class=\"ngs-slider-tick-marks\">\n @for (tick of _tickMarks(); track $index) {\n <div class=\"ngs-slider-tick-mark\" [class.ngs-slider-tick-mark-active]=\"tick === 0\"></div>\n }\n </div>\n }\n </div>\n\n <ng-content />\n\n <div class=\"ngs-slider-visual-thumbs\">\n @for (thumb of _allThumbs(); track thumb) {\n <div class=\"ngs-slider-visual-thumb\"\n [style.left.%]=\"thumb.percentage * 100\"\n [class.ngs-slider-visual-thumb-active]=\"thumb === _activeThumb()\">\n <div class=\"ngs-slider-thumb-knob\"></div>\n @if (discrete()) {\n <div class=\"ngs-slider-value-indicator-container\">\n <div class=\"ngs-slider-value-indicator\">\n <span class=\"ngs-slider-value-indicator-text\">{{ displayWith()(thumb.value) }}</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import { Directive, forwardRef } from '@angular/core';\nimport { SliderThumb } from './slider-thumb';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: 'input[ngsSliderStartThumb]',\n standalone: true,\n host: {\n 'class': 'ngs-slider-input',\n '[class.ngs-slider-input-active]': '_slider._activeThumb() === this',\n 'type': 'range',\n '[attr.min]': 'min',\n '[attr.max]': 'max',\n '[attr.step]': 'step',\n '[value]': 'value',\n '(input)': '_onInput($event)',\n '(change)': '_onChange($event)',\n '(blur)': '_onBlur()',\n '(focus)': '_onFocus()',\n },\n providers: [\n {\n provide: SliderThumb,\n useExisting: forwardRef(() => SliderStartThumb),\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderStartThumb),\n multi: true,\n },\n ],\n})\nexport class SliderStartThumb extends SliderThumb {\n override getId() {\n return 'start';\n }\n}\n","import { Directive, forwardRef } from '@angular/core';\nimport { SliderThumb } from './slider-thumb';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: 'input[ngsSliderEndThumb]',\n host: {\n 'class': 'ngs-slider-input',\n '[class.ngs-slider-input-active]': '_slider._activeThumb() === this',\n 'type': 'range',\n '[attr.min]': 'min',\n '[attr.max]': 'max',\n '[attr.step]': 'step',\n '[value]': 'value',\n '(input)': '_onInput($event)',\n '(change)': '_onChange($event)',\n '(blur)': '_onBlur()',\n '(focus)': '_onFocus()',\n },\n providers: [\n {\n provide: SliderThumb,\n useExisting: forwardRef(() => SliderEndThumb),\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderEndThumb),\n multi: true,\n },\n ],\n})\nexport class SliderEndThumb extends SliderThumb {\n override getId() {\n return 'end';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAwCa,WAAW,CAAA;AACd,IAAA,WAAW,GAAG,MAAM,EAAC,UAA4B,EAAC;AACjD,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IAExB,WAAW,GAAG,MAAM,EAAU;AAEvC,IAAA,UAAU,GAAG,KAAK,CAAC,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG;AAErE,IAAA,MAAM,GAAG,MAAM,CAAC,CAAC,6EAAC;IAE1B,KAAK,GAAA;AACH,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE;IACtB;IACA,IAAI,KAAK,CAAC,CAAS,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;IACnC;AAEQ,IAAA,WAAW,CAAC,CAAS,EAAA;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAE9B,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAClC,YAAA,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACpD;AAAO,iBAAA,IAAI,KAAK,KAAK,CAAC,EAAE;gBACtB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACpD;QACF;AACA,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxC;AAEA,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,YAAA,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACjF,gBAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;YACvB;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,WAAW,GAAyB,MAAK,EAAE,CAAC;AAC5C,IAAA,YAAY,GAAe,MAAK,EAAE,CAAC;IAE3C,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,SAAS,EAAE;AACnC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC;AACzE,YAAA,IAAI,YAAY,KAAK,IAAI,EAAE;AACzB,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;YACnC;iBAAO;gBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACjC;QACF;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;QACnC;IACF;AAEA,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IAC3B;AAEA,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IAC3B;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IAC5B;AAEA,IAAA,WAAW,KAAI;AAEf,IAAA,oBAAoB,CAAC,KAAa,EAAA;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,YAAY,EAAE;AAClC,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;YAC7B,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;YAEjC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AACjC,YAAA,CAAC,CAAC;QACJ;IACF;AAEA,IAAA,QAAQ,CAAC,KAAY,EAAA;QACnB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YAChF;QACF;AACA,QAAA,IAAI,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,aAAa;QAC5D,MAAM,YAAY,GAAG,KAAK;AAE1B,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAEhC,QAAA,IAAI,KAAK,KAAK,YAAY,EAAE;YAC1B,IAAI,CAAC,gBAAgB,EAAE;QACzB;QAEA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IACrC;AAEA,IAAA,SAAS,CAAC,KAAY,EAAA;QACpB,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,OAAO,GAAA;QACL,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IACrC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;IACxC;IAEQ,kBAAkB,GAAG,KAAK;AAElC,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AACjC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;IACvB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;IACxB;AAEA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;QACnC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,UAAU;IACtD;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE;IACxE;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAE9B,QAAA,IAAI,GAAG,KAAK,GAAG,EAAE;AACf,YAAA,OAAO,CAAC;QACV;AAEA,QAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC;AAC7C,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC;uGAlKW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,UAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EArBX;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,WAAW,CAAC;AAC1C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAeU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAxBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,iBAAiB,CAAC;AAC1C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,iCAAiC,EAAE,iCAAiC;AACpE,wBAAA,MAAM,EAAE,OAAO;AACf,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,SAAS,EAAE,OAAO;AAClB,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,UAAU,EAAE,mBAAmB;AAC/B,wBAAA,QAAQ,EAAE,WAAW;AACrB,wBAAA,SAAS,EAAE,YAAY;AACxB,qBAAA;AACF,iBAAA;;;MCJY,MAAM,CAAA;AACT,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC9B,IAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACxB,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjD,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAElD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,aAAa,GAAG,KAAK,CAAC,KAAK,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC7D,GAAG,GAAG,KAAK,CAAC,CAAC,2EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAC9C,GAAG,GAAG,KAAK,CAAC,GAAG,2EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAChD,IAAI,GAAG,KAAK,CAAC,CAAC,4EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAC/C,IAAA,WAAW,GAAG,KAAK,CAA4B,CAAC,KAAa,KAAK,CAAA,EAAG,KAAK,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAE7E,UAAU,GAAG,eAAe,CAAC,WAAW,kFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;AAEhE,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC;YACpC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC;YACpC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG;QAC/B;AACA,QAAA,OAAO,CAAC;AACV,IAAA,CAAC,iFAAC;AAEF,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC;YACpC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC;AACpC,YAAA,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG;QACrC;AACA,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,QAAA,OAAO,CAAC,CAAC,IAAI,KAAK,EAAE,UAAU,IAAI,CAAC,CAAC,IAAI,GAAG;AAC7C,IAAA,CAAC,kFAAC;AAEF,IAAA,YAAY,GAAG,MAAM,CAAqB,IAAI,mFAAC;AAC/C,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,kFAAC;AAC3B,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AAC7C,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC;QACrE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAA,CAAC,iFAAC;IAEF,MAAM,GAAG,KAAK;AAEd,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;gBACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAK,CAAC,KAAK,KAAK,KAAK;AACxC,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK;QACzC;QAEA,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACxC;QACF;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B;AAElE,QAAA,MAAM,YAAY,GAAG,KAAK,CACxB,SAAS,CAAa,aAAa,EAAE,WAAW,CAAC,EACjD,SAAS,CAAa,aAAa,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACvE,CAAC,IAAI,CACJ,MAAM,CAAC,CAAC,KAAK,KAAI;YACf,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,KAAK;AACjC,YAAA,OAAO,EAAE,KAAK,YAAY,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;QAC7D,CAAC,CAAC,CACH;AAED,QAAA,MAAM,YAAY,GAAG,KAAK,CACxB,SAAS,CAAa,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAClD,SAAS,CAAa,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACvE;AAED,QAAA,MAAM,UAAU,GAAG,KAAK,CACtB,SAAS,CAAa,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAChD,SAAS,CAAa,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EACrE,SAAS,CAAa,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACzE;QAED;AACG,aAAA,IAAI,CACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAC9B,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,IAAI,KAAK,YAAY,UAAU,EAAE;gBAC/B,KAAK,CAAC,cAAc,EAAE;YACxB;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,MACR,YAAY,CAAC,IAAI,CACf,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,IAAI,KAAK,YAAY,UAAU,EAAE;gBAC/B,KAAK,CAAC,cAAc,EAAE;YACxB;QACF,CAAC,CAAC,EACF,SAAS,CACP,UAAU,CAAC,IAAI,CACb,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,QAAA,CAAC,CAAC,CACH,CACF,CACF,CACF,EACD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAErC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5B,QAAA,CAAC,CAAC;QAEJ,KAAK,CACH,SAAS,CAAa,aAAa,EAAE,WAAW,CAAC,EACjD,SAAS,CAAa,aAAa,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aAEpE,IAAI,CACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EACrD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAErC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5B,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,cAAc,CAAC,KAAkB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC1B;AAEQ,IAAA,iBAAiB,CAAC,UAAkB,EAAA;AAC1C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;AAE7D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;AAE5D,YAAA,IAAI,QAAQ,GAAG,WAAW,EAAE;gBAC1B,WAAW,GAAG,QAAQ;AACtB,gBAAA,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC;YAC1B;AAAO,iBAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;;gBAEnC,IAAI,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;;;AAGrC,oBAAA,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC1B;qBAAO,IAAI,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;;AAE5C,oBAAA,YAAY,GAAG,MAAM,CAAC,CAAC,GAAC,CAAC,CAAC;gBAC5B;qBAAO;;;oBAGL,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,EAAE;AACrC,wBAAA,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC;oBAC1B;gBACF;YACF;QACF;AAEA,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,cAAc,CAAC,KAA8B,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAEvD,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;YAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC;AAC5D,YAAA,YAAY,CAAC,oBAAoB,CAAC,KAAK,CAAC;YACxC,YAAY,CAAC,KAAK,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QAC1B;IACF;AAEA,IAAA,cAAc,CAAC,KAA8B,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACnD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;AACrC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE;AAEvC,QAAA,IAAI,UAAU,IAAI,WAAW,EAAE;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC;AAC5D,YAAA,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QAC1B;aAAO,IAAI,CAAC,UAAU,EAAE;YACtB,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;AAEvD,YAAA,IAAI,YAAY,IAAI,WAAW,KAAK,YAAY,EAAE;AAChD,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AACnC,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAC1B;QACF;IACF;AAEQ,IAAA,oBAAoB,CAAC,KAA8B,EAAA;AACzD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B;QAClE,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAgB;QACjF,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,aAAa,EAAE,qBAAqB,EAAE;QAC/D,MAAM,OAAO,GAAG,SAAS,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAI,KAAoB,CAAC,OAAO;AAE7F,QAAA,IAAI,QAAQ,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;AACjD,QAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAE7C,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,QAAQ;IAC9C;AAEQ,IAAA,6BAA6B,CAAC,UAAkB,EAAA;AACtD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QAExB,MAAM,QAAQ,GAAG,GAAG,GAAG,UAAU,IAAI,GAAG,GAAG,GAAG,CAAC;QAC/C,IAAI,KAAK,GAAG,QAAQ;AAEpB,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI;QAC5C;AAEA,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5C;uGA3PW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,kCAAA,EAAA,iBAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAgBY,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnD1C,wuCAkCA,EAAA,MAAA,EAAA,CAAA,2/JAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDCa,MAAM,EAAA,UAAA,EAAA,CAAA;kBAblB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,YACZ,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,OAAO,EAAE,YAAY;AACrB,wBAAA,6BAA6B,EAAE,YAAY;AAC3C,wBAAA,6BAA6B,EAAE,YAAY;AAC3C,wBAAA,oCAAoC,EAAE,iBAAiB;AACxD,qBAAA,EAAA,QAAA,EAAA,wuCAAA,EAAA,MAAA,EAAA,CAAA,2/JAAA,CAAA,EAAA;AAkB4B,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,WAAW,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEnB3D,MAAO,gBAAiB,SAAQ,WAAW,CAAA;IACtC,KAAK,GAAA;AACZ,QAAA,OAAO,OAAO;IAChB;uGAHW,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,UAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAZhB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA5B5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,iCAAiC,EAAE,iCAAiC;AACpE,wBAAA,MAAM,EAAE,OAAO;AACf,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,SAAS,EAAE,OAAO;AAClB,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,UAAU,EAAE,mBAAmB;AAC/B,wBAAA,QAAQ,EAAE,WAAW;AACrB,wBAAA,SAAS,EAAE,YAAY;AACxB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,WAAW;AACpB,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAChD,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAC/C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;;;ACAK,MAAO,cAAe,SAAQ,WAAW,CAAA;IACpC,KAAK,GAAA;AACZ,QAAA,OAAO,KAAK;IACd;uGAHW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,UAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAZd;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC9C,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEU,cAAc,EAAA,UAAA,EAAA,CAAA;kBA3B1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,iCAAiC,EAAE,iCAAiC;AACpE,wBAAA,MAAM,EAAE,OAAO;AACf,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,SAAS,EAAE,OAAO;AAClB,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,UAAU,EAAE,mBAAmB;AAC/B,wBAAA,QAAQ,EAAE,WAAW;AACrB,wBAAA,SAAS,EAAE,YAAY;AACxB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,WAAW;AACpB,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC9C,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;;;AC9BD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-slider.mjs","sources":["../../../projects/components/slider/src/slider-thumb.ts","../../../projects/components/slider/src/slider/slider.ts","../../../projects/components/slider/src/slider/slider.html","../../../projects/components/slider/src/slider-start-thumb.ts","../../../projects/components/slider/src/slider-end-thumb.ts","../../../projects/components/slider/ngstarter-ui-components-slider.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n signal,\n computed,\n numberAttribute, effect\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Slider } from './slider/slider';\n\n@Directive({\n selector: 'input[ngsSliderThumb]',\n exportAs: 'ngsSliderThumb',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderThumb),\n multi: true,\n },\n ],\n host: {\n 'class': 'ngs-slider-input',\n '[class.ngs-slider-input-active]': '_slider._activeThumb() === this',\n 'type': 'range',\n '[attr.min]': 'min',\n '[attr.max]': 'max',\n '[attr.step]': 'step',\n '[value]': 'value',\n '(input)': '_onInput($event)',\n '(change)': '_onChange($event)',\n '(blur)': '_onBlur()',\n '(focus)': '_onFocus()',\n },\n})\nexport class SliderThumb implements ControlValueAccessor, OnInit, OnDestroy {\n private _elementRef = inject(ElementRef<HTMLInputElement>);\n readonly _slider = inject(Slider);\n\n readonly valueChange = output<number>();\n\n valueInput = input(undefined, { transform: numberAttribute, alias: 'value' });\n\n private _value = signal(0);\n\n getId() {\n return 'base';\n }\n\n get value(): number {\n return this._value();\n }\n set value(v: number) {\n this._value.set(this._clampValue(v));\n this._updateHostValue();\n this._slider._onValueChange(this);\n }\n\n private _clampValue(v: number): number {\n const thumbs = this._slider._allThumbs();\n const min = this._slider.min();\n const max = this._slider.max();\n\n if (thumbs.length === 2) {\n const index = thumbs.indexOf(this);\n if (index === 0) {\n return Math.max(min, Math.min(v, thumbs[1].value));\n } else if (index === 1) {\n return Math.min(max, Math.max(v, thumbs[0].value));\n }\n }\n return Math.max(min, Math.min(max, v));\n }\n\n constructor() {\n effect(() => {\n const inputVal = this.valueInput();\n if (inputVal !== undefined && inputVal !== this.value && !this._isUserInteraction) {\n this.value = inputVal;\n }\n });\n }\n\n private _onChangeFn: (value: any) => void = () => {};\n private _onTouchedFn: () => void = () => {};\n\n ngOnInit() {\n if (this.valueInput() === undefined) {\n const initialValue = this._elementRef.nativeElement.getAttribute('value');\n if (initialValue !== null) {\n this.value = Number(initialValue);\n } else {\n this.value = this._slider.min();\n }\n } else {\n this._slider._onValueChange(this);\n }\n }\n\n get min(): number {\n return this._slider.min();\n }\n\n get max(): number {\n return this._slider.max();\n }\n\n get step(): number {\n return this._slider.step();\n }\n\n ngOnDestroy() {}\n\n _updateValueFromUser(value: number) {\n const clampedValue = this._clampValue(value);\n if (this._value() !== clampedValue) {\n this._isUserInteraction = true;\n this._value.set(clampedValue);\n this._updateHostValue();\n this._onChangeFn(clampedValue);\n this.valueChange.emit(clampedValue);\n this._slider._onValueChange(this);\n\n setTimeout(() => {\n this._isUserInteraction = false;\n });\n }\n }\n\n _onInput(event: Event) {\n if (this._slider._allThumbs().length > 1 && this._slider._activeThumb() !== this) {\n return;\n }\n let value = (event.target as HTMLInputElement).valueAsNumber;\n const initialValue = value;\n\n this._updateValueFromUser(value);\n\n if (value !== initialValue) {\n this._updateHostValue();\n }\n\n this._slider._activeThumb.set(this);\n }\n\n _onChange(event: Event) {\n this._onTouchedFn();\n }\n\n _onBlur() {\n this._onTouchedFn();\n }\n\n _onFocus() {\n this._slider._activeThumb.set(this);\n }\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n\n private _isUserInteraction = false;\n\n writeValue(value: any): void {\n this._isUserInteraction = true;\n this.value = value;\n setTimeout(() => {\n this._isUserInteraction = false;\n });\n }\n\n registerOnChange(fn: any): void {\n this._onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouchedFn = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this._elementRef.nativeElement.disabled = isDisabled;\n }\n\n private _updateHostValue() {\n this._elementRef.nativeElement.value = (this._value() ?? 0).toString();\n }\n\n get percentage(): number {\n const max = this._slider.max();\n const min = this._slider.min();\n\n if (max === min) {\n return 0;\n }\n\n const p = (this._value() - min) / (max - min);\n return Math.max(0, Math.min(1, p));\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n PLATFORM_ID,\n signal\n} from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { SliderThumb } from '../slider-thumb';\nimport { filter, fromEvent, merge, switchMap, takeUntil, tap } from 'rxjs';\n\n@Component({\n selector: 'ngs-slider',\n exportAs: 'ngsSlider',\n templateUrl: './slider.html',\n styleUrl: './slider.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-slider',\n '[class.ngs-slider-disabled]': 'disabled()',\n '[class.ngs-slider-discrete]': 'discrete()',\n '[class.ngs-slider-show-tick-marks]': 'showTickMarks()',\n },\n})\nexport class Slider {\n private elementRef = inject(ElementRef);\n readonly _cdr = inject(ChangeDetectorRef);\n private readonly _dir = inject(Directionality, { optional: true });\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _document = inject(DOCUMENT);\n private readonly _platformId = inject(PLATFORM_ID);\n\n disabled = input(false, { transform: booleanAttribute });\n discrete = input(false, { transform: booleanAttribute });\n showTickMarks = input(false, { transform: booleanAttribute });\n min = input(0, { transform: numberAttribute });\n max = input(100, { transform: numberAttribute });\n step = input(1, { transform: numberAttribute });\n displayWith = input<(value: number) => string>((value: number) => `${value}`);\n\n _allThumbs = contentChildren(SliderThumb, { descendants: true });\n\n _trackLeft = computed(() => {\n const thumbs = this._allThumbs();\n if (thumbs.length === 2) {\n const p1 = thumbs[0].percentage || 0;\n const p2 = thumbs[1].percentage || 0;\n return Math.min(p1, p2) * 100;\n }\n return 0;\n });\n\n _trackRight = computed(() => {\n const thumbs = this._allThumbs();\n if (thumbs.length === 2) {\n const p1 = thumbs[0].percentage || 0;\n const p2 = thumbs[1].percentage || 0;\n return (1 - Math.max(p1, p2)) * 100;\n }\n const thumb = thumbs[0];\n return (1 - (thumb?.percentage || 0)) * 100;\n });\n\n _activeThumb = signal<SliderThumb | null>(null);\n _isDragging = signal(false);\n _tickMarks = computed(() => {\n if (!this.showTickMarks() || this.step() <= 0) {\n return [];\n }\n\n const count = Math.floor((this.max() - this.min()) / this.step()) + 1;\n return Array(count).fill(1); // 1 = inactive by default\n });\n\n _isRtl = false;\n\n constructor() {\n if (this._dir) {\n this._dir.change.pipe(takeUntilDestroyed()).subscribe(() => {\n this._isRtl = this._dir!.value === 'rtl';\n this._cdr.markForCheck();\n });\n this._isRtl = this._dir.value === 'rtl';\n }\n\n effect(() => {\n this._allThumbs();\n this._cdr.markForCheck();\n });\n\n this._initializeEvents();\n }\n\n private _initializeEvents() {\n if (!isPlatformBrowser(this._platformId)) {\n return;\n }\n\n const sliderElement = this.elementRef.nativeElement as HTMLElement;\n\n const pointerDown$ = merge(\n fromEvent<MouseEvent>(sliderElement, 'mousedown'),\n fromEvent<TouchEvent>(sliderElement, 'touchstart', { passive: false })\n ).pipe(\n filter((event) => {\n if (this.disabled()) return false;\n return !(event instanceof MouseEvent && event.button !== 0);\n })\n );\n\n const pointerMove$ = merge(\n fromEvent<MouseEvent>(this._document, 'mousemove'),\n fromEvent<TouchEvent>(this._document, 'touchmove', { passive: false })\n );\n\n const pointerUp$ = merge(\n fromEvent<MouseEvent>(this._document, 'mouseup'),\n fromEvent<TouchEvent>(this._document, 'touchend', { passive: false }),\n fromEvent<TouchEvent>(this._document, 'touchcancel', { passive: false })\n );\n\n pointerDown$\n .pipe(\n filter(() => !this.disabled()),\n tap((event) => {\n if (event instanceof TouchEvent) {\n event.preventDefault();\n }\n this._isDragging.set(true);\n this._onPointerDown(event);\n this._cdr.markForCheck();\n }),\n switchMap(() =>\n pointerMove$.pipe(\n tap((event) => {\n if (event instanceof TouchEvent) {\n event.preventDefault();\n }\n }),\n takeUntil(\n pointerUp$.pipe(\n tap(() => {\n this._isDragging.set(false);\n this._cdr.markForCheck();\n })\n )\n )\n )\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event) => {\n this._onPointerMove(event);\n });\n\n merge(\n fromEvent<MouseEvent>(sliderElement, 'mousemove'),\n fromEvent<TouchEvent>(sliderElement, 'touchmove', { passive: false })\n )\n .pipe(\n filter(() => !this.disabled() && !this._isDragging()),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event) => {\n this._onPointerMove(event);\n });\n }\n\n _onValueChange(thumb: SliderThumb) {\n this._cdr.markForCheck();\n }\n\n private _findClosestThumb(percentage: number): SliderThumb | null {\n const thumbs = this._allThumbs();\n if (thumbs.length === 0) {\n return null;\n }\n\n let closestThumb = thumbs[0];\n let minDistance = Math.abs(thumbs[0].percentage - percentage);\n\n for (let i = 1; i < thumbs.length; i++) {\n const distance = Math.abs(thumbs[i].percentage - percentage);\n\n if (distance < minDistance) {\n minDistance = distance;\n closestThumb = thumbs[i];\n } else if (distance === minDistance) {\n // If distances are equal (e.g., thumbs are at the same point)\n if (percentage > thumbs[i].percentage) {\n // If click is to the right of the overlap point, select the \"right\" thumb\n // (in the array thumbs[1] is usually the end thumb)\n closestThumb = thumbs[i];\n } else if (percentage < thumbs[i].percentage) {\n // If click is to the left\n closestThumb = thumbs[i-1];\n } else {\n // If click is exactly at the overlap point\n // give priority to the already active one\n if (thumbs[i] === this._activeThumb()) {\n closestThumb = thumbs[i];\n }\n }\n }\n }\n\n return closestThumb;\n }\n\n _onPointerDown(event: MouseEvent | TouchEvent) {\n if (this.disabled()) {\n return;\n }\n\n const percentage = this._calculatePercentage(event);\n const closestThumb = this._findClosestThumb(percentage);\n\n if (closestThumb) {\n this._activeThumb.set(closestThumb);\n\n const value = this._calculateValueFromPercentage(percentage);\n closestThumb._updateValueFromUser(value);\n closestThumb.focus();\n this._cdr.markForCheck();\n }\n }\n\n _onPointerMove(event: MouseEvent | TouchEvent) {\n if (this.disabled()) {\n return;\n }\n\n const percentage = this._calculatePercentage(event);\n const isDragging = this._isDragging();\n const activeThumb = this._activeThumb();\n\n if (isDragging && activeThumb) {\n const value = this._calculateValueFromPercentage(percentage);\n activeThumb._updateValueFromUser(value);\n this._cdr.markForCheck();\n } else if (!isDragging) {\n const closestThumb = this._findClosestThumb(percentage);\n\n if (closestThumb && activeThumb !== closestThumb) {\n this._activeThumb.set(closestThumb);\n this._cdr.markForCheck();\n }\n }\n }\n\n private _calculatePercentage(event: MouseEvent | TouchEvent): number {\n const sliderElement = this.elementRef.nativeElement as HTMLElement;\n const wrapper = sliderElement.querySelector('.ngs-slider-wrapper') as HTMLElement;\n const rect = (wrapper || sliderElement).getBoundingClientRect();\n const clientX = 'touches' in event ? event.touches[0].clientX : (event as MouseEvent).clientX;\n\n let position = (clientX - rect.left) / rect.width;\n position = Math.max(0, Math.min(1, position));\n\n return this._isRtl ? 1 - position : position;\n }\n\n private _calculateValueFromPercentage(percentage: number): number {\n const min = this.min();\n const max = this.max();\n const step = this.step();\n\n const rawValue = min + percentage * (max - min);\n let value = rawValue;\n\n if (step > 0) {\n value = Math.round(rawValue / step) * step;\n }\n\n return Math.max(min, Math.min(max, value));\n }\n}\n","<div class=\"ngs-slider-wrapper\">\n <div class=\"ngs-slider-track\">\n <div class=\"ngs-slider-track-background\"></div>\n <div class=\"ngs-slider-track-active\"\n [style.left.%]=\"(_trackLeft() / 100) * 100\"\n [style.right.%]=\"(_trackRight() / 100) * 100\"></div>\n @if (showTickMarks()) {\n <div class=\"ngs-slider-tick-marks\">\n @for (tick of _tickMarks(); track $index) {\n <div class=\"ngs-slider-tick-mark\" [class.ngs-slider-tick-mark-active]=\"tick === 0\"></div>\n }\n </div>\n }\n </div>\n\n <ng-content />\n\n <div class=\"ngs-slider-visual-thumbs\">\n @for (thumb of _allThumbs(); track thumb) {\n <div class=\"ngs-slider-visual-thumb\"\n [style.left.%]=\"thumb.percentage * 100\"\n [class.ngs-slider-visual-thumb-active]=\"thumb === _activeThumb()\">\n <div class=\"ngs-slider-thumb-knob\"></div>\n @if (discrete()) {\n <div class=\"ngs-slider-value-indicator-container\">\n <div class=\"ngs-slider-value-indicator\">\n <span class=\"ngs-slider-value-indicator-text\">{{ displayWith()(thumb.value) }}</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import { Directive, forwardRef } from '@angular/core';\nimport { SliderThumb } from './slider-thumb';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: 'input[ngsSliderStartThumb]',\n standalone: true,\n host: {\n 'class': 'ngs-slider-input',\n '[class.ngs-slider-input-active]': '_slider._activeThumb() === this',\n 'type': 'range',\n '[attr.min]': 'min',\n '[attr.max]': 'max',\n '[attr.step]': 'step',\n '[value]': 'value',\n '(input)': '_onInput($event)',\n '(change)': '_onChange($event)',\n '(blur)': '_onBlur()',\n '(focus)': '_onFocus()',\n },\n providers: [\n {\n provide: SliderThumb,\n useExisting: forwardRef(() => SliderStartThumb),\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderStartThumb),\n multi: true,\n },\n ],\n})\nexport class SliderStartThumb extends SliderThumb {\n override getId() {\n return 'start';\n }\n}\n","import { Directive, forwardRef } from '@angular/core';\nimport { SliderThumb } from './slider-thumb';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: 'input[ngsSliderEndThumb]',\n host: {\n 'class': 'ngs-slider-input',\n '[class.ngs-slider-input-active]': '_slider._activeThumb() === this',\n 'type': 'range',\n '[attr.min]': 'min',\n '[attr.max]': 'max',\n '[attr.step]': 'step',\n '[value]': 'value',\n '(input)': '_onInput($event)',\n '(change)': '_onChange($event)',\n '(blur)': '_onBlur()',\n '(focus)': '_onFocus()',\n },\n providers: [\n {\n provide: SliderThumb,\n useExisting: forwardRef(() => SliderEndThumb),\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderEndThumb),\n multi: true,\n },\n ],\n})\nexport class SliderEndThumb extends SliderThumb {\n override getId() {\n return 'end';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAwCa,WAAW,CAAA;AACd,IAAA,WAAW,GAAG,MAAM,EAAC,UAA4B,EAAC;AACjD,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IAExB,WAAW,GAAG,MAAM,EAAU;AAEvC,IAAA,UAAU,GAAG,KAAK,CAAC,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG;AAErE,IAAA,MAAM,GAAG,MAAM,CAAC,CAAC,6EAAC;IAE1B,KAAK,GAAA;AACH,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE;IACtB;IACA,IAAI,KAAK,CAAC,CAAS,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;IACnC;AAEQ,IAAA,WAAW,CAAC,CAAS,EAAA;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAE9B,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAClC,YAAA,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACpD;AAAO,iBAAA,IAAI,KAAK,KAAK,CAAC,EAAE;gBACtB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACpD;QACF;AACA,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxC;AAEA,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,YAAA,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACjF,gBAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;YACvB;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,WAAW,GAAyB,MAAK,EAAE,CAAC;AAC5C,IAAA,YAAY,GAAe,MAAK,EAAE,CAAC;IAE3C,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,SAAS,EAAE;AACnC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC;AACzE,YAAA,IAAI,YAAY,KAAK,IAAI,EAAE;AACzB,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;YACnC;iBAAO;gBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACjC;QACF;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;QACnC;IACF;AAEA,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IAC3B;AAEA,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IAC3B;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IAC5B;AAEA,IAAA,WAAW,KAAI;AAEf,IAAA,oBAAoB,CAAC,KAAa,EAAA;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,YAAY,EAAE;AAClC,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;YAC7B,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;YAEjC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AACjC,YAAA,CAAC,CAAC;QACJ;IACF;AAEA,IAAA,QAAQ,CAAC,KAAY,EAAA;QACnB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YAChF;QACF;AACA,QAAA,IAAI,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,aAAa;QAC5D,MAAM,YAAY,GAAG,KAAK;AAE1B,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAEhC,QAAA,IAAI,KAAK,KAAK,YAAY,EAAE;YAC1B,IAAI,CAAC,gBAAgB,EAAE;QACzB;QAEA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IACrC;AAEA,IAAA,SAAS,CAAC,KAAY,EAAA;QACpB,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,OAAO,GAAA;QACL,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IACrC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;IACxC;IAEQ,kBAAkB,GAAG,KAAK;AAElC,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AACjC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;IACvB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;IACxB;AAEA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;QACnC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,UAAU;IACtD;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE;IACxE;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAE9B,QAAA,IAAI,GAAG,KAAK,GAAG,EAAE;AACf,YAAA,OAAO,CAAC;QACV;AAEA,QAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC;AAC7C,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC;uGAlKW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,UAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EArBX;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,WAAW,CAAC;AAC1C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAeU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAxBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,iBAAiB,CAAC;AAC1C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,iCAAiC,EAAE,iCAAiC;AACpE,wBAAA,MAAM,EAAE,OAAO;AACf,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,SAAS,EAAE,OAAO;AAClB,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,UAAU,EAAE,mBAAmB;AAC/B,wBAAA,QAAQ,EAAE,WAAW;AACrB,wBAAA,SAAS,EAAE,YAAY;AACxB,qBAAA;AACF,iBAAA;;;MCJY,MAAM,CAAA;AACT,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC9B,IAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACxB,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjD,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAElD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,aAAa,GAAG,KAAK,CAAC,KAAK,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC7D,GAAG,GAAG,KAAK,CAAC,CAAC,2EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAC9C,GAAG,GAAG,KAAK,CAAC,GAAG,2EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAChD,IAAI,GAAG,KAAK,CAAC,CAAC,4EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAC/C,IAAA,WAAW,GAAG,KAAK,CAA4B,CAAC,KAAa,KAAK,CAAA,EAAG,KAAK,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAE7E,UAAU,GAAG,eAAe,CAAC,WAAW,kFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;AAEhE,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC;YACpC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC;YACpC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG;QAC/B;AACA,QAAA,OAAO,CAAC;AACV,IAAA,CAAC,iFAAC;AAEF,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC;YACpC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC;AACpC,YAAA,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG;QACrC;AACA,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,QAAA,OAAO,CAAC,CAAC,IAAI,KAAK,EAAE,UAAU,IAAI,CAAC,CAAC,IAAI,GAAG;AAC7C,IAAA,CAAC,kFAAC;AAEF,IAAA,YAAY,GAAG,MAAM,CAAqB,IAAI,mFAAC;AAC/C,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,kFAAC;AAC3B,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AAC7C,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC;QACrE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAA,CAAC,iFAAC;IAEF,MAAM,GAAG,KAAK;AAEd,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;gBACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAK,CAAC,KAAK,KAAK,KAAK;AACxC,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK;QACzC;QAEA,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACxC;QACF;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B;AAElE,QAAA,MAAM,YAAY,GAAG,KAAK,CACxB,SAAS,CAAa,aAAa,EAAE,WAAW,CAAC,EACjD,SAAS,CAAa,aAAa,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACvE,CAAC,IAAI,CACJ,MAAM,CAAC,CAAC,KAAK,KAAI;YACf,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,OAAO,KAAK;AACjC,YAAA,OAAO,EAAE,KAAK,YAAY,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;QAC7D,CAAC,CAAC,CACH;AAED,QAAA,MAAM,YAAY,GAAG,KAAK,CACxB,SAAS,CAAa,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAClD,SAAS,CAAa,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACvE;AAED,QAAA,MAAM,UAAU,GAAG,KAAK,CACtB,SAAS,CAAa,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAChD,SAAS,CAAa,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EACrE,SAAS,CAAa,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACzE;QAED;AACG,aAAA,IAAI,CACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAC9B,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,IAAI,KAAK,YAAY,UAAU,EAAE;gBAC/B,KAAK,CAAC,cAAc,EAAE;YACxB;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,MACR,YAAY,CAAC,IAAI,CACf,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,IAAI,KAAK,YAAY,UAAU,EAAE;gBAC/B,KAAK,CAAC,cAAc,EAAE;YACxB;QACF,CAAC,CAAC,EACF,SAAS,CACP,UAAU,CAAC,IAAI,CACb,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,QAAA,CAAC,CAAC,CACH,CACF,CACF,CACF,EACD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAErC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5B,QAAA,CAAC,CAAC;QAEJ,KAAK,CACH,SAAS,CAAa,aAAa,EAAE,WAAW,CAAC,EACjD,SAAS,CAAa,aAAa,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aAEpE,IAAI,CACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EACrD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAErC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5B,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,cAAc,CAAC,KAAkB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC1B;AAEQ,IAAA,iBAAiB,CAAC,UAAkB,EAAA;AAC1C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;AAE7D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;AAE5D,YAAA,IAAI,QAAQ,GAAG,WAAW,EAAE;gBAC1B,WAAW,GAAG,QAAQ;AACtB,gBAAA,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC;YAC1B;AAAO,iBAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;;gBAEnC,IAAI,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;;;AAGrC,oBAAA,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC1B;qBAAO,IAAI,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;;AAE5C,oBAAA,YAAY,GAAG,MAAM,CAAC,CAAC,GAAC,CAAC,CAAC;gBAC5B;qBAAO;;;oBAGL,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,EAAE;AACrC,wBAAA,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC;oBAC1B;gBACF;YACF;QACF;AAEA,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,cAAc,CAAC,KAA8B,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAEvD,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;YAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC;AAC5D,YAAA,YAAY,CAAC,oBAAoB,CAAC,KAAK,CAAC;YACxC,YAAY,CAAC,KAAK,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QAC1B;IACF;AAEA,IAAA,cAAc,CAAC,KAA8B,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACnD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;AACrC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE;AAEvC,QAAA,IAAI,UAAU,IAAI,WAAW,EAAE;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC;AAC5D,YAAA,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QAC1B;aAAO,IAAI,CAAC,UAAU,EAAE;YACtB,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;AAEvD,YAAA,IAAI,YAAY,IAAI,WAAW,KAAK,YAAY,EAAE;AAChD,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AACnC,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAC1B;QACF;IACF;AAEQ,IAAA,oBAAoB,CAAC,KAA8B,EAAA;AACzD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B;QAClE,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAgB;QACjF,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,aAAa,EAAE,qBAAqB,EAAE;QAC/D,MAAM,OAAO,GAAG,SAAS,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAI,KAAoB,CAAC,OAAO;AAE7F,QAAA,IAAI,QAAQ,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;AACjD,QAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAE7C,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,QAAQ;IAC9C;AAEQ,IAAA,6BAA6B,CAAC,UAAkB,EAAA;AACtD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QAExB,MAAM,QAAQ,GAAG,GAAG,GAAG,UAAU,IAAI,GAAG,GAAG,GAAG,CAAC;QAC/C,IAAI,KAAK,GAAG,QAAQ;AAEpB,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI;QAC5C;AAEA,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5C;uGA3PW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,kCAAA,EAAA,iBAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAgBY,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnD1C,wuCAkCA,EAAA,MAAA,EAAA,CAAA,+hKAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDCa,MAAM,EAAA,UAAA,EAAA,CAAA;kBAblB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,YACZ,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,OAAO,EAAE,YAAY;AACrB,wBAAA,6BAA6B,EAAE,YAAY;AAC3C,wBAAA,6BAA6B,EAAE,YAAY;AAC3C,wBAAA,oCAAoC,EAAE,iBAAiB;AACxD,qBAAA,EAAA,QAAA,EAAA,wuCAAA,EAAA,MAAA,EAAA,CAAA,+hKAAA,CAAA,EAAA;AAkB4B,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,WAAW,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEnB3D,MAAO,gBAAiB,SAAQ,WAAW,CAAA;IACtC,KAAK,GAAA;AACZ,QAAA,OAAO,OAAO;IAChB;uGAHW,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,UAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAZhB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA5B5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,iCAAiC,EAAE,iCAAiC;AACpE,wBAAA,MAAM,EAAE,OAAO;AACf,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,SAAS,EAAE,OAAO;AAClB,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,UAAU,EAAE,mBAAmB;AAC/B,wBAAA,QAAQ,EAAE,WAAW;AACrB,wBAAA,SAAS,EAAE,YAAY;AACxB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,WAAW;AACpB,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAChD,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAC/C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;;;ACAK,MAAO,cAAe,SAAQ,WAAW,CAAA;IACpC,KAAK,GAAA;AACZ,QAAA,OAAO,KAAK;IACd;uGAHW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,UAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAZd;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC9C,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEU,cAAc,EAAA,UAAA,EAAA,CAAA;kBA3B1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,iCAAiC,EAAE,iCAAiC;AACpE,wBAAA,MAAM,EAAE,OAAO;AACf,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,SAAS,EAAE,OAAO;AAClB,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,UAAU,EAAE,mBAAmB;AAC/B,wBAAA,QAAQ,EAAE,WAAW;AACrB,wBAAA,SAAS,EAAE,YAAY;AACxB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,WAAW;AACpB,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC9C,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;;;AC9BD;;AAEG;;;;"}
|
|
@@ -190,13 +190,13 @@ class SimpleSnackBar {
|
|
|
190
190
|
this.snackBarRef.dismiss();
|
|
191
191
|
}
|
|
192
192
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SimpleSnackBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
193
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: SimpleSnackBar, isStandalone: true, selector: "ngs-simple-snack-bar", exportAs: ["ngsSimpleSnackBar"], ngImport: i0, template: "<span class=\"simple-snack-bar-message\">{{ data.message }}</span>\n@if (data.action) {\n <div class=\"simple-snack-bar-action\">\n <button ngsButton=\"filled\" (click)=\"action()\">{{ data.action }}</button>\n </div>\n}\n", styles: [":host{display:flex;justify-content:space-between;align-items:center;font-size
|
|
193
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: SimpleSnackBar, isStandalone: true, selector: "ngs-simple-snack-bar", exportAs: ["ngsSimpleSnackBar"], ngImport: i0, template: "<span class=\"simple-snack-bar-message\">{{ data.message }}</span>\n@if (data.action) {\n <div class=\"simple-snack-bar-action\">\n <button ngsButton=\"filled\" (click)=\"action()\">{{ data.action }}</button>\n </div>\n}\n", styles: [":host{display:flex;justify-content:space-between;align-items:center;font-size:var(--ngs-font-size-sm);color:var(--ngs-color-neutral-100);border-radius:var(--ngs-radius-xl);padding:0 calc(var(--spacing, .25rem) * 2.5);background:var(--ngs-color-neutral-950)}:host .simple-snack-bar-message{padding:14px 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;flex:1 1 auto}:host .simple-snack-bar-action{flex:0 0 auto;margin-left:8px}:host:has(.simple-snack-bar-action){padding-inline-end:calc(var(--spacing, .25rem) * 1.5)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: Button, selector: " button[ngsButton], button[ngsIconButton], a[ngsButton], a[ngsIconButton] ", inputs: ["ngsButton", "ngsIconButton", "loading", "disabled", "disabledInteractive", "disableRipple", "reverse", "fullWidth", "hideTextOnMobile"], exportAs: ["ngsButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
194
194
|
}
|
|
195
195
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SimpleSnackBar, decorators: [{
|
|
196
196
|
type: Component,
|
|
197
197
|
args: [{ selector: 'ngs-simple-snack-bar', exportAs: 'ngsSimpleSnackBar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
198
198
|
Button
|
|
199
|
-
], template: "<span class=\"simple-snack-bar-message\">{{ data.message }}</span>\n@if (data.action) {\n <div class=\"simple-snack-bar-action\">\n <button ngsButton=\"filled\" (click)=\"action()\">{{ data.action }}</button>\n </div>\n}\n", styles: [":host{display:flex;justify-content:space-between;align-items:center;font-size
|
|
199
|
+
], template: "<span class=\"simple-snack-bar-message\">{{ data.message }}</span>\n@if (data.action) {\n <div class=\"simple-snack-bar-action\">\n <button ngsButton=\"filled\" (click)=\"action()\">{{ data.action }}</button>\n </div>\n}\n", styles: [":host{display:flex;justify-content:space-between;align-items:center;font-size:var(--ngs-font-size-sm);color:var(--ngs-color-neutral-100);border-radius:var(--ngs-radius-xl);padding:0 calc(var(--spacing, .25rem) * 2.5);background:var(--ngs-color-neutral-950)}:host .simple-snack-bar-message{padding:14px 0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;flex:1 1 auto}:host .simple-snack-bar-action{flex:0 0 auto;margin-left:8px}:host:has(.simple-snack-bar-action){padding-inline-end:calc(var(--spacing, .25rem) * 1.5)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
200
200
|
}] });
|
|
201
201
|
|
|
202
202
|
class SnackBar {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-snack-bar.mjs","sources":["../../../projects/components/snack-bar/src/snack-bar/snack-bar-config.ts","../../../projects/components/snack-bar/src/snack-bar/snack-bar-ref.ts","../../../projects/components/snack-bar/src/snack-bar/snack-bar-container/snack-bar-container.ts","../../../projects/components/snack-bar/src/snack-bar/snack-bar-container/snack-bar-container.html","../../../projects/components/snack-bar/src/snack-bar/simple-snack-bar/simple-snack-bar.ts","../../../projects/components/snack-bar/src/snack-bar/simple-snack-bar/simple-snack-bar.html","../../../projects/components/snack-bar/src/snack-bar/snack-bar.service.ts","../../../projects/components/snack-bar/ngstarter-ui-components-snack-bar.ts"],"sourcesContent":["import { InjectionToken, ViewContainerRef, Injectable } from '@angular/core';\nimport { AriaLivePoliteness } from '@angular/cdk/a11y';\nimport { Direction } from '@angular/cdk/bidi';\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nexport const SNACK_BAR_DATA = new InjectionToken<any>('SnackBarData');\n\n/** Injection token that can be used to specify default snack bar. */\nexport const SNACK_BAR_CONFIG = new InjectionToken<SnackBarConfig>('SnackBarConfig');\n\n/** Function to provide the snack bar configuration. */\nexport function provideSnackBarConfig(config: SnackBarConfig) {\n return {\n provide: SNACK_BAR_CONFIG,\n useValue: config,\n };\n}\n\nexport type SnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\nexport type SnackBarVerticalPosition = 'top' | 'bottom';\n\nexport class SnackBarConfig<D = any> {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n politeness?: AriaLivePoliteness = 'assertive';\n\n /** Message to be announced by the LiveAnnouncer. */\n announcementMessage?: string = '';\n\n /** The view container that should be used for the snack bar's origin. */\n viewContainerRef?: ViewContainerRef;\n\n /** The duration in milliseconds to wait before automatically closing the snack bar. */\n duration?: number = 0;\n\n /** Extra CSS classes to be added to the snack bar container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the snack bar. */\n direction?: Direction;\n\n /** The horizontal position to place the snack bar. */\n horizontalPosition?: SnackBarHorizontalPosition = 'center';\n\n /** The vertical position to place the snack bar. */\n verticalPosition?: SnackBarVerticalPosition = 'bottom';\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n}\n","import { Observable, Subject } from 'rxjs';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\n\nexport class SnackBarRef<T> {\n /** The instance of the component making up the content of the snack bar. */\n instance!: T;\n\n /** Subject for notifying the user that the snack bar has been dismissed. */\n private readonly _afterDismissed = new Subject<void>();\n\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n constructor(public containerInstance: any, private _overlayRef: OverlayRef) {\n containerInstance._onExit.subscribe(() => {\n this._overlayRef.dispose();\n this._afterDismissed.next();\n this._afterDismissed.complete();\n });\n\n containerInstance._onEnter.subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n }\n\n /** Dismisses the snack bar. */\n dismiss(): void {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed(): Observable<void> {\n return this._afterDismissed.asObservable();\n }\n\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened(): Observable<void> {\n return this._afterOpened.asObservable();\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n OnDestroy,\n signal,\n PLATFORM_ID,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { SnackBarConfig } from '../snack-bar-config';\n\n@Component({\n selector: 'ngs-snack-bar-container',\n exportAs: 'ngsSnackBarContainer',\n templateUrl: './snack-bar-container.html',\n styleUrl: './snack-bar-container.scss',\n standalone: true,\n imports: [CdkPortalOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'snack-bar-container-host'\n }\n})\nexport class SnackBarContainer extends BasePortalOutlet implements OnDestroy {\n readonly _portalOutlet = viewChild.required(CdkPortalOutlet);\n private _cdr = inject(ChangeDetectorRef);\n private _platformId = inject(PLATFORM_ID);\n\n /** State of the snack bar animation. */\n readonly animationState = signal<'void' | 'visible' | 'hidden-top' | 'hidden-bottom'>('void');\n readonly leaving = signal(false);\n\n /** Event emitted when the snack bar exit animation is finished. */\n readonly _onExit = new EventEmitter<void>();\n\n /** Event emitted when the snack bar enter animation is finished. */\n readonly _onEnter = new EventEmitter<void>();\n\n constructor(public snackBarConfig: SnackBarConfig) {\n super();\n if (this.snackBarConfig.verticalPosition === 'top') {\n this.animationState.set('hidden-top');\n } else {\n this.animationState.set('hidden-bottom');\n }\n }\n\n /** Attach a component portal as content to this snack bar container. */\n override attachComponentPortal<T>(portal: ComponentPortal<T>): any {\n this._assertNotAttached();\n return this._portalOutlet().attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this snack bar container. */\n override attachTemplatePortal<C>(portal: TemplatePortal<C>): any {\n this._assertNotAttached();\n return this._portalOutlet().attachTemplatePortal(portal);\n }\n\n /** Begin animation of snack bar entrance into view. */\n enter(): void {\n // Ensure we are not in leaving state\n this.leaving.set(false);\n\n if (!isPlatformBrowser(this._platformId)) {\n this.animationState.set('visible');\n this._cdr.markForCheck();\n return;\n }\n\n // Use requestAnimationFrame to ensure the initial state (hidden-top/bottom)\n // is applied to the DOM before we change it to 'visible'.\n // We use two nested requestAnimationFrames to ensure at least one paint cycle has occurred.\n // The first rAF captures the current state, the second one allows for the state to be applied\n // and then triggers the transition.\n requestAnimationFrame(() => {\n // Force a reflow to ensure the initial styles are applied.\n // This is sometimes necessary in addition to rAF in some browsers/environments.\n if (typeof document !== 'undefined' && document.body) {\n void document.body.offsetHeight;\n }\n requestAnimationFrame(() => {\n this.animationState.set('visible');\n this._cdr.markForCheck();\n });\n });\n }\n\n /** Begin animation of snack bar exit from view. */\n exit(): void {\n const initialState = this.animationState();\n const targetState = this.snackBarConfig.verticalPosition === 'top' ? 'hidden-top' : 'hidden-bottom';\n\n if (initialState === targetState) {\n this._onExit.emit();\n return;\n }\n\n // Mark as leaving to use faster transition timing\n this.leaving.set(true);\n this.animationState.set(targetState);\n this._cdr.markForCheck();\n }\n\n /** Handle end of transition. */\n onTransitionEnd(event: TransitionEvent) {\n if (event.propertyName !== 'transform' && event.propertyName !== 'opacity') {\n return;\n }\n const state = this.animationState();\n if (state === 'visible' && event.propertyName === 'transform') {\n this._onEnter.emit();\n } else if ((state === 'hidden-top' || state === 'hidden-bottom')) {\n if (event.propertyName === 'opacity' || event.propertyName === 'transform') {\n this._onExit.emit();\n }\n }\n }\n\n /** Asserts that no content is already attached to the container. */\n private _assertNotAttached() {\n if (this._portalOutlet().hasAttached()) {\n throw Error('Attempting to attach snack bar content after content has already been attached.');\n }\n }\n\n ngOnDestroy() {\n this._onExit.complete();\n this._onEnter.complete();\n }\n}\n","<div\n class=\"snack-bar-container\"\n [class.visible]=\"animationState() === 'visible'\"\n [class.hidden-top]=\"animationState() === 'hidden-top'\"\n [class.hidden-bottom]=\"animationState() === 'hidden-bottom'\"\n [class.leaving]=\"leaving()\"\n (transitionend)=\"onTransitionEnd($event)\"\n>\n <ng-template cdkPortalOutlet/>\n</div>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { SNACK_BAR_DATA } from '../snack-bar-config';\nimport { SnackBarRef } from '../snack-bar-ref';\nimport { Button } from '@ngstarter-ui/components/button';\n\n@Component({\n selector: 'ngs-simple-snack-bar',\n exportAs: 'ngsSimpleSnackBar',\n templateUrl: './simple-snack-bar.html',\n styleUrl: './simple-snack-bar.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n Button\n ]\n})\nexport class SimpleSnackBar {\n readonly snackBarRef = inject(SnackBarRef);\n readonly data = inject(SNACK_BAR_DATA);\n\n /** Performs the action on the snack bar. */\n action(): void {\n this.snackBarRef.dismiss();\n }\n}\n","<span class=\"simple-snack-bar-message\">{{ data.message }}</span>\n@if (data.action) {\n <div class=\"simple-snack-bar-action\">\n <button ngsButton=\"filled\" (click)=\"action()\">{{ data.action }}</button>\n </div>\n}\n","import {\n Injectable,\n Injector,\n ComponentRef,\n TemplateRef,\n Type,\n inject,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { SnackBarConfig, SNACK_BAR_DATA, SNACK_BAR_CONFIG } from './snack-bar-config';\nimport { SnackBarRef } from './snack-bar-ref';\nimport { SnackBarContainer } from './snack-bar-container/snack-bar-container';\nimport { SimpleSnackBar } from './simple-snack-bar/simple-snack-bar';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SnackBar {\n private _overlay = inject(Overlay);\n private _injector = inject(Injector);\n private _parentSnackBar = inject(SnackBar, { optional: true, skipSelf: true });\n private _defaultConfig = inject(SNACK_BAR_CONFIG, { optional: true }) ?? new SnackBarConfig();\n\n /** Reference to the currently-opened snack bar. */\n private _openedSnackBarRef: SnackBarRef<any> | null = null;\n\n /**\n * Opens a snack bar with a message and an optional action.\n */\n open(message: string, action?: string, config?: SnackBarConfig): SnackBarRef<SimpleSnackBar> {\n const _config = { ...this._defaultConfig, ...config };\n _config.data = { message, action };\n\n return this.openFromComponent(SimpleSnackBar, _config);\n }\n\n /**\n * Opens a snack bar with a custom component.\n */\n openFromComponent<T>(component: Type<T>, config?: SnackBarConfig): SnackBarRef<T> {\n return this._attach(component, config) as SnackBarRef<T>;\n }\n\n /**\n * Opens a snack bar with a custom template.\n */\n openFromTemplate(template: TemplateRef<any>, config?: SnackBarConfig): SnackBarRef<any> {\n return this._attach(template, config);\n }\n\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss(): void {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n\n /**\n * Attaches the snack bar container and the appropriate content.\n */\n private _attach<T>(content: Type<T> | TemplateRef<T>, config?: SnackBarConfig): SnackBarRef<T | any> {\n const _config = { ...this._defaultConfig, ...config };\n const overlayRef = this._createOverlay(_config);\n const container = this._attachContainer(overlayRef, _config);\n const snackBarRef = new SnackBarRef<T | any>(container, overlayRef);\n\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null!, {\n $implicit: _config.data,\n snackBarRef,\n } as any);\n snackBarRef.instance = container.attachTemplatePortal(portal);\n } else {\n const injector = this._createInjector(_config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal(portal);\n snackBarRef.instance = contentRef.instance;\n }\n\n // If there is another snack bar already opened, dismiss it before showing the new one.\n if (this._openedSnackBarRef) {\n const oldSnackBarRef = this._openedSnackBarRef;\n oldSnackBarRef.afterDismissed().subscribe(() => {\n container.enter();\n });\n oldSnackBarRef.dismiss();\n } else {\n container.enter();\n }\n\n this._openedSnackBarRef = snackBarRef;\n snackBarRef.afterDismissed().subscribe(() => {\n if (this._openedSnackBarRef === snackBarRef) {\n this._openedSnackBarRef = null;\n }\n });\n\n if (_config.duration && _config.duration > 0) {\n setTimeout(() => snackBarRef.dismiss(), _config.duration);\n }\n\n return snackBarRef;\n }\n\n /**\n * Creates a new overlay and configures it for the snack bar.\n */\n private _createOverlay(config: SnackBarConfig): OverlayRef {\n const overlayConfig = new OverlayConfig({\n direction: config.direction,\n hasBackdrop: false,\n scrollStrategy: this._overlay.scrollStrategies.noop(),\n positionStrategy: this._overlay.position()\n .global()\n .centerHorizontally()\n .bottom('0'),\n });\n\n // Custom positioning based on config\n const positionStrategy = this._overlay.position().global();\n\n if (config.horizontalPosition === 'start' || config.horizontalPosition === 'left') {\n positionStrategy.left('0');\n } else if (config.horizontalPosition === 'end' || config.horizontalPosition === 'right') {\n positionStrategy.right('0');\n } else {\n positionStrategy.centerHorizontally();\n }\n\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n } else {\n positionStrategy.bottom('0');\n }\n\n overlayConfig.positionStrategy = positionStrategy;\n\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Attaches the snack bar container to the overlay.\n */\n private _attachContainer(overlayRef: OverlayRef, config: SnackBarConfig): SnackBarContainer {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{ provide: SnackBarConfig, useValue: config }],\n });\n\n const containerPortal = new ComponentPortal(SnackBarContainer, config.viewContainerRef, injector);\n const containerRef: ComponentRef<SnackBarContainer> = overlayRef.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n /**\n * Creates an injector to be used inside of a snack bar component.\n */\n private _createInjector<T>(config: SnackBarConfig, snackBarRef: SnackBarRef<T>): Injector {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [\n { provide: SnackBarRef, useValue: snackBarRef },\n { provide: SNACK_BAR_DATA, useValue: config.data },\n ],\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SnackBarConfig"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-snack-bar.mjs","sources":["../../../projects/components/snack-bar/src/snack-bar/snack-bar-config.ts","../../../projects/components/snack-bar/src/snack-bar/snack-bar-ref.ts","../../../projects/components/snack-bar/src/snack-bar/snack-bar-container/snack-bar-container.ts","../../../projects/components/snack-bar/src/snack-bar/snack-bar-container/snack-bar-container.html","../../../projects/components/snack-bar/src/snack-bar/simple-snack-bar/simple-snack-bar.ts","../../../projects/components/snack-bar/src/snack-bar/simple-snack-bar/simple-snack-bar.html","../../../projects/components/snack-bar/src/snack-bar/snack-bar.service.ts","../../../projects/components/snack-bar/ngstarter-ui-components-snack-bar.ts"],"sourcesContent":["import { InjectionToken, ViewContainerRef, Injectable } from '@angular/core';\nimport { AriaLivePoliteness } from '@angular/cdk/a11y';\nimport { Direction } from '@angular/cdk/bidi';\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nexport const SNACK_BAR_DATA = new InjectionToken<any>('SnackBarData');\n\n/** Injection token that can be used to specify default snack bar. */\nexport const SNACK_BAR_CONFIG = new InjectionToken<SnackBarConfig>('SnackBarConfig');\n\n/** Function to provide the snack bar configuration. */\nexport function provideSnackBarConfig(config: SnackBarConfig) {\n return {\n provide: SNACK_BAR_CONFIG,\n useValue: config,\n };\n}\n\nexport type SnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\nexport type SnackBarVerticalPosition = 'top' | 'bottom';\n\nexport class SnackBarConfig<D = any> {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n politeness?: AriaLivePoliteness = 'assertive';\n\n /** Message to be announced by the LiveAnnouncer. */\n announcementMessage?: string = '';\n\n /** The view container that should be used for the snack bar's origin. */\n viewContainerRef?: ViewContainerRef;\n\n /** The duration in milliseconds to wait before automatically closing the snack bar. */\n duration?: number = 0;\n\n /** Extra CSS classes to be added to the snack bar container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the snack bar. */\n direction?: Direction;\n\n /** The horizontal position to place the snack bar. */\n horizontalPosition?: SnackBarHorizontalPosition = 'center';\n\n /** The vertical position to place the snack bar. */\n verticalPosition?: SnackBarVerticalPosition = 'bottom';\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n}\n","import { Observable, Subject } from 'rxjs';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\n\nexport class SnackBarRef<T> {\n /** The instance of the component making up the content of the snack bar. */\n instance!: T;\n\n /** Subject for notifying the user that the snack bar has been dismissed. */\n private readonly _afterDismissed = new Subject<void>();\n\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n constructor(public containerInstance: any, private _overlayRef: OverlayRef) {\n containerInstance._onExit.subscribe(() => {\n this._overlayRef.dispose();\n this._afterDismissed.next();\n this._afterDismissed.complete();\n });\n\n containerInstance._onEnter.subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n }\n\n /** Dismisses the snack bar. */\n dismiss(): void {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed(): Observable<void> {\n return this._afterDismissed.asObservable();\n }\n\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened(): Observable<void> {\n return this._afterOpened.asObservable();\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n OnDestroy,\n signal,\n PLATFORM_ID,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { SnackBarConfig } from '../snack-bar-config';\n\n@Component({\n selector: 'ngs-snack-bar-container',\n exportAs: 'ngsSnackBarContainer',\n templateUrl: './snack-bar-container.html',\n styleUrl: './snack-bar-container.scss',\n standalone: true,\n imports: [CdkPortalOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'snack-bar-container-host'\n }\n})\nexport class SnackBarContainer extends BasePortalOutlet implements OnDestroy {\n readonly _portalOutlet = viewChild.required(CdkPortalOutlet);\n private _cdr = inject(ChangeDetectorRef);\n private _platformId = inject(PLATFORM_ID);\n\n /** State of the snack bar animation. */\n readonly animationState = signal<'void' | 'visible' | 'hidden-top' | 'hidden-bottom'>('void');\n readonly leaving = signal(false);\n\n /** Event emitted when the snack bar exit animation is finished. */\n readonly _onExit = new EventEmitter<void>();\n\n /** Event emitted when the snack bar enter animation is finished. */\n readonly _onEnter = new EventEmitter<void>();\n\n constructor(public snackBarConfig: SnackBarConfig) {\n super();\n if (this.snackBarConfig.verticalPosition === 'top') {\n this.animationState.set('hidden-top');\n } else {\n this.animationState.set('hidden-bottom');\n }\n }\n\n /** Attach a component portal as content to this snack bar container. */\n override attachComponentPortal<T>(portal: ComponentPortal<T>): any {\n this._assertNotAttached();\n return this._portalOutlet().attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this snack bar container. */\n override attachTemplatePortal<C>(portal: TemplatePortal<C>): any {\n this._assertNotAttached();\n return this._portalOutlet().attachTemplatePortal(portal);\n }\n\n /** Begin animation of snack bar entrance into view. */\n enter(): void {\n // Ensure we are not in leaving state\n this.leaving.set(false);\n\n if (!isPlatformBrowser(this._platformId)) {\n this.animationState.set('visible');\n this._cdr.markForCheck();\n return;\n }\n\n // Use requestAnimationFrame to ensure the initial state (hidden-top/bottom)\n // is applied to the DOM before we change it to 'visible'.\n // We use two nested requestAnimationFrames to ensure at least one paint cycle has occurred.\n // The first rAF captures the current state, the second one allows for the state to be applied\n // and then triggers the transition.\n requestAnimationFrame(() => {\n // Force a reflow to ensure the initial styles are applied.\n // This is sometimes necessary in addition to rAF in some browsers/environments.\n if (typeof document !== 'undefined' && document.body) {\n void document.body.offsetHeight;\n }\n requestAnimationFrame(() => {\n this.animationState.set('visible');\n this._cdr.markForCheck();\n });\n });\n }\n\n /** Begin animation of snack bar exit from view. */\n exit(): void {\n const initialState = this.animationState();\n const targetState = this.snackBarConfig.verticalPosition === 'top' ? 'hidden-top' : 'hidden-bottom';\n\n if (initialState === targetState) {\n this._onExit.emit();\n return;\n }\n\n // Mark as leaving to use faster transition timing\n this.leaving.set(true);\n this.animationState.set(targetState);\n this._cdr.markForCheck();\n }\n\n /** Handle end of transition. */\n onTransitionEnd(event: TransitionEvent) {\n if (event.propertyName !== 'transform' && event.propertyName !== 'opacity') {\n return;\n }\n const state = this.animationState();\n if (state === 'visible' && event.propertyName === 'transform') {\n this._onEnter.emit();\n } else if ((state === 'hidden-top' || state === 'hidden-bottom')) {\n if (event.propertyName === 'opacity' || event.propertyName === 'transform') {\n this._onExit.emit();\n }\n }\n }\n\n /** Asserts that no content is already attached to the container. */\n private _assertNotAttached() {\n if (this._portalOutlet().hasAttached()) {\n throw Error('Attempting to attach snack bar content after content has already been attached.');\n }\n }\n\n ngOnDestroy() {\n this._onExit.complete();\n this._onEnter.complete();\n }\n}\n","<div\n class=\"snack-bar-container\"\n [class.visible]=\"animationState() === 'visible'\"\n [class.hidden-top]=\"animationState() === 'hidden-top'\"\n [class.hidden-bottom]=\"animationState() === 'hidden-bottom'\"\n [class.leaving]=\"leaving()\"\n (transitionend)=\"onTransitionEnd($event)\"\n>\n <ng-template cdkPortalOutlet/>\n</div>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { SNACK_BAR_DATA } from '../snack-bar-config';\nimport { SnackBarRef } from '../snack-bar-ref';\nimport { Button } from '@ngstarter-ui/components/button';\n\n@Component({\n selector: 'ngs-simple-snack-bar',\n exportAs: 'ngsSimpleSnackBar',\n templateUrl: './simple-snack-bar.html',\n styleUrl: './simple-snack-bar.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n Button\n ]\n})\nexport class SimpleSnackBar {\n readonly snackBarRef = inject(SnackBarRef);\n readonly data = inject(SNACK_BAR_DATA);\n\n /** Performs the action on the snack bar. */\n action(): void {\n this.snackBarRef.dismiss();\n }\n}\n","<span class=\"simple-snack-bar-message\">{{ data.message }}</span>\n@if (data.action) {\n <div class=\"simple-snack-bar-action\">\n <button ngsButton=\"filled\" (click)=\"action()\">{{ data.action }}</button>\n </div>\n}\n","import {\n Injectable,\n Injector,\n ComponentRef,\n TemplateRef,\n Type,\n inject,\n} from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { SnackBarConfig, SNACK_BAR_DATA, SNACK_BAR_CONFIG } from './snack-bar-config';\nimport { SnackBarRef } from './snack-bar-ref';\nimport { SnackBarContainer } from './snack-bar-container/snack-bar-container';\nimport { SimpleSnackBar } from './simple-snack-bar/simple-snack-bar';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SnackBar {\n private _overlay = inject(Overlay);\n private _injector = inject(Injector);\n private _parentSnackBar = inject(SnackBar, { optional: true, skipSelf: true });\n private _defaultConfig = inject(SNACK_BAR_CONFIG, { optional: true }) ?? new SnackBarConfig();\n\n /** Reference to the currently-opened snack bar. */\n private _openedSnackBarRef: SnackBarRef<any> | null = null;\n\n /**\n * Opens a snack bar with a message and an optional action.\n */\n open(message: string, action?: string, config?: SnackBarConfig): SnackBarRef<SimpleSnackBar> {\n const _config = { ...this._defaultConfig, ...config };\n _config.data = { message, action };\n\n return this.openFromComponent(SimpleSnackBar, _config);\n }\n\n /**\n * Opens a snack bar with a custom component.\n */\n openFromComponent<T>(component: Type<T>, config?: SnackBarConfig): SnackBarRef<T> {\n return this._attach(component, config) as SnackBarRef<T>;\n }\n\n /**\n * Opens a snack bar with a custom template.\n */\n openFromTemplate(template: TemplateRef<any>, config?: SnackBarConfig): SnackBarRef<any> {\n return this._attach(template, config);\n }\n\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss(): void {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n\n /**\n * Attaches the snack bar container and the appropriate content.\n */\n private _attach<T>(content: Type<T> | TemplateRef<T>, config?: SnackBarConfig): SnackBarRef<T | any> {\n const _config = { ...this._defaultConfig, ...config };\n const overlayRef = this._createOverlay(_config);\n const container = this._attachContainer(overlayRef, _config);\n const snackBarRef = new SnackBarRef<T | any>(container, overlayRef);\n\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null!, {\n $implicit: _config.data,\n snackBarRef,\n } as any);\n snackBarRef.instance = container.attachTemplatePortal(portal);\n } else {\n const injector = this._createInjector(_config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal(portal);\n snackBarRef.instance = contentRef.instance;\n }\n\n // If there is another snack bar already opened, dismiss it before showing the new one.\n if (this._openedSnackBarRef) {\n const oldSnackBarRef = this._openedSnackBarRef;\n oldSnackBarRef.afterDismissed().subscribe(() => {\n container.enter();\n });\n oldSnackBarRef.dismiss();\n } else {\n container.enter();\n }\n\n this._openedSnackBarRef = snackBarRef;\n snackBarRef.afterDismissed().subscribe(() => {\n if (this._openedSnackBarRef === snackBarRef) {\n this._openedSnackBarRef = null;\n }\n });\n\n if (_config.duration && _config.duration > 0) {\n setTimeout(() => snackBarRef.dismiss(), _config.duration);\n }\n\n return snackBarRef;\n }\n\n /**\n * Creates a new overlay and configures it for the snack bar.\n */\n private _createOverlay(config: SnackBarConfig): OverlayRef {\n const overlayConfig = new OverlayConfig({\n direction: config.direction,\n hasBackdrop: false,\n scrollStrategy: this._overlay.scrollStrategies.noop(),\n positionStrategy: this._overlay.position()\n .global()\n .centerHorizontally()\n .bottom('0'),\n });\n\n // Custom positioning based on config\n const positionStrategy = this._overlay.position().global();\n\n if (config.horizontalPosition === 'start' || config.horizontalPosition === 'left') {\n positionStrategy.left('0');\n } else if (config.horizontalPosition === 'end' || config.horizontalPosition === 'right') {\n positionStrategy.right('0');\n } else {\n positionStrategy.centerHorizontally();\n }\n\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n } else {\n positionStrategy.bottom('0');\n }\n\n overlayConfig.positionStrategy = positionStrategy;\n\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Attaches the snack bar container to the overlay.\n */\n private _attachContainer(overlayRef: OverlayRef, config: SnackBarConfig): SnackBarContainer {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{ provide: SnackBarConfig, useValue: config }],\n });\n\n const containerPortal = new ComponentPortal(SnackBarContainer, config.viewContainerRef, injector);\n const containerRef: ComponentRef<SnackBarContainer> = overlayRef.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n /**\n * Creates an injector to be used inside of a snack bar component.\n */\n private _createInjector<T>(config: SnackBarConfig, snackBarRef: SnackBarRef<T>): Injector {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [\n { provide: SnackBarRef, useValue: snackBarRef },\n { provide: SNACK_BAR_DATA, useValue: config.data },\n ],\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SnackBarConfig"],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ class ProgressSpinner {
|
|
|
32
32
|
return (this._actualStrokeWidth() / this.diameter()) * 100;
|
|
33
33
|
}
|
|
34
34
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ProgressSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
35
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: ProgressSpinner, isStandalone: true, selector: "ngs-progress-spinner", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, diameter: { classPropertyName: "diameter", publicName: "diameter", isSignal: true, isRequired: false, transformFunction: null }, strokeWidth: { classPropertyName: "strokeWidth", publicName: "strokeWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar", "tabindex": "-1" }, properties: { "class.mdc-circular-progress--indeterminate": "mode() === \"indeterminate\"", "class.ngs-progress-spinner-indeterminate": "mode() === \"indeterminate\"", "class.ngs-progress-spinner-determinate": "mode() === \"determinate\"", "style.width.px": "diameter()", "style.height.px": "diameter()", "style.--ngs-progress-spinner-size": "diameter() + \"px\"", "style.--ngs-progress-spinner-active-indicator-width": "diameter() + \"px\"", "class": "\"ngs-\" + color()", "attr.aria-valuemin": "0", "attr.aria-valuemax": "100", "attr.aria-valuenow": "mode() === \"determinate\" ? value() : null", "attr.mode": "mode()" }, classAttribute: "ngs-progress-spinner" }, exportAs: ["ngsProgressSpinner"], ngImport: i0, template: "<ng-template #circle>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"ngs-circular-progress__indeterminate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeCircumference() / 2\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</ng-template>\n\n<div class=\"ngs-circular-progress__determinate-container\" aria-hidden=\"true\" #determinateSpinner>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"ngs-circular-progress__determinate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"ngs-circular-progress__determinate-circle\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</div>\n<div class=\"ngs-circular-progress__indeterminate-container\" aria-hidden=\"true\">\n <div class=\"ngs-circular-progress__spinner-layer\">\n <div class=\"ngs-circular-progress__circle-clipper ngs-circular-progress__circle-left\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"ngs-circular-progress__gap-patch\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"ngs-circular-progress__circle-clipper ngs-circular-progress__circle-right\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n </div>\n</div>\n", styles: [":host{--ngs-progress-spinner-color: var(--color-primary);--ngs-progress-spinner-animation-multiplier: 1}:host.ngs-primary{--ngs-progress-spinner-color: var(--color-primary)}:host.ngs-accent{--ngs-progress-spinner-color: var(--color-secondary)}:host.ngs-warn{--ngs-progress-spinner-color: var(--color-
|
|
35
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: ProgressSpinner, isStandalone: true, selector: "ngs-progress-spinner", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, diameter: { classPropertyName: "diameter", publicName: "diameter", isSignal: true, isRequired: false, transformFunction: null }, strokeWidth: { classPropertyName: "strokeWidth", publicName: "strokeWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar", "tabindex": "-1" }, properties: { "class.mdc-circular-progress--indeterminate": "mode() === \"indeterminate\"", "class.ngs-progress-spinner-indeterminate": "mode() === \"indeterminate\"", "class.ngs-progress-spinner-determinate": "mode() === \"determinate\"", "style.width.px": "diameter()", "style.height.px": "diameter()", "style.--ngs-progress-spinner-size": "diameter() + \"px\"", "style.--ngs-progress-spinner-active-indicator-width": "diameter() + \"px\"", "class": "\"ngs-\" + color()", "attr.aria-valuemin": "0", "attr.aria-valuemax": "100", "attr.aria-valuenow": "mode() === \"determinate\" ? value() : null", "attr.mode": "mode()" }, classAttribute: "ngs-progress-spinner" }, exportAs: ["ngsProgressSpinner"], ngImport: i0, template: "<ng-template #circle>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"ngs-circular-progress__indeterminate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeCircumference() / 2\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</ng-template>\n\n<div class=\"ngs-circular-progress__determinate-container\" aria-hidden=\"true\" #determinateSpinner>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"ngs-circular-progress__determinate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"ngs-circular-progress__determinate-circle\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</div>\n<div class=\"ngs-circular-progress__indeterminate-container\" aria-hidden=\"true\">\n <div class=\"ngs-circular-progress__spinner-layer\">\n <div class=\"ngs-circular-progress__circle-clipper ngs-circular-progress__circle-left\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"ngs-circular-progress__gap-patch\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"ngs-circular-progress__circle-clipper ngs-circular-progress__circle-right\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n </div>\n</div>\n", styles: [":host{--ngs-progress-spinner-color: var(--ngs-color-primary);--ngs-progress-spinner-animation-multiplier: 1}:host.ngs-primary{--ngs-progress-spinner-color: var(--ngs-color-primary)}:host.ngs-accent{--ngs-progress-spinner-color: var(--ngs-color-secondary)}:host.ngs-warn{--ngs-progress-spinner-color: var(--ngs-color-danger)}:host{display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity .25s cubic-bezier(.4,0,.6,1)}:host circle{stroke-width:var(--ngs-progress-spinner-active-indicator-width, 4px);fill:#0000;stroke:var(--ngs-progress-spinner-color)}:host.ngs-progress-spinner-determinate .ngs-circular-progress__determinate-container{opacity:1}:host.ngs-progress-spinner-indeterminate .ngs-circular-progress__indeterminate-container{opacity:1;animation:ngs-circular-progress-container-rotate calc(1.5682352941176s * var(--ngs-progress-spinner-animation-multiplier)) linear infinite}:host .ngs-circular-progress__determinate-container,:host .ngs-circular-progress__indeterminate-circle-graphic,:host .ngs-circular-progress__indeterminate-container,:host .ngs-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}:host .ngs-circular-progress__determinate-container{transform:rotate(-90deg);opacity:0}:host .ngs-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}:host .ngs-circular-progress__determinate-circle{transition:stroke-dashoffset .5s cubic-bezier(0,0,.2,1)}:host .ngs-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}:host .ngs-circular-progress__gap-patch .ngs-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}:host .ngs-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}:host .ngs-circular-progress__circle-clipper .ngs-circular-progress__indeterminate-circle-graphic{width:200%}:host .ngs-circular-progress__circle-right .ngs-circular-progress__indeterminate-circle-graphic{left:-100%}:host .ngs-circular-progress__spinner-layer{animation:ngs-circular-progress-spinner-layer-rotate calc(5332ms * var(--ngs-progress-spinner-animation-multiplier)) cubic-bezier(.4,0,.2,1) infinite both}:host .ngs-circular-progress__circle-left .ngs-circular-progress__indeterminate-circle-graphic{animation:ngs-circular-progress-left-spin calc(1333ms * var(--ngs-progress-spinner-animation-multiplier)) cubic-bezier(.4,0,.2,1) infinite both}:host .ngs-circular-progress__circle-right .ngs-circular-progress__indeterminate-circle-graphic{animation:ngs-circular-progress-right-spin calc(1333ms * var(--ngs-progress-spinner-animation-multiplier)) cubic-bezier(.4,0,.2,1) infinite both}@keyframes ngs-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes ngs-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@keyframes ngs-circular-progress-left-spin{0%{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes ngs-circular-progress-right-spin{0%{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
36
36
|
}
|
|
37
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ProgressSpinner, decorators: [{
|
|
38
38
|
type: Component,
|
|
@@ -52,7 +52,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
52
52
|
'[attr.aria-valuemax]': '100',
|
|
53
53
|
'[attr.aria-valuenow]': 'mode() === "determinate" ? value() : null',
|
|
54
54
|
'[attr.mode]': 'mode()',
|
|
55
|
-
}, standalone: true, imports: [NgTemplateOutlet], template: "<ng-template #circle>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"ngs-circular-progress__indeterminate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeCircumference() / 2\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</ng-template>\n\n<div class=\"ngs-circular-progress__determinate-container\" aria-hidden=\"true\" #determinateSpinner>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"ngs-circular-progress__determinate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"ngs-circular-progress__determinate-circle\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</div>\n<div class=\"ngs-circular-progress__indeterminate-container\" aria-hidden=\"true\">\n <div class=\"ngs-circular-progress__spinner-layer\">\n <div class=\"ngs-circular-progress__circle-clipper ngs-circular-progress__circle-left\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"ngs-circular-progress__gap-patch\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"ngs-circular-progress__circle-clipper ngs-circular-progress__circle-right\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n </div>\n</div>\n", styles: [":host{--ngs-progress-spinner-color: var(--color-primary);--ngs-progress-spinner-animation-multiplier: 1}:host.ngs-primary{--ngs-progress-spinner-color: var(--color-primary)}:host.ngs-accent{--ngs-progress-spinner-color: var(--color-secondary)}:host.ngs-warn{--ngs-progress-spinner-color: var(--color-
|
|
55
|
+
}, standalone: true, imports: [NgTemplateOutlet], template: "<ng-template #circle>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"ngs-circular-progress__indeterminate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeCircumference() / 2\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</ng-template>\n\n<div class=\"ngs-circular-progress__determinate-container\" aria-hidden=\"true\" #determinateSpinner>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"ngs-circular-progress__determinate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"ngs-circular-progress__determinate-circle\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</div>\n<div class=\"ngs-circular-progress__indeterminate-container\" aria-hidden=\"true\">\n <div class=\"ngs-circular-progress__spinner-layer\">\n <div class=\"ngs-circular-progress__circle-clipper ngs-circular-progress__circle-left\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"ngs-circular-progress__gap-patch\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"ngs-circular-progress__circle-clipper ngs-circular-progress__circle-right\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n </div>\n</div>\n", styles: [":host{--ngs-progress-spinner-color: var(--ngs-color-primary);--ngs-progress-spinner-animation-multiplier: 1}:host.ngs-primary{--ngs-progress-spinner-color: var(--ngs-color-primary)}:host.ngs-accent{--ngs-progress-spinner-color: var(--ngs-color-secondary)}:host.ngs-warn{--ngs-progress-spinner-color: var(--ngs-color-danger)}:host{display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity .25s cubic-bezier(.4,0,.6,1)}:host circle{stroke-width:var(--ngs-progress-spinner-active-indicator-width, 4px);fill:#0000;stroke:var(--ngs-progress-spinner-color)}:host.ngs-progress-spinner-determinate .ngs-circular-progress__determinate-container{opacity:1}:host.ngs-progress-spinner-indeterminate .ngs-circular-progress__indeterminate-container{opacity:1;animation:ngs-circular-progress-container-rotate calc(1.5682352941176s * var(--ngs-progress-spinner-animation-multiplier)) linear infinite}:host .ngs-circular-progress__determinate-container,:host .ngs-circular-progress__indeterminate-circle-graphic,:host .ngs-circular-progress__indeterminate-container,:host .ngs-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}:host .ngs-circular-progress__determinate-container{transform:rotate(-90deg);opacity:0}:host .ngs-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}:host .ngs-circular-progress__determinate-circle{transition:stroke-dashoffset .5s cubic-bezier(0,0,.2,1)}:host .ngs-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}:host .ngs-circular-progress__gap-patch .ngs-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}:host .ngs-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}:host .ngs-circular-progress__circle-clipper .ngs-circular-progress__indeterminate-circle-graphic{width:200%}:host .ngs-circular-progress__circle-right .ngs-circular-progress__indeterminate-circle-graphic{left:-100%}:host .ngs-circular-progress__spinner-layer{animation:ngs-circular-progress-spinner-layer-rotate calc(5332ms * var(--ngs-progress-spinner-animation-multiplier)) cubic-bezier(.4,0,.2,1) infinite both}:host .ngs-circular-progress__circle-left .ngs-circular-progress__indeterminate-circle-graphic{animation:ngs-circular-progress-left-spin calc(1333ms * var(--ngs-progress-spinner-animation-multiplier)) cubic-bezier(.4,0,.2,1) infinite both}:host .ngs-circular-progress__circle-right .ngs-circular-progress__indeterminate-circle-graphic{animation:ngs-circular-progress-right-spin calc(1333ms * var(--ngs-progress-spinner-animation-multiplier)) cubic-bezier(.4,0,.2,1) infinite both}@keyframes ngs-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes ngs-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@keyframes ngs-circular-progress-left-spin{0%{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes ngs-circular-progress-right-spin{0%{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
56
56
|
}], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], diameter: [{ type: i0.Input, args: [{ isSignal: true, alias: "diameter", required: false }] }], strokeWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "strokeWidth", required: false }] }] } });
|
|
57
57
|
class ProgressSpinnerModule {
|
|
58
58
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ProgressSpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-spinner.mjs","sources":["../../../projects/components/spinner/src/spinner/progress-spinner.ts","../../../projects/components/spinner/src/spinner/progress-spinner.html","../../../projects/components/spinner/ngstarter-ui-components-spinner.ts"],"sourcesContent":["import {\n Component,\n computed,\n ElementRef,\n inject,\n input,\n NgModule,\n numberAttribute,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport type SpinnerMode = 'determinate' | 'indeterminate';\n\nconst BASE_SIZE = 100;\nconst BASE_STROKE_WIDTH = 10;\n\n@Component({\n selector: 'ngs-progress-spinner',\n exportAs: 'ngsProgressSpinner',\n host: {\n 'role': 'progressbar',\n 'class': 'ngs-progress-spinner',\n 'tabindex': '-1',\n '[class.mdc-circular-progress--indeterminate]': 'mode() === \"indeterminate\"',\n '[class.ngs-progress-spinner-indeterminate]': 'mode() === \"indeterminate\"',\n '[class.ngs-progress-spinner-determinate]': 'mode() === \"determinate\"',\n '[style.width.px]': 'diameter()',\n '[style.height.px]': 'diameter()',\n '[style.--ngs-progress-spinner-size]': 'diameter() + \"px\"',\n '[style.--ngs-progress-spinner-active-indicator-width]': 'diameter() + \"px\"',\n '[class]': '\"ngs-\" + color()',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': '100',\n '[attr.aria-valuenow]': 'mode() === \"determinate\" ? value() : null',\n '[attr.mode]': 'mode()',\n },\n templateUrl: './progress-spinner.html',\n styleUrl: './progress-spinner.scss',\n standalone: true,\n imports: [NgTemplateOutlet]\n})\nexport class ProgressSpinner {\n readonly color = input<string>('primary');\n readonly mode = input<SpinnerMode>('indeterminate');\n readonly value = input(0, { transform: numberAttribute });\n readonly diameter = input(100, { transform: numberAttribute });\n readonly strokeWidth = input<number | undefined, unknown>(undefined, { transform: numberAttribute });\n\n public readonly _elementRef = inject(ElementRef);\n\n readonly _actualStrokeWidth = computed(() => this.strokeWidth() || this.diameter() / 10);\n\n _circleRadius() {\n return (this.diameter() - BASE_STROKE_WIDTH) / 2;\n }\n\n _viewBox() {\n const viewBox = this._circleRadius() * 2 + this._actualStrokeWidth();\n return `0 0 ${viewBox} ${viewBox}`;\n }\n\n _strokeCircumference() {\n return 2 * Math.PI * this._circleRadius();\n }\n\n _strokeDashOffset() {\n if (this.mode() === 'determinate') {\n return (this._strokeCircumference() * (100 - this.value())) / 100;\n }\n return null;\n }\n\n _circleStrokeWidth() {\n return (this._actualStrokeWidth() / this.diameter()) * 100;\n }\n}\n\n@NgModule({\n imports: [ProgressSpinner],\n exports: [ProgressSpinner],\n})\nexport class ProgressSpinnerModule {}\n","<ng-template #circle>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"ngs-circular-progress__indeterminate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeCircumference() / 2\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</ng-template>\n\n<div class=\"ngs-circular-progress__determinate-container\" aria-hidden=\"true\" #determinateSpinner>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"ngs-circular-progress__determinate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"ngs-circular-progress__determinate-circle\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</div>\n<div class=\"ngs-circular-progress__indeterminate-container\" aria-hidden=\"true\">\n <div class=\"ngs-circular-progress__spinner-layer\">\n <div class=\"ngs-circular-progress__circle-clipper ngs-circular-progress__circle-left\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"ngs-circular-progress__gap-patch\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"ngs-circular-progress__circle-clipper ngs-circular-progress__circle-right\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n </div>\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-spinner.mjs","sources":["../../../projects/components/spinner/src/spinner/progress-spinner.ts","../../../projects/components/spinner/src/spinner/progress-spinner.html","../../../projects/components/spinner/ngstarter-ui-components-spinner.ts"],"sourcesContent":["import {\n Component,\n computed,\n ElementRef,\n inject,\n input,\n NgModule,\n numberAttribute,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport type SpinnerMode = 'determinate' | 'indeterminate';\n\nconst BASE_SIZE = 100;\nconst BASE_STROKE_WIDTH = 10;\n\n@Component({\n selector: 'ngs-progress-spinner',\n exportAs: 'ngsProgressSpinner',\n host: {\n 'role': 'progressbar',\n 'class': 'ngs-progress-spinner',\n 'tabindex': '-1',\n '[class.mdc-circular-progress--indeterminate]': 'mode() === \"indeterminate\"',\n '[class.ngs-progress-spinner-indeterminate]': 'mode() === \"indeterminate\"',\n '[class.ngs-progress-spinner-determinate]': 'mode() === \"determinate\"',\n '[style.width.px]': 'diameter()',\n '[style.height.px]': 'diameter()',\n '[style.--ngs-progress-spinner-size]': 'diameter() + \"px\"',\n '[style.--ngs-progress-spinner-active-indicator-width]': 'diameter() + \"px\"',\n '[class]': '\"ngs-\" + color()',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': '100',\n '[attr.aria-valuenow]': 'mode() === \"determinate\" ? value() : null',\n '[attr.mode]': 'mode()',\n },\n templateUrl: './progress-spinner.html',\n styleUrl: './progress-spinner.scss',\n standalone: true,\n imports: [NgTemplateOutlet]\n})\nexport class ProgressSpinner {\n readonly color = input<string>('primary');\n readonly mode = input<SpinnerMode>('indeterminate');\n readonly value = input(0, { transform: numberAttribute });\n readonly diameter = input(100, { transform: numberAttribute });\n readonly strokeWidth = input<number | undefined, unknown>(undefined, { transform: numberAttribute });\n\n public readonly _elementRef = inject(ElementRef);\n\n readonly _actualStrokeWidth = computed(() => this.strokeWidth() || this.diameter() / 10);\n\n _circleRadius() {\n return (this.diameter() - BASE_STROKE_WIDTH) / 2;\n }\n\n _viewBox() {\n const viewBox = this._circleRadius() * 2 + this._actualStrokeWidth();\n return `0 0 ${viewBox} ${viewBox}`;\n }\n\n _strokeCircumference() {\n return 2 * Math.PI * this._circleRadius();\n }\n\n _strokeDashOffset() {\n if (this.mode() === 'determinate') {\n return (this._strokeCircumference() * (100 - this.value())) / 100;\n }\n return null;\n }\n\n _circleStrokeWidth() {\n return (this._actualStrokeWidth() / this.diameter()) * 100;\n }\n}\n\n@NgModule({\n imports: [ProgressSpinner],\n exports: [ProgressSpinner],\n})\nexport class ProgressSpinnerModule {}\n","<ng-template #circle>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"ngs-circular-progress__indeterminate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeCircumference() / 2\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</ng-template>\n\n<div class=\"ngs-circular-progress__determinate-container\" aria-hidden=\"true\" #determinateSpinner>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"ngs-circular-progress__determinate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"ngs-circular-progress__determinate-circle\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</div>\n<div class=\"ngs-circular-progress__indeterminate-container\" aria-hidden=\"true\">\n <div class=\"ngs-circular-progress__spinner-layer\">\n <div class=\"ngs-circular-progress__circle-clipper ngs-circular-progress__circle-left\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"ngs-circular-progress__gap-patch\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n <div class=\"ngs-circular-progress__circle-clipper ngs-circular-progress__circle-right\">\n <ng-container [ngTemplateOutlet]=\"circle\" />\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|