@ptsecurity/mosaic 12.1.0 → 12.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_theming.scss +14 -1
- package/_visual.scss +9 -6
- package/bundles/ptsecurity-mosaic-autocomplete.umd.js +18 -20
- package/bundles/ptsecurity-mosaic-autocomplete.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-button-toggle.umd.js +15 -17
- package/bundles/ptsecurity-mosaic-button-toggle.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-button.umd.js +17 -19
- package/bundles/ptsecurity-mosaic-button.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-card.umd.js +11 -13
- package/bundles/ptsecurity-mosaic-card.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-checkbox.umd.js +14 -16
- package/bundles/ptsecurity-mosaic-checkbox.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-core.umd.js +122 -166
- package/bundles/ptsecurity-mosaic-core.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-datepicker.umd.js +45 -47
- package/bundles/ptsecurity-mosaic-datepicker.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-design-tokens.umd.js +3 -3
- package/bundles/ptsecurity-mosaic-divider.umd.js +11 -13
- package/bundles/ptsecurity-mosaic-divider.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-dropdown.umd.js +20 -22
- package/bundles/ptsecurity-mosaic-dropdown.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-form-field.umd.js +737 -738
- package/bundles/ptsecurity-mosaic-form-field.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-icon.umd.js +14 -16
- package/bundles/ptsecurity-mosaic-icon.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-input.umd.js +45 -33
- package/bundles/ptsecurity-mosaic-input.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-link.umd.js +11 -13
- package/bundles/ptsecurity-mosaic-link.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-list.umd.js +31 -25
- package/bundles/ptsecurity-mosaic-list.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-modal.umd.js +40 -39
- package/bundles/ptsecurity-mosaic-modal.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-navbar.umd.js +39 -41
- package/bundles/ptsecurity-mosaic-navbar.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-popover.umd.js +204 -29
- package/bundles/ptsecurity-mosaic-popover.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-progress-bar.umd.js +12 -14
- package/bundles/ptsecurity-mosaic-progress-bar.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-progress-spinner.umd.js +12 -14
- package/bundles/ptsecurity-mosaic-progress-spinner.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-radio.umd.js +14 -16
- package/bundles/ptsecurity-mosaic-radio.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-select.umd.js +22 -24
- package/bundles/ptsecurity-mosaic-select.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-sidebar.umd.js +17 -19
- package/bundles/ptsecurity-mosaic-sidebar.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-sidepanel.umd.js +62 -58
- package/bundles/ptsecurity-mosaic-sidepanel.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-splitter.umd.js +17 -19
- package/bundles/ptsecurity-mosaic-splitter.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-table.umd.js +11 -13
- package/bundles/ptsecurity-mosaic-table.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tabs.umd.js +56 -58
- package/bundles/ptsecurity-mosaic-tabs.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tags.umd.js +27 -29
- package/bundles/ptsecurity-mosaic-tags.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-textarea.umd.js +12 -14
- package/bundles/ptsecurity-mosaic-textarea.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-timepicker.umd.js +13 -15
- package/bundles/ptsecurity-mosaic-timepicker.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-toggle.umd.js +11 -13
- package/bundles/ptsecurity-mosaic-toggle.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tooltip.umd.js +72 -23
- package/bundles/ptsecurity-mosaic-tooltip.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tree-select.umd.js +16 -18
- package/bundles/ptsecurity-mosaic-tree-select.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tree.umd.js +44 -52
- package/bundles/ptsecurity-mosaic-tree.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic.umd.js +2 -2
- package/core/pop-up/pop-up-trigger.d.ts +9 -12
- package/esm2015/autocomplete/autocomplete-origin.directive.js +4 -4
- package/esm2015/autocomplete/autocomplete-trigger.directive.js +4 -4
- package/esm2015/autocomplete/autocomplete.component.js +4 -4
- package/esm2015/autocomplete/autocomplete.module.js +5 -5
- package/esm2015/button/button.component.js +10 -10
- package/esm2015/button/button.module.js +5 -5
- package/esm2015/button-toggle/button-toggle.component.js +7 -7
- package/esm2015/button-toggle/button-toggle.module.js +5 -5
- package/esm2015/card/card.component.js +4 -4
- package/esm2015/card/card.module.js +5 -5
- package/esm2015/checkbox/checkbox-module.js +5 -5
- package/esm2015/checkbox/checkbox-required-validator.js +4 -4
- package/esm2015/checkbox/checkbox.js +4 -4
- package/esm2015/core/common-behaviors/common-module.js +5 -5
- package/esm2015/core/error/error-options.js +7 -7
- package/esm2015/core/formatters/date/formatter.js +6 -5
- package/esm2015/core/formatters/index.js +5 -5
- package/esm2015/core/formatters/number/formatter.js +5 -5
- package/esm2015/core/forms/forms-module.js +5 -5
- package/esm2015/core/forms/forms.directive.js +7 -7
- package/esm2015/core/highlight/highlight.pipe.js +4 -4
- package/esm2015/core/highlight/index.js +5 -5
- package/esm2015/core/line/line.js +8 -8
- package/esm2015/core/option/action.js +4 -4
- package/esm2015/core/option/optgroup.js +4 -4
- package/esm2015/core/option/option-module.js +5 -5
- package/esm2015/core/option/option.js +4 -4
- package/esm2015/core/pop-up/pop-up-trigger.js +32 -64
- package/esm2015/core/pop-up/pop-up.js +4 -4
- package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +4 -4
- package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.module.js +5 -5
- package/esm2015/core/services/measure-scrollbar.service.js +4 -4
- package/esm2015/datepicker/calendar-body.component.js +4 -4
- package/esm2015/datepicker/calendar.component.js +7 -7
- package/esm2015/datepicker/datepicker-input.directive.js +4 -4
- package/esm2015/datepicker/datepicker-intl.js +4 -4
- package/esm2015/datepicker/datepicker-module.js +5 -5
- package/esm2015/datepicker/datepicker-toggle.component.js +7 -7
- package/esm2015/datepicker/datepicker.component.js +7 -7
- package/esm2015/datepicker/month-view.component.js +4 -4
- package/esm2015/datepicker/multi-year-view.component.js +4 -4
- package/esm2015/datepicker/year-view.component.js +4 -4
- package/esm2015/divider/divider.component.js +4 -4
- package/esm2015/divider/divider.module.js +5 -5
- package/esm2015/dropdown/dropdown-content.directive.js +4 -4
- package/esm2015/dropdown/dropdown-item.component.js +4 -4
- package/esm2015/dropdown/dropdown-trigger.directive.js +4 -4
- package/esm2015/dropdown/dropdown.component.js +4 -4
- package/esm2015/dropdown/dropdown.module.js +5 -5
- package/esm2015/form-field/cleaner.js +9 -5
- package/esm2015/form-field/form-field.js +7 -7
- package/esm2015/form-field/form-field.module.js +5 -5
- package/esm2015/form-field/hint.js +4 -4
- package/esm2015/form-field/prefix.js +4 -4
- package/esm2015/form-field/stepper.js +4 -4
- package/esm2015/form-field/suffix.js +4 -4
- package/esm2015/icon/icon.component.js +7 -7
- package/esm2015/icon/icon.module.js +5 -5
- package/esm2015/input/input-number-validators.js +28 -14
- package/esm2015/input/input-number.js +4 -4
- package/esm2015/input/input.js +7 -7
- package/esm2015/input/input.module.js +5 -5
- package/esm2015/link/link.component.js +4 -4
- package/esm2015/link/link.module.js +5 -5
- package/esm2015/list/list-selection.component.js +18 -10
- package/esm2015/list/list.component.js +7 -7
- package/esm2015/list/list.module.js +5 -5
- package/esm2015/modal/css-unit.pipe.js +4 -4
- package/esm2015/modal/modal-control.service.js +4 -4
- package/esm2015/modal/modal.component.js +6 -4
- package/esm2015/modal/modal.directive.js +13 -13
- package/esm2015/modal/modal.module.js +9 -7
- package/esm2015/modal/modal.service.js +4 -4
- package/esm2015/navbar/navbar-item.component.js +19 -19
- package/esm2015/navbar/navbar.component.js +7 -7
- package/esm2015/navbar/navbar.module.js +5 -5
- package/esm2015/navbar/vertical-navbar.component.js +7 -7
- package/esm2015/popover/popover-confirm.component.js +115 -0
- package/esm2015/popover/popover.component.js +52 -15
- package/esm2015/popover/popover.module.js +12 -10
- package/esm2015/popover/public-api.js +2 -1
- package/esm2015/progress-bar/progress-bar.component.js +4 -4
- package/esm2015/progress-bar/progress-bar.module.js +5 -5
- package/esm2015/progress-spinner/progress-spinner.component.js +4 -4
- package/esm2015/progress-spinner/progress-spinner.module.js +5 -5
- package/esm2015/radio/radio.component.js +7 -7
- package/esm2015/radio/radio.module.js +5 -5
- package/esm2015/select/select.component.js +14 -14
- package/esm2015/select/select.module.js +5 -5
- package/esm2015/sidebar/sidebar.component.js +10 -10
- package/esm2015/sidebar/sidebar.module.js +5 -5
- package/esm2015/sidepanel/sidepanel-container.component.js +14 -13
- package/esm2015/sidepanel/sidepanel-directives.js +22 -18
- package/esm2015/sidepanel/sidepanel.module.js +12 -8
- package/esm2015/sidepanel/sidepanel.service.js +6 -5
- package/esm2015/splitter/splitter.component.js +10 -10
- package/esm2015/splitter/splitter.module.js +5 -5
- package/esm2015/table/table.component.js +4 -4
- package/esm2015/table/table.module.js +5 -5
- package/esm2015/tabs/paginated-tab-header.js +4 -4
- package/esm2015/tabs/tab-body.component.js +7 -7
- package/esm2015/tabs/tab-content.directive.js +4 -4
- package/esm2015/tabs/tab-group.component.js +19 -19
- package/esm2015/tabs/tab-header.component.js +4 -4
- package/esm2015/tabs/tab-label-wrapper.directive.js +4 -4
- package/esm2015/tabs/tab-label.directive.js +4 -4
- package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +7 -7
- package/esm2015/tabs/tab.component.js +4 -4
- package/esm2015/tabs/tabs.module.js +5 -5
- package/esm2015/tags/tag-input.js +4 -4
- package/esm2015/tags/tag-list.component.js +4 -4
- package/esm2015/tags/tag.component.js +13 -13
- package/esm2015/tags/tag.module.js +5 -5
- package/esm2015/textarea/textarea.component.js +4 -4
- package/esm2015/textarea/textarea.module.js +5 -5
- package/esm2015/timepicker/timepicker.directive.js +6 -6
- package/esm2015/timepicker/timepicker.module.js +5 -5
- package/esm2015/toggle/toggle.component.js +4 -4
- package/esm2015/toggle/toggle.module.js +5 -5
- package/esm2015/tooltip/tooltip.component.js +55 -16
- package/esm2015/tooltip/tooltip.module.js +5 -5
- package/esm2015/tree/node.js +4 -4
- package/esm2015/tree/outlet.js +4 -4
- package/esm2015/tree/padding.directive.js +5 -8
- package/esm2015/tree/toggle.js +10 -10
- package/esm2015/tree/tree-base.js +7 -7
- package/esm2015/tree/tree-option.component.js +5 -5
- package/esm2015/tree/tree-selection.component.js +4 -4
- package/esm2015/tree/tree.js +4 -4
- package/esm2015/tree/tree.module.js +5 -8
- package/esm2015/tree-select/tree-select.component.js +8 -8
- package/esm2015/tree-select/tree-select.module.js +5 -5
- package/fesm2015/ptsecurity-mosaic-autocomplete.js +13 -13
- package/fesm2015/ptsecurity-mosaic-autocomplete.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-button-toggle.js +10 -10
- package/fesm2015/ptsecurity-mosaic-button-toggle.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-button.js +13 -13
- package/fesm2015/ptsecurity-mosaic-button.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-card.js +7 -7
- package/fesm2015/ptsecurity-mosaic-card.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-checkbox.js +10 -10
- package/fesm2015/ptsecurity-mosaic-checkbox.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-core.js +102 -134
- package/fesm2015/ptsecurity-mosaic-core.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-datepicker.js +40 -40
- package/fesm2015/ptsecurity-mosaic-datepicker.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-divider.js +7 -7
- package/fesm2015/ptsecurity-mosaic-divider.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-dropdown.js +16 -16
- package/fesm2015/ptsecurity-mosaic-dropdown.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-form-field.js +30 -27
- package/fesm2015/ptsecurity-mosaic-form-field.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-icon.js +10 -10
- package/fesm2015/ptsecurity-mosaic-icon.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-input.js +40 -26
- package/fesm2015/ptsecurity-mosaic-input.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-link.js +7 -7
- package/fesm2015/ptsecurity-mosaic-link.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-list.js +27 -19
- package/fesm2015/ptsecurity-mosaic-list.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-modal.js +34 -30
- package/fesm2015/ptsecurity-mosaic-modal.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-navbar.js +34 -34
- package/fesm2015/ptsecurity-mosaic-navbar.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-popover.js +167 -25
- package/fesm2015/ptsecurity-mosaic-popover.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-progress-bar.js +7 -7
- package/fesm2015/ptsecurity-mosaic-progress-bar.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-progress-spinner.js +7 -7
- package/fesm2015/ptsecurity-mosaic-progress-spinner.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-radio.js +10 -10
- package/fesm2015/ptsecurity-mosaic-radio.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-select.js +17 -17
- package/fesm2015/ptsecurity-mosaic-select.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-sidebar.js +13 -13
- package/fesm2015/ptsecurity-mosaic-sidebar.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-sidepanel.js +50 -41
- package/fesm2015/ptsecurity-mosaic-sidepanel.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-splitter.js +13 -13
- package/fesm2015/ptsecurity-mosaic-splitter.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-table.js +7 -7
- package/fesm2015/ptsecurity-mosaic-table.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tabs.js +52 -52
- package/fesm2015/ptsecurity-mosaic-tabs.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tags.js +22 -22
- package/fesm2015/ptsecurity-mosaic-tags.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-textarea.js +7 -7
- package/fesm2015/ptsecurity-mosaic-textarea.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-timepicker.js +9 -9
- package/fesm2015/ptsecurity-mosaic-timepicker.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-toggle.js +7 -7
- package/fesm2015/ptsecurity-mosaic-toggle.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tooltip.js +57 -18
- package/fesm2015/ptsecurity-mosaic-tooltip.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tree-select.js +11 -11
- package/fesm2015/ptsecurity-mosaic-tree-select.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tree.js +39 -45
- package/fesm2015/ptsecurity-mosaic-tree.js.map +1 -1
- package/form-field/cleaner.d.ts +2 -0
- package/input/input-number-validators.d.ts +2 -2
- package/modal/modal.component.d.ts +2 -0
- package/modal/modal.module.d.ts +1 -1
- package/package.json +4 -4
- package/popover/popover-confirm.component.d.ts +33 -0
- package/popover/popover.component.d.ts +12 -4
- package/popover/popover.module.d.ts +5 -3
- package/popover/public-api.d.ts +1 -0
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/default-theme.css +1 -1
- package/prebuilt-visual/default-visual.css +1 -1
- package/select/select.component.d.ts +2 -7
- package/sidepanel/sidepanel-directives.d.ts +2 -0
- package/sidepanel/sidepanel.module.d.ts +2 -1
- package/tooltip/tooltip.component.d.ts +12 -3
- package/tree/padding.directive.d.ts +1 -1
- package/tree/tree-option.component.d.ts +1 -1
- package/tree/tree-selection.component.d.ts +2 -2
- package/tree/tree.module.d.ts +1 -1
- package/tree-select/tree-select.component.d.ts +2 -7
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ptsecurity-mosaic-tree-select.js","sources":["../../../packages/mosaic/tree-select/tree-select.component.ts","../../../packages/mosaic/tree-select/tree-select.html","../../../packages/mosaic/tree-select/tree-select.module.ts","../../../packages/mosaic/tree-select/ptsecurity-mosaic-tree-select.ts"],"sourcesContent":["/* tslint:disable:no-empty */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n CdkConnectedOverlay,\n ViewportRuler\n} from '@angular/cdk/overlay';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n Self,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControlName,\n FormGroupDirective,\n NG_VALIDATORS,\n NgControl,\n NgForm,\n NgModel,\n Validator\n} from '@angular/forms';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW,\n A,\n PAGE_UP,\n PAGE_DOWN,\n hasModifierKey\n} from '@ptsecurity/cdk/keycodes';\nimport {\n getOptionScrollPosition,\n CanDisable,\n CanUpdateErrorState,\n ErrorStateMatcher,\n HasTabIndex,\n CanDisableCtor,\n HasTabIndexCtor,\n CanUpdateErrorStateCtor,\n mixinTabIndex,\n mixinDisabled,\n mixinErrorState,\n mcSelectAnimations,\n\n SELECT_PANEL_MAX_HEIGHT,\n SELECT_PANEL_PADDING_X,\n SELECT_PANEL_VIEWPORT_PADDING,\n MC_SELECT_SCROLL_STRATEGY,\n\n getMcSelectDynamicMultipleError,\n getMcSelectNonFunctionValueError,\n getMcSelectNonArrayValueError,\n MultipleMode,\n\n MC_VALIDATION,\n setMosaicValidation,\n McValidationOptions\n} from '@ptsecurity/mosaic/core';\nimport { McCleaner, McFormField, McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { McTag } from '@ptsecurity/mosaic/tags';\nimport { McTree, McTreeSelection, McTreeOption } from '@ptsecurity/mosaic/tree';\nimport { defer, merge, Observable, Subject, Subscription } from 'rxjs';\nimport {\n filter,\n map,\n switchMap,\n take,\n takeUntil,\n distinctUntilChanged,\n startWith\n} from 'rxjs/operators';\n\n\nlet nextUniqueId = 0;\n\n/** Change event object that is emitted when the select value has changed. */\nexport class McTreeSelectChange {\n constructor(public source: McTreeSelect, public value: any, public isUserInput = false) {}\n}\n\n\n@Directive({ selector: 'mc-tree-select-trigger' })\nexport class McTreeSelectTrigger {}\n\n\nclass McTreeSelectBase {\n constructor(\n public elementRef: ElementRef,\n public defaultErrorStateMatcher: ErrorStateMatcher,\n public parentForm: NgForm,\n public parentFormGroup: FormGroupDirective,\n public ngControl: NgControl\n ) {}\n}\n\n// tslint:disable-next-line:naming-convention\nconst McTreeSelectMixinBase: CanDisableCtor & HasTabIndexCtor & CanUpdateErrorStateCtor &\n typeof McTreeSelectBase = mixinTabIndex(mixinDisabled(mixinErrorState(McTreeSelectBase)));\n\n\n@Component({\n selector: 'mc-tree-select',\n exportAs: 'mcTreeSelect',\n templateUrl: 'tree-select.html',\n styleUrls: ['./tree-select.scss'],\n inputs: ['disabled', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'mc-tree-select',\n '[class.mc-disabled]': 'disabled',\n '[class.mc-invalid]': 'errorState',\n\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.disabled]': 'disabled || null',\n\n '(click)': 'toggle()',\n '(keydown)': 'handleKeydown($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(window:resize)': 'calculateHiddenItems()'\n },\n animations: [\n mcSelectAnimations.transformPanel,\n mcSelectAnimations.fadeInContent\n ],\n providers: [\n { provide: McFormFieldControl, useExisting: McTreeSelect },\n { provide: McTree, useExisting: McTreeSelect }\n ]\n})\nexport class McTreeSelect extends McTreeSelectMixinBase implements\n AfterContentInit, AfterViewInit, OnChanges, OnDestroy, OnInit, DoCheck, ControlValueAccessor,\n CanDisable, HasTabIndex, McFormFieldControl<McTreeOption>, CanUpdateErrorState {\n\n /** A name for this control that can be used by `mc-form-field`. */\n controlType = 'select';\n\n hiddenItems: number = 0;\n\n /** The last measured value for the trigger's client bounding rect. */\n triggerRect: ClientRect;\n\n /** The cached font-size of the trigger element. */\n triggerFontSize = 0;\n\n /** Deals with the selection logic. */\n selectionModel: SelectionModel<any>;\n\n /** The value of the select panel's transform-origin property. */\n transformOrigin: string = 'top';\n\n /** Emits when the panel element is finished transforming in. */\n panelDoneAnimatingStream = new Subject<string>();\n\n /** Strategy that will be used to handle scrolling while the select panel is open. */\n scrollStrategy = this.scrollStrategyFactory();\n\n /**\n * The y-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text.\n * when the panel opens. Will change based on the y-position of the selected option.\n */\n offsetY = 0;\n\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n positions = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n }\n ];\n\n options: QueryList<McTreeOption>;\n\n @ViewChild('trigger', { static: false }) trigger: ElementRef;\n\n @ViewChild('panel', { static: false }) panel: ElementRef;\n\n @ViewChild(CdkConnectedOverlay, { static: false }) overlayDir: CdkConnectedOverlay;\n\n @ViewChild('hiddenItemsCounter', { static: false }) hiddenItemsCounter: ElementRef;\n\n @ViewChildren(McTag) tags: QueryList<McTag>;\n\n @ContentChild('mcSelectCleaner', { static: true }) cleaner: McCleaner;\n\n /** User-supplied override of the trigger element. */\n @ContentChild(McTreeSelectTrigger, { static: false }) customTrigger: McTreeSelectTrigger;\n\n @ContentChild(McTreeSelection, { static: false }) tree: McTreeSelection;\n\n @Input() hiddenItemsText: string = '...ещё';\n\n /** Event emitted when the select panel has been toggled. */\n @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when the select has been opened. */\n @Output('opened') readonly openedStream: Observable<void> =\n this.openedChange.pipe(filter((o) => o), map(() => {}));\n\n /** Event emitted when the select has been closed. */\n @Output('closed') readonly closedStream: Observable<void> =\n this.openedChange.pipe(filter((o) => !o), map(() => {}));\n\n /** Event emitted when the selected value has been changed by the user. */\n @Output() readonly selectionChange = new EventEmitter<McTreeSelectChange>();\n\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n /** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string | string[] | Set<string> | { [key: string]: any };\n\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Function used to sort the values in a select in multiple mode.\n * Follows the same logic as `Array.prototype.sort`.\n */\n @Input() sortComparator: (a: McTreeOption, b: McTreeOption, options: McTreeOption[]) => number;\n\n /** Combined stream of all of the child options' change events. */\n readonly optionSelectionChanges: Observable<McTreeSelectChange> = defer(() => {\n if (this.options) {\n return this.options.changes.pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.onSelectionChange)))\n );\n }\n\n return this.ngZone.onStable\n .asObservable()\n .pipe(take(1), switchMap(() => this.optionSelectionChanges));\n }) as Observable<McTreeSelectChange>;\n\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n\n this.stateChanges.next();\n }\n\n private _required: boolean = false;\n\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n\n set multiple(value: boolean) {\n if (this.selectionModel) {\n throw getMcSelectDynamicMultipleError();\n }\n\n this._multiple = coerceBooleanProperty(value);\n }\n\n private _multiple: boolean = false;\n\n @Input()\n get autoSelect(): boolean {\n if (this.multiple) { return false; }\n\n return this._autoSelect;\n }\n\n set autoSelect(value: boolean) {\n this._autoSelect = coerceBooleanProperty(value);\n }\n\n private _autoSelect: boolean = true;\n\n /**\n * Function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n @Input()\n get compareWith() {\n return this._compareWith;\n }\n\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n /* tslint:disable-next-line:strict-type-predicates */\n if (typeof fn !== 'function') {\n throw getMcSelectNonFunctionValueError();\n }\n\n this._compareWith = fn;\n\n if (this.selectionModel) {\n // A different comparator means the selection could change.\n this.initializeSelection();\n }\n }\n\n get value(): any {\n return this.multiple ? this.tree.getSelectedValues() : this.tree.getSelectedValues()[0];\n }\n\n private _value: any = null;\n\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n this.stateChanges.next();\n }\n\n private _id: string;\n\n @Input()\n get hasBackdrop(): boolean {\n return this._hasBackdrop;\n }\n\n set hasBackdrop(value: boolean) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n\n private _hasBackdrop: boolean = false;\n\n /** Whether the select is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n\n set focused(value: boolean) {\n this._focused = value;\n }\n\n private _focused = false;\n\n get panelOpen(): boolean {\n return this._panelOpen;\n }\n\n get canShowCleaner(): boolean {\n return this.cleaner && this.selectionModel.hasValue();\n }\n\n private closeSubscription = Subscription.EMPTY;\n\n private _panelOpen = false;\n\n private originalOnKeyDown: (event: KeyboardEvent) => void;\n\n /** The scroll position of the overlay panel, calculated to center the selected option. */\n private scrollTop = 0;\n\n /** Unique id for this input. */\n private readonly uid = `mc-select-${nextUniqueId++}`;\n\n /** Emits whenever the component is destroyed. */\n private readonly destroy = new Subject<void>();\n\n // Used for storing the values that were assigned before the options were initialized.\n private tempValues: string | string[] | null;\n\n constructor(\n elementRef: ElementRef,\n readonly changeDetectorRef: ChangeDetectorRef,\n private readonly viewportRuler: ViewportRuler,\n private readonly ngZone: NgZone,\n private readonly renderer: Renderer2,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Inject(MC_SELECT_SCROLL_STRATEGY) private readonly scrollStrategyFactory,\n @Optional() @Inject(NG_VALIDATORS) public rawValidators: Validator[],\n @Optional() @Inject(MC_VALIDATION) private mcValidation: McValidationOptions,\n @Optional() private readonly dir: Directionality,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Optional() private readonly parentFormField: McFormField,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @Self() public ngModel: NgModel,\n @Optional() @Self() public formControlName: FormControlName\n ) {\n super(elementRef, defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnInit() {\n this.stateChanges.next();\n\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this.panelDoneAnimatingStream\n .pipe(distinctUntilChanged(), takeUntil(this.destroy))\n .subscribe(() => {\n if (this.panelOpen) {\n this.scrollTop = 0;\n this.openedChange.emit(true);\n } else {\n this.openedChange.emit(false);\n this.overlayDir.offsetX = 0;\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n ngAfterContentInit() {\n if (!this.tree) { return; }\n\n if (this.mcValidation.useValidation) {\n setMosaicValidation(this);\n }\n\n this.tree.resetFocusedItemOnBlur = false;\n\n this.selectionModel = this.tree.selectionModel = new SelectionModel<any>(this.multiple);\n this.tree.ngAfterContentInit();\n\n this.initKeyManager();\n\n this.options = this.tree.renderedOptions;\n this.tree.autoSelect = this.autoSelect;\n\n if (this.tree.multipleMode === null) {\n this.tree.multipleMode = this.multiple ? MultipleMode.CHECKBOX : null;\n }\n\n if (this.multiple) {\n this.tree.noUnselectLast = false;\n }\n\n if (this.tempValues) {\n this.setSelectionByValue(this.tempValues);\n this.tempValues = null;\n }\n\n this.optionSelectionChanges\n .pipe(takeUntil(this.destroy))\n .subscribe((event) => {\n if (!this.multiple && this.panelOpen && event.isUserInput) {\n this.close();\n }\n });\n\n this.tree.selectionChange\n .pipe(takeUntil(this.destroy))\n .subscribe((event) => {\n this.onChange(this.selectedValues);\n\n this.selectionChange.emit(new McTreeSelectChange(this, event.option));\n });\n\n this.selectionModel.changed\n .pipe(takeUntil(this.destroy))\n .subscribe((event) => {\n if (event.added.length) {\n this.tree.keyManager.setFocusOrigin('program');\n this.tree.keyManager.setActiveItem(\n this.options.find((option) => option.data === event.added[0]) as any\n );\n }\n });\n }\n\n ngAfterViewInit() {\n if (!this.tree) { return; }\n\n this.tags.changes\n .subscribe(() => {\n setTimeout(() => this.calculateHiddenItems(), 0);\n });\n\n setTimeout(() => this.calculateHiddenItems(), 0);\n }\n\n ngDoCheck() {\n if (this.ngControl) { this.updateErrorState(); }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes.disabled) {\n this.stateChanges.next();\n }\n }\n\n ngOnDestroy() {\n this.destroy.next();\n this.destroy.complete();\n this.stateChanges.complete();\n this.closeSubscription.unsubscribe();\n }\n\n @Input()\n hiddenItemsTextFormatter(hiddenItemsText: string, hiddenItems: number): string {\n return `${hiddenItemsText} ${hiddenItems}`;\n }\n\n clearValue($event): void {\n $event.stopPropagation();\n\n this.selectionModel.clear();\n this.tree.keyManager.setActiveItem(-1);\n\n this.setSelectionByValue([]);\n\n this.onChange(this.selectedValues);\n }\n\n /** `View -> model callback called when value changes` */\n onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when select has been touched` */\n onTouched = () => {};\n\n toggle(): void {\n if (this.panelOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.disabled || !this.options || !this.options.length || this._panelOpen) { return; }\n\n this.triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this.triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement)['font-size']);\n\n this._panelOpen = true;\n\n setTimeout(() => this.highlightCorrectOption());\n\n this.changeDetectorRef.markForCheck();\n\n // Set the font size on the panel element once it exists.\n this.ngZone.onStable.asObservable()\n .pipe(take(1))\n .subscribe(() => {\n if (this.triggerFontSize && this.overlayDir.overlayRef && this.overlayDir.overlayRef.overlayElement) {\n this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this.triggerFontSize}px`;\n }\n });\n }\n\n /** Closes the overlay panel and focuses the host element. */\n close(): void {\n if (!this._panelOpen) { return; }\n\n this._panelOpen = false;\n\n this.changeDetectorRef.markForCheck();\n this.onTouched();\n\n setTimeout(() => this.focus(), 0);\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n if (this.tree) {\n this.setSelectionByValue(value);\n } else {\n this.tempValues = value;\n }\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: (value: any) => void) {\n this.onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: () => {}) {\n this.onTouched = fn;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n get selected(): any {\n return this.multiple ? this.selectionModel.selected : this.selectionModel.selected[0];\n }\n\n get selectedValues(): any {\n const selectedValues = this.selectionModel.selected.map((value) => this.tree.treeControl.getValue(value));\n\n return this.multiple ? selectedValues : selectedValues[0];\n }\n\n get triggerValue(): string {\n if (this.empty) { return ''; }\n\n return this.tree.treeControl.getViewValue(this.selected);\n }\n\n get triggerValues(): McTreeOption[] {\n if (this.empty) { return []; }\n\n return this.selectedValues\n .map((value) => this.tree.renderedOptions.find((option) => option.value === value))\n .filter((option) => option);\n }\n\n get empty(): boolean {\n return !this.selectionModel || this.selectionModel.isEmpty();\n }\n\n isRtl(): boolean {\n return this.dir ? this.dir.value === 'rtl' : false;\n }\n\n handleKeydown(event: KeyboardEvent) {\n if (!this.disabled) {\n if (this.panelOpen) {\n this.handleOpenKeydown(event);\n } else {\n this.handleClosedKeydown(event);\n }\n }\n }\n\n onFocus() {\n if (!this.disabled) {\n this._focused = true;\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n onBlur() {\n this._focused = false;\n\n if (!this.disabled && !this.panelOpen) {\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n }\n\n /** Callback that is invoked when the overlay panel has been attached. */\n onAttached() {\n this.overlayDir.positionChange\n .pipe(take(1))\n .subscribe(() => {\n this.changeDetectorRef.detectChanges();\n this.calculateOverlayOffsetX();\n this.panel.nativeElement.scrollTop = this.scrollTop;\n\n this.tree.updateScrollSize();\n });\n\n this.closeSubscription = this.closingActions()\n .subscribe(() => this.close());\n }\n\n /** Returns the theme to be used on the panel. */\n getPanelTheme(): string {\n return this.parentFormField ? `mc-${this.parentFormField.color}` : '';\n }\n\n focus() {\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /** Invoked when an option is clicked. */\n onRemoveSelectedOption(selectedOption: any, $event) {\n $event.stopPropagation();\n\n this.selectionModel\n .deselect(this.selected.find((value) => this.tree.treeControl.getValue(value) === selectedOption.value));\n\n this.onChange(this.selectedValues);\n }\n\n calculateHiddenItems() {\n if (this.customTrigger || this.empty || !this.multiple) { return; }\n\n let visibleItems: number = 0;\n const totalItemsWidth = this.getTotalItemsWidthInMatcher();\n let totalVisibleItemsWidth: number = 0;\n\n this.tags.forEach((tag) => {\n if (tag.nativeElement.offsetTop < tag.nativeElement.offsetHeight) {\n totalVisibleItemsWidth += this.getItemWidth(tag.nativeElement);\n visibleItems++;\n }\n });\n\n this.hiddenItems = this.selectionModel.selected.length - visibleItems;\n\n if (this.hiddenItems) {\n const itemsCounter = this.trigger.nativeElement.querySelector('.mc-tree-select__match-hidden-text');\n const matcherList = this.trigger.nativeElement.querySelector('.mc-tree-select__match-list');\n\n const itemsCounterShowed = itemsCounter.offsetTop < itemsCounter.offsetHeight;\n // const itemsCounterWidth: number = itemsCounter.getBoundingClientRect().width;\n const itemsCounterWidth: number = 86;\n\n const matcherListWidth: number = matcherList.getBoundingClientRect().width;\n const matcherWidth: number = matcherListWidth + itemsCounterWidth;\n\n if (itemsCounterShowed && (totalItemsWidth < matcherWidth)) { this.hiddenItems = 0; }\n\n if (\n totalVisibleItemsWidth === matcherListWidth ||\n (totalVisibleItemsWidth + itemsCounterWidth) < matcherListWidth\n ) {\n this.changeDetectorRef.markForCheck();\n\n return ;\n } else if (!itemsCounterShowed && (totalItemsWidth + itemsCounterWidth) > matcherWidth) {\n this.hiddenItems++;\n }\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n private closingActions() {\n const backdrop = this.overlayDir.overlayRef!.backdropClick();\n const outsidePointerEvents = this.overlayDir.overlayRef!.outsidePointerEvents();\n const detachments = this.overlayDir.overlayRef!.detachments();\n\n return merge(backdrop, outsidePointerEvents, detachments);\n }\n\n private getTotalItemsWidthInMatcher(): number {\n const triggerClone = this.trigger.nativeElement.cloneNode(true);\n triggerClone.querySelector('.mc-tree-select__match-hidden-text').remove();\n\n this.renderer.setStyle(triggerClone, 'position', 'absolute');\n this.renderer.setStyle(triggerClone, 'visibility', 'hidden');\n this.renderer.setStyle(triggerClone, 'top', '-100%');\n this.renderer.setStyle(triggerClone, 'left', '0');\n\n this.renderer.appendChild(this.trigger.nativeElement, triggerClone);\n\n let totalItemsWidth: number = 0;\n triggerClone.querySelectorAll('mc-tag').forEach((item) => {\n totalItemsWidth += this.getItemWidth(item);\n });\n\n triggerClone.remove();\n\n return totalItemsWidth;\n }\n\n private getItemWidth(element: HTMLElement): number {\n const computedStyle = window.getComputedStyle(element);\n\n const width: number = parseInt(computedStyle.width as string);\n const marginLeft: number = parseInt(computedStyle.marginLeft as string);\n const marginRight: number = parseInt(computedStyle.marginRight as string);\n\n return width + marginLeft + marginRight;\n }\n\n private handleClosedKeydown(event: KeyboardEvent) {\n // tslint:disable-next-line: deprecation\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW ||\n keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n\n // Open the select on ALT + arrow key to match the native <select>\n if (isOpenKey || ((this.multiple || event.altKey) && isArrowKey)) {\n // prevents the page from scrolling down when pressing space\n event.preventDefault();\n\n this.open();\n } else if (!this.multiple && this.tree.keyManager && this.tree.keyManager.onKeydown) {\n this.tree.keyManager.onKeydown(event);\n }\n }\n\n private handleOpenKeydown(event: KeyboardEvent) {\n /* tslint:disable-next-line */\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n\n if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n\n this.close();\n } else if (keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW) {\n return this.originalOnKeyDown.call(this.tree, event);\n } else if (keyCode === HOME) {\n event.preventDefault();\n\n this.tree.keyManager.setFirstItemActive();\n } else if (keyCode === END) {\n event.preventDefault();\n\n this.tree.keyManager.setLastItemActive();\n } else if (keyCode === PAGE_UP) {\n event.preventDefault();\n\n this.tree.keyManager.setPreviousPageItemActive();\n } else if (keyCode === PAGE_DOWN) {\n event.preventDefault();\n\n this.tree.keyManager.setNextPageItemActive();\n } else if ((keyCode === ENTER || keyCode === SPACE) && this.tree.keyManager.activeItem) {\n event.preventDefault();\n\n if (!this.autoSelect) {\n this.selectionModel.toggle(this.tree.keyManager.activeItem.data);\n } else {\n this.close();\n }\n } else if (this.multiple && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n\n const hasDeselectedOptions = this.options.some((option) => !option.selected);\n\n this.options.forEach((option) => {\n if (hasDeselectedOptions && !option.disabled) {\n option.select();\n } else {\n option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = this.tree.keyManager.activeItemIndex;\n\n this.tree.keyManager.setFocusOrigin('keyboard');\n this.tree.keyManager.onKeydown(event);\n\n if (\n this.multiple && isArrowKey && event.shiftKey && this.tree.keyManager.activeItem &&\n this.tree.keyManager.activeItemIndex !== previouslyFocusedIndex\n ) {\n this.tree.keyManager.activeItem.selectViaInteraction(event);\n }\n\n if (this.autoSelect && this.tree.keyManager.activeItem) {\n this.tree.setSelectedOptionsByKey(\n this.tree.keyManager.activeItem, hasModifierKey(event, 'shiftKey'), hasModifierKey(event, 'ctrlKey')\n );\n }\n }\n }\n\n private initializeSelection() {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n this.setSelectionByValue(this.ngControl ? this.ngControl.value : this._value);\n });\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private setSelectionByValue(value: any | any[]) {\n if (this.multiple && value) {\n if (!Array.isArray(value)) { throw getMcSelectNonArrayValueError(); }\n\n this.tree.setOptionsFromValues(value);\n\n this.sortValues();\n } else {\n this.tree.setOptionsFromValues([value]);\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n private initKeyManager() {\n this.originalOnKeyDown = this.tree.onKeyDown;\n\n this.tree.onKeyDown = () => {};\n\n this.tree.keyManager.tabOut\n .pipe(takeUntil(this.destroy))\n .subscribe(() => {\n // Restore focus to the trigger before closing. Ensures that the focus\n // position won't be lost if the user got focus into the overlay.\n this.focus();\n this.close();\n });\n\n this.tree.keyManager.change\n .pipe(takeUntil(this.destroy))\n .subscribe(() => {\n if (this._panelOpen && this.panel) {\n this.scrollActiveOptionIntoView();\n } else if (!this._panelOpen && !this.multiple && this.tree.keyManager.activeItem) {\n this.tree.keyManager.activeItem.selectViaInteraction();\n }\n });\n }\n\n /** Sorts the selected values in the selected based on their order in the panel. */\n private sortValues() {\n if (this.multiple) {\n const options = this.options.toArray();\n\n this.selectionModel.sort((a, b) => {\n return this.sortComparator ? this.sortComparator(a, b, options) :\n options.indexOf(a) - options.indexOf(b);\n });\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n private highlightCorrectOption() {\n if (this.empty || !this.tree.keyManager) { return; }\n\n const firstSelectedValue = this.multiple ? this.selectedValues[0] : this.selectedValues;\n\n const selectedOption = this.options.find((option) => option.value === firstSelectedValue);\n\n if (selectedOption) {\n this.tree.keyManager.setActiveItem(selectedOption);\n }\n }\n\n /** Scrolls the active option into view. */\n private scrollActiveOptionIntoView() {\n const activeOptionIndex = this.tree.keyManager.activeItemIndex || 0;\n\n this.panel.nativeElement.scrollTop = getOptionScrollPosition(\n activeOptionIndex,\n this.tree.getItemHeight(),\n this.panel.nativeElement.scrollTop,\n SELECT_PANEL_MAX_HEIGHT\n );\n }\n\n /**\n * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text when\n * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n * can't be calculated until the panel has been attached, because we need to know the\n * content width in order to constrain the panel within the viewport.\n */\n private calculateOverlayOffsetX() {\n const overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n const viewportSize = this.viewportRuler.getViewportSize();\n const isRtl = this.isRtl();\n /* tslint:disable-next-line:no-magic-numbers */\n const paddingWidth = SELECT_PANEL_PADDING_X * 2;\n let offsetX: number = SELECT_PANEL_PADDING_X;\n\n // Invert the offset in LTR.\n if (!isRtl) { offsetX *= -1; }\n\n // Determine how much the select overflows on each side.\n const leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n const rightOverflow = overlayRect.right + offsetX - viewportSize.width\n + (isRtl ? 0 : paddingWidth);\n\n // If the element overflows on either side, reduce the offset to allow it to fit.\n if (leftOverflow > 0) {\n offsetX += leftOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n } else if (rightOverflow > 0) {\n offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n\n // Set the offset directly in order to avoid having to go through change detection and\n // potentially triggering \"changed after it was checked\" errors. Round the value to avoid\n // blurry content in some browsers.\n this.overlayDir.offsetX = Math.round(offsetX);\n this.overlayDir.overlayRef.updatePosition();\n }\n\n /** Comparison function to specify which option is displayed. Defaults to object equality. */\n private _compareWith = (o1: any, o2: any) => o1 === o2;\n}\n","<div cdk-overlay-origin\n class=\"mc-tree-select__trigger\"\n [class.mc-tree-select__trigger_multiple]=\"multiple\"\n #origin=\"cdkOverlayOrigin\"\n #trigger>\n <div class=\"mc-tree-select__matcher\" [ngSwitch]=\"empty\">\n <span class=\"mc-tree-select__placeholder\" *ngSwitchCase=\"true\">{{ placeholder || '\\u00A0' }}</span>\n <span *ngSwitchCase=\"false\" [ngSwitch]=\"!!customTrigger\">\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"mc-tree-select__match-container\">\n <span *ngSwitchCase=\"false\" class=\"mc-tree-select__matcher-text\">{{ triggerValue }}</span>\n <div *ngSwitchCase=\"true\" class=\"mc-tree-select__multiple-matcher\">\n <div class=\"mc-tree-select__match-list\">\n <mc-tag *ngFor=\"let option of triggerValues\"\n [selectable]=\"false\"\n [disabled]=\"option.disabled || disabled\"\n [class.mc-error]=\"errorState\">\n\n {{ option.viewValue }}\n <i mc-icon=\"mc-close-S_16\"\n *ngIf=\"!option.disabled && !disabled\"\n (click)=\"onRemoveSelectedOption(option, $event)\">\n </i>\n </mc-tag>\n </div>\n <div class=\"mc-tree-select__match-hidden-text\"\n [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\"\n #hiddenItemsCounter>\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n </div>\n <ng-content select=\"mc-tree-select-trigger\" *ngSwitchCase=\"true\"></ng-content>\n </span>\n </div>\n\n <div class=\"mc-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"mc-cleaner\"></ng-content>\n </div>\n\n <div class=\"mc-tree-select__arrow-wrapper\">\n <i class=\"mc-tree-select__arrow\" mc-icon=\"mc-angle-down-L_16\"></i>\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n (backdropClick)=\"close()\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n\n <div #panel\n class=\"mc-tree-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.transformOrigin]=\"transformOrigin\"\n [style.font-size.px]=\"triggerFontSize\"\n (keydown)=\"handleKeydown($event)\">\n\n <div #optionsContainer\n class=\"mc-tree-select__content\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\n <ng-content select=\"mc-tree-selection\"></ng-content>\n </div>\n </div>\n</ng-template>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MC_SELECT_SCROLL_STRATEGY_PROVIDER, McPseudoCheckboxModule } from '@ptsecurity/mosaic/core';\nimport { McIconModule } from '@ptsecurity/mosaic/icon';\nimport { McTagsModule } from '@ptsecurity/mosaic/tags';\nimport { McTreeModule } from '@ptsecurity/mosaic/tree';\n\nimport { McTreeSelect, McTreeSelectTrigger } from './tree-select.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n McTreeModule,\n McIconModule,\n McTagsModule,\n McPseudoCheckboxModule\n ],\n exports: [McTreeSelect, McTreeSelectTrigger, CommonModule],\n declarations: [McTreeSelect, McTreeSelectTrigger],\n providers: [MC_SELECT_SCROLL_STRATEGY_PROVIDER]\n})\nexport class McTreeSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ptsecurity-mosaic-tree-select.js","sources":["../../../packages/mosaic/tree-select/tree-select.component.ts","../../../packages/mosaic/tree-select/tree-select.html","../../../packages/mosaic/tree-select/tree-select.module.ts","../../../packages/mosaic/tree-select/ptsecurity-mosaic-tree-select.ts"],"sourcesContent":["/* tslint:disable:no-empty */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n CdkConnectedOverlay,\n ConnectedPosition,\n ViewportRuler\n} from '@angular/cdk/overlay';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n Self,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControlName,\n FormGroupDirective,\n NG_VALIDATORS,\n NgControl,\n NgForm,\n NgModel,\n Validator\n} from '@angular/forms';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW,\n A,\n PAGE_UP,\n PAGE_DOWN,\n hasModifierKey\n} from '@ptsecurity/cdk/keycodes';\nimport {\n getOptionScrollPosition,\n CanDisable,\n CanUpdateErrorState,\n ErrorStateMatcher,\n HasTabIndex,\n CanDisableCtor,\n HasTabIndexCtor,\n CanUpdateErrorStateCtor,\n mixinTabIndex,\n mixinDisabled,\n mixinErrorState,\n mcSelectAnimations,\n\n SELECT_PANEL_MAX_HEIGHT,\n SELECT_PANEL_PADDING_X,\n SELECT_PANEL_VIEWPORT_PADDING,\n MC_SELECT_SCROLL_STRATEGY,\n\n getMcSelectDynamicMultipleError,\n getMcSelectNonFunctionValueError,\n getMcSelectNonArrayValueError,\n MultipleMode,\n\n MC_VALIDATION,\n setMosaicValidation,\n McValidationOptions\n} from '@ptsecurity/mosaic/core';\nimport { McCleaner, McFormField, McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { McTag } from '@ptsecurity/mosaic/tags';\nimport { McTree, McTreeSelection, McTreeOption } from '@ptsecurity/mosaic/tree';\nimport { defer, merge, Observable, Subject, Subscription } from 'rxjs';\nimport {\n filter,\n map,\n switchMap,\n take,\n takeUntil,\n distinctUntilChanged,\n startWith\n} from 'rxjs/operators';\n\n\nlet nextUniqueId = 0;\n\n/** Change event object that is emitted when the select value has changed. */\nexport class McTreeSelectChange {\n constructor(public source: McTreeSelect, public value: any, public isUserInput = false) {}\n}\n\n\n@Directive({ selector: 'mc-tree-select-trigger' })\nexport class McTreeSelectTrigger {}\n\n\nclass McTreeSelectBase {\n constructor(\n public elementRef: ElementRef,\n public defaultErrorStateMatcher: ErrorStateMatcher,\n public parentForm: NgForm,\n public parentFormGroup: FormGroupDirective,\n public ngControl: NgControl\n ) {}\n}\n\n// tslint:disable-next-line:naming-convention\nconst McTreeSelectMixinBase: CanDisableCtor & HasTabIndexCtor & CanUpdateErrorStateCtor &\n typeof McTreeSelectBase = mixinTabIndex(mixinDisabled(mixinErrorState(McTreeSelectBase)));\n\n\n@Component({\n selector: 'mc-tree-select',\n exportAs: 'mcTreeSelect',\n templateUrl: 'tree-select.html',\n styleUrls: ['./tree-select.scss'],\n inputs: ['disabled', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'mc-tree-select',\n '[class.mc-disabled]': 'disabled',\n '[class.mc-invalid]': 'errorState',\n\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.disabled]': 'disabled || null',\n\n '(click)': 'toggle()',\n '(keydown)': 'handleKeydown($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(window:resize)': 'calculateHiddenItems()'\n },\n animations: [\n mcSelectAnimations.transformPanel,\n mcSelectAnimations.fadeInContent\n ],\n providers: [\n { provide: McFormFieldControl, useExisting: McTreeSelect },\n { provide: McTree, useExisting: McTreeSelect }\n ]\n})\nexport class McTreeSelect extends McTreeSelectMixinBase implements\n AfterContentInit, AfterViewInit, OnChanges, OnDestroy, OnInit, DoCheck, ControlValueAccessor,\n CanDisable, HasTabIndex, McFormFieldControl<McTreeOption>, CanUpdateErrorState {\n\n /** A name for this control that can be used by `mc-form-field`. */\n controlType = 'select';\n\n hiddenItems: number = 0;\n\n /** The last measured value for the trigger's client bounding rect. */\n triggerRect: ClientRect;\n\n /** The cached font-size of the trigger element. */\n triggerFontSize = 0;\n\n /** Deals with the selection logic. */\n selectionModel: SelectionModel<any>;\n\n /** The value of the select panel's transform-origin property. */\n transformOrigin: string = 'top';\n\n /** Emits when the panel element is finished transforming in. */\n panelDoneAnimatingStream = new Subject<string>();\n\n /** Strategy that will be used to handle scrolling while the select panel is open. */\n scrollStrategy = this.scrollStrategyFactory();\n\n /**\n * The y-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text.\n * when the panel opens. Will change based on the y-position of the selected option.\n */\n offsetY = 0;\n\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n }\n ];\n\n options: QueryList<McTreeOption>;\n\n @ViewChild('trigger', { static: false }) trigger: ElementRef;\n\n @ViewChild('panel', { static: false }) panel: ElementRef;\n\n @ViewChild(CdkConnectedOverlay, { static: false }) overlayDir: CdkConnectedOverlay;\n\n @ViewChild('hiddenItemsCounter', { static: false }) hiddenItemsCounter: ElementRef;\n\n @ViewChildren(McTag) tags: QueryList<McTag>;\n\n @ContentChild('mcSelectCleaner', { static: true }) cleaner: McCleaner;\n\n /** User-supplied override of the trigger element. */\n @ContentChild(McTreeSelectTrigger, { static: false }) customTrigger: McTreeSelectTrigger;\n\n @ContentChild(McTreeSelection, { static: false }) tree: McTreeSelection;\n\n @Input() hiddenItemsText: string = '...ещё';\n\n /** Event emitted when the select panel has been toggled. */\n @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when the select has been opened. */\n @Output('opened') readonly openedStream: Observable<void> =\n this.openedChange.pipe(filter((o) => o), map(() => {}));\n\n /** Event emitted when the select has been closed. */\n @Output('closed') readonly closedStream: Observable<void> =\n this.openedChange.pipe(filter((o) => !o), map(() => {}));\n\n /** Event emitted when the selected value has been changed by the user. */\n @Output() readonly selectionChange = new EventEmitter<McTreeSelectChange>();\n\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n /** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string | string[] | Set<string> | { [key: string]: any };\n\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Function used to sort the values in a select in multiple mode.\n * Follows the same logic as `Array.prototype.sort`.\n */\n @Input() sortComparator: (a: McTreeOption, b: McTreeOption, options: McTreeOption[]) => number;\n\n /** Combined stream of all of the child options' change events. */\n readonly optionSelectionChanges: Observable<McTreeSelectChange> = defer(() => {\n if (this.options) {\n return this.options.changes.pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.onSelectionChange)))\n );\n }\n\n return this.ngZone.onStable\n .asObservable()\n .pipe(take(1), switchMap(() => this.optionSelectionChanges));\n }) as Observable<McTreeSelectChange>;\n\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n\n this.stateChanges.next();\n }\n\n private _required: boolean = false;\n\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n\n set multiple(value: boolean) {\n if (this.selectionModel) {\n throw getMcSelectDynamicMultipleError();\n }\n\n this._multiple = coerceBooleanProperty(value);\n }\n\n private _multiple: boolean = false;\n\n @Input()\n get autoSelect(): boolean {\n if (this.multiple) { return false; }\n\n return this._autoSelect;\n }\n\n set autoSelect(value: boolean) {\n this._autoSelect = coerceBooleanProperty(value);\n }\n\n private _autoSelect: boolean = true;\n\n /**\n * Function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n @Input()\n get compareWith() {\n return this._compareWith;\n }\n\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n /* tslint:disable-next-line:strict-type-predicates */\n if (typeof fn !== 'function') {\n throw getMcSelectNonFunctionValueError();\n }\n\n this._compareWith = fn;\n\n if (this.selectionModel) {\n // A different comparator means the selection could change.\n this.initializeSelection();\n }\n }\n\n get value(): any {\n return this.multiple ? this.tree.getSelectedValues() : this.tree.getSelectedValues()[0];\n }\n\n private _value: any = null;\n\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n this.stateChanges.next();\n }\n\n private _id: string;\n\n @Input()\n get hasBackdrop(): boolean {\n return this._hasBackdrop;\n }\n\n set hasBackdrop(value: boolean) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n\n private _hasBackdrop: boolean = false;\n\n /** Whether the select is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n\n set focused(value: boolean) {\n this._focused = value;\n }\n\n private _focused = false;\n\n get panelOpen(): boolean {\n return this._panelOpen;\n }\n\n get canShowCleaner(): boolean {\n return this.cleaner && this.selectionModel.hasValue();\n }\n\n private closeSubscription = Subscription.EMPTY;\n\n private _panelOpen = false;\n\n private originalOnKeyDown: (event: KeyboardEvent) => void;\n\n /** The scroll position of the overlay panel, calculated to center the selected option. */\n private scrollTop = 0;\n\n /** Unique id for this input. */\n private readonly uid = `mc-select-${nextUniqueId++}`;\n\n /** Emits whenever the component is destroyed. */\n private readonly destroy = new Subject<void>();\n\n // Used for storing the values that were assigned before the options were initialized.\n private tempValues: string | string[] | null;\n\n constructor(\n elementRef: ElementRef,\n readonly changeDetectorRef: ChangeDetectorRef,\n private readonly viewportRuler: ViewportRuler,\n private readonly ngZone: NgZone,\n private readonly renderer: Renderer2,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Inject(MC_SELECT_SCROLL_STRATEGY) private readonly scrollStrategyFactory,\n @Optional() @Inject(NG_VALIDATORS) public rawValidators: Validator[],\n @Optional() @Inject(MC_VALIDATION) private mcValidation: McValidationOptions,\n @Optional() private readonly dir: Directionality,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Optional() private readonly parentFormField: McFormField,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @Self() public ngModel: NgModel,\n @Optional() @Self() public formControlName: FormControlName\n ) {\n super(elementRef, defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnInit() {\n this.stateChanges.next();\n\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this.panelDoneAnimatingStream\n .pipe(distinctUntilChanged(), takeUntil(this.destroy))\n .subscribe(() => {\n if (this.panelOpen) {\n this.scrollTop = 0;\n this.openedChange.emit(true);\n } else {\n this.openedChange.emit(false);\n this.overlayDir.offsetX = 0;\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n ngAfterContentInit() {\n if (!this.tree) { return; }\n\n if (this.mcValidation.useValidation) {\n setMosaicValidation(this);\n }\n\n this.tree.resetFocusedItemOnBlur = false;\n\n this.selectionModel = this.tree.selectionModel = new SelectionModel<any>(this.multiple);\n this.tree.ngAfterContentInit();\n\n this.initKeyManager();\n\n this.options = this.tree.renderedOptions;\n this.tree.autoSelect = this.autoSelect;\n\n if (this.tree.multipleMode === null) {\n this.tree.multipleMode = this.multiple ? MultipleMode.CHECKBOX : null;\n }\n\n if (this.multiple) {\n this.tree.noUnselectLast = false;\n }\n\n if (this.tempValues) {\n this.setSelectionByValue(this.tempValues);\n this.tempValues = null;\n }\n\n this.optionSelectionChanges\n .pipe(takeUntil(this.destroy))\n .subscribe((event) => {\n if (!this.multiple && this.panelOpen && event.isUserInput) {\n this.close();\n }\n });\n\n this.tree.selectionChange\n .pipe(takeUntil(this.destroy))\n .subscribe((event) => {\n this.onChange(this.selectedValues);\n\n this.selectionChange.emit(new McTreeSelectChange(this, event.option));\n });\n\n this.selectionModel.changed\n .pipe(takeUntil(this.destroy))\n .subscribe((event) => {\n if (event.added.length) {\n this.tree.keyManager.setFocusOrigin('program');\n this.tree.keyManager.setActiveItem(\n this.options.find((option) => option.data === event.added[0]) as any\n );\n }\n });\n }\n\n ngAfterViewInit() {\n if (!this.tree) { return; }\n\n this.tags.changes\n .subscribe(() => {\n setTimeout(() => this.calculateHiddenItems(), 0);\n });\n\n setTimeout(() => this.calculateHiddenItems(), 0);\n }\n\n ngDoCheck() {\n if (this.ngControl) { this.updateErrorState(); }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes.disabled) {\n this.stateChanges.next();\n }\n }\n\n ngOnDestroy() {\n this.destroy.next();\n this.destroy.complete();\n this.stateChanges.complete();\n this.closeSubscription.unsubscribe();\n }\n\n @Input()\n hiddenItemsTextFormatter(hiddenItemsText: string, hiddenItems: number): string {\n return `${hiddenItemsText} ${hiddenItems}`;\n }\n\n clearValue($event): void {\n $event.stopPropagation();\n\n this.selectionModel.clear();\n this.tree.keyManager.setActiveItem(-1);\n\n this.setSelectionByValue([]);\n\n this.onChange(this.selectedValues);\n }\n\n /** `View -> model callback called when value changes` */\n onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when select has been touched` */\n onTouched = () => {};\n\n toggle(): void {\n if (this.panelOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.disabled || !this.options || !this.options.length || this._panelOpen) { return; }\n\n this.triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this.triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement)['font-size']);\n\n this._panelOpen = true;\n\n setTimeout(() => this.highlightCorrectOption());\n\n this.changeDetectorRef.markForCheck();\n\n // Set the font size on the panel element once it exists.\n this.ngZone.onStable.asObservable()\n .pipe(take(1))\n .subscribe(() => {\n if (this.triggerFontSize && this.overlayDir.overlayRef && this.overlayDir.overlayRef.overlayElement) {\n this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this.triggerFontSize}px`;\n }\n });\n }\n\n /** Closes the overlay panel and focuses the host element. */\n close(): void {\n if (!this._panelOpen) { return; }\n\n this._panelOpen = false;\n\n this.changeDetectorRef.markForCheck();\n this.onTouched();\n\n setTimeout(() => this.focus(), 0);\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n if (this.tree) {\n this.setSelectionByValue(value);\n } else {\n this.tempValues = value;\n }\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: (value: any) => void) {\n this.onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: () => {}) {\n this.onTouched = fn;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n get selected(): any {\n return this.multiple ? this.selectionModel.selected : this.selectionModel.selected[0];\n }\n\n get selectedValues(): any {\n const selectedValues = this.selectionModel.selected.map((value) => this.tree.treeControl.getValue(value));\n\n return this.multiple ? selectedValues : selectedValues[0];\n }\n\n get triggerValue(): string {\n if (this.empty) { return ''; }\n\n return this.tree.treeControl.getViewValue(this.selected);\n }\n\n get triggerValues(): McTreeOption[] {\n if (this.empty) { return []; }\n\n return this.selectedValues\n .map((value) => this.tree.renderedOptions.find((option) => option.value === value))\n .filter((option) => option);\n }\n\n get empty(): boolean {\n return !this.selectionModel || this.selectionModel.isEmpty();\n }\n\n isRtl(): boolean {\n return this.dir ? this.dir.value === 'rtl' : false;\n }\n\n handleKeydown(event: KeyboardEvent) {\n if (!this.disabled) {\n if (this.panelOpen) {\n this.handleOpenKeydown(event);\n } else {\n this.handleClosedKeydown(event);\n }\n }\n }\n\n onFocus() {\n if (!this.disabled) {\n this._focused = true;\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n onBlur() {\n this._focused = false;\n\n if (!this.disabled && !this.panelOpen) {\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n }\n\n /** Callback that is invoked when the overlay panel has been attached. */\n onAttached() {\n this.overlayDir.positionChange\n .pipe(take(1))\n .subscribe(() => {\n this.changeDetectorRef.detectChanges();\n this.calculateOverlayOffsetX();\n this.panel.nativeElement.scrollTop = this.scrollTop;\n\n this.tree.updateScrollSize();\n });\n\n this.closeSubscription = this.closingActions()\n .subscribe(() => this.close());\n }\n\n /** Returns the theme to be used on the panel. */\n getPanelTheme(): string {\n return this.parentFormField ? `mc-${this.parentFormField.color}` : '';\n }\n\n focus() {\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Implemented as part of McFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /** Invoked when an option is clicked. */\n onRemoveSelectedOption(selectedOption: any, $event) {\n $event.stopPropagation();\n\n this.selectionModel\n .deselect(this.selected.find((value) => this.tree.treeControl.getValue(value) === selectedOption.value));\n\n this.onChange(this.selectedValues);\n }\n\n calculateHiddenItems() {\n if (this.customTrigger || this.empty || !this.multiple) { return; }\n\n let visibleItems: number = 0;\n const totalItemsWidth = this.getTotalItemsWidthInMatcher();\n let totalVisibleItemsWidth: number = 0;\n\n this.tags.forEach((tag) => {\n if (tag.nativeElement.offsetTop < tag.nativeElement.offsetHeight) {\n totalVisibleItemsWidth += this.getItemWidth(tag.nativeElement);\n visibleItems++;\n }\n });\n\n this.hiddenItems = this.selectionModel.selected.length - visibleItems;\n\n if (this.hiddenItems) {\n const itemsCounter = this.trigger.nativeElement.querySelector('.mc-tree-select__match-hidden-text');\n const matcherList = this.trigger.nativeElement.querySelector('.mc-tree-select__match-list');\n\n const itemsCounterShowed = itemsCounter.offsetTop < itemsCounter.offsetHeight;\n // const itemsCounterWidth: number = itemsCounter.getBoundingClientRect().width;\n const itemsCounterWidth: number = 86;\n\n const matcherListWidth: number = matcherList.getBoundingClientRect().width;\n const matcherWidth: number = matcherListWidth + itemsCounterWidth;\n\n if (itemsCounterShowed && (totalItemsWidth < matcherWidth)) { this.hiddenItems = 0; }\n\n if (\n totalVisibleItemsWidth === matcherListWidth ||\n (totalVisibleItemsWidth + itemsCounterWidth) < matcherListWidth\n ) {\n this.changeDetectorRef.markForCheck();\n\n return ;\n } else if (!itemsCounterShowed && (totalItemsWidth + itemsCounterWidth) > matcherWidth) {\n this.hiddenItems++;\n }\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n private closingActions() {\n const backdrop = this.overlayDir.overlayRef!.backdropClick();\n const outsidePointerEvents = this.overlayDir.overlayRef!.outsidePointerEvents();\n const detachments = this.overlayDir.overlayRef!.detachments();\n\n return merge(backdrop, outsidePointerEvents, detachments);\n }\n\n private getTotalItemsWidthInMatcher(): number {\n const triggerClone = this.trigger.nativeElement.cloneNode(true);\n triggerClone.querySelector('.mc-tree-select__match-hidden-text').remove();\n\n this.renderer.setStyle(triggerClone, 'position', 'absolute');\n this.renderer.setStyle(triggerClone, 'visibility', 'hidden');\n this.renderer.setStyle(triggerClone, 'top', '-100%');\n this.renderer.setStyle(triggerClone, 'left', '0');\n\n this.renderer.appendChild(this.trigger.nativeElement, triggerClone);\n\n let totalItemsWidth: number = 0;\n triggerClone.querySelectorAll('mc-tag').forEach((item) => {\n totalItemsWidth += this.getItemWidth(item);\n });\n\n triggerClone.remove();\n\n return totalItemsWidth;\n }\n\n private getItemWidth(element: HTMLElement): number {\n const computedStyle = window.getComputedStyle(element);\n\n const width: number = parseInt(computedStyle.width as string);\n const marginLeft: number = parseInt(computedStyle.marginLeft as string);\n const marginRight: number = parseInt(computedStyle.marginRight as string);\n\n return width + marginLeft + marginRight;\n }\n\n private handleClosedKeydown(event: KeyboardEvent) {\n // tslint:disable-next-line: deprecation\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW ||\n keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n\n // Open the select on ALT + arrow key to match the native <select>\n if (isOpenKey || ((this.multiple || event.altKey) && isArrowKey)) {\n // prevents the page from scrolling down when pressing space\n event.preventDefault();\n\n this.open();\n } else if (!this.multiple && this.tree.keyManager && this.tree.keyManager.onKeydown) {\n this.tree.keyManager.onKeydown(event);\n }\n }\n\n private handleOpenKeydown(event: KeyboardEvent) {\n /* tslint:disable-next-line */\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n\n if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n\n this.close();\n } else if (keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW) {\n return this.originalOnKeyDown.call(this.tree, event);\n } else if (keyCode === HOME) {\n event.preventDefault();\n\n this.tree.keyManager.setFirstItemActive();\n } else if (keyCode === END) {\n event.preventDefault();\n\n this.tree.keyManager.setLastItemActive();\n } else if (keyCode === PAGE_UP) {\n event.preventDefault();\n\n this.tree.keyManager.setPreviousPageItemActive();\n } else if (keyCode === PAGE_DOWN) {\n event.preventDefault();\n\n this.tree.keyManager.setNextPageItemActive();\n } else if ((keyCode === ENTER || keyCode === SPACE) && this.tree.keyManager.activeItem) {\n event.preventDefault();\n\n if (!this.autoSelect) {\n this.selectionModel.toggle(this.tree.keyManager.activeItem.data);\n } else {\n this.close();\n }\n } else if (this.multiple && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n\n const hasDeselectedOptions = this.options.some((option) => !option.selected);\n\n this.options.forEach((option) => {\n if (hasDeselectedOptions && !option.disabled) {\n option.select();\n } else {\n option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = this.tree.keyManager.activeItemIndex;\n\n this.tree.keyManager.setFocusOrigin('keyboard');\n this.tree.keyManager.onKeydown(event);\n\n if (\n this.multiple && isArrowKey && event.shiftKey && this.tree.keyManager.activeItem &&\n this.tree.keyManager.activeItemIndex !== previouslyFocusedIndex\n ) {\n this.tree.keyManager.activeItem.selectViaInteraction(event);\n }\n\n if (this.autoSelect && this.tree.keyManager.activeItem) {\n this.tree.setSelectedOptionsByKey(\n this.tree.keyManager.activeItem, hasModifierKey(event, 'shiftKey'), hasModifierKey(event, 'ctrlKey')\n );\n }\n }\n }\n\n private initializeSelection() {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n this.setSelectionByValue(this.ngControl ? this.ngControl.value : this._value);\n });\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private setSelectionByValue(value: any | any[]) {\n if (this.multiple && value) {\n if (!Array.isArray(value)) { throw getMcSelectNonArrayValueError(); }\n\n this.tree.setOptionsFromValues(value);\n\n this.sortValues();\n } else {\n this.tree.setOptionsFromValues([value]);\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n private initKeyManager() {\n this.originalOnKeyDown = this.tree.onKeyDown;\n\n this.tree.onKeyDown = () => {};\n\n this.tree.keyManager.tabOut\n .pipe(takeUntil(this.destroy))\n .subscribe(() => {\n // Restore focus to the trigger before closing. Ensures that the focus\n // position won't be lost if the user got focus into the overlay.\n this.focus();\n this.close();\n });\n\n this.tree.keyManager.change\n .pipe(takeUntil(this.destroy))\n .subscribe(() => {\n if (this._panelOpen && this.panel) {\n this.scrollActiveOptionIntoView();\n } else if (!this._panelOpen && !this.multiple && this.tree.keyManager.activeItem) {\n this.tree.keyManager.activeItem.selectViaInteraction();\n }\n });\n }\n\n /** Sorts the selected values in the selected based on their order in the panel. */\n private sortValues() {\n if (this.multiple) {\n const options = this.options.toArray();\n\n this.selectionModel.sort((a, b) => {\n return this.sortComparator ? this.sortComparator(a, b, options) :\n options.indexOf(a) - options.indexOf(b);\n });\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n private highlightCorrectOption() {\n if (this.empty || !this.tree.keyManager) { return; }\n\n const firstSelectedValue = this.multiple ? this.selectedValues[0] : this.selectedValues;\n\n const selectedOption = this.options.find((option) => option.value === firstSelectedValue);\n\n if (selectedOption) {\n this.tree.keyManager.setActiveItem(selectedOption);\n }\n }\n\n /** Scrolls the active option into view. */\n private scrollActiveOptionIntoView() {\n const activeOptionIndex = this.tree.keyManager.activeItemIndex || 0;\n\n this.panel.nativeElement.scrollTop = getOptionScrollPosition(\n activeOptionIndex,\n this.tree.getItemHeight(),\n this.panel.nativeElement.scrollTop,\n SELECT_PANEL_MAX_HEIGHT\n );\n }\n\n /**\n * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text when\n * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n * can't be calculated until the panel has been attached, because we need to know the\n * content width in order to constrain the panel within the viewport.\n */\n private calculateOverlayOffsetX() {\n const overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n const viewportSize = this.viewportRuler.getViewportSize();\n const isRtl = this.isRtl();\n /* tslint:disable-next-line:no-magic-numbers */\n const paddingWidth = SELECT_PANEL_PADDING_X * 2;\n let offsetX: number = SELECT_PANEL_PADDING_X;\n\n // Invert the offset in LTR.\n if (!isRtl) { offsetX *= -1; }\n\n // Determine how much the select overflows on each side.\n const leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n const rightOverflow = overlayRect.right + offsetX - viewportSize.width\n + (isRtl ? 0 : paddingWidth);\n\n // If the element overflows on either side, reduce the offset to allow it to fit.\n if (leftOverflow > 0) {\n offsetX += leftOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n } else if (rightOverflow > 0) {\n offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n\n // Set the offset directly in order to avoid having to go through change detection and\n // potentially triggering \"changed after it was checked\" errors. Round the value to avoid\n // blurry content in some browsers.\n this.overlayDir.offsetX = Math.round(offsetX);\n this.overlayDir.overlayRef.updatePosition();\n }\n\n /** Comparison function to specify which option is displayed. Defaults to object equality. */\n private _compareWith = (o1: any, o2: any) => o1 === o2;\n}\n","<div cdk-overlay-origin\n class=\"mc-tree-select__trigger\"\n [class.mc-tree-select__trigger_multiple]=\"multiple\"\n #origin=\"cdkOverlayOrigin\"\n #trigger>\n <div class=\"mc-tree-select__matcher\" [ngSwitch]=\"empty\">\n <span class=\"mc-tree-select__placeholder\" *ngSwitchCase=\"true\">{{ placeholder || '\\u00A0' }}</span>\n <span *ngSwitchCase=\"false\" [ngSwitch]=\"!!customTrigger\">\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"mc-tree-select__match-container\">\n <span *ngSwitchCase=\"false\" class=\"mc-tree-select__matcher-text\">{{ triggerValue }}</span>\n <div *ngSwitchCase=\"true\" class=\"mc-tree-select__multiple-matcher\">\n <div class=\"mc-tree-select__match-list\">\n <mc-tag *ngFor=\"let option of triggerValues\"\n [selectable]=\"false\"\n [disabled]=\"option.disabled || disabled\"\n [class.mc-error]=\"errorState\">\n\n {{ option.viewValue }}\n <i mc-icon=\"mc-close-S_16\"\n *ngIf=\"!option.disabled && !disabled\"\n (click)=\"onRemoveSelectedOption(option, $event)\">\n </i>\n </mc-tag>\n </div>\n <div class=\"mc-tree-select__match-hidden-text\"\n [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\"\n #hiddenItemsCounter>\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n </div>\n <ng-content select=\"mc-tree-select-trigger\" *ngSwitchCase=\"true\"></ng-content>\n </span>\n </div>\n\n <div class=\"mc-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"mc-cleaner\"></ng-content>\n </div>\n\n <div class=\"mc-tree-select__arrow-wrapper\">\n <i class=\"mc-tree-select__arrow\" mc-icon=\"mc-angle-down-L_16\"></i>\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width!\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n (backdropClick)=\"close()\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n\n <div #panel\n class=\"mc-tree-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.transformOrigin]=\"transformOrigin\"\n [style.font-size.px]=\"triggerFontSize\"\n (keydown)=\"handleKeydown($event)\">\n\n <div #optionsContainer\n class=\"mc-tree-select__content\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\n <ng-content select=\"mc-tree-selection\"></ng-content>\n </div>\n </div>\n</ng-template>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MC_SELECT_SCROLL_STRATEGY_PROVIDER, McPseudoCheckboxModule } from '@ptsecurity/mosaic/core';\nimport { McIconModule } from '@ptsecurity/mosaic/icon';\nimport { McTagsModule } from '@ptsecurity/mosaic/tags';\nimport { McTreeModule } from '@ptsecurity/mosaic/tree';\n\nimport { McTreeSelect, McTreeSelectTrigger } from './tree-select.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n McTreeModule,\n McIconModule,\n McTagsModule,\n McPseudoCheckboxModule\n ],\n exports: [McTreeSelect, McTreeSelectTrigger, CommonModule],\n declarations: [McTreeSelect, McTreeSelectTrigger],\n providers: [MC_SELECT_SCROLL_STRATEGY_PROVIDER]\n})\nexport class McTreeSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAwGA,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB;MACa,kBAAkB;IAC3B,YAAmB,MAAoB,EAAS,KAAU,EAAS,cAAc,KAAK;QAAnE,WAAM,GAAN,MAAM,CAAc;QAAS,UAAK,GAAL,KAAK,CAAK;QAAS,gBAAW,GAAX,WAAW,CAAQ;KAAI;CAC7F;MAIY,mBAAmB;;oIAAnB,mBAAmB;wHAAnB,mBAAmB;4FAAnB,mBAAmB;kBAD/B,SAAS;mBAAC,EAAE,QAAQ,EAAE,wBAAwB,EAAE;;AAIjD,MAAM,gBAAgB;IAClB,YACW,UAAsB,EACtB,wBAA2C,EAC3C,UAAkB,EAClB,eAAmC,EACnC,SAAoB;QAJpB,eAAU,GAAV,UAAU,CAAY;QACtB,6BAAwB,GAAxB,wBAAwB,CAAmB;QAC3C,eAAU,GAAV,UAAU,CAAQ;QAClB,oBAAe,GAAf,eAAe,CAAoB;QACnC,cAAS,GAAT,SAAS,CAAW;KAC3B;CACP;AAED;AACA,MAAM,qBAAqB,GACG,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;MAmCjF,YAAa,SAAQ,qBAAqB;IA6QnD,YACI,UAAsB,EACb,iBAAoC,EAC5B,aAA4B,EAC5B,MAAc,EACd,QAAmB,EACpC,wBAA2C,EACS,qBAAqB,EAC/B,aAA0B,EACzB,YAAiC,EAC/C,GAAmB,EACpC,UAAkB,EAClB,eAAmC,EAClB,eAA4B,EACrC,SAAoB,EACb,OAAgB,EAChB,eAAgC;QAE3D,KAAK,CAAC,UAAU,EAAE,wBAAwB,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;QAhB3E,sBAAiB,GAAjB,iBAAiB,CAAmB;QAC5B,kBAAa,GAAb,aAAa,CAAe;QAC5B,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAW;QAEgB,0BAAqB,GAArB,qBAAqB,CAAA;QAC/B,kBAAa,GAAb,aAAa,CAAa;QACzB,iBAAY,GAAZ,YAAY,CAAqB;QAC/C,QAAG,GAAH,GAAG,CAAgB;QAGnB,oBAAe,GAAf,eAAe,CAAa;QAE9B,YAAO,GAAP,OAAO,CAAS;QAChB,oBAAe,GAAf,eAAe,CAAiB;;QAxR/D,gBAAW,GAAG,QAAQ,CAAC;QAEvB,gBAAW,GAAW,CAAC,CAAC;;QAMxB,oBAAe,GAAG,CAAC,CAAC;;QAMpB,oBAAe,GAAW,KAAK,CAAC;;QAGhC,6BAAwB,GAAG,IAAI,OAAO,EAAU,CAAC;;QAGjD,mBAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;;;;;;QAO9C,YAAO,GAAG,CAAC,CAAC;;;;;;;QAQZ,cAAS,GAAwB;YAC7B;gBACI,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,KAAK;aAClB;YACD;gBACI,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,QAAQ;aACrB;SACJ,CAAC;QAqBO,oBAAe,GAAW,QAAQ,CAAC;;QAGzB,iBAAY,GAA0B,IAAI,YAAY,EAAW,CAAC;;QAG1D,iBAAY,GACnC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,SAAQ,CAAC,CAAC,CAAC;;QAGjC,iBAAY,GACnC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,SAAQ,CAAC,CAAC,CAAC;;QAG1C,oBAAe,GAAG,IAAI,YAAY,EAAsB,CAAC;;;;;;QAOzD,gBAAW,GAAsB,IAAI,YAAY,EAAO,CAAC;QAKnE,kBAAa,GAAW,kCAAkC,CAAC;;QAY3D,2BAAsB,GAAmC,KAAK,CAAC;YACpE,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAC5B,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EACvB,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACpF,CAAC;aACL;YAED,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ;iBACtB,YAAY,EAAE;iBACd,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;SACpE,CAAmC,CAAC;QA0B7B,cAAS,GAAY,KAAK,CAAC;QAe3B,cAAS,GAAY,KAAK,CAAC;QAa3B,gBAAW,GAAY,IAAI,CAAC;QA8B5B,WAAM,GAAQ,IAAI,CAAC;QAuBnB,iBAAY,GAAY,KAAK,CAAC;QAW9B,aAAQ,GAAG,KAAK,CAAC;QAUjB,sBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC;QAEvC,eAAU,GAAG,KAAK,CAAC;;QAKnB,cAAS,GAAG,CAAC,CAAC;;QAGL,QAAG,GAAG,aAAa,YAAY,EAAE,EAAE,CAAC;;QAGpC,YAAO,GAAG,IAAI,OAAO,EAAQ,CAAC;;QAgK/C,aAAQ,GAAyB,SAAQ,CAAC;;QAG1C,cAAS,GAAG,SAAQ,CAAC;;QAsfb,iBAAY,GAAG,CAAC,EAAO,EAAE,EAAO,KAAK,EAAE,KAAK,EAAE,CAAC;QAhoBnD,IAAI,IAAI,CAAC,SAAS,EAAE;;;YAGhB,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;SACvC;;QAGD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;KACrB;IA5KD,IACI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAED,IAAI,WAAW,CAAC,KAAa;QACzB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;IAID,IACI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAE9C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;IAID,IACI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,MAAM,+BAA+B,EAAE,CAAC;SAC3C;QAED,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;IAID,IACI,UAAU;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QAEpC,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAED,IAAI,UAAU,CAAC,KAAc;QACzB,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACnD;;;;;;IASD,IACI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAED,IAAI,WAAW,CAAC,EAAiC;;QAE7C,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;YAC1B,MAAM,gCAAgC,EAAE,CAAC;SAC5C;QAED,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,cAAc,EAAE;;YAErB,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;KACJ;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;KAC3F;IAID,IACI,EAAE;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IAED,IAAI,EAAE,CAAC,KAAa;QAChB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;IAID,IACI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAED,IAAI,WAAW,CAAC,KAAc;QAC1B,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACpD;;IAKD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC;KAC3C;IAED,IAAI,OAAO,CAAC,KAAc;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;IAID,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KACzD;IAkDD,QAAQ;QACJ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;;;;QAKzB,IAAI,CAAC,wBAAwB;aACxB,IAAI,CAAC,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACrD,SAAS,CAAC;YACP,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC;iBAAM;gBACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;gBAC5B,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;aACzC;SACJ,CAAC,CAAC;KACV;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO;SAAE;QAE3B,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YACjC,mBAAmB,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,IAAI,CAAC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QAEzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxF,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE/B,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEvC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;SACzE;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;SACpC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC1B;QAED,IAAI,CAAC,sBAAsB;aACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC7B,SAAS,CAAC,CAAC,KAAK;YACb,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,EAAE;gBACvD,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;SACJ,CAAC,CAAC;QAEP,IAAI,CAAC,IAAI,CAAC,eAAe;aACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC7B,SAAS,CAAC,CAAC,KAAK;YACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAEnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;SACzE,CAAC,CAAC;QAEP,IAAI,CAAC,cAAc,CAAC,OAAO;aACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC7B,SAAS,CAAC,CAAC,KAAK;YACb,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;gBACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAQ,CACvE,CAAC;aACL;SACJ,CAAC,CAAC;KACV;IAED,eAAe;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO;SAAE;QAE3B,IAAI,CAAC,IAAI,CAAC,OAAO;aACZ,SAAS,CAAC;YACP,UAAU,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC;SACpD,CAAC,CAAC;QAEP,UAAU,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC;KACpD;IAED,SAAS;QACL,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAAE;KACnD;IAED,WAAW,CAAC,OAAsB;;;QAG9B,IAAI,OAAO,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC5B;KACJ;IAED,WAAW;QACP,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;KACxC;IAGD,wBAAwB,CAAC,eAAuB,EAAE,WAAmB;QACjE,OAAO,GAAG,eAAe,IAAI,WAAW,EAAE,CAAC;KAC9C;IAED,UAAU,CAAC,MAAM;QACb,MAAM,CAAC,eAAe,EAAE,CAAC;QAEzB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAE7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACtC;IAQD,MAAM;QACF,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;aAAM;YACH,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;KACJ;IAED,IAAI;QACA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO;SAAE;QAE1F,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;;;QAGtE,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,UAAU,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAEhD,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;;QAGtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE;aAC9B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC;YACP,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,EAAE;gBACjG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC;aAC1F;SACJ,CAAC,CAAC;KACV;;IAGD,KAAK;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO;SAAE;QAEjC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAExB,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;KACrC;;;;;;;IAQD,UAAU,CAAC,KAAU;QACjB,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACnC;aAAM;YACH,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SAC3B;KACJ;;;;;;;;IASD,gBAAgB,CAAC,EAAwB;QACrC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;;;;;;;;IASD,iBAAiB,CAAC,EAAY;QAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;;;;;;;IAQD,gBAAgB,CAAC,UAAmB;QAChC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACzF;IAED,IAAI,cAAc;QACd,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAE1G,OAAO,IAAI,CAAC,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;KAC7D;IAED,IAAI,YAAY;QACZ,IAAI,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC;SAAE;QAE9B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5D;IAED,IAAI,aAAa;QACb,IAAI,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC;SAAE;QAE9B,OAAO,IAAI,CAAC,cAAc;aACrB,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;aAClF,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;KACnC;IAED,IAAI,KAAK;QACL,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;KAChE;IAED,KAAK;QACD,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC;KACtD;IAED,aAAa,CAAC,KAAoB;QAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;aACjC;iBAAM;gBACH,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;aACnC;SACJ;KACJ;IAED,OAAO;QACH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC5B;KACJ;;;;;IAMD,MAAM;QACF,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC5B;KACJ;;IAGD,UAAU;QACN,IAAI,CAAC,UAAU,CAAC,cAAc;aACzB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC;YACP,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAEpD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAChC,CAAC,CAAC;QAEP,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE;aACzC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACtC;;IAGD,aAAa;QACT,OAAO,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;KACzE;IAED,KAAK;QACD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACzC;;;;;IAMD,gBAAgB;QACZ,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;;IAGD,sBAAsB,CAAC,cAAmB,EAAE,MAAM;QAC9C,MAAM,CAAC,eAAe,EAAE,CAAC;QAEzB,IAAI,CAAC,cAAc;aACd,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7G,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACtC;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAAE,OAAO;SAAE;QAEnE,IAAI,YAAY,GAAW,CAAC,CAAC;QAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAC3D,IAAI,sBAAsB,GAAW,CAAC,CAAC;QAEvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG;YAClB,IAAI,GAAG,CAAC,aAAa,CAAC,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,YAAY,EAAE;gBAC9D,sBAAsB,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC/D,YAAY,EAAE,CAAC;aAClB;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC;QAEtE,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,oCAAoC,CAAC,CAAC;YACpG,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC;YAE5F,MAAM,kBAAkB,GAAG,YAAY,CAAC,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC;;YAE9E,MAAM,iBAAiB,GAAW,EAAE,CAAC;YAErC,MAAM,gBAAgB,GAAW,WAAW,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;YAC3E,MAAM,YAAY,GAAW,gBAAgB,GAAG,iBAAiB,CAAC;YAElE,IAAI,kBAAkB,KAAK,eAAe,GAAG,YAAY,CAAC,EAAE;gBAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;aAAE;YAErF,IACI,sBAAsB,KAAK,gBAAgB;gBAC3C,CAAC,sBAAsB,GAAG,iBAAiB,IAAI,gBAAgB,EACjE;gBACE,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;gBAEtC,OAAQ;aACX;iBAAM,IAAI,CAAC,kBAAkB,IAAI,CAAC,eAAe,GAAG,iBAAiB,IAAI,YAAY,EAAE;gBACpF,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;SACJ;QAED,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACzC;IAEO,cAAc;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,UAAW,CAAC,aAAa,EAAE,CAAC;QAC7D,MAAM,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAW,CAAC,oBAAoB,EAAE,CAAC;QAChF,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,UAAW,CAAC,WAAW,EAAE,CAAC;QAE9D,OAAO,KAAK,CAAC,QAAQ,EAAE,oBAAoB,EAAE,WAAW,CAAC,CAAC;KAC7D;IAEO,2BAA2B;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChE,YAAY,CAAC,aAAa,CAAC,oCAAoC,CAAC,CAAC,MAAM,EAAE,CAAC;QAE1E,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAElD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAEpE,IAAI,eAAe,GAAW,CAAC,CAAC;QAChC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;YACjD,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAC9C,CAAC,CAAC;QAEH,YAAY,CAAC,MAAM,EAAE,CAAC;QAEtB,OAAO,eAAe,CAAC;KAC1B;IAEO,YAAY,CAAC,OAAoB;QACrC,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEvD,MAAM,KAAK,GAAW,QAAQ,CAAC,aAAa,CAAC,KAAe,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAW,QAAQ,CAAC,aAAa,CAAC,UAAoB,CAAC,CAAC;QACxE,MAAM,WAAW,GAAW,QAAQ,CAAC,aAAa,CAAC,WAAqB,CAAC,CAAC;QAE1E,OAAO,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC;KAC3C;IAEO,mBAAmB,CAAC,KAAoB;;QAE5C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,UAAU,GAAG,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,QAAQ;YAC7D,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,WAAW,CAAC;QACtD,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,CAAC;;QAGzD,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE;;YAE9D,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;aAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;YACjF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACzC;KACJ;IAEO,iBAAiB,CAAC,KAAoB;;QAE1C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,UAAU,GAAG,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,QAAQ,CAAC;QAElE,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE;;YAE5B,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;aAAM,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,WAAW,EAAE;YAC1D,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACxD;aAAM,IAAI,OAAO,KAAK,IAAI,EAAE;YACzB,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;SAC7C;aAAM,IAAI,OAAO,KAAK,GAAG,EAAE;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;SAC5C;aAAM,IAAI,OAAO,KAAK,OAAO,EAAE;YAC5B,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC;SACpD;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE;YAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;SAChD;aAAM,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;YACpF,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAClB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACpE;iBAAM;gBACH,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;SACJ;aAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE;YACxD,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE7E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM;gBACxB,IAAI,oBAAoB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;oBAC1C,MAAM,CAAC,MAAM,EAAE,CAAC;iBACnB;qBAAM;oBACH,MAAM,CAAC,QAAQ,EAAE,CAAC;iBACrB;aACJ,CAAC,CAAC;SACN;aAAM;YACH,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;YAEpE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAEtC,IACI,IAAI,CAAC,QAAQ,IAAI,UAAU,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU;gBAChF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,KAAK,sBAAsB,EACjE;gBACE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;aAC/D;YAED,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;gBACpD,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAC7B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CACvG,CAAC;aACL;SACJ;KACJ;IAEO,mBAAmB;;;QAGvB,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;YACnB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;SACjF,CAAC,CAAC;KACN;;;;;IAMO,mBAAmB,CAAC,KAAkB;QAC1C,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAAE,MAAM,6BAA6B,EAAE,CAAC;aAAE;YAErE,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAEtC,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;aAAM;YACH,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;KAC1C;IAEO,cAAc;QAClB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAQ,CAAC;QAE/B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;aACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC7B,SAAS,CAAC;;;YAGP,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB,CAAC,CAAC;QAEP,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;aACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC7B,SAAS,CAAC;YACP,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC/B,IAAI,CAAC,0BAA0B,EAAE,CAAC;aACrC;iBAAM,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;gBAC9E,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;aAC1D;SACJ,CAAC,CAAC;KACV;;IAGO,UAAU;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAEvC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;oBAC3D,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aAC/C,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC5B;KACJ;;;;;IAMO,sBAAsB;QAC1B,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO;SAAE;QAEpD,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QAExF,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,kBAAkB,CAAC,CAAC;QAE1F,IAAI,cAAc,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;SACtD;KACJ;;IAGO,0BAA0B;QAC9B,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,IAAI,CAAC,CAAC;QAEpE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,GAAG,uBAAuB,CACxD,iBAAiB,EACjB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EACzB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAClC,uBAAuB,CAC1B,CAAC;KACL;;;;;;;;IASO,uBAAuB;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC;QACtF,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;;QAE3B,MAAM,YAAY,GAAG,sBAAsB,GAAG,CAAC,CAAC;QAChD,IAAI,OAAO,GAAW,sBAAsB,CAAC;;QAG7C,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC;SAAE;;QAG9B,MAAM,YAAY,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,GAAG,OAAO,IAAI,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,GAAG,OAAO,GAAG,YAAY,CAAC,KAAK;eAC/D,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;;QAGjC,IAAI,YAAY,GAAG,CAAC,EAAE;YAClB,OAAO,IAAI,YAAY,GAAG,6BAA6B,CAAC;SAC3D;aAAM,IAAI,aAAa,GAAG,CAAC,EAAE;YAC1B,OAAO,IAAI,aAAa,GAAG,6BAA6B,CAAC;SAC5D;;;;QAKD,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;KAC/C;;6HA95BQ,YAAY,0LAoRT,yBAAyB,aACb,aAAa,6BACb,aAAa;iHAtR5B,YAAY,6+BALV;QACP,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE;QAC1D,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE;KACjD,gLAwEa,mBAAmB,uEAEnB,eAAe,kQAXlB,mBAAmB,qKAIhB,KAAK,wHCpOvB,20GA0EA,67LDgFgB;QACR,kBAAkB,CAAC,cAAc;QACjC,kBAAkB,CAAC,aAAa;KACnC;4FAMQ,YAAY;kBAhCxB,SAAS;mBAAC;oBACP,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,cAAc;oBACxB,WAAW,EAAE,kBAAkB;oBAC/B,SAAS,EAAE,CAAC,oBAAoB,CAAC;oBACjC,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;oBAChC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,IAAI,EAAE;wBACF,KAAK,EAAE,gBAAgB;wBACvB,qBAAqB,EAAE,UAAU;wBACjC,oBAAoB,EAAE,YAAY;wBAElC,WAAW,EAAE,IAAI;wBACjB,iBAAiB,EAAE,UAAU;wBAC7B,iBAAiB,EAAE,kBAAkB;wBAErC,SAAS,EAAE,UAAU;wBACrB,WAAW,EAAE,uBAAuB;wBACpC,SAAS,EAAE,WAAW;wBACtB,QAAQ,EAAE,UAAU;wBACpB,iBAAiB,EAAE,wBAAwB;qBAC9C;oBACD,UAAU,EAAE;wBACR,kBAAkB,CAAC,cAAc;wBACjC,kBAAkB,CAAC,aAAa;qBACnC;oBACD,SAAS,EAAE;wBACP,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,cAAc,EAAE;wBAC1D,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,cAAc,EAAE;qBACjD;iBACJ;;0BAqRQ,MAAM;2BAAC,yBAAyB;;0BAChC,QAAQ;;0BAAI,MAAM;2BAAC,aAAa;;0BAChC,QAAQ;;0BAAI,MAAM;2BAAC,aAAa;;0BAChC,QAAQ;;0BACR,QAAQ;;0BACR,QAAQ;;0BACR,QAAQ;;0BACR,QAAQ;;0BAAI,IAAI;;0BAChB,QAAQ;;0BAAI,IAAI;;0BAChB,QAAQ;;0BAAI,IAAI;4CApOoB,OAAO;sBAA/C,SAAS;uBAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAEA,KAAK;sBAA3C,SAAS;uBAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAEc,UAAU;sBAA5D,SAAS;uBAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAEG,kBAAkB;sBAArE,SAAS;uBAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAE7B,IAAI;sBAAxB,YAAY;uBAAC,KAAK;gBAEgC,OAAO;sBAAzD,YAAY;uBAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAGK,aAAa;sBAAlE,YAAY;uBAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAEF,IAAI;sBAArD,YAAY;uBAAC,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAEvC,eAAe;sBAAvB,KAAK;gBAGa,YAAY;sBAA9B,MAAM;gBAGoB,YAAY;sBAAtC,MAAM;uBAAC,QAAQ;gBAIW,YAAY;sBAAtC,MAAM;uBAAC,QAAQ;gBAIG,eAAe;sBAAjC,MAAM;gBAOY,WAAW;sBAA7B,MAAM;gBAGE,UAAU;sBAAlB,KAAK;gBAEG,aAAa;sBAArB,KAAK;gBAGG,iBAAiB;sBAAzB,KAAK;gBAMG,cAAc;sBAAtB,KAAK;gBAiBF,WAAW;sBADd,KAAK;gBAcF,QAAQ;sBADX,KAAK;gBAcF,QAAQ;sBADX,KAAK;gBAgBF,UAAU;sBADb,KAAK;gBAmBF,WAAW;sBADd,KAAK;gBA0BF,EAAE;sBADL,KAAK;gBAaF,WAAW;sBADd,KAAK;gBA2LN,wBAAwB;sBADvB,KAAK;;;MEliBG,kBAAkB;;mIAAlB,kBAAkB;oIAAlB,kBAAkB,iBAHZ,YAAY,EAAE,mBAAmB,aAR5C,YAAY;QACZ,aAAa;QACb,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,sBAAsB,aAEhB,YAAY,EAAE,mBAAmB,EAAE,YAAY;oIAIhD,kBAAkB,aAFhB,CAAC,kCAAkC,CAAC,YAVtC;YACL,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,sBAAsB;SACzB,EAC4C,YAAY;4FAIhD,kBAAkB;kBAb9B,QAAQ;mBAAC;oBACN,OAAO,EAAE;wBACL,YAAY;wBACZ,aAAa;wBACb,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,sBAAsB;qBACzB;oBACD,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,YAAY,CAAC;oBAC1D,YAAY,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC;oBACjD,SAAS,EAAE,CAAC,kCAAkC,CAAC;iBAClD;;;ACvBD;;;;;;"}
|
@@ -33,9 +33,9 @@ class McTreeNodeDef {
|
|
33
33
|
this.template = template;
|
34
34
|
}
|
35
35
|
}
|
36
|
-
/** @nocollapse */ McTreeNodeDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
37
|
-
/** @nocollapse */ McTreeNodeDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
36
|
+
/** @nocollapse */ McTreeNodeDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNodeDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
37
|
+
/** @nocollapse */ McTreeNodeDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTreeNodeDef, selector: "[mcTreeNodeDef]", inputs: { when: ["mcTreeNodeDefWhen", "when"], data: ["mcTreeNode", "data"] }, ngImport: i0 });
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNodeDef, decorators: [{
|
39
39
|
type: Directive,
|
40
40
|
args: [{
|
41
41
|
selector: '[mcTreeNodeDef]',
|
@@ -52,9 +52,9 @@ class McTreeNodeOutlet {
|
|
52
52
|
this.changeDetectorRef = changeDetectorRef;
|
53
53
|
}
|
54
54
|
}
|
55
|
-
/** @nocollapse */ McTreeNodeOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
56
|
-
/** @nocollapse */ McTreeNodeOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
55
|
+
/** @nocollapse */ McTreeNodeOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNodeOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
56
|
+
/** @nocollapse */ McTreeNodeOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTreeNodeOutlet, selector: "[mcTreeNodeOutlet]", ngImport: i0 });
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNodeOutlet, decorators: [{
|
58
58
|
type: Directive,
|
59
59
|
args: [{ selector: '[mcTreeNodeOutlet]' }]
|
60
60
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; } });
|
@@ -269,9 +269,9 @@ class McTreeBase {
|
|
269
269
|
}
|
270
270
|
}
|
271
271
|
}
|
272
|
-
/** @nocollapse */ McTreeBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
273
|
-
/** @nocollapse */ McTreeBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.
|
274
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
272
|
+
/** @nocollapse */ McTreeBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeBase, deps: [{ token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
273
|
+
/** @nocollapse */ McTreeBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTreeBase, inputs: { treeControl: "treeControl", trackBy: "trackBy", dataSource: "dataSource" }, queries: [{ propertyName: "nodeDefs", predicate: McTreeNodeDef }], viewQueries: [{ propertyName: "nodeOutlet", first: true, predicate: McTreeNodeOutlet, descendants: true, static: true }], ngImport: i0 });
|
274
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeBase, decorators: [{
|
275
275
|
type: Directive
|
276
276
|
}], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { treeControl: [{
|
277
277
|
type: Input
|
@@ -318,9 +318,9 @@ class McTreeNode {
|
|
318
318
|
* in `McTree` and set the data to it.
|
319
319
|
*/
|
320
320
|
McTreeNode.mostRecentTreeNode = null;
|
321
|
-
/** @nocollapse */ McTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
322
|
-
/** @nocollapse */ McTreeNode.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.
|
323
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
321
|
+
/** @nocollapse */ McTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNode, deps: [{ token: i0.ElementRef }, { token: forwardRef(() => McTreeBase) }], target: i0.ɵɵFactoryTarget.Directive });
|
322
|
+
/** @nocollapse */ McTreeNode.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTreeNode, selector: "mc-tree-node", exportAs: ["mcTreeNode"], ngImport: i0 });
|
323
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNode, decorators: [{
|
324
324
|
type: Directive,
|
325
325
|
args: [{
|
326
326
|
selector: 'mc-tree-node',
|
@@ -417,9 +417,9 @@ class McTreeNodePadding {
|
|
417
417
|
this.renderer.setStyle(this.element.nativeElement, paddingProp, padding);
|
418
418
|
}
|
419
419
|
}
|
420
|
-
/** @nocollapse */ McTreeNodePadding.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
421
|
-
/** @nocollapse */ McTreeNodePadding.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.
|
422
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
420
|
+
/** @nocollapse */ McTreeNodePadding.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNodePadding, deps: [{ token: McTreeNode }, { token: McTreeBase }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
421
|
+
/** @nocollapse */ McTreeNodePadding.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTreeNodePadding, selector: "[mcTreeNodePadding]", inputs: { indent: ["mcTreeNodePaddingIndent", "indent"] }, exportAs: ["mcTreeNodePadding"], ngImport: i0 });
|
422
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNodePadding, decorators: [{
|
423
423
|
type: Directive,
|
424
424
|
args: [{
|
425
425
|
selector: '[mcTreeNodePadding]',
|
@@ -427,10 +427,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
427
427
|
}]
|
428
428
|
}], ctorParameters: function () { return [{ type: McTreeNode }, { type: McTreeBase }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i2.Directionality, decorators: [{
|
429
429
|
type: Optional
|
430
|
-
}] }]; }, propDecorators: {
|
431
|
-
type: Input,
|
432
|
-
args: ['mcTreeNodePadding']
|
433
|
-
}], indent: [{
|
430
|
+
}] }]; }, propDecorators: { indent: [{
|
434
431
|
type: Input,
|
435
432
|
args: ['mcTreeNodePaddingIndent']
|
436
433
|
}] } });
|
@@ -469,9 +466,9 @@ class McTreeNodeToggleBaseDirective extends McTreeNodeToggleMixinBase {
|
|
469
466
|
event.stopPropagation();
|
470
467
|
}
|
471
468
|
}
|
472
|
-
/** @nocollapse */ McTreeNodeToggleBaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
473
|
-
/** @nocollapse */ McTreeNodeToggleBaseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.
|
474
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
469
|
+
/** @nocollapse */ McTreeNodeToggleBaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNodeToggleBaseDirective, deps: [{ token: McTreeBase }, { token: McTreeNode }], target: i0.ɵɵFactoryTarget.Directive });
|
470
|
+
/** @nocollapse */ McTreeNodeToggleBaseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTreeNodeToggleBaseDirective, inputs: { node: "node", recursive: ["mcTreeNodeToggleRecursive", "recursive"] }, usesInheritance: true, ngImport: i0 });
|
471
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNodeToggleBaseDirective, decorators: [{
|
475
472
|
type: Directive
|
476
473
|
}], ctorParameters: function () { return [{ type: McTreeBase }, { type: McTreeNode }]; }, propDecorators: { node: [{
|
477
474
|
type: Input
|
@@ -481,9 +478,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
481
478
|
}] } });
|
482
479
|
class McTreeNodeToggleComponent extends McTreeNodeToggleBaseDirective {
|
483
480
|
}
|
484
|
-
/** @nocollapse */ McTreeNodeToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
485
|
-
/** @nocollapse */ McTreeNodeToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
486
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
481
|
+
/** @nocollapse */ McTreeNodeToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNodeToggleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
482
|
+
/** @nocollapse */ McTreeNodeToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McTreeNodeToggleComponent, selector: "mc-tree-node-toggle", inputs: { disabled: "disabled" }, host: { listeners: { "click": "toggle($event)" }, properties: { "class.mc-opened": "iconState", "attr.disabled": "disabled || null" }, classAttribute: "mc-tree-node-toggle" }, exportAs: ["mcTreeNodeToggle"], usesInheritance: true, ngImport: i0, template: `<i class="mc mc-icon mc-angle-down-S_16"></i>`, isInline: true, styles: [".mc-tree-node-toggle{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:24px;height:100%;cursor:pointer}.mc-tree-node-toggle .mc-icon{transform:rotate(-90deg)}.mc-tree-node-toggle.mc-opened .mc-icon{transform:rotate(0)}.mc-tree-node-toggle[disabled]{cursor:default}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
483
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNodeToggleComponent, decorators: [{
|
487
484
|
type: Component,
|
488
485
|
args: [{
|
489
486
|
selector: 'mc-tree-node-toggle',
|
@@ -503,9 +500,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
503
500
|
}] });
|
504
501
|
class McTreeNodeToggleDirective extends McTreeNodeToggleBaseDirective {
|
505
502
|
}
|
506
|
-
/** @nocollapse */ McTreeNodeToggleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
507
|
-
/** @nocollapse */ McTreeNodeToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.
|
508
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
503
|
+
/** @nocollapse */ McTreeNodeToggleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNodeToggleDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
504
|
+
/** @nocollapse */ McTreeNodeToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTreeNodeToggleDirective, selector: "[mcTreeNodeToggle]", host: { listeners: { "click": "toggle($event)" }, properties: { "attr.disabled": "disabled || null" } }, exportAs: ["mcTreeNodeToggle"], usesInheritance: true, ngImport: i0 });
|
505
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeNodeToggleDirective, decorators: [{
|
509
506
|
type: Directive,
|
510
507
|
args: [{
|
511
508
|
selector: '[mcTreeNodeToggle]',
|
@@ -519,9 +516,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
519
516
|
|
520
517
|
class McTree extends McTreeBase {
|
521
518
|
}
|
522
|
-
/** @nocollapse */ McTree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
523
|
-
/** @nocollapse */ McTree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
524
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
519
|
+
/** @nocollapse */ McTree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTree, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
520
|
+
/** @nocollapse */ McTree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McTree, selector: "mc-tree", host: { classAttribute: "mc-tree" }, exportAs: ["mcTree"], usesInheritance: true, ngImport: i0, template: `<ng-container mcTreeNodeOutlet></ng-container>`, isInline: true, styles: [".mc-tree{display:block}\n"], directives: [{ type: McTreeNodeOutlet, selector: "[mcTreeNodeOutlet]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
521
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTree, decorators: [{
|
525
522
|
type: Component,
|
526
523
|
args: [{
|
527
524
|
selector: 'mc-tree',
|
@@ -706,12 +703,12 @@ class McTreeOption extends McTreeNode {
|
|
706
703
|
this.changeDetectorRef.markForCheck();
|
707
704
|
}
|
708
705
|
}
|
709
|
-
/** @nocollapse */ McTreeOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
710
|
-
/** @nocollapse */ McTreeOption.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
706
|
+
/** @nocollapse */ McTreeOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeOption, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: MC_TREE_OPTION_PARENT_COMPONENT }], target: i0.ɵɵFactoryTarget.Component });
|
707
|
+
/** @nocollapse */ McTreeOption.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McTreeOption, selector: "mc-tree-option", inputs: { disabled: "disabled", showCheckbox: "showCheckbox" }, outputs: { onSelectionChange: "onSelectionChange" }, host: { listeners: { "focusin": "focus()", "blur": "blur()", "click": "selectViaInteraction($event)", "keydown": "onKeydown($event)" }, properties: { "class.mc-selected": "selected", "class.mc-focused": "hasFocus", "class.mc-action-button-focused": "actionButton?.active", "attr.id": "id", "attr.tabindex": "-1", "attr.disabled": "disabled || null" }, classAttribute: "mc-tree-option" }, providers: [
|
711
708
|
{ provide: McTreeNode, useExisting: McTreeOption },
|
712
709
|
{ provide: MC_OPTION_ACTION_PARENT, useExisting: McTreeOption }
|
713
|
-
], queries: [{ propertyName: "toggleElement", first: true, predicate: ["mcTreeNodeToggle"], descendants: true }, { propertyName: "actionButton", first: true, predicate: McOptionActionComponent, descendants: true }, { propertyName: "tooltipTrigger", first: true, predicate: McTooltipTrigger, descendants: true }, { propertyName: "dropdownTrigger", first: true, predicate: McDropdownTrigger, descendants: true }], exportAs: ["mcTreeOption"], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"mc-tree-node-toggle\"></ng-content>\n\n<mc-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n [disabled]=\"disabled\">\n</mc-pseudo-checkbox>\n\n<ng-content select=\"[mc-icon]\"></ng-content>\n\n<span class=\"mc-option-text mc-no-select\"><ng-content></ng-content></span>\n\n<ng-content select=\"mc-option-action\"></ng-content>\n\n<div class=\"mc-option-overlay\"></div>\n", styles: [".mc-tree-option{box-sizing:border-box;display:flex;align-items:center;height:32px;height:var(--mc-tree-size-node-height, 32px);word-wrap:break-word;border:2px solid transparent}.mc-tree-option .mc-option-text{display:inline-block;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:16px;margin-right:var(--mc-tree-size-padding-right, 16px)}.mc-tree-option>.mc-icon{margin-right:8px;cursor:pointer}.mc-tree-option:focus{outline:none}.mc-tree-option:not([disabled]){cursor:pointer}.mc-tree-option
|
714
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
710
|
+
], queries: [{ propertyName: "toggleElement", first: true, predicate: ["mcTreeNodeToggle"], descendants: true }, { propertyName: "actionButton", first: true, predicate: McOptionActionComponent, descendants: true }, { propertyName: "tooltipTrigger", first: true, predicate: McTooltipTrigger, descendants: true }, { propertyName: "dropdownTrigger", first: true, predicate: McDropdownTrigger, descendants: true }], exportAs: ["mcTreeOption"], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"mc-tree-node-toggle\"></ng-content>\n\n<mc-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n [disabled]=\"disabled\">\n</mc-pseudo-checkbox>\n\n<ng-content select=\"mc-checkbox\"></ng-content>\n\n<ng-content select=\"[mc-icon]\"></ng-content>\n\n<span class=\"mc-option-text mc-no-select\"><ng-content></ng-content></span>\n\n<ng-content select=\"mc-option-action\"></ng-content>\n\n<div class=\"mc-option-overlay\"></div>\n", styles: [".mc-tree-option{box-sizing:border-box;display:flex;align-items:center;height:32px;height:var(--mc-tree-size-node-height, 32px);word-wrap:break-word;border:2px solid transparent}.mc-tree-option .mc-option-text{display:inline-block;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:16px;margin-right:var(--mc-tree-size-padding-right, 16px)}.mc-tree-option>.mc-icon{margin-right:8px;cursor:pointer}.mc-tree-option:focus{outline:none}.mc-tree-option:not([disabled]){cursor:pointer}.mc-tree-option>.mc-pseudo-checkbox,.mc-tree-option>.mc-checkbox{margin-right:8px}.mc-tree-option .mc-option-action{display:none}.mc-tree-option:not([disabled]):hover .mc-option-action,.mc-tree-option:not([disabled]).mc-focused .mc-option-action,.mc-tree-option:not([disabled]).mc-action-button-focused .mc-option-action{display:flex}\n"], components: [{ type: i1.McPseudoCheckbox, selector: "mc-pseudo-checkbox", inputs: ["state", "disabled"] }], directives: [{ type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
711
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeOption, decorators: [{
|
715
712
|
type: Component,
|
716
713
|
args: [{
|
717
714
|
selector: 'mc-tree-option',
|
@@ -1403,13 +1400,13 @@ class McTreeSelection extends McTreeBase {
|
|
1403
1400
|
return $event.relatedTarget.classList.contains('mc-tree-option');
|
1404
1401
|
}
|
1405
1402
|
}
|
1406
|
-
/** @nocollapse */ McTreeSelection.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
1407
|
-
/** @nocollapse */ McTreeSelection.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.
|
1403
|
+
/** @nocollapse */ McTreeSelection.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeSelection, deps: [{ token: i0.ElementRef }, { token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }, { token: 'multiple', attribute: true }, { token: i1$1.Clipboard, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
1404
|
+
/** @nocollapse */ McTreeSelection.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McTreeSelection, selector: "mc-tree-selection", inputs: { treeControl: "treeControl", autoSelect: "autoSelect", noUnselectLast: "noUnselectLast", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { navigationChange: "navigationChange", selectionChange: "selectionChange", onSelectAll: "onSelectAll", onCopy: "onCopy" }, host: { listeners: { "blur": "blur()", "focus": "focus($event)", "keydown": "onKeyDown($event)", "window:resize": "updateScrollSize()" }, properties: { "attr.tabindex": "tabIndex", "attr.disabled": "disabled || null" }, classAttribute: "mc-tree-selection" }, providers: [
|
1408
1405
|
MC_SELECTION_TREE_VALUE_ACCESSOR,
|
1409
1406
|
{ provide: MC_TREE_OPTION_PARENT_COMPONENT, useExisting: McTreeSelection },
|
1410
1407
|
{ provide: McTreeBase, useExisting: McTreeSelection }
|
1411
1408
|
], queries: [{ propertyName: "unorderedOptions", predicate: McTreeOption }], viewQueries: [{ propertyName: "nodeOutlet", first: true, predicate: McTreeNodeOutlet, descendants: true, static: true }], exportAs: ["mcTreeSelection"], usesInheritance: true, ngImport: i0, template: '<ng-container mcTreeNodeOutlet></ng-container>', isInline: true, styles: [".mc-tree-selection{display:block}\n"], directives: [{ type: McTreeNodeOutlet, selector: "[mcTreeNodeOutlet]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
1412
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
1409
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeSelection, decorators: [{
|
1413
1410
|
type: Component,
|
1414
1411
|
args: [{
|
1415
1412
|
selector: 'mc-tree-selection',
|
@@ -1472,21 +1469,19 @@ const MC_TREE_DIRECTIVES = [
|
|
1472
1469
|
McTree,
|
1473
1470
|
McTreeSelection,
|
1474
1471
|
McTreeOption,
|
1475
|
-
McTreeNodePadding,
|
1476
1472
|
McTreeNodeToggleComponent,
|
1477
1473
|
McTreeNodeToggleDirective
|
1478
1474
|
];
|
1479
1475
|
class McTreeModule {
|
1480
1476
|
}
|
1481
|
-
/** @nocollapse */ McTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
1482
|
-
/** @nocollapse */ McTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.
|
1477
|
+
/** @nocollapse */ McTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
1478
|
+
/** @nocollapse */ McTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeModule, declarations: [McTreeNodeOutlet,
|
1483
1479
|
McTreeNodeDef,
|
1484
1480
|
McTreeNode,
|
1485
1481
|
McTreeNodePadding,
|
1486
1482
|
McTree,
|
1487
1483
|
McTreeSelection,
|
1488
1484
|
McTreeOption,
|
1489
|
-
McTreeNodePadding,
|
1490
1485
|
McTreeNodeToggleComponent,
|
1491
1486
|
McTreeNodeToggleDirective], imports: [CommonModule, McPseudoCheckboxModule], exports: [McTreeNodeOutlet,
|
1492
1487
|
McTreeNodeDef,
|
@@ -1495,11 +1490,10 @@ class McTreeModule {
|
|
1495
1490
|
McTree,
|
1496
1491
|
McTreeSelection,
|
1497
1492
|
McTreeOption,
|
1498
|
-
McTreeNodePadding,
|
1499
1493
|
McTreeNodeToggleComponent,
|
1500
1494
|
McTreeNodeToggleDirective] });
|
1501
|
-
/** @nocollapse */ McTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.
|
1502
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
1495
|
+
/** @nocollapse */ McTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeModule, imports: [[CommonModule, McPseudoCheckboxModule]] });
|
1496
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTreeModule, decorators: [{
|
1503
1497
|
type: NgModule,
|
1504
1498
|
args: [{
|
1505
1499
|
imports: [CommonModule, McPseudoCheckboxModule],
|