@fundamental-ngx/cdk 0.58.1 → 0.59.0-rc.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/fesm2022/fundamental-ngx-cdk-data-source.mjs +7 -7
- package/fesm2022/fundamental-ngx-cdk-data-source.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-cdk-forms.mjs +10 -10
- package/fesm2022/fundamental-ngx-cdk-forms.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-cdk-utils.mjs +317 -317
- package/fesm2022/fundamental-ngx-cdk-utils.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-cdk.mjs +4 -4
- package/fesm2022/fundamental-ngx-cdk.mjs.map +1 -1
- package/package.json +13 -13
- package/{utils/index.d.ts → types/fundamental-ngx-cdk-utils.d.ts} +47 -48
- /package/{data-source/index.d.ts → types/fundamental-ngx-cdk-data-source.d.ts} +0 -0
- /package/{forms/index.d.ts → types/fundamental-ngx-cdk-forms.d.ts} +0 -0
- /package/{index.d.ts → types/fundamental-ngx-cdk.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-cdk-utils.mjs","sources":["../tmp-esm2022/utils/functions/consumer-provider-factory.js","../tmp-esm2022/utils/functions/element-size.js","../tmp-esm2022/utils/functions/get-document-font-size.js","../tmp-esm2022/utils/functions/intersection-observable.js","../tmp-esm2022/utils/functions/is-compact-density.js","../tmp-esm2022/utils/functions/is-odd.js","../tmp-esm2022/utils/functions/key-util.js","../tmp-esm2022/utils/functions/lodash-utils.js","../tmp-esm2022/utils/tokens/module-deprecations.token.js","../tmp-esm2022/utils/functions/module-deprecations-provider.js","../tmp-esm2022/utils/functions/parser-file-size.js","../tmp-esm2022/utils/functions/random-color-accent.js","../tmp-esm2022/utils/functions/resize-observable.js","../tmp-esm2022/utils/functions/scroll.js","../tmp-esm2022/utils/functions/uuidv4-generator.js","../tmp-esm2022/utils/directives/auto-complete/auto-complete.directive.js","../tmp-esm2022/utils/directives/auto-complete/auto-complete.module.js","../tmp-esm2022/utils/helpers/destroy-observable.js","../tmp-esm2022/utils/helpers/dfs.js","../tmp-esm2022/utils/helpers/get-native-element.js","../tmp-esm2022/utils/typecheck.js","../tmp-esm2022/utils/helpers/range-selector.js","../tmp-esm2022/utils/helpers/warn-once.js","../tmp-esm2022/utils/services/content-density.service.js","../tmp-esm2022/utils/services/destroyed.service.js","../tmp-esm2022/utils/services/focus-trap.service.js","../tmp-esm2022/utils/services/keyboard-support/keyboard-support.service.js","../tmp-esm2022/utils/services/local-storage.service.js","../tmp-esm2022/utils/services/observers/attribute.observer.js","../tmp-esm2022/utils/services/resize-observer.service.js","../tmp-esm2022/utils/services/rtl.service.js","../tmp-esm2022/utils/services/tabbable-element.service.js","../tmp-esm2022/utils/tokens/viewport-size.observable.js","../tmp-esm2022/utils/directives/breakpoints/responsive-breakpoints.js","../tmp-esm2022/utils/directives/breakpoints/breakpoint.directive.js","../tmp-esm2022/utils/directives/clicked/clicked.directive.js","../tmp-esm2022/utils/directives/clicked/clicked-event.plugin.js","../tmp-esm2022/utils/directives/clicked/provide-fdk-clicked.js","../tmp-esm2022/utils/directives/clicked/clicked-behavior.module.js","../tmp-esm2022/utils/directives/clicked/element-click.observable.js","../tmp-esm2022/utils/directives/clicked/fdk-clicked-provider.service.js","../tmp-esm2022/utils/directives/disabled/fdk-disabled.token.js","../tmp-esm2022/utils/directives/disabled/set-disabled-state.js","../tmp-esm2022/utils/directives/disabled/disabled-behavior.directive.js","../tmp-esm2022/utils/directives/disabled/disabled-behavior.module.js","../tmp-esm2022/utils/directives/disabled/disabled.observer.js","../tmp-esm2022/utils/directives/disabled/default-disabled-view-modifier.js","../tmp-esm2022/utils/directives/disabled/fdk-disabled-provider.service.js","../tmp-esm2022/utils/directives/focus-key-manager/focus-key-manager.tokens.js","../tmp-esm2022/utils/directives/focus-key-manager/focus-key-manager-list.directive.js","../tmp-esm2022/utils/directives/focus-key-manager/focus-key-manager-item.directive.js","../tmp-esm2022/utils/directives/focus-key-manager/focus-key-manager-helpers.module.js","../tmp-esm2022/utils/directives/focusable-item/focusable-item.tokens.js","../tmp-esm2022/utils/directives/focusable-item/is-element-focusable-by-default.js","../tmp-esm2022/utils/directives/focusable-item/focusable.observer.js","../tmp-esm2022/utils/directives/focusable-item/focusable-item.directive.js","../tmp-esm2022/utils/directives/focusable-item/focusable-item.module.js","../tmp-esm2022/utils/directives/focusable-list/focusable-list.tokens.js","../tmp-esm2022/utils/directives/focusable-list/indirect-focusable-list.directive.js","../tmp-esm2022/utils/directives/focusable-item/indirect-focusable-item.directive.js","../tmp-esm2022/utils/directives/focusable-item/is-item-focusable.js","../tmp-esm2022/utils/directives/focusable-item/get-item-element.js","../tmp-esm2022/utils/directives/focusable-list/scroll.js","../tmp-esm2022/utils/directives/focusable-list/focusable-list.directive.js","../tmp-esm2022/utils/directives/focusable-list/focusable-list.module.js","../tmp-esm2022/utils/directives/focusable-grid/focusable-grid.tokens.js","../tmp-esm2022/utils/directives/focusable-grid/focusable-grid.directive.js","../tmp-esm2022/utils/directives/focusable-grid/focusable-grid.module.js","../tmp-esm2022/utils/directives/ignore-click-on-selection/tokens.js","../tmp-esm2022/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.js","../tmp-esm2022/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.js","../tmp-esm2022/utils/directives/initial-focus/initial-focus.directive.js","../tmp-esm2022/utils/directives/initial-focus/initial-focus.module.js","../tmp-esm2022/utils/directives/intersection-spy/intersection-spy.directive.js","../tmp-esm2022/utils/directives/line-clamp/line-clamp.directive.js","../tmp-esm2022/utils/directives/line-clamp/line-clamp.module.js","../tmp-esm2022/utils/directives/only-digits/only-digits.directive.js","../tmp-esm2022/utils/directives/only-digits/only-digits.module.js","../tmp-esm2022/utils/directives/overflow-list/overflow-list-item.directive.js","../tmp-esm2022/utils/directives/overflow-list/overflow-list.directive.js","../tmp-esm2022/utils/directives/overflow-list/overflow-list.module.js","../tmp-esm2022/utils/directives/readonly/set-readonly-state.js","../tmp-esm2022/utils/directives/readonly/default-readonly-view-modifier.js","../tmp-esm2022/utils/directives/readonly/fdk-readonly.token.js","../tmp-esm2022/utils/directives/readonly/readonly.observer.js","../tmp-esm2022/utils/directives/readonly/fdk-readonly-provider.service.js","../tmp-esm2022/utils/directives/readonly/readonly-behavior.directive.js","../tmp-esm2022/utils/directives/readonly/readonly-behavior.module.js","../tmp-esm2022/utils/directives/repeat/repeat.directive.js","../tmp-esm2022/utils/directives/repeat/repeat.module.js","../tmp-esm2022/utils/directives/resize-observer/resize-observer.directive.js","../tmp-esm2022/utils/directives/resize/resize-handle.directive.js","../tmp-esm2022/utils/directives/resize/resize.directive.js","../tmp-esm2022/utils/directives/resize/resize.module.js","../tmp-esm2022/utils/directives/selectable-list/select-component-root.token.js","../tmp-esm2022/utils/directives/selectable-list/selectable-item.token.js","../tmp-esm2022/utils/directives/selectable-list/selectable-list.tokens.js","../tmp-esm2022/utils/directives/selectable-list/selection.service.js","../tmp-esm2022/utils/directives/selectable-list/selectable-item.directive.js","../tmp-esm2022/utils/directives/selectable-list/selectable-list.directive.js","../tmp-esm2022/utils/directives/selectable-list/selectable-list.module.js","../tmp-esm2022/utils/directives/template/template.directive.js","../tmp-esm2022/utils/directives/template/template.module.js","../tmp-esm2022/utils/directives/truncate/truncate.directive.js","../tmp-esm2022/utils/directives/truncate/truncate.module.js","../tmp-esm2022/utils/drag-and-drop/tokens.js","../tmp-esm2022/utils/drag-and-drop/dnd-item/dnd-item.directive.js","../tmp-esm2022/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.js","../tmp-esm2022/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.js","../tmp-esm2022/utils/async-strategy/function-strategy.class.js","../tmp-esm2022/utils/async-strategy/observable-strategy.class.js","../tmp-esm2022/utils/async-strategy/promise-strategy.class.js","../tmp-esm2022/utils/async-strategy/value-strategy.class.js","../tmp-esm2022/utils/async-strategy/select-strategy.class.js","../tmp-esm2022/utils/drag-and-drop/dnd-list/dnd-list.directive.js","../tmp-esm2022/utils/drag-and-drop/drag-and-drop.module.js","../tmp-esm2022/utils/utils.module.js","../tmp-esm2022/utils/abstract-fd-ngx-class.js","../tmp-esm2022/utils/coercion/array.js","../tmp-esm2022/utils/components/dynamic-portal/dynamic-portal.component.js","../tmp-esm2022/utils/consts/error-messages.js","../tmp-esm2022/utils/consts/overflow-priority-score.js","../tmp-esm2022/utils/consts/unicode-letters.regex.js","../tmp-esm2022/utils/consts/unicode-numbers.regex.js","../tmp-esm2022/utils/interfaces/has-element-ref.interface.js","../tmp-esm2022/utils/decorators/apply-css-class.decorator.js","../tmp-esm2022/utils/decorators/apply-css-style.decorator.js","../tmp-esm2022/utils/decorators/setter-alternator.js","../tmp-esm2022/utils/decorators/coerce-boolean.js","../tmp-esm2022/utils/decorators/coerce-css-pixel.js","../tmp-esm2022/utils/deprecated-selector.class.js","../tmp-esm2022/utils/dynamic-component/dynamic-component-container.js","../tmp-esm2022/utils/dynamic-component/dynamic-component-injector.js","../tmp-esm2022/utils/dynamic-component/dynamic-component.service.js","../tmp-esm2022/utils/list-item/list-item-utils.js","../tmp-esm2022/utils/pipes/async-or-sync.pipe.js","../tmp-esm2022/utils/pipes/displayFn.pipe.js","../tmp-esm2022/utils/pipes/filter-strings.pipe.js","../tmp-esm2022/utils/pipes/is-compact.pipe.js","../tmp-esm2022/utils/pipes/make-async.pipe.js","../tmp-esm2022/utils/pipes/safe.pipe.js","../tmp-esm2022/utils/pipes/search-highlight.pipe.js","../tmp-esm2022/utils/pipes/truncate.pipe.js","../tmp-esm2022/utils/pipes/two-digits.pipe.js","../tmp-esm2022/utils/pipes/value-by-path.pipe.js","../tmp-esm2022/utils/pipes/pipe.module.js","../tmp-esm2022/utils/toast/base-toast-animations.js","../tmp-esm2022/utils/toast/base-toast-positions.js","../tmp-esm2022/utils/toast/base-toast.service.js","../tmp-esm2022/utils/toast/classes/base-toast-ref.js","../tmp-esm2022/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-ref.js","../tmp-esm2022/utils/toast/classes/action-dismissible/base-toast-action-dismissible-ref.js","../tmp-esm2022/utils/toast/classes/base-toast-config.js","../tmp-esm2022/utils/toast/classes/base-toast-container.component.js","../tmp-esm2022/utils/toast/classes/base-toast-overlay-container.js","../tmp-esm2022/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-config.js","../tmp-esm2022/utils/toast/classes/base-toast-animated-container.component.js","../tmp-esm2022/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.js","../tmp-esm2022/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible.service.js","../tmp-esm2022/utils/fundamental-ngx-cdk-utils.js"],"sourcesContent":["import { INJECTOR } from '@angular/core';\n/**\n * Creates provider for ConsumerClass\n */\nexport function consumerProviderFactory(ConsumerClass, providedConfiguration) {\n return {\n provide: ConsumerClass,\n useFactory: (injector) => new ConsumerClass(injector, providedConfiguration),\n deps: [INJECTOR]\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3VtZXItcHJvdmlkZXItZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2Z1bmN0aW9ucy9jb25zdW1lci1wcm92aWRlci1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBRTdEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNuQyxhQUE0RixFQUM1RixxQkFBd0M7SUFFeEMsT0FBTztRQUNILE9BQU8sRUFBRSxhQUFhO1FBQ3RCLFVBQVUsRUFBRSxDQUFDLFFBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQztRQUN0RixJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUM7S0FDbkIsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTkpFQ1RPUiwgSW5qZWN0b3IsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQ3JlYXRlcyBwcm92aWRlciBmb3IgQ29uc3VtZXJDbGFzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3VtZXJQcm92aWRlckZhY3Rvcnk8VCA9IGFueT4oXG4gICAgQ29uc3VtZXJDbGFzczogbmV3IChpbmplY3RvcjogSW5qZWN0b3IsIGFkZGl0aW9uYWxDb25maWc6IFJlY29yZDxhbnksIGFueT4gfCB1bmRlZmluZWQpID0+IFQsXG4gICAgcHJvdmlkZWRDb25maWd1cmF0aW9uPzogUmVjb3JkPGFueSwgYW55PlxuKTogUHJvdmlkZXIge1xuICAgIHJldHVybiB7XG4gICAgICAgIHByb3ZpZGU6IENvbnN1bWVyQ2xhc3MsXG4gICAgICAgIHVzZUZhY3Rvcnk6IChpbmplY3RvcjogSW5qZWN0b3IpID0+IG5ldyBDb25zdW1lckNsYXNzKGluamVjdG9yLCBwcm92aWRlZENvbmZpZ3VyYXRpb24pLFxuICAgICAgICBkZXBzOiBbSU5KRUNUT1JdXG4gICAgfTtcbn1cbiJdfQ==","import { ElementRef } from '@angular/core';\nexport const pxToNum = (pixels) => Number(pixels.replace('px', '')) || 0;\nexport const toNativeElement = (element) => element instanceof ElementRef ? element.nativeElement : element;\n/** Return elements capacity (width subtract by element padding)\n * @param element - HTMLelement or element reference\n * */\nexport function getElementCapacity(element) {\n const _element = toNativeElement(element);\n const computedStyle = window.getComputedStyle(_element);\n return pxToNum(computedStyle.width) - pxToNum(computedStyle.paddingLeft) - pxToNum(computedStyle.paddingRight);\n}\n/** Return elements width\n * @param element - HTMLelement or element reference\n * @param withMargin - weather to add element margins to width\n * */\nexport function getElementWidth(element, withMargin) {\n const _element = toNativeElement(element);\n const computedStyle = getComputedStyle(_element);\n return withMargin\n ? pxToNum(computedStyle.width) + pxToNum(computedStyle.marginLeft) + pxToNum(computedStyle.marginRight)\n : pxToNum(computedStyle.width);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1zaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZnVuY3Rpb25zL2VsZW1lbnQtc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQWMsRUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXpGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLE9BQWlDLEVBQWUsRUFBRSxDQUM5RSxPQUFPLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFFcEU7O0tBRUs7QUFDTCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBaUM7SUFDaEUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV4RCxPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ25ILENBQUM7QUFFRDs7O0tBR0s7QUFDTCxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQWlDLEVBQUUsVUFBb0I7SUFDbkYsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWpELE9BQU8sVUFBVTtRQUNiLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7UUFDdkcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IHB4VG9OdW0gPSAocGl4ZWxzOiBzdHJpbmcpOiBudW1iZXIgPT4gTnVtYmVyKHBpeGVscy5yZXBsYWNlKCdweCcsICcnKSkgfHwgMDtcblxuZXhwb3J0IGNvbnN0IHRvTmF0aXZlRWxlbWVudCA9IChlbGVtZW50OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYpOiBIVE1MRWxlbWVudCA9PlxuICAgIGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogZWxlbWVudDtcblxuLyoqIFJldHVybiBlbGVtZW50cyBjYXBhY2l0eSAod2lkdGggc3VidHJhY3QgYnkgZWxlbWVudCBwYWRkaW5nKVxuICogQHBhcmFtIGVsZW1lbnQgLSBIVE1MZWxlbWVudCBvciBlbGVtZW50IHJlZmVyZW5jZVxuICogKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50Q2FwYWNpdHkoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmKTogbnVtYmVyIHtcbiAgICBjb25zdCBfZWxlbWVudCA9IHRvTmF0aXZlRWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoX2VsZW1lbnQpO1xuXG4gICAgcmV0dXJuIHB4VG9OdW0oY29tcHV0ZWRTdHlsZS53aWR0aCkgLSBweFRvTnVtKGNvbXB1dGVkU3R5bGUucGFkZGluZ0xlZnQpIC0gcHhUb051bShjb21wdXRlZFN0eWxlLnBhZGRpbmdSaWdodCk7XG59XG5cbi8qKiBSZXR1cm4gZWxlbWVudHMgd2lkdGhcbiAqIEBwYXJhbSBlbGVtZW50IC0gSFRNTGVsZW1lbnQgb3IgZWxlbWVudCByZWZlcmVuY2VcbiAqIEBwYXJhbSB3aXRoTWFyZ2luIC0gd2VhdGhlciB0byBhZGQgZWxlbWVudCBtYXJnaW5zIHRvIHdpZHRoXG4gKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVsZW1lbnRXaWR0aChlbGVtZW50OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYsIHdpdGhNYXJnaW4/OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBjb25zdCBfZWxlbWVudCA9IHRvTmF0aXZlRWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShfZWxlbWVudCk7XG5cbiAgICByZXR1cm4gd2l0aE1hcmdpblxuICAgICAgICA/IHB4VG9OdW0oY29tcHV0ZWRTdHlsZS53aWR0aCkgKyBweFRvTnVtKGNvbXB1dGVkU3R5bGUubWFyZ2luTGVmdCkgKyBweFRvTnVtKGNvbXB1dGVkU3R5bGUubWFyZ2luUmlnaHQpXG4gICAgICAgIDogcHhUb051bShjb21wdXRlZFN0eWxlLndpZHRoKTtcbn1cbiJdfQ==","/** Get document font size in pixels. */\nexport function getDocumentFontSize() {\n const DEFAULT_SIZE = 16;\n const clientFontSize = document?.documentElement\n ? parseFloat(getComputedStyle(document.documentElement).fontSize)\n : DEFAULT_SIZE;\n return isNaN(clientFontSize) ? DEFAULT_SIZE : clientFontSize;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWRvY3VtZW50LWZvbnQtc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2Z1bmN0aW9ucy9nZXQtZG9jdW1lbnQtZm9udC1zaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUN4QyxNQUFNLFVBQVUsbUJBQW1CO0lBQy9CLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN4QixNQUFNLGNBQWMsR0FBRyxRQUFRLEVBQUUsZUFBZTtRQUM1QyxDQUFDLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDakUsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUNuQixPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBHZXQgZG9jdW1lbnQgZm9udCBzaXplIGluIHBpeGVscy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREb2N1bWVudEZvbnRTaXplKCk6IG51bWJlciB7XG4gICAgY29uc3QgREVGQVVMVF9TSVpFID0gMTY7XG4gICAgY29uc3QgY2xpZW50Rm9udFNpemUgPSBkb2N1bWVudD8uZG9jdW1lbnRFbGVtZW50XG4gICAgICAgID8gcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZm9udFNpemUpXG4gICAgICAgIDogREVGQVVMVF9TSVpFO1xuICAgIHJldHVybiBpc05hTihjbGllbnRGb250U2l6ZSkgPyBERUZBVUxUX1NJWkUgOiBjbGllbnRGb250U2l6ZTtcbn1cbiJdfQ==","import { NEVER, Observable } from 'rxjs';\n/**\n * RxJS wrapper for IntersectionObserver class.\n * @param target HTML element to spy on.\n * @param options @see {IntersectionObserverInit}\n * @returns {Observable} with observer entries.\n */\nexport function intersectionObservable(target, options) {\n if ('IntersectionObserver' in window) {\n return new Observable((subscriber) => {\n const io = new IntersectionObserver((entries) => {\n subscriber.next(entries);\n }, options);\n io.observe(target);\n return function unsubscribe() {\n io.disconnect();\n };\n });\n }\n else {\n // If browser doesn't support IntersectionObserver API never emit a value\n // since we're not supporting IE11 and any other browser should have it.\n return NEVER;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJzZWN0aW9uLW9ic2VydmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9mdW5jdGlvbnMvaW50ZXJzZWN0aW9uLW9ic2VydmFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekM7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQ2xDLE1BQWUsRUFDZixPQUFrQztJQUVsQyxJQUFJLHNCQUFzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNqQyxNQUFNLEVBQUUsR0FBRyxJQUFJLG9CQUFvQixDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzVDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRVosRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVuQixPQUFPLFNBQVMsV0FBVztnQkFDdkIsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztTQUFNLENBQUM7UUFDSix5RUFBeUU7UUFDekUsd0VBQXdFO1FBQ3hFLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTkVWRVIsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBSeEpTIHdyYXBwZXIgZm9yIEludGVyc2VjdGlvbk9ic2VydmVyIGNsYXNzLlxuICogQHBhcmFtIHRhcmdldCBIVE1MIGVsZW1lbnQgdG8gc3B5IG9uLlxuICogQHBhcmFtIG9wdGlvbnMgQHNlZSB7SW50ZXJzZWN0aW9uT2JzZXJ2ZXJJbml0fVxuICogQHJldHVybnMge09ic2VydmFibGV9IHdpdGggb2JzZXJ2ZXIgZW50cmllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludGVyc2VjdGlvbk9ic2VydmFibGUoXG4gICAgdGFyZ2V0OiBFbGVtZW50LFxuICAgIG9wdGlvbnM/OiBJbnRlcnNlY3Rpb25PYnNlcnZlckluaXRcbik6IE9ic2VydmFibGU8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdPiB7XG4gICAgaWYgKCdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93KSB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoZW50cmllcyk7XG4gICAgICAgICAgICB9LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgaW8ub2JzZXJ2ZSh0YXJnZXQpO1xuXG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKTogdm9pZCB7XG4gICAgICAgICAgICAgICAgaW8uZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgQVBJIG5ldmVyIGVtaXQgYSB2YWx1ZVxuICAgICAgICAvLyBzaW5jZSB3ZSdyZSBub3Qgc3VwcG9ydGluZyBJRTExIGFuZCBhbnkgb3RoZXIgYnJvd3NlciBzaG91bGQgaGF2ZSBpdC5cbiAgICAgICAgcmV0dXJuIE5FVkVSO1xuICAgIH1cbn1cbiJdfQ==","/** Determines whether provided value is valid content density */\nexport function isValidContentDensity(size) {\n return size === 'cozy' || size === 'compact' || size === 'condensed';\n}\n/**\n * Determines if \"compact\" styles should be applied based on provided content density\n */\nexport function isCompactDensity(size) {\n return isValidContentDensity(size) && size !== 'cozy';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtY29tcGFjdC1kZW5zaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZnVuY3Rpb25zL2lzLWNvbXBhY3QtZGVuc2l0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxpRUFBaUU7QUFDakUsTUFBTSxVQUFVLHFCQUFxQixDQUFDLElBQVM7SUFDM0MsT0FBTyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLFdBQVcsQ0FBQztBQUN6RSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBb0I7SUFDakQsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssTUFBTSxDQUFDO0FBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZW50RGVuc2l0eSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29udGVudC1kZW5zaXR5JztcblxuLyoqIERldGVybWluZXMgd2hldGhlciBwcm92aWRlZCB2YWx1ZSBpcyB2YWxpZCBjb250ZW50IGRlbnNpdHkgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQ29udGVudERlbnNpdHkoc2l6ZTogYW55KTogc2l6ZSBpcyBDb250ZW50RGVuc2l0eSB7XG4gICAgcmV0dXJuIHNpemUgPT09ICdjb3p5JyB8fCBzaXplID09PSAnY29tcGFjdCcgfHwgc2l6ZSA9PT0gJ2NvbmRlbnNlZCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBcImNvbXBhY3RcIiBzdHlsZXMgc2hvdWxkIGJlIGFwcGxpZWQgYmFzZWQgb24gcHJvdmlkZWQgY29udGVudCBkZW5zaXR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbXBhY3REZW5zaXR5KHNpemU6IENvbnRlbnREZW5zaXR5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRDb250ZW50RGVuc2l0eShzaXplKSAmJiBzaXplICE9PSAnY296eSc7XG59XG4iXX0=","/**\n * Function checks whether the passed number is odd.\n * @param number number to check.\n * @returns Boolean whether the number is odd.\n */\nexport function isOdd(number) {\n return number % 2 === 1;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtb2RkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZnVuY3Rpb25zL2lzLW9kZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxNQUFjO0lBQ2hDLE9BQU8sTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgdGhlIHBhc3NlZCBudW1iZXIgaXMgb2RkLlxuICogQHBhcmFtIG51bWJlciBudW1iZXIgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBCb29sZWFuIHdoZXRoZXIgdGhlIG51bWJlciBpcyBvZGQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09kZChudW1iZXI6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBudW1iZXIgJSAyID09PSAxO1xufVxuIl19","import { A, ALT, BACKSPACE, C, CONTROL, DASH, DELETE, DOWN_ARROW, END, ENTER, ESCAPE, F2, F7, HOME, LEFT_ARROW, MAC_ENTER, META, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, SHIFT, SPACE, TAB, UP_ARROW, V, X } from '@angular/cdk/keycodes';\nimport { isDevMode } from '@angular/core';\n/** Map of keyCodes and their corresponding \"key\" values */\nconst keyMap = new Map([\n [RIGHT_ARROW, ['ArrowRight', 'Right']],\n [DOWN_ARROW, ['ArrowDown', 'Down']],\n [LEFT_ARROW, ['ArrowLeft', 'Left']],\n [UP_ARROW, ['ArrowUp', 'Up']],\n [SPACE, ['Space', 'Spacebar', ' ']],\n [ESCAPE, ['Escape', 'Esc']],\n [DELETE, ['Delete', 'Del']],\n [ENTER, ['Enter']],\n [MAC_ENTER, ['Enter']],\n [TAB, ['Tab']],\n [HOME, ['Home']],\n [END, ['End']],\n [ALT, ['Alt']],\n [CONTROL, ['Ctrl', 'Control', 'Meta']],\n [META, ['Meta']],\n [SHIFT, ['Shift']],\n [BACKSPACE, ['Backspace']],\n [A, ['KeyA']],\n [C, ['KeyC']],\n [V, ['KeyV']],\n [X, ['KeyX']],\n [PAGE_UP, ['PageUp']],\n [PAGE_DOWN, ['PageDown']],\n [DASH, ['-']],\n [NUMPAD_MINUS, ['-']],\n [NUMPAD_ZERO, ['NumPad0']],\n [NUMPAD_ONE, ['NumPad1']],\n [NUMPAD_TWO, ['NumPad2']],\n [NUMPAD_THREE, ['NumPad3']],\n [NUMPAD_FOUR, ['NumPad4']],\n [NUMPAD_FIVE, ['NumPad5']],\n [NUMPAD_SIX, ['NumPad6']],\n [NUMPAD_SEVEN, ['NumPad7']],\n [NUMPAD_EIGHT, ['NumPad8']],\n [NUMPAD_NINE, ['NumPad9']],\n [F2, ['F2']],\n [F7, ['F7']]\n]);\nexport class KeyUtil {\n /**\n * Function used to unify key identification across different browsers using KeyCodes\n *\n * @param event - KeyboardEvent\n * @param keyCode - event.key name matching W3C specification / (ASSCI char. codes)\n * */\n static isKeyCode(event, keyCode) {\n if (Array.isArray(keyCode)) {\n return keyCode.some((key) => this.isKeyCode(event, key));\n }\n if (event && keyMap.get(keyCode)) {\n return keyMap.get(keyCode)?.some((alias) => alias === event.key) || keyCode === event.keyCode;\n }\n if (isDevMode()) {\n throw new Error(`Invalid function arguments. Check if \"event\" is a KeyboardEvent or \"key\" is defined in keyMap`);\n }\n return false;\n }\n /**\n * Function used to unify key identification across different browsers\n *\n * @param event - KeyboardEvent\n * @param keyType - Type of key\n * */\n static isKeyType(event, keyType) {\n if (event && keyType) {\n switch (keyType) {\n case 'numeric':\n return event.code\n ? event.code.toLowerCase().includes('digit')\n : (event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105);\n case 'alphabetical':\n return event.code\n ? event.code.toLowerCase().includes('key')\n : event.keyCode >= 65 && event.keyCode <= 90;\n // some service commands as alt, ctr, insert, print, f4 etc. All except letters, numbers and symbols\n case 'control':\n return event.keyCode < 48 || (event.keyCode >= 112 && event.keyCode <= 123);\n case 'ime':\n return event.key?.toLowerCase() === 'process' || event.keyCode === 229;\n }\n }\n if (isDevMode()) {\n throw new Error(`Invalid function arguments.`);\n }\n return false;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9mdW5jdGlvbnMva2V5LXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILENBQUMsRUFDRCxHQUFHLEVBQ0gsU0FBUyxFQUNULENBQUMsRUFDRCxPQUFPLEVBQ1AsSUFBSSxFQUNKLE1BQU0sRUFDTixVQUFVLEVBQ1YsR0FBRyxFQUNILEtBQUssRUFDTCxNQUFNLEVBQ04sRUFBRSxFQUNGLEVBQUUsRUFDRixJQUFJLEVBQ0osVUFBVSxFQUNWLFNBQVMsRUFDVCxJQUFJLEVBQ0osWUFBWSxFQUNaLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFdBQVcsRUFDWCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLEVBQ0wsS0FBSyxFQUNMLEdBQUcsRUFDSCxRQUFRLEVBQ1IsQ0FBQyxFQUNELENBQUMsRUFDSixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsMkRBQTJEO0FBQzNELE1BQU0sTUFBTSxHQUEwQixJQUFJLEdBQUcsQ0FBQztJQUMxQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7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QUUsV0FBVyxFQUFFLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDO1lBQy9FLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEEsXG4gICAgQUxULFxuICAgIEJBQ0tTUEFDRSxcbiAgICBDLFxuICAgIENPTlRST0wsXG4gICAgREFTSCxcbiAgICBERUxFVEUsXG4gICAgRE9XTl9BUlJPVyxcbiAgICBFTkQsXG4gICAgRU5URVIsXG4gICAgRVNDQVBFLFxuICAgIEYyLFxuICAgIEY3LFxuICAgIEhPTUUsXG4gICAgTEVGVF9BUlJPVyxcbiAgICBNQUNfRU5URVIsXG4gICAgTUVUQSxcbiAgICBOVU1QQURfRUlHSFQsXG4gICAgTlVNUEFEX0ZJVkUsXG4gICAgTlVNUEFEX0ZPVVIsXG4gICAgTlVNUEFEX01JTlVTLFxuICAgIE5VTVBBRF9OSU5FLFxuICAgIE5VTVBBRF9PTkUsXG4gICAgTlVNUEFEX1NFVkVOLFxuICAgIE5VTVBBRF9TSVgsXG4gICAgTlVNUEFEX1RIUkVFLFxuICAgIE5VTVBBRF9UV08sXG4gICAgTlVNUEFEX1pFUk8sXG4gICAgUEFHRV9ET1dOLFxuICAgIFBBR0VfVVAsXG4gICAgUklHSFRfQVJST1csXG4gICAgU0hJRlQsXG4gICAgU1BBQ0UsXG4gICAgVEFCLFxuICAgIFVQX0FSUk9XLFxuICAgIFYsXG4gICAgWFxufSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKiBNYXAgb2Yga2V5Q29kZXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgXCJrZXlcIiB2YWx1ZXMgKi9cbmNvbnN0IGtleU1hcDogTWFwPG51bWJlciwgc3RyaW5nW10+ID0gbmV3IE1hcChbXG4gICAgW1JJR0hUX0FSUk9XLCBbJ0Fycm93UmlnaHQnLCAnUmlnaHQnXV0sXG4gICAgW0RPV05fQVJST1csIFsnQXJyb3dEb3duJywgJ0Rvd24nXV0sXG4gICAgW0xFRlRfQVJST1csIFsnQXJyb3dMZWZ0JywgJ0xlZnQnXV0sXG4gICAgW1VQX0FSUk9XLCBbJ0Fycm93VXAnLCAnVXAnXV0sXG4gICAgW1NQQUNFLCBbJ1NwYWNlJywgJ1NwYWNlYmFyJywgJyAnXV0sXG4gICAgW0VTQ0FQRSwgWydFc2NhcGUnLCAnRXNjJ11dLFxuICAgIFtERUxFVEUsIFsnRGVsZXRlJywgJ0RlbCddXSxcbiAgICBbRU5URVIsIFsnRW50ZXInXV0sXG4gICAgW01BQ19FTlRFUiwgWydFbnRlciddXSxcbiAgICBbVEFCLCBbJ1RhYiddXSxcbiAgICBbSE9NRSwgWydIb21lJ11dLFxuICAgIFtFTkQsIFsnRW5kJ11dLFxuICAgIFtBTFQsIFsnQWx0J11dLFxuICAgIFtDT05UUk9MLCBbJ0N0cmwnLCAnQ29udHJvbCcsICdNZXRhJ11dLFxuICAgIFtNRVRBLCBbJ01ldGEnXV0sXG4gICAgW1NISUZULCBbJ1NoaWZ0J11dLFxuICAgIFtCQUNLU1BBQ0UsIFsnQmFja3NwYWNlJ11dLFxuICAgIFtBLCBbJ0tleUEnXV0sXG4gICAgW0MsIFsnS2V5QyddXSxcbiAgICBbViwgWydLZXlWJ11dLFxuICAgIFtYLCBbJ0tleVgnXV0sXG4gICAgW1BBR0VfVVAsIFsnUGFnZVVwJ11dLFxuICAgIFtQQUdFX0RPV04sIFsnUGFnZURvd24nXV0sXG4gICAgW0RBU0gsIFsnLSddXSxcbiAgICBbTlVNUEFEX01JTlVTLCBbJy0nXV0sXG4gICAgW05VTVBBRF9aRVJPLCBbJ051bVBhZDAnXV0sXG4gICAgW05VTVBBRF9PTkUsIFsnTnVtUGFkMSddXSxcbiAgICBbTlVNUEFEX1RXTywgWydOdW1QYWQyJ11dLFxuICAgIFtOVU1QQURfVEhSRUUsIFsnTnVtUGFkMyddXSxcbiAgICBbTlVNUEFEX0ZPVVIsIFsnTnVtUGFkNCddXSxcbiAgICBbTlVNUEFEX0ZJVkUsIFsnTnVtUGFkNSddXSxcbiAgICBbTlVNUEFEX1NJWCwgWydOdW1QYWQ2J11dLFxuICAgIFtOVU1QQURfU0VWRU4sIFsnTnVtUGFkNyddXSxcbiAgICBbTlVNUEFEX0VJR0hULCBbJ051bVBhZDgnXV0sXG4gICAgW05VTVBBRF9OSU5FLCBbJ051bVBhZDknXV0sXG4gICAgW0YyLCBbJ0YyJ11dLFxuICAgIFtGNywgWydGNyddXVxuXSk7XG5cbmV4cG9ydCBjbGFzcyBLZXlVdGlsIHtcbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIHVuaWZ5IGtleSBpZGVudGlmaWNhdGlvbiBhY3Jvc3MgZGlmZmVyZW50IGJyb3dzZXJzIHVzaW5nIEtleUNvZGVzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgICAgIC0gS2V5Ym9hcmRFdmVudFxuICAgICAqIEBwYXJhbSBrZXlDb2RlICAgLSBldmVudC5rZXkgbmFtZSBtYXRjaGluZyBXM0Mgc3BlY2lmaWNhdGlvbiAvIChBU1NDSSBjaGFyLiBjb2RlcylcbiAgICAgKiAqL1xuICAgIHN0YXRpYyBpc0tleUNvZGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGtleUNvZGU6IG51bWJlciB8IG51bWJlcltdKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGtleUNvZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4ga2V5Q29kZS5zb21lKChrZXkpID0+IHRoaXMuaXNLZXlDb2RlKGV2ZW50LCBrZXkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudCAmJiBrZXlNYXAuZ2V0KGtleUNvZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4ga2V5TWFwLmdldChrZXlDb2RlKT8uc29tZSgoYWxpYXMpID0+IGFsaWFzID09PSBldmVudC5rZXkpIHx8IGtleUNvZGUgPT09IGV2ZW50LmtleUNvZGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgSW52YWxpZCBmdW5jdGlvbiBhcmd1bWVudHMuIENoZWNrIGlmIFwiZXZlbnRcIiBpcyBhIEtleWJvYXJkRXZlbnQgb3IgXCJrZXlcIiBpcyBkZWZpbmVkIGluIGtleU1hcGBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdXNlZCB0byB1bmlmeSBrZXkgaWRlbnRpZmljYXRpb24gYWNyb3NzIGRpZmZlcmVudCBicm93c2Vyc1xuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50ICAgICAtIEtleWJvYXJkRXZlbnRcbiAgICAgKiBAcGFyYW0ga2V5VHlwZSAgIC0gVHlwZSBvZiBrZXlcbiAgICAgKiAqL1xuICAgIHN0YXRpYyBpc0tleVR5cGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGtleVR5cGU6ICdhbHBoYWJldGljYWwnIHwgJ251bWVyaWMnIHwgJ2NvbnRyb2wnIHwgJ2ltZScpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGV2ZW50ICYmIGtleVR5cGUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoa2V5VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ251bWVyaWMnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQuY29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBldmVudC5jb2RlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2RpZ2l0JylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKGV2ZW50LmtleUNvZGUgPj0gNDggJiYgZXZlbnQua2V5Q29kZSA8PSA1NykgfHwgKGV2ZW50LmtleUNvZGUgPj0gOTYgJiYgZXZlbnQua2V5Q29kZSA8PSAxMDUpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FscGhhYmV0aWNhbCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGV2ZW50LmNvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygna2V5JylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZXZlbnQua2V5Q29kZSA+PSA2NSAmJiBldmVudC5rZXlDb2RlIDw9IDkwO1xuICAgICAgICAgICAgICAgIC8vIHNvbWUgc2VydmljZSBjb21tYW5kcyBhcyBhbHQsIGN0ciwgaW5zZXJ0LCBwcmludCwgZjQgZXRjLiBBbGwgZXhjZXB0IGxldHRlcnMsIG51bWJlcnMgYW5kIHN5bWJvbHNcbiAgICAgICAgICAgICAgICBjYXNlICdjb250cm9sJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGUgPCA0OCB8fCAoZXZlbnQua2V5Q29kZSA+PSAxMTIgJiYgZXZlbnQua2V5Q29kZSA8PSAxMjMpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2ltZSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCkgPT09ICdwcm9jZXNzJyB8fCBldmVudC5rZXlDb2RlID09PSAyMjk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmdW5jdGlvbiBhcmd1bWVudHMuYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19","/**\n * Utility functions to replace lodash-es functionality with native JavaScript.\n */\n/**\n * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned.\n * @param obj The object to query\n * @param path The path of the property to get\n * @param defaultValue The value returned if the resolved value is undefined\n * @returns The resolved value\n */\nexport function get(obj, path, defaultValue) {\n if (obj == null) {\n return defaultValue;\n }\n const pathArray = Array.isArray(path) ? path : path.split('.');\n let result = obj;\n for (const key of pathArray) {\n if (result == null) {\n return defaultValue;\n }\n result = result[key];\n }\n return (result === undefined ? defaultValue : result);\n}\n/**\n * Sets the value at path of object. If a portion of path doesn't exist, it's created.\n * @param obj The object to modify\n * @param path The path of the property to set\n * @param value The value to set\n * @returns The object\n */\nexport function set(obj, path, value) {\n const pathArray = Array.isArray(path) ? path : path.split('.');\n const lastIndex = pathArray.length - 1;\n let current = obj;\n for (let i = 0; i < lastIndex; i++) {\n const key = pathArray[i];\n if (!(key in current) || current[key] == null) {\n current[key] = {};\n }\n current = current[key];\n }\n current[pathArray[lastIndex]] = value;\n return obj;\n}\n/**\n * Deep clones an object, handling functions and other non-cloneable values.\n * For objects with functions or class instances, it creates a new object and copies properties.\n * @param obj The object to clone\n * @returns The cloned object\n */\nexport function cloneDeep(obj) {\n // Handle primitives, null, and undefined\n if (obj == null || typeof obj !== 'object') {\n return obj;\n }\n // Handle Date\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n // Handle Array\n if (Array.isArray(obj)) {\n return obj.map((item) => cloneDeep(item));\n }\n // Handle RegExp\n if (obj instanceof RegExp) {\n return new RegExp(obj.source, obj.flags);\n }\n // Handle Map\n if (obj instanceof Map) {\n const clonedMap = new Map();\n obj.forEach((value, key) => {\n clonedMap.set(cloneDeep(key), cloneDeep(value));\n });\n return clonedMap;\n }\n // Handle Set\n if (obj instanceof Set) {\n const clonedSet = new Set();\n obj.forEach((value) => {\n clonedSet.add(cloneDeep(value));\n });\n return clonedSet;\n }\n // Handle plain objects\n const clonedObj = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const value = obj[key];\n // Functions and symbols are copied by reference, not cloned\n if (typeof value === 'function' || typeof value === 'symbol') {\n clonedObj[key] = value;\n }\n else {\n clonedObj[key] = cloneDeep(value);\n }\n }\n }\n return clonedObj;\n}\n/**\n * Deep merges two or more objects, with properties from source objects overwriting those in the target.\n * @param target The target object\n * @param sources The source objects\n * @returns The merged object\n */\nexport function merge(target, ...sources) {\n // Handle null or undefined target\n if (target == null) {\n target = {};\n }\n const result = cloneDeep(target);\n for (const source of sources) {\n if (source != null) {\n deepMergeInto(result, source);\n }\n }\n return result;\n}\n/**\n * Helper function for deep merge\n */\nfunction deepMergeInto(target, source) {\n // Handle null or undefined target\n if (target == null) {\n return;\n }\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n const sourceValue = source[key];\n const targetValue = target[key];\n // Handle functions and primitives - copy by reference\n if (typeof sourceValue === 'function' || typeof sourceValue !== 'object' || sourceValue === null) {\n target[key] = sourceValue;\n }\n else if (Array.isArray(sourceValue)) {\n // Clone arrays\n target[key] = cloneDeep(sourceValue);\n }\n else if (sourceValue instanceof Date ||\n sourceValue instanceof RegExp ||\n sourceValue instanceof Map ||\n sourceValue instanceof Set) {\n // Clone special objects\n target[key] = cloneDeep(sourceValue);\n }\n else if (targetValue && typeof targetValue === 'object' && !Array.isArray(targetValue)) {\n // Recursively merge plain objects\n deepMergeInto(targetValue, sourceValue);\n }\n else {\n // Clone plain objects\n target[key] = cloneDeep(sourceValue);\n }\n }\n }\n}\n/**\n * Merges two objects with a customizer function.\n * @param target The target object\n * @param source The source object\n * @param customizer The function to customize assigned values\n * @returns The merged object\n */\nexport function mergeWith(target, source, customizer) {\n // Handle null or undefined target\n if (target == null) {\n target = {};\n }\n const result = cloneDeep(target);\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n const sourceValue = source[key];\n const targetValue = result[key];\n const customValue = customizer(targetValue, sourceValue, key);\n if (customValue !== undefined) {\n result[key] = customValue;\n }\n else if (sourceValue && typeof sourceValue === 'object' && !Array.isArray(sourceValue)) {\n if (targetValue && typeof targetValue === 'object' && !Array.isArray(targetValue)) {\n result[key] = mergeWith(targetValue, sourceValue, customizer);\n }\n else {\n result[key] = cloneDeep(sourceValue);\n }\n }\n else {\n result[key] = cloneDeep(sourceValue);\n }\n }\n }\n return result;\n}\n/**\n * Creates an array of unique values from the given array.\n * @param array The array to inspect\n * @returns The new array of unique values\n */\nexport function uniq(array) {\n return Array.from(new Set(array));\n}\n/**\n * Creates an array of unique values from an array based on a property.\n * @param array The array to inspect\n * @param iteratee The iteratee invoked per element\n * @returns The new duplicate free array\n */\nexport function uniqBy(array, iteratee) {\n const seen = new Set();\n const result = [];\n const getter = typeof iteratee === 'function' ? iteratee : (item) => get(item, iteratee);\n for (const item of array) {\n const key = getter(item);\n if (!seen.has(key)) {\n seen.add(key);\n result.push(item);\n }\n }\n return result;\n}\n/**\n * Flattens an array a single level deep.\n * @param array The array to flatten\n * @returns The new flattened array\n */\nexport function flatten(array) {\n return array.flat();\n}\n/**\n * Creates an object composed of keys generated from the results of running each element through iteratee.\n * The corresponding value of each key is the number of times the key was returned by iteratee.\n * @param array The array to iterate over\n * @param iteratee The iteratee to transform keys\n * @returns The composed aggregate object\n */\nexport function countBy(array, iteratee) {\n const result = {};\n const getter = typeof iteratee === 'function' ? iteratee : (item) => get(item, iteratee);\n for (const item of array) {\n const key = String(getter(item));\n result[key] = (result[key] || 0) + 1;\n }\n return result;\n}\n/**\n * Concatenates arrays.\n * @param arrays The arrays to concatenate\n * @returns The new concatenated array\n */\nexport function concat(...arrays) {\n return [].concat(...arrays);\n}\n/**\n * Escapes HTML characters in a string.\n * Converts characters like <, >, &, \", and ' to their HTML entity equivalents.\n * @param str The string to escape\n * @returns The escaped string\n */\nexport function escape(str) {\n const div = document.createElement('div');\n div.textContent = str;\n return div.innerHTML;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9kYXNoLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZnVuY3Rpb25zL2xvZGFzaC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVIOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxHQUFHLENBQ2YsR0FBUSxFQUNSLElBQXVCLEVBQ3ZCLFlBQXVCO0lBRXZCLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2QsT0FBTyxZQUFtQixDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0QsSUFBSSxNQUFNLEdBQVEsR0FBRyxDQUFDO0lBRXRCLEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFDMUIsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakIsT0FBTyxZQUFtQixDQUFDO1FBQy9CLENBQUM7UUFDRCxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQVEsQ0FBQztBQUNqRSxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FBVSxHQUFNLEVBQUUsSUFBdUIsRUFBRSxLQUFVO0lBQ3BFLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvRCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2QyxJQUFJLE9BQU8sR0FBUSxHQUFHLENBQUM7SUFFdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDdEMsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFJLEdBQU07SUFDL0IseUNBQXlDO0lBQ3pDLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN6QyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBSSxHQUFHLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDdEIsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQVEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZUFBZTtJQUNmLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFRLENBQUM7SUFDckQsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixJQUFJLEdBQUcsWUFBWSxNQUFNLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBUSxDQUFDO0lBQ3BELENBQUM7SUFFRCxhQUFhO0lBQ2IsSUFBSSxHQUFHLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDckIsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM1QixHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ3ZCLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxTQUFnQixDQUFDO0lBQzVCLENBQUM7SUFFRCxhQUFhO0lBQ2IsSUFBSSxHQUFHLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDckIsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM1QixHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sU0FBZ0IsQ0FBQztJQUM1QixDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLE1BQU0sU0FBUyxHQUFHLEVBQU8sQ0FBQztJQUMxQixLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2Qiw0REFBNEQ7WUFDNUQsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzFELFNBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sQ0FBQztnQkFDSCxTQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFJLE1BQVMsRUFBRSxHQUFHLE9BQXFCO0lBQ3hELGtDQUFrQztJQUNsQyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqQixNQUFNLEdBQUcsRUFBTyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFakMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNqQixhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxhQUFhLENBQUksTUFBUyxFQUFFLE1BQWtCO0lBQ25ELGtDQUFrQztJQUNsQyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqQixPQUFPO0lBQ1gsQ0FBQztJQUVELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdkIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVoQyxzREFBc0Q7WUFDdEQsSUFBSSxPQUFPLFdBQVcsS0FBSyxVQUFVLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLFdBQVcsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDOUYsTUFBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUN2QyxDQUFDO2lCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxlQUFlO2dCQUNkLE1BQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEQsQ0FBQztpQkFBTSxJQUNILFdBQVcsWUFBWSxJQUFJO2dCQUMzQixXQUFXLFlBQVksTUFBTTtnQkFDN0IsV0FBVyxZQUFZLEdBQUc7Z0JBQzFCLFdBQVcsWUFBWSxHQUFHLEVBQzVCLENBQUM7Z0JBQ0Msd0JBQXdCO2dCQUN2QixNQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xELENBQUM7aUJBQU0sSUFBSSxXQUFXLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUN2RixrQ0FBa0M7Z0JBQ2xDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsV0FBa0IsQ0FBQyxDQUFDO1lBQ25ELENBQUM7aUJBQU0sQ0FBQztnQkFDSixzQkFBc0I7Z0JBQ3JCLE1BQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQ3JCLE1BQVMsRUFDVCxNQUFrQixFQUNsQixVQUFvRTtJQUVwRSxrQ0FBa0M7SUFDbEMsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7UUFDakIsTUFBTSxHQUFHLEVBQU8sQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWpDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdkIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUU5RCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDM0IsTUFBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUN2QyxDQUFDO2lCQUFNLElBQUksV0FBVyxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDdkYsSUFBSSxXQUFXLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUMvRSxNQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxXQUFrQixFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNsRixDQUFDO3FCQUFNLENBQUM7b0JBQ0gsTUFBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDbEQsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDSCxNQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FBSSxLQUFVO0lBQzlCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUksS0FBVSxFQUFFLFFBQXFDO0lBQ3ZFLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDdkIsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFDO0lBQ3ZCLE1BQU0sTUFBTSxHQUFHLE9BQU8sUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUU1RixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFJLEtBQVk7SUFDbkMsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDeEIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQUksS0FBVSxFQUFFLFFBQXFDO0lBQ3hFLE1BQU0sTUFBTSxHQUEyQixFQUFFLENBQUM7SUFDMUMsTUFBTSxNQUFNLEdBQUcsT0FBTyxRQUFRLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRTVGLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdkIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBSSxHQUFHLE1BQW1CO0lBQzVDLE9BQVEsRUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsR0FBVztJQUM5QixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQ3RCLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9ucyB0byByZXBsYWNlIGxvZGFzaC1lcyBmdW5jdGlvbmFsaXR5IHdpdGggbmF0aXZlIEphdmFTY3JpcHQuXG4gKi9cblxuLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBwYXRoIG9mIG9iamVjdC4gSWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzIHVuZGVmaW5lZCwgdGhlIGRlZmF1bHRWYWx1ZSBpcyByZXR1cm5lZC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byBxdWVyeVxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldFxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBUaGUgdmFsdWUgcmV0dXJuZWQgaWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzIHVuZGVmaW5lZFxuICogQHJldHVybnMgVGhlIHJlc29sdmVkIHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXQ8VERlZmF1bHQgPSB1bmRlZmluZWQ+KFxuICAgIG9iajogYW55LFxuICAgIHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIGRlZmF1bHRWYWx1ZT86IFREZWZhdWx0XG4pOiBURGVmYXVsdCBleHRlbmRzIHVuZGVmaW5lZCA/IGFueSA6IFREZWZhdWx0IHtcbiAgICBpZiAob2JqID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSBhcyBhbnk7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aEFycmF5ID0gQXJyYXkuaXNBcnJheShwYXRoKSA/IHBhdGggOiBwYXRoLnNwbGl0KCcuJyk7XG4gICAgbGV0IHJlc3VsdDogYW55ID0gb2JqO1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgcGF0aEFycmF5KSB7XG4gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSBhcyBhbnk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0W2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIChyZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdCkgYXMgYW55O1xufVxuXG4vKipcbiAqIFNldHMgdGhlIHZhbHVlIGF0IHBhdGggb2Ygb2JqZWN0LiBJZiBhIHBvcnRpb24gb2YgcGF0aCBkb2Vzbid0IGV4aXN0LCBpdCdzIGNyZWF0ZWQuXG4gKiBAcGFyYW0gb2JqIFRoZSBvYmplY3QgdG8gbW9kaWZ5XG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0XG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldFxuICogQHJldHVybnMgVGhlIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0PFQgPSBhbnk+KG9iajogVCwgcGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIHZhbHVlOiBhbnkpOiBUIHtcbiAgICBjb25zdCBwYXRoQXJyYXkgPSBBcnJheS5pc0FycmF5KHBhdGgpID8gcGF0aCA6IHBhdGguc3BsaXQoJy4nKTtcbiAgICBjb25zdCBsYXN0SW5kZXggPSBwYXRoQXJyYXkubGVuZ3RoIC0gMTtcbiAgICBsZXQgY3VycmVudDogYW55ID0gb2JqO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXN0SW5kZXg7IGkrKykge1xuICAgICAgICBjb25zdCBrZXkgPSBwYXRoQXJyYXlbaV07XG4gICAgICAgIGlmICghKGtleSBpbiBjdXJyZW50KSB8fCBjdXJyZW50W2tleV0gPT0gbnVsbCkge1xuICAgICAgICAgICAgY3VycmVudFtrZXldID0ge307XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgICB9XG5cbiAgICBjdXJyZW50W3BhdGhBcnJheVtsYXN0SW5kZXhdXSA9IHZhbHVlO1xuICAgIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogRGVlcCBjbG9uZXMgYW4gb2JqZWN0LCBoYW5kbGluZyBmdW5jdGlvbnMgYW5kIG90aGVyIG5vbi1jbG9uZWFibGUgdmFsdWVzLlxuICogRm9yIG9iamVjdHMgd2l0aCBmdW5jdGlvbnMgb3IgY2xhc3MgaW5zdGFuY2VzLCBpdCBjcmVhdGVzIGEgbmV3IG9iamVjdCBhbmQgY29waWVzIHByb3BlcnRpZXMuXG4gKiBAcGFyYW0gb2JqIFRoZSBvYmplY3QgdG8gY2xvbmVcbiAqIEByZXR1cm5zIFRoZSBjbG9uZWQgb2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZURlZXA8VD4ob2JqOiBUKTogVCB7XG4gICAgLy8gSGFuZGxlIHByaW1pdGl2ZXMsIG51bGwsIGFuZCB1bmRlZmluZWRcbiAgICBpZiAob2JqID09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgRGF0ZVxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShvYmouZ2V0VGltZSgpKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIEFycmF5XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICByZXR1cm4gb2JqLm1hcCgoaXRlbSkgPT4gY2xvbmVEZWVwKGl0ZW0pKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIFJlZ0V4cFxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAob2JqLnNvdXJjZSwgb2JqLmZsYWdzKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIE1hcFxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgY29uc3QgY2xvbmVkTWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBvYmouZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgY2xvbmVkTWFwLnNldChjbG9uZURlZXAoa2V5KSwgY2xvbmVEZWVwKHZhbHVlKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2xvbmVkTWFwIGFzIGFueTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgU2V0XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICBjb25zdCBjbG9uZWRTZXQgPSBuZXcgU2V0KCk7XG4gICAgICAgIG9iai5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgY2xvbmVkU2V0LmFkZChjbG9uZURlZXAodmFsdWUpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjbG9uZWRTZXQgYXMgYW55O1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBwbGFpbiBvYmplY3RzXG4gICAgY29uc3QgY2xvbmVkT2JqID0ge30gYXMgVDtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gb2JqW2tleV07XG4gICAgICAgICAgICAvLyBGdW5jdGlvbnMgYW5kIHN5bWJvbHMgYXJlIGNvcGllZCBieSByZWZlcmVuY2UsIG5vdCBjbG9uZWRcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHZhbHVlID09PSAnc3ltYm9sJykge1xuICAgICAgICAgICAgICAgIChjbG9uZWRPYmogYXMgYW55KVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIChjbG9uZWRPYmogYXMgYW55KVtrZXldID0gY2xvbmVEZWVwKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbG9uZWRPYmo7XG59XG5cbi8qKlxuICogRGVlcCBtZXJnZXMgdHdvIG9yIG1vcmUgb2JqZWN0cywgd2l0aCBwcm9wZXJ0aWVzIGZyb20gc291cmNlIG9iamVjdHMgb3ZlcndyaXRpbmcgdGhvc2UgaW4gdGhlIHRhcmdldC5cbiAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3RcbiAqIEBwYXJhbSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0c1xuICogQHJldHVybnMgVGhlIG1lcmdlZCBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlPFQ+KHRhcmdldDogVCwgLi4uc291cmNlczogUGFydGlhbDxUPltdKTogVCB7XG4gICAgLy8gSGFuZGxlIG51bGwgb3IgdW5kZWZpbmVkIHRhcmdldFxuICAgIGlmICh0YXJnZXQgPT0gbnVsbCkge1xuICAgICAgICB0YXJnZXQgPSB7fSBhcyBUO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGNsb25lRGVlcCh0YXJnZXQpO1xuXG4gICAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgICBpZiAoc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRlZXBNZXJnZUludG8ocmVzdWx0LCBzb3VyY2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGRlZXAgbWVyZ2VcbiAqL1xuZnVuY3Rpb24gZGVlcE1lcmdlSW50bzxUPih0YXJnZXQ6IFQsIHNvdXJjZTogUGFydGlhbDxUPik6IHZvaWQge1xuICAgIC8vIEhhbmRsZSBudWxsIG9yIHVuZGVmaW5lZCB0YXJnZXRcbiAgICBpZiAodGFyZ2V0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlVmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldFZhbHVlID0gdGFyZ2V0W2tleV07XG5cbiAgICAgICAgICAgIC8vIEhhbmRsZSBmdW5jdGlvbnMgYW5kIHByaW1pdGl2ZXMgLSBjb3B5IGJ5IHJlZmVyZW5jZVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzb3VyY2VWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygc291cmNlVmFsdWUgIT09ICdvYmplY3QnIHx8IHNvdXJjZVZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgKHRhcmdldCBhcyBhbnkpW2tleV0gPSBzb3VyY2VWYWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2VWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAvLyBDbG9uZSBhcnJheXNcbiAgICAgICAgICAgICAgICAodGFyZ2V0IGFzIGFueSlba2V5XSA9IGNsb25lRGVlcChzb3VyY2VWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHNvdXJjZVZhbHVlIGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICAgICAgICAgICAgIHNvdXJjZVZhbHVlIGluc3RhbmNlb2YgUmVnRXhwIHx8XG4gICAgICAgICAgICAgICAgc291cmNlVmFsdWUgaW5zdGFuY2VvZiBNYXAgfHxcbiAgICAgICAgICAgICAgICBzb3VyY2VWYWx1ZSBpbnN0YW5jZW9mIFNldFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgLy8gQ2xvbmUgc3BlY2lhbCBvYmplY3RzXG4gICAgICAgICAgICAgICAgKHRhcmdldCBhcyBhbnkpW2tleV0gPSBjbG9uZURlZXAoc291cmNlVmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0YXJnZXRWYWx1ZSAmJiB0eXBlb2YgdGFyZ2V0VmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHRhcmdldFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIHBsYWluIG9iamVjdHNcbiAgICAgICAgICAgICAgICBkZWVwTWVyZ2VJbnRvKHRhcmdldFZhbHVlLCBzb3VyY2VWYWx1ZSBhcyBhbnkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBDbG9uZSBwbGFpbiBvYmplY3RzXG4gICAgICAgICAgICAgICAgKHRhcmdldCBhcyBhbnkpW2tleV0gPSBjbG9uZURlZXAoc291cmNlVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIE1lcmdlcyB0d28gb2JqZWN0cyB3aXRoIGEgY3VzdG9taXplciBmdW5jdGlvbi5cbiAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3RcbiAqIEBwYXJhbSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3RcbiAqIEBwYXJhbSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzXG4gKiBAcmV0dXJucyBUaGUgbWVyZ2VkIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VXaXRoPFQ+KFxuICAgIHRhcmdldDogVCxcbiAgICBzb3VyY2U6IFBhcnRpYWw8VD4sXG4gICAgY3VzdG9taXplcjogKHRhcmdldFZhbHVlOiBhbnksIHNvdXJjZVZhbHVlOiBhbnksIGtleTogc3RyaW5nKSA9PiBhbnlcbik6IFQge1xuICAgIC8vIEhhbmRsZSBudWxsIG9yIHVuZGVmaW5lZCB0YXJnZXRcbiAgICBpZiAodGFyZ2V0ID09IG51bGwpIHtcbiAgICAgICAgdGFyZ2V0ID0ge30gYXMgVDtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBjbG9uZURlZXAodGFyZ2V0KTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlVmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldFZhbHVlID0gcmVzdWx0W2tleV07XG4gICAgICAgICAgICBjb25zdCBjdXN0b21WYWx1ZSA9IGN1c3RvbWl6ZXIodGFyZ2V0VmFsdWUsIHNvdXJjZVZhbHVlLCBrZXkpO1xuXG4gICAgICAgICAgICBpZiAoY3VzdG9tVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIChyZXN1bHQgYXMgYW55KVtrZXldID0gY3VzdG9tVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZVZhbHVlICYmIHR5cGVvZiBzb3VyY2VWYWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoc291cmNlVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFZhbHVlICYmIHR5cGVvZiB0YXJnZXRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodGFyZ2V0VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIChyZXN1bHQgYXMgYW55KVtrZXldID0gbWVyZ2VXaXRoKHRhcmdldFZhbHVlLCBzb3VyY2VWYWx1ZSBhcyBhbnksIGN1c3RvbWl6ZXIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIChyZXN1bHQgYXMgYW55KVtrZXldID0gY2xvbmVEZWVwKHNvdXJjZVZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIChyZXN1bHQgYXMgYW55KVtrZXldID0gY2xvbmVEZWVwKHNvdXJjZVZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzIGZyb20gdGhlIGdpdmVuIGFycmF5LlxuICogQHBhcmFtIGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0XG4gKiBAcmV0dXJucyBUaGUgbmV3IGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXE8VD4oYXJyYXk6IFRbXSk6IFRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChhcnJheSkpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcyBmcm9tIGFuIGFycmF5IGJhc2VkIG9uIGEgcHJvcGVydHkuXG4gKiBAcGFyYW0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3RcbiAqIEBwYXJhbSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudFxuICogQHJldHVybnMgVGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pcUJ5PFQ+KGFycmF5OiBUW10sIGl0ZXJhdGVlOiAoKGl0ZW06IFQpID0+IGFueSkgfCBzdHJpbmcpOiBUW10ge1xuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0KCk7XG4gICAgY29uc3QgcmVzdWx0OiBUW10gPSBbXTtcbiAgICBjb25zdCBnZXR0ZXIgPSB0eXBlb2YgaXRlcmF0ZWUgPT09ICdmdW5jdGlvbicgPyBpdGVyYXRlZSA6IChpdGVtOiBUKSA9PiBnZXQoaXRlbSwgaXRlcmF0ZWUpO1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGdldHRlcihpdGVtKTtcbiAgICAgICAgaWYgKCFzZWVuLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBzZWVuLmFkZChrZXkpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEZsYXR0ZW5zIGFuIGFycmF5IGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gKiBAcGFyYW0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW5cbiAqIEByZXR1cm5zIFRoZSBuZXcgZmxhdHRlbmVkIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuPFQ+KGFycmF5OiBUW11bXSk6IFRbXSB7XG4gICAgcmV0dXJuIGFycmF5LmZsYXQoKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmcgZWFjaCBlbGVtZW50IHRocm91Z2ggaXRlcmF0ZWUuXG4gKiBUaGUgY29ycmVzcG9uZGluZyB2YWx1ZSBvZiBlYWNoIGtleSBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBrZXkgd2FzIHJldHVybmVkIGJ5IGl0ZXJhdGVlLlxuICogQHBhcmFtIGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXJcbiAqIEBwYXJhbSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXNcbiAqIEByZXR1cm5zIFRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3VudEJ5PFQ+KGFycmF5OiBUW10sIGl0ZXJhdGVlOiAoKGl0ZW06IFQpID0+IGFueSkgfCBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+IHtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgICBjb25zdCBnZXR0ZXIgPSB0eXBlb2YgaXRlcmF0ZWUgPT09ICdmdW5jdGlvbicgPyBpdGVyYXRlZSA6IChpdGVtOiBUKSA9PiBnZXQoaXRlbSwgaXRlcmF0ZWUpO1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XG4gICAgICAgIGNvbnN0IGtleSA9IFN0cmluZyhnZXR0ZXIoaXRlbSkpO1xuICAgICAgICByZXN1bHRba2V5XSA9IChyZXN1bHRba2V5XSB8fCAwKSArIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDb25jYXRlbmF0ZXMgYXJyYXlzLlxuICogQHBhcmFtIGFycmF5cyBUaGUgYXJyYXlzIHRvIGNvbmNhdGVuYXRlXG4gKiBAcmV0dXJucyBUaGUgbmV3IGNvbmNhdGVuYXRlZCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0PFQ+KC4uLmFycmF5czogKFQgfCBUW10pW10pOiBUW10ge1xuICAgIHJldHVybiAoW10gYXMgVFtdKS5jb25jYXQoLi4uYXJyYXlzKTtcbn1cblxuLyoqXG4gKiBFc2NhcGVzIEhUTUwgY2hhcmFjdGVycyBpbiBhIHN0cmluZy5cbiAqIENvbnZlcnRzIGNoYXJhY3RlcnMgbGlrZSA8LCA+LCAmLCBcIiwgYW5kICcgdG8gdGhlaXIgSFRNTCBlbnRpdHkgZXF1aXZhbGVudHMuXG4gKiBAcGFyYW0gc3RyIFRoZSBzdHJpbmcgdG8gZXNjYXBlXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZGl2LnRleHRDb250ZW50ID0gc3RyO1xuICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const ModuleDeprecations = new InjectionToken('ModuleDeprecations');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWRlcHJlY2F0aW9ucy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL3Rva2Vucy9tb2R1bGUtZGVwcmVjYXRpb25zLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQW9CLG9CQUFvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kdWxlRGVwcmVjYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL21vZHVsZS1kZXByZWNhdGlvbi5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgTW9kdWxlRGVwcmVjYXRpb25zID0gbmV3IEluamVjdGlvblRva2VuPE1vZHVsZURlcHJlY2F0aW9uPignTW9kdWxlRGVwcmVjYXRpb25zJyk7XG4iXX0=","import { ModuleDeprecations } from '../tokens/module-deprecations.token';\n/** Module deprecations provider */\nexport function moduleDeprecationsProvider(classRef) {\n return {\n provide: ModuleDeprecations,\n useClass: classRef,\n multi: true\n };\n}\n/** Module deprecations provider factory */\nexport function moduleDeprecationsFactory(factory) {\n return {\n provide: ModuleDeprecations,\n ...factory,\n multi: true\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWRlcHJlY2F0aW9ucy1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2Z1bmN0aW9ucy9tb2R1bGUtZGVwcmVjYXRpb25zLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXpFLG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsMEJBQTBCLENBQUMsUUFBYTtJQUNwRCxPQUFPO1FBQ0gsT0FBTyxFQUFFLGtCQUFrQjtRQUMzQixRQUFRLEVBQUUsUUFBUTtRQUNsQixLQUFLLEVBQUUsSUFBSTtLQUNkLENBQUM7QUFDTixDQUFDO0FBRUQsMkNBQTJDO0FBQzNDLE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxPQUE0QjtJQUNsRSxPQUFPO1FBQ0gsT0FBTyxFQUFFLGtCQUFrQjtRQUMzQixHQUFHLE9BQU87UUFDVixLQUFLLEVBQUUsSUFBSTtLQUNkLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFjdG9yeVNhbnNQcm92aWRlciwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZHVsZURlcHJlY2F0aW9ucyB9IGZyb20gJy4uL3Rva2Vucy9tb2R1bGUtZGVwcmVjYXRpb25zLnRva2VuJztcblxuLyoqIE1vZHVsZSBkZXByZWNhdGlvbnMgcHJvdmlkZXIgKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2R1bGVEZXByZWNhdGlvbnNQcm92aWRlcihjbGFzc1JlZjogYW55KTogUHJvdmlkZXIge1xuICAgIHJldHVybiB7XG4gICAgICAgIHByb3ZpZGU6IE1vZHVsZURlcHJlY2F0aW9ucyxcbiAgICAgICAgdXNlQ2xhc3M6IGNsYXNzUmVmLFxuICAgICAgICBtdWx0aTogdHJ1ZVxuICAgIH07XG59XG5cbi8qKiBNb2R1bGUgZGVwcmVjYXRpb25zIHByb3ZpZGVyIGZhY3RvcnkgKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2R1bGVEZXByZWNhdGlvbnNGYWN0b3J5KGZhY3Rvcnk6IEZhY3RvcnlTYW5zUHJvdmlkZXIpOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvdmlkZTogTW9kdWxlRGVwcmVjYXRpb25zLFxuICAgICAgICAuLi5mYWN0b3J5LFxuICAgICAgICBtdWx0aTogdHJ1ZVxuICAgIH07XG59XG4iXX0=","const fileSizeMap = new Map([\n ['KB', 1024],\n ['MB', 1048576],\n ['GB', 1073741824],\n ['TB', 1099511627776]\n]);\n/** Parse file size to bytes */\nexport function parserFileSize(fileSize) {\n if (fileSize === '') {\n return 0;\n }\n const sizes = fileSize.match(/[\\d.]+|\\D+/g);\n if (sizes && sizes.length > 1) {\n const size = Number(sizes[0].replace(/ +/g, ''));\n const unit = sizes[1].replace(/ +/g, '').toUpperCase();\n const unitSize = fileSizeMap.get(unit);\n if (isNaN(size)) {\n throw new Error('FileSizeError - Invalid File size please check.');\n }\n if (unit === 'B' || unit === 'BYTE' || unit === 'BYTES') {\n return size;\n }\n if (!unitSize) {\n throw new Error('FileSizeError - Invalid File size please check.');\n }\n else {\n return unitSize * size;\n }\n }\n else {\n if (isNaN(Number(sizes))) {\n throw new Error('FileSizeError - Invalid File size please check.');\n }\n return Number(sizes);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLWZpbGUtc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2Z1bmN0aW9ucy9wYXJzZXItZmlsZS1zaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3hCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztJQUNaLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztJQUNmLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztJQUNsQixDQUFDLElBQUksRUFBRSxhQUFhLENBQUM7Q0FDeEIsQ0FBQyxDQUFDO0FBRUgsK0JBQStCO0FBQy9CLE1BQU0sVUFBVSxjQUFjLENBQUMsUUFBZ0I7SUFDM0MsSUFBSSxRQUFRLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDbEIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1QyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3RELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDdkUsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7U0FBTSxDQUFDO1FBQ0osSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZmlsZVNpemVNYXAgPSBuZXcgTWFwKFtcbiAgICBbJ0tCJywgMTAyNF0sXG4gICAgWydNQicsIDEwNDg1NzZdLFxuICAgIFsnR0InLCAxMDczNzQxODI0XSxcbiAgICBbJ1RCJywgMTA5OTUxMTYyNzc3Nl1cbl0pO1xuXG4vKiogUGFyc2UgZmlsZSBzaXplIHRvIGJ5dGVzICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VyRmlsZVNpemUoZmlsZVNpemU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKGZpbGVTaXplID09PSAnJykge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBzaXplcyA9IGZpbGVTaXplLm1hdGNoKC9bXFxkLl0rfFxcRCsvZyk7XG4gICAgaWYgKHNpemVzICYmIHNpemVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IE51bWJlcihzaXplc1swXS5yZXBsYWNlKC8gKy9nLCAnJykpO1xuICAgICAgICBjb25zdCB1bml0ID0gc2l6ZXNbMV0ucmVwbGFjZSgvICsvZywgJycpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IHVuaXRTaXplID0gZmlsZVNpemVNYXAuZ2V0KHVuaXQpO1xuXG4gICAgICAgIGlmIChpc05hTihzaXplKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlU2l6ZUVycm9yIC0gSW52YWxpZCBGaWxlIHNpemUgcGxlYXNlIGNoZWNrLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1bml0ID09PSAnQicgfHwgdW5pdCA9PT0gJ0JZVEUnIHx8IHVuaXQgPT09ICdCWVRFUycpIHtcbiAgICAgICAgICAgIHJldHVybiBzaXplO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdW5pdFNpemUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmlsZVNpemVFcnJvciAtIEludmFsaWQgRmlsZSBzaXplIHBsZWFzZSBjaGVjay4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB1bml0U2l6ZSAqIHNpemU7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNOYU4oTnVtYmVyKHNpemVzKSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmlsZVNpemVFcnJvciAtIEludmFsaWQgRmlsZSBzaXplIHBsZWFzZSBjaGVjay4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBOdW1iZXIoc2l6ZXMpO1xuICAgIH1cbn1cbiJdfQ==","/** Get random number from 1 to 10. */\nexport function getRandomColorAccent() {\n return (Math.floor(Math.random() * 10) + 1);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZG9tLWNvbG9yLWFjY2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2Z1bmN0aW9ucy9yYW5kb20tY29sb3ItYWNjZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLHNDQUFzQztBQUN0QyxNQUFNLFVBQVUsb0JBQW9CO0lBQ2hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQWdCLENBQUM7QUFDL0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yQWNjZW50IH0gZnJvbSAnLi4vZGF0YXR5cGVzJztcblxuLyoqIEdldCByYW5kb20gbnVtYmVyIGZyb20gMSB0byAxMC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYW5kb21Db2xvckFjY2VudCgpOiBDb2xvckFjY2VudCB7XG4gICAgcmV0dXJuIChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMCkgKyAxKSBhcyBDb2xvckFjY2VudDtcbn1cbiJdfQ==","import { fromEvent, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n/**\n * RxJS wrapper for ResizeObserver class.\n * @param target HTML element to spy on.\n * @param options @see {ResizeObserverOptions}\n * @returns {Observable} with observer entries.\n */\nexport function resizeObservable(target, options) {\n if ('ResizeObserver' in window) {\n return new Observable((subscriber) => {\n let animationFrame;\n const ro = new ResizeObserver((entries) => {\n animationFrame = window.requestAnimationFrame(() => {\n subscriber.next(entries);\n });\n });\n ro.observe(target, options);\n return function unsubscribe() {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n ro.unobserve(target);\n ro.disconnect();\n };\n });\n }\n else {\n // If current browser does not support resizeObserver, rely on window resize and return empty array of items.\n return fromEvent(window, 'resize').pipe(map(() => []));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9mdW5jdGlvbnMvcmVzaXplLW9ic2VydmFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE1BQWUsRUFBRSxPQUErQjtJQUM3RSxJQUFJLGdCQUFnQixJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNqQyxJQUFJLGNBQXNCLENBQUM7WUFDM0IsTUFBTSxFQUFFLEdBQUcsSUFBSSxjQUFjLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDdEMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7b0JBQy9DLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzdCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUU1QixPQUFPLFNBQVMsV0FBVztnQkFDdkIsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDakIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO2dCQUNELEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3JCLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7U0FBTSxDQUFDO1FBQ0osNkdBQTZHO1FBQzdHLE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBSeEpTIHdyYXBwZXIgZm9yIFJlc2l6ZU9ic2VydmVyIGNsYXNzLlxuICogQHBhcmFtIHRhcmdldCBIVE1MIGVsZW1lbnQgdG8gc3B5IG9uLlxuICogQHBhcmFtIG9wdGlvbnMgQHNlZSB7UmVzaXplT2JzZXJ2ZXJPcHRpb25zfVxuICogQHJldHVybnMge09ic2VydmFibGV9IHdpdGggb2JzZXJ2ZXIgZW50cmllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2l6ZU9ic2VydmFibGUodGFyZ2V0OiBFbGVtZW50LCBvcHRpb25zPzogUmVzaXplT2JzZXJ2ZXJPcHRpb25zKTogT2JzZXJ2YWJsZTxSZXNpemVPYnNlcnZlckVudHJ5W10+IHtcbiAgICBpZiAoJ1Jlc2l6ZU9ic2VydmVyJyBpbiB3aW5kb3cpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgICAgICBsZXQgYW5pbWF0aW9uRnJhbWU6IG51bWJlcjtcbiAgICAgICAgICAgIGNvbnN0IHJvID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uRnJhbWUgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGVudHJpZXMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJvLm9ic2VydmUodGFyZ2V0LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCk6IHZvaWQge1xuICAgICAgICAgICAgICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uRnJhbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByby51bm9ic2VydmUodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICByby5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiBjdXJyZW50IGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCByZXNpemVPYnNlcnZlciwgcmVseSBvbiB3aW5kb3cgcmVzaXplIGFuZCByZXR1cm4gZW1wdHkgYXJyYXkgb2YgaXRlbXMuXG4gICAgICAgIHJldHVybiBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykucGlwZShtYXAoKCkgPT4gW10pKTtcbiAgICB9XG59XG4iXX0=","/**\n * Function used to scroll specified element by some distance\n *\n * @param containerElement - Container element scrolled\n * @param distanceToScroll - Distance of scroll in px\n * */\nexport function scrollTop(containerElement, distanceToScroll) {\n // Check if scrollTo method is supported by current browser\n if (containerElement.scrollTo && containerElement.scrollTo instanceof Function) {\n containerElement.scrollTo({\n top: distanceToScroll,\n behavior: 'smooth'\n });\n }\n else {\n containerElement.scrollTop = distanceToScroll;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZnVuY3Rpb25zL3Njcm9sbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7S0FLSztBQUNMLE1BQU0sVUFBVSxTQUFTLENBQUMsZ0JBQXlCLEVBQUUsZ0JBQXdCO0lBQ3pFLDJEQUEyRDtJQUMzRCxJQUFJLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLFlBQVksUUFBUSxFQUFFLENBQUM7UUFDN0UsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1lBQ3RCLEdBQUcsRUFBRSxnQkFBZ0I7WUFDckIsUUFBUSxFQUFFLFFBQVE7U0FDckIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztTQUFNLENBQUM7UUFDSixnQkFBZ0IsQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7SUFDbEQsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZ1bmN0aW9uIHVzZWQgdG8gc2Nyb2xsIHNwZWNpZmllZCBlbGVtZW50IGJ5IHNvbWUgZGlzdGFuY2VcbiAqXG4gKiBAcGFyYW0gY29udGFpbmVyRWxlbWVudCAgICAgLSBDb250YWluZXIgZWxlbWVudCBzY3JvbGxlZFxuICogQHBhcmFtIGRpc3RhbmNlVG9TY3JvbGwgICAgIC0gRGlzdGFuY2Ugb2Ygc2Nyb2xsIGluIHB4XG4gKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcm9sbFRvcChjb250YWluZXJFbGVtZW50OiBFbGVtZW50LCBkaXN0YW5jZVRvU2Nyb2xsOiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBpZiBzY3JvbGxUbyBtZXRob2QgaXMgc3VwcG9ydGVkIGJ5IGN1cnJlbnQgYnJvd3NlclxuICAgIGlmIChjb250YWluZXJFbGVtZW50LnNjcm9sbFRvICYmIGNvbnRhaW5lckVsZW1lbnQuc2Nyb2xsVG8gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICBjb250YWluZXJFbGVtZW50LnNjcm9sbFRvKHtcbiAgICAgICAgICAgIHRvcDogZGlzdGFuY2VUb1Njcm9sbCxcbiAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCA9IGRpc3RhbmNlVG9TY3JvbGw7XG4gICAgfVxufVxuIl19","/** Generate a UUID v4 */\nexport function uuidv4() {\n const modifier = 16;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * modifier) | 0, \n // eslint-disable-next-line no-bitwise\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(modifier);\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXVpZHY0LWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2Z1bmN0aW9ucy91dWlkdjQtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlCQUF5QjtBQUN6QixNQUFNLFVBQVUsTUFBTTtJQUNsQixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDcEIsT0FBTyxzQ0FBc0MsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDakUsc0NBQXNDO1FBQ3RDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDcEMsc0NBQXNDO1FBQ3RDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN4QyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEdlbmVyYXRlIGEgVVVJRCB2NCAqL1xuZXhwb3J0IGZ1bmN0aW9uIHV1aWR2NCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vZGlmaWVyID0gMTY7XG4gICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgKGMpID0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICAgICAgY29uc3QgciA9IChNYXRoLnJhbmRvbSgpICogbW9kaWZpZXIpIHwgMCxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgICAgICAgICB2ID0gYyA9PT0gJ3gnID8gciA6IChyICYgMHgzKSB8IDB4ODtcbiAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcobW9kaWZpZXIpO1xuICAgIH0pO1xufVxuIl19","import { BACKSPACE, CONTROL, DELETE, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, EventEmitter, Input, NgZone, Output, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, map, switchMap } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { KeyUtil } from '../../functions';\nimport * as i0 from \"@angular/core\";\nexport class AutoCompleteDirective {\n /** @hidden */\n constructor() {\n /** Whether the auto complete directive should be enabled */\n this.enable = true;\n /** Display function. Accepts an object of the same type as the\n * items passed to dropdownValues as argument, and outputs a string.\n * An arrow function can be used to access the *this* keyword in the calling component.\n * See search input examples for details. */\n this.displayFn = this._defaultDisplay;\n /** Event thrown, when the auto ahead text is accepted */\n this.onComplete = new EventEmitter();\n /** @hidden */\n this._completeKeys = [ENTER];\n /** @hidden */\n this._fillKeys = [LEFT_ARROW, RIGHT_ARROW];\n /** @hidden */\n this._stopKeys = [BACKSPACE, DELETE, ESCAPE];\n /** @hidden */\n this._isComposing = false;\n /** @hidden */\n this._elementRef = inject(ElementRef);\n this._zone = inject(NgZone);\n /** Matcher function for testing the str for a search term */\n this.matcher = (str, searchTerm) => str.startsWith(searchTerm);\n /**\n * Fixes #10710\n * With chinese characters inputText property update was triggered after the keyup event trigger.\n * By ensuring that we set all properties we can proceed with stable data.\n */\n this._zone.runOutsideAngular(() => {\n const keyupEvent = fromEvent(this._elementRef.nativeElement, 'keydown');\n const compositionStartEvent = fromEvent(this._elementRef.nativeElement, 'compositionstart');\n const compositionEndEvent = fromEvent(this._elementRef.nativeElement, 'compositionend');\n keyupEvent\n .pipe(switchMap((evt) => this._zone.onStable.pipe(first(), map(() => evt))), takeUntilDestroyed())\n .subscribe((evt) => this._handleKeyboardEvent(evt));\n compositionStartEvent.pipe(takeUntilDestroyed()).subscribe(() => {\n this._isComposing = true;\n });\n compositionEndEvent.pipe(takeUntilDestroyed()).subscribe(() => {\n this._isComposing = false;\n this.inputText = this._elementRef.nativeElement.value;\n });\n });\n }\n /** @hidden */\n _handleKeyboardEvent(event) {\n if (this.enable && !this._isComposing) {\n if (KeyUtil.isKeyCode(event, this._stopKeys)) {\n this._elementRef.nativeElement.value = this.inputText;\n }\n else if (KeyUtil.isKeyCode(event, this._completeKeys)) {\n this._sendCompleteEvent(true);\n this._moveIndicatorToLastCharacter();\n }\n else if (KeyUtil.isKeyCode(event, this._fillKeys)) {\n this._sendCompleteEvent(false);\n }\n else if (!this._isControlKey(event) && this.inputText) {\n const hasSelection = this._elementRef.nativeElement.selectionStart !== this._elementRef.nativeElement.selectionEnd;\n if (hasSelection) {\n return;\n }\n const currentNativeValue = this._elementRef.nativeElement.value;\n if (this.inputText.length > currentNativeValue.length + 1) {\n this.inputText = currentNativeValue;\n return;\n }\n if (!this._triggerTypeAhead()) {\n return;\n }\n this.oldValue = this.inputText;\n const item = this.options.find((option) => this.matcher(this.displayFn(option).toLocaleLowerCase(), this.inputText.toLocaleLowerCase()));\n if (item) {\n this._typeahead(this.displayFn(item));\n }\n }\n }\n this.lastKeyUpEvent = event;\n }\n /** @hidden */\n _typeahead(displayedValue) {\n this._elementRef.nativeElement.value = displayedValue;\n const selectionStartIndex = this.inputText.length;\n this._elementRef.nativeElement.setSelectionRange(selectionStartIndex, displayedValue.length);\n }\n /** @hidden */\n _isControlKey(event) {\n return KeyUtil.isKeyCode(event, CONTROL) || event.ctrlKey;\n }\n /** @hidden */\n _defaultDisplay(value) {\n return value;\n }\n /** @hidden */\n _triggerTypeAhead() {\n return !(this.lastKeyUpEvent &&\n KeyUtil.isKeyCode(this.lastKeyUpEvent, CONTROL) &&\n this.inputText === this.oldValue);\n }\n /** @hidden */\n _sendCompleteEvent(forceClose) {\n this.onComplete.emit({\n term: this._elementRef.nativeElement.value,\n forceClose\n });\n }\n /** @hidden */\n _moveIndicatorToLastCharacter() {\n const inputTextLength = this.inputText?.length ?? 0;\n this._elementRef.nativeElement.setSelectionRange(inputTextLength, inputTextLength);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AutoCompleteDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: AutoCompleteDirective, isStandalone: true, selector: \"[fdkAutoComplete]\", inputs: { options: \"options\", inputText: \"inputText\", enable: \"enable\", displayFn: \"displayFn\", matcher: \"matcher\" }, outputs: { onComplete: \"onComplete\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AutoCompleteDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkAutoComplete]',\n standalone: true\n }]\n }], ctorParameters: () => [], propDecorators: { options: [{\n type: Input\n }], inputText: [{\n type: Input\n }], enable: [{\n type: Input\n }], displayFn: [{\n type: Input\n }], onComplete: [{\n type: Output\n }], matcher: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNHLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBVzFDLE1BQU0sT0FBTyxxQkFBcUI7SUFtRDlCLGNBQWM7SUFFZDtRQXpDQSw0REFBNEQ7UUFFNUQsV0FBTSxHQUFHLElBQUksQ0FBQztRQUVkOzs7b0RBRzRDO1FBRTVDLGNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBRWpDLHlEQUF5RDtRQUdoRCxlQUFVLEdBQW9DLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRTdGLGNBQWM7UUFDRyxrQkFBYSxHQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkQsY0FBYztRQUNHLGNBQVMsR0FBYSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVqRSxjQUFjO1FBQ0csY0FBUyxHQUFhLENBQUMs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U0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7d0RBSUcsT0FBTztzQkFETixLQUFLO2dCQVFOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBUU4sU0FBUztzQkFEUixLQUFLO2dCQU1HLFVBQVU7c0JBRmxCLE1BQU07Z0JBb0VQLE9BQU87c0JBRE4sS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJBQ0tTUEFDRSwgQ09OVFJPTCwgREVMRVRFLCBFTlRFUiwgRVNDQVBFLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT3V0cHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgS2V5VXRpbCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0NvbXBsZXRlRXZlbnQge1xuICAgIHRlcm06IHN0cmluZztcbiAgICBmb3JjZUNsb3NlOiBib29sZWFuO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtBdXRvQ29tcGxldGVdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZURpcmVjdGl2ZSB7XG4gICAgLyoqIFZhbHVlcyB0aGF0IHdpbGwgZmlsbCBtaXNzaW5nIHRleHQgaW4gdGhlIGlucHV0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgb3B0aW9uczogYW55W107XG5cbiAgICAvKipcbiAgICAgKiBJbnB1dCB0ZXh0LCB0aGF0IGlzIHRha2VuIGZyb20gbmdNb2RlbCBvZiBmb3JtQ29udHJvbCxcbiAgICAgKiB0aGVyZSBoYXMgdG8gYmUgZGlmZmVyZW5jZSBiZXR3ZWVuIG5hdGl2ZSBpbnB1dCB2YWx1ZSBhbmQgbW9kZWwgdmFsdWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGlucHV0VGV4dDogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGF1dG8gY29tcGxldGUgZGlyZWN0aXZlIHNob3VsZCBiZSBlbmFibGVkICovXG4gICAgQElucHV0KClcbiAgICBlbmFibGUgPSB0cnVlO1xuXG4gICAgLyoqIERpc3BsYXkgZnVuY3Rpb24uIEFjY2VwdHMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYXMgdGhlXG4gICAgICogaXRlbXMgcGFzc2VkIHRvIGRyb3Bkb3duVmFsdWVzIGFzIGFyZ3VtZW50LCBhbmQgb3V0cHV0cyBhIHN0cmluZy5cbiAgICAgKiBBbiBhcnJvdyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlICp0aGlzKiBrZXl3b3JkIGluIHRoZSBjYWxsaW5nIGNvbXBvbmVudC5cbiAgICAgKiBTZWUgc2VhcmNoIGlucHV0IGV4YW1wbGVzIGZvciBkZXRhaWxzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUZuID0gdGhpcy5fZGVmYXVsdERpc3BsYXk7XG5cbiAgICAvKiogRXZlbnQgdGhyb3duLCB3aGVuIHRoZSBhdXRvIGFoZWFkIHRleHQgaXMgYWNjZXB0ZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICByZWFkb25seSBvbkNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8QXV0b0NvbXBsZXRlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRvQ29tcGxldGVFdmVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29tcGxldGVLZXlzOiBudW1iZXJbXSA9IFtFTlRFUl07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGxLZXlzOiBudW1iZXJbXSA9IFtMRUZUX0FSUk9XLCBSSUdIVF9BUlJPV107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3N0b3BLZXlzOiBudW1iZXJbXSA9IFtCQUNLU1BBQ0UsIERFTEVURSwgRVNDQVBFXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBvbGRWYWx1ZTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGxhc3RLZXlVcEV2ZW50OiBLZXlib2FyZEV2ZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0NvbXBvc2luZyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogRml4ZXMgIzEwNzEwXG4gICAgICAgICAqIFdpdGggY2hpbmVzZSBjaGFyYWN0ZXJzIGlucHV0VGV4dCBwcm9wZXJ0eSB1cGRhdGUgd2FzIHRyaWdnZXJlZCBhZnRlciB0aGUga2V5dXAgZXZlbnQgdHJpZ2dlci5cbiAgICAgICAgICogQnkgZW5zdXJpbmcgdGhhdCB3ZSBzZXQgYWxsIHByb3BlcnRpZXMgd2UgY2FuIHByb2NlZWQgd2l0aCBzdGFibGUgZGF0YS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5dXBFdmVudCA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdrZXlkb3duJyk7XG4gICAgICAgICAgICBjb25zdCBjb21wb3NpdGlvblN0YXJ0RXZlbnQgPSBmcm9tRXZlbnQ8Q29tcG9zaXRpb25FdmVudD4oXG4gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICdjb21wb3NpdGlvbnN0YXJ0J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvc2l0aW9uRW5kRXZlbnQgPSBmcm9tRXZlbnQ8Q29tcG9zaXRpb25FdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29tcG9zaXRpb25lbmQnKTtcblxuICAgICAgICAgICAga2V5dXBFdmVudFxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGV2dCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3pvbmUub25TdGFibGUucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBldnQpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2dCkgPT4gdGhpcy5faGFuZGxlS2V5Ym9hcmRFdmVudChldnQpKTtcblxuICAgICAgICAgICAgY29tcG9zaXRpb25TdGFydEV2ZW50LnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNDb21wb3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbXBvc2l0aW9uRW5kRXZlbnQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0NvbXBvc2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBNYXRjaGVyIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIHRoZSBzdHIgZm9yIGEgc2VhcmNoIHRlcm0gKi9cbiAgICBASW5wdXQoKVxuICAgIG1hdGNoZXIgPSAoc3RyOiBzdHJpbmcsIHNlYXJjaFRlcm06IHN0cmluZyk6IGJvb2xlYW4gPT4gc3RyLnN0YXJ0c1dpdGgoc2VhcmNoVGVybSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZSAmJiAhdGhpcy5faXNDb21wb3NpbmcpIHtcbiAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgdGhpcy5fc3RvcEtleXMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5pbnB1dFRleHQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCB0aGlzLl9jb21wbGV0ZUtleXMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VuZENvbXBsZXRlRXZlbnQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW92ZUluZGljYXRvclRvTGFzdENoYXJhY3RlcigpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgdGhpcy5fZmlsbEtleXMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VuZENvbXBsZXRlRXZlbnQoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5faXNDb250cm9sS2V5KGV2ZW50KSAmJiB0aGlzLmlucHV0VGV4dCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc1NlbGVjdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCAhPT0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZDtcbiAgICAgICAgICAgICAgICBpZiAoaGFzU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TmF0aXZlVmFsdWUgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dFRleHQubGVuZ3RoID4gY3VycmVudE5hdGl2ZVZhbHVlLmxlbmd0aCArIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dFRleHQgPSBjdXJyZW50TmF0aXZlVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3RyaWdnZXJUeXBlQWhlYWQoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5vbGRWYWx1ZSA9IHRoaXMuaW5wdXRUZXh0O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMub3B0aW9ucy5maW5kKChvcHRpb24pID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hlcih0aGlzLmRpc3BsYXlGbihvcHRpb24pLnRvTG9jYWxlTG93ZXJDYXNlKCksIHRoaXMuaW5wdXRUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3R5cGVhaGVhZCh0aGlzLmRpc3BsYXlGbihpdGVtKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubGFzdEtleVVwRXZlbnQgPSBldmVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3R5cGVhaGVhZChkaXNwbGF5ZWRWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IGRpc3BsYXllZFZhbHVlO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25TdGFydEluZGV4ID0gdGhpcy5pbnB1dFRleHQubGVuZ3RoO1xuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uU3RhcnRJbmRleCwgZGlzcGxheWVkVmFsdWUubGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzQ29udHJvbEtleShldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIENPTlRST0wpIHx8IGV2ZW50LmN0cmxLZXk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZWZhdWx0RGlzcGxheSh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHJpZ2dlclR5cGVBaGVhZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICB0aGlzLmxhc3RLZXlVcEV2ZW50ICYmXG4gICAgICAgICAgICBLZXlVdGlsLmlzS2V5Q29kZSh0aGlzLmxhc3RLZXlVcEV2ZW50LCBDT05UUk9MKSAmJlxuICAgICAgICAgICAgdGhpcy5pbnB1dFRleHQgPT09IHRoaXMub2xkVmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbmRDb21wbGV0ZUV2ZW50KGZvcmNlQ2xvc2U6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNvbXBsZXRlLmVtaXQoe1xuICAgICAgICAgICAgdGVybTogdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlLFxuICAgICAgICAgICAgZm9yY2VDbG9zZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21vdmVJbmRpY2F0b3JUb0xhc3RDaGFyYWN0ZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0VGV4dExlbmd0aCA9IHRoaXMuaW5wdXRUZXh0Py5sZW5ndGggPz8gMDtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGlucHV0VGV4dExlbmd0aCwgaW5wdXRUZXh0TGVuZ3RoKTtcbiAgICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport { AutoCompleteDirective } from './auto-complete.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class AutoCompleteModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: AutoCompleteModule, imports: [AutoCompleteDirective], exports: [AutoCompleteDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AutoCompleteModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AutoCompleteModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [AutoCompleteDirective],\n exports: [AutoCompleteDirective],\n declarations: []\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFbEU7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0IsWUFKakIscUJBQXFCLGFBQ3JCLHFCQUFxQjsrR0FHdEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDaEMsWUFBWSxFQUFFLEVBQUU7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dG9Db21wbGV0ZURpcmVjdGl2ZSB9IGZyb20gJy4vYXV0by1jb21wbGV0ZS5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgZGlyZWN0IGltcG9ydHMgb2YgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQXV0b0NvbXBsZXRlRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbQXV0b0NvbXBsZXRlRGlyZWN0aXZlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZU1vZHVsZSB7fVxuIl19","import { DestroyRef, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\n/**\n * Creates an observable that emits when the component is destroyed.\n * @param destroyRef\n */\nexport const destroyObservable = (destroyRef = inject(DestroyRef)) => {\n const destroy$ = new Subject();\n destroyRef.onDestroy(() => destroy$.next());\n return destroy$.asObservable();\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveS1vYnNlcnZhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvaGVscGVycy9kZXN0cm95LW9ic2VydmFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQW9CLEVBQUU7SUFDbkYsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUNyQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLE9BQU8sUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ25DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXG4gKiBAcGFyYW0gZGVzdHJveVJlZlxuICovXG5leHBvcnQgY29uc3QgZGVzdHJveU9ic2VydmFibGUgPSAoZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKSk6IE9ic2VydmFibGU8dm9pZD4gPT4ge1xuICAgIGNvbnN0IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiBkZXN0cm95JC5uZXh0KCkpO1xuICAgIHJldHVybiBkZXN0cm95JC5hc09ic2VydmFibGUoKTtcbn07XG4iXX0=","import { get } from '../functions/lodash-utils';\n/** @hidden */\nconst _defaultDfsOptions = {\n children: 'children',\n shouldVisit: () => true,\n postOrder: true\n};\n/** @hidden */\nfunction postOrderDfs() {\n const iterator = (item, callback, options) => {\n if (options.shouldVisit(item)) {\n const children = typeof options.children === 'string' ? get(item, options.children) : options.children(item);\n children.forEach((child) => iterator(child, callback, options));\n callback(item);\n }\n };\n return iterator;\n}\n/** @hidden */\nfunction preOrderDfs() {\n const iterator = (item, callback, options) => {\n if (options.shouldVisit(item)) {\n const children = typeof options.children === 'string' ? get(item, options.children) : options.children(item);\n callback(item);\n children.forEach((child) => iterator(child, callback, options));\n }\n };\n return iterator;\n}\n/**\n * Depth-first search algorithm, which traverses a tree/graph/tree-like structure.\n * callback is called for each item in the collection. The order of the callback calls\n * depends on the options. By default, the algorithm is post-order, which means that\n * the callback is called for each item after its children have been visited.\n *\n * @param collection\n * @param callback\n * @param options\n */\nexport function dfs(collection, callback, options = {}) {\n const mergedOptions = { ..._defaultDfsOptions, ...options };\n const iterator = mergedOptions.postOrder ? postOrderDfs() : preOrderDfs();\n for (const item of collection) {\n iterator(item, callback, mergedOptions);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvaGVscGVycy9kZnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBU2hELGNBQWM7QUFDZCxNQUFNLGtCQUFrQixHQUFvQjtJQUN4QyxRQUFRLEVBQUUsVUFBVTtJQUNwQixXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtJQUN2QixTQUFTLEVBQUUsSUFBSTtDQUNsQixDQUFDO0FBRUYsY0FBYztBQUNkLFNBQVMsWUFBWTtJQUNqQixNQUFNLFFBQVEsR0FBRyxDQUFDLElBQU8sRUFBRSxRQUEyQixFQUFFLE9BQXNCLEVBQVEsRUFBRTtRQUNwRixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM1QixNQUFNLFFBQVEsR0FDVixPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBRSxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ25FLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQUVELGNBQWM7QUFDZCxTQUFTLFdBQVc7SUFDaEIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFPLEVBQUUsUUFBMkIsRUFBRSxPQUFzQixFQUFRLEVBQUU7UUFDcEYsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxRQUFRLEdBQ1YsT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2YsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxHQUFHLENBQUksVUFBb0IsRUFBRSxRQUEyQixFQUFFLFVBQWtDLEVBQUU7SUFDMUcsTUFBTSxhQUFhLEdBQUcsRUFBRSxHQUFHLGtCQUFrQixFQUFFLEdBQUcsT0FBTyxFQUFtQixDQUFDO0lBQzdFLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUssQ0FBQztJQUNoRixLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzVCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0IH0gZnJvbSAnLi4vZnVuY3Rpb25zL2xvZGFzaC11dGlscyc7XG5cbi8qKiBAaGlkZGVuICovXG5pbnRlcmZhY2UgRGZzT3B0aW9uczxUPiB7XG4gICAgY2hpbGRyZW46IHN0cmluZyB8ICgoaXRlbTogVCkgPT4gQXJyYXk8VD4pO1xuICAgIHNob3VsZFZpc2l0OiAoaXRlbTogVCkgPT4gYm9vbGVhbjtcbiAgICBwb3N0T3JkZXI6IGJvb2xlYW47XG59XG5cbi8qKiBAaGlkZGVuICovXG5jb25zdCBfZGVmYXVsdERmc09wdGlvbnM6IERmc09wdGlvbnM8YW55PiA9IHtcbiAgICBjaGlsZHJlbjogJ2NoaWxkcmVuJyxcbiAgICBzaG91bGRWaXNpdDogKCkgPT4gdHJ1ZSxcbiAgICBwb3N0T3JkZXI6IHRydWVcbn07XG5cbi8qKiBAaGlkZGVuICovXG5mdW5jdGlvbiBwb3N0T3JkZXJEZnM8VD4oKTogKGl0ZW06IFQsIGNhbGxiYWNrOiAoaXRlbTogVCkgPT4gdm9pZCwgb3B0aW9uczogRGZzT3B0aW9uczxUPikgPT4gdm9pZCB7XG4gICAgY29uc3QgaXRlcmF0b3IgPSAoaXRlbTogVCwgY2FsbGJhY2s6IChpdGVtOiBUKSA9PiB2b2lkLCBvcHRpb25zOiBEZnNPcHRpb25zPFQ+KTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zLnNob3VsZFZpc2l0KGl0ZW0pKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIG9wdGlvbnMuY2hpbGRyZW4gPT09ICdzdHJpbmcnID8gKGdldChpdGVtLCBvcHRpb25zLmNoaWxkcmVuKSBhcyBUW10pIDogb3B0aW9ucy5jaGlsZHJlbihpdGVtKTtcbiAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBUKSA9PiBpdGVyYXRvcihjaGlsZCwgY2FsbGJhY2ssIG9wdGlvbnMpKTtcbiAgICAgICAgICAgIGNhbGxiYWNrKGl0ZW0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gaXRlcmF0b3I7XG59XG5cbi8qKiBAaGlkZGVuICovXG5mdW5jdGlvbiBwcmVPcmRlckRmczxUPigpOiAoaXRlbTogVCwgY2FsbGJhY2s6IChpdGVtOiBUKSA9PiB2b2lkLCBvcHRpb25zOiBEZnNPcHRpb25zPFQ+KSA9PiB2b2lkIHtcbiAgICBjb25zdCBpdGVyYXRvciA9IChpdGVtOiBULCBjYWxsYmFjazogKGl0ZW06IFQpID0+IHZvaWQsIG9wdGlvbnM6IERmc09wdGlvbnM8VD4pOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbnMuc2hvdWxkVmlzaXQoaXRlbSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICB0eXBlb2Ygb3B0aW9ucy5jaGlsZHJlbiA9PT0gJ3N0cmluZycgPyAoZ2V0KGl0ZW0sIG9wdGlvbnMuY2hpbGRyZW4pIGFzIFRbXSkgOiBvcHRpb25zLmNoaWxkcmVuKGl0ZW0pO1xuICAgICAgICAgICAgY2FsbGJhY2soaXRlbSk7XG4gICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogVCkgPT4gaXRlcmF0b3IoY2hpbGQsIGNhbGxiYWNrLCBvcHRpb25zKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBpdGVyYXRvcjtcbn1cblxuLyoqXG4gKiBEZXB0aC1maXJzdCBzZWFyY2ggYWxnb3JpdGhtLCB3aGljaCB0cmF2ZXJzZXMgYSB0cmVlL2dyYXBoL3RyZWUtbGlrZSBzdHJ1Y3R1cmUuXG4gKiBjYWxsYmFjayBpcyBjYWxsZWQgZm9yIGVhY2ggaXRlbSBpbiB0aGUgY29sbGVjdGlvbi4gVGhlIG9yZGVyIG9mIHRoZSBjYWxsYmFjayBjYWxsc1xuICogZGVwZW5kcyBvbiB0aGUgb3B0aW9ucy4gQnkgZGVmYXVsdCwgdGhlIGFsZ29yaXRobSBpcyBwb3N0LW9yZGVyLCB3aGljaCBtZWFucyB0aGF0XG4gKiB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkIGZvciBlYWNoIGl0ZW0gYWZ0ZXIgaXRzIGNoaWxkcmVuIGhhdmUgYmVlbiB2aXNpdGVkLlxuICpcbiAqIEBwYXJhbSBjb2xsZWN0aW9uXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZnM8VD4oY29sbGVjdGlvbjogQXJyYXk8VD4sIGNhbGxiYWNrOiAoaXRlbTogVCkgPT4gdm9pZCwgb3B0aW9uczogUGFydGlhbDxEZnNPcHRpb25zPFQ+PiA9IHt9KTogdm9pZCB7XG4gICAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHsgLi4uX2RlZmF1bHREZnNPcHRpb25zLCAuLi5vcHRpb25zIH0gYXMgRGZzT3B0aW9uczxUPjtcbiAgICBjb25zdCBpdGVyYXRvciA9IG1lcmdlZE9wdGlvbnMucG9zdE9yZGVyID8gcG9zdE9yZGVyRGZzPFQ+KCkgOiBwcmVPcmRlckRmczxUPigpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb2xsZWN0aW9uKSB7XG4gICAgICAgIGl0ZXJhdG9yKGl0ZW0sIGNhbGxiYWNrLCBtZXJnZWRPcHRpb25zKTtcbiAgICB9XG59XG4iXX0=","import { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef } from '@angular/core';\n/**\n * Retrieves native element from ElementRef.\n */\nexport function getNativeElement(element) {\n let coercible = element;\n if (hasElementRef(element)) {\n coercible = element.elementRef;\n }\n return coerceElement(coercible);\n}\n/**\n * Checks whether object has element reference in it.\n */\nexport function hasElementRef(something) {\n return something && something['elementRef'] instanceof ElementRef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW5hdGl2ZS1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvaGVscGVycy9nZXQtbmF0aXZlLWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0M7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzVCLE9BQTBEO0lBRTFELElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQztJQUN4QixJQUFJLGFBQWEsQ0FBSSxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzVCLFNBQVMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ25DLENBQUM7SUFDRCxPQUFPLGFBQWEsQ0FBQyxTQUE4QixDQUFDLENBQUM7QUFDekQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDekIsU0FBYztJQUVkLE9BQU8sU0FBUyxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxVQUFVLENBQUM7QUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFJldHJpZXZlcyBuYXRpdmUgZWxlbWVudCBmcm9tIEVsZW1lbnRSZWYuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROYXRpdmVFbGVtZW50PFQgZXh0ZW5kcyBFbGVtZW50ID0gSFRNTEVsZW1lbnQ+KFxuICAgIGVsZW1lbnQ6IHsgZWxlbWVudFJlZjogRWxlbWVudFJlZjxUPiB9IHwgVCB8IEVsZW1lbnRSZWY8VD5cbik6IFQge1xuICAgIGxldCBjb2VyY2libGUgPSBlbGVtZW50O1xuICAgIGlmIChoYXNFbGVtZW50UmVmPFQ+KGVsZW1lbnQpKSB7XG4gICAgICAgIGNvZXJjaWJsZSA9IGVsZW1lbnQuZWxlbWVudFJlZjtcbiAgICB9XG4gICAgcmV0dXJuIGNvZXJjZUVsZW1lbnQoY29lcmNpYmxlIGFzIFQgfCBFbGVtZW50UmVmPFQ+KTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBvYmplY3QgaGFzIGVsZW1lbnQgcmVmZXJlbmNlIGluIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzRWxlbWVudFJlZjxUIGV4dGVuZHMgRWxlbWVudCA9IEhUTUxFbGVtZW50PihcbiAgICBzb21ldGhpbmc6IGFueVxuKTogc29tZXRoaW5nIGlzIHsgZWxlbWVudFJlZjogRWxlbWVudFJlZjxUPiB9IHtcbiAgICByZXR1cm4gc29tZXRoaW5nICYmIHNvbWV0aGluZ1snZWxlbWVudFJlZiddIGluc3RhbmNlb2YgRWxlbWVudFJlZjtcbn1cbiJdfQ==","/**\n * Helper function check whether passed data is a JS object (including function).\n */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function isJsObject(obj) {\n return obj !== null && (typeof obj === 'function' || typeof obj === 'object');\n}\n/**\n * Helper function checks whether passed value is not empty.\n */\nexport function isPresent(obj) {\n return obj !== undefined && obj !== null;\n}\n/**\n * Helper function check whether passed value is empty.\n */\nexport function isBlank(obj) {\n return obj === undefined || obj === null;\n}\n/**\n * Helper function checks whether passed value is a boolean.\n */\nexport function isBoolean(obj) {\n return typeof obj === 'boolean';\n}\n/**\n * Helper function checks whether passed value is a valid number.\n */\nexport function isNumber(obj) {\n return typeof obj === 'number';\n}\n/**\n * Helper function checks whether passed value is a string.\n */\nexport function isString(obj) {\n return typeof obj === 'string';\n}\n/**\n * Helper function checks whether passed value is a function\n */\nexport function isFunction(obj) {\n return typeof obj === 'function';\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function isType(obj) {\n return isFunction(obj);\n}\n/**\n * Helper function checks whether passed value is a record of `T` values.\n */\nexport function isStringMap(obj) {\n return typeof obj === 'object' && obj !== null;\n}\n/**\n * Helper function checks whether passed value is an `object`.\n */\nexport function isObject(item) {\n return typeof item === 'object' && !Array.isArray(item) && item !== null;\n}\n/**\n * Helper function checks whether passed value is a promise.\n */\nexport function isPromise(obj) {\n // allow any Promise/A+ compliant thenable.\n // It's up to the caller to ensure that obj.then conforms to the spec\n return !!obj && isFunction(obj.then);\n}\n/**\n * Helper function checks whether passed value is an Observable/Subscribable.\n */\nexport function isSubscribable(obj) {\n return !!obj && isFunction(obj.subscribe);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWNoZWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvdHlwZWNoZWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsc0VBQXNFO0FBQ3RFLE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBUTtJQUMvQixPQUFPLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxVQUFVLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUM7QUFDbEYsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxHQUFRO0lBQzlCLE9BQU8sR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDO0FBQzdDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQUMsR0FBUTtJQUM1QixPQUFPLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQztBQUM3QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVE7SUFDOUIsT0FBTyxPQUFPLEdBQUcsS0FBSyxTQUFTLENBQUM7QUFDcEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFRO0lBQzdCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0FBQ25DLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBUTtJQUM3QixPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQVE7SUFDL0IsT0FBTyxPQUFPLEdBQUcsS0FBSyxVQUFVLENBQUM7QUFDckMsQ0FBQztBQUVELGNBQWM7QUFDZCxzRUFBc0U7QUFDdEUsTUFBTSxVQUFVLE1BQU0sQ0FBQyxHQUFRO0lBQzNCLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQVUsR0FBUTtJQUN6QyxPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDO0FBQ25ELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUksSUFBTztJQUMvQixPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQztBQUM3RSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFVLEdBQVE7SUFDdkMsMkNBQTJDO0lBQzNDLHFFQUFxRTtJQUNyRSxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFVLEdBQXdCO0lBQzVELE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIGNoZWNrIHdoZXRoZXIgcGFzc2VkIGRhdGEgaXMgYSBKUyBvYmplY3QgKGluY2x1ZGluZyBmdW5jdGlvbikuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWZ1bmN0aW9uLXR5cGVcbmV4cG9ydCBmdW5jdGlvbiBpc0pzT2JqZWN0KG9iajogYW55KTogb2JqIGlzIG9iamVjdCB8IEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gb2JqICE9PSBudWxsICYmICh0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBvYmogPT09ICdvYmplY3QnKTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgcGFzc2VkIHZhbHVlIGlzIG5vdCBlbXB0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHJlc2VudChvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvYmogIT09IHVuZGVmaW5lZCAmJiBvYmogIT09IG51bGw7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIGNoZWNrIHdoZXRoZXIgcGFzc2VkIHZhbHVlIGlzIGVtcHR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCbGFuayhvYmo6IGFueSk6IG9iaiBpcyB1bmRlZmluZWQgfCBudWxsIHtcbiAgICByZXR1cm4gb2JqID09PSB1bmRlZmluZWQgfHwgb2JqID09PSBudWxsO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBjaGVja3Mgd2hldGhlciBwYXNzZWQgdmFsdWUgaXMgYSBib29sZWFuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKG9iajogYW55KTogb2JqIGlzIGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnYm9vbGVhbic7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIGNoZWNrcyB3aGV0aGVyIHBhc3NlZCB2YWx1ZSBpcyBhIHZhbGlkIG51bWJlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKG9iajogYW55KTogb2JqIGlzIG51bWJlciB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdudW1iZXInO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBjaGVja3Mgd2hldGhlciBwYXNzZWQgdmFsdWUgaXMgYSBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyhvYmo6IGFueSk6IG9iaiBpcyBzdHJpbmcge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgcGFzc2VkIHZhbHVlIGlzIGEgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24ob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqIEBoaWRkZW4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWZ1bmN0aW9uLXR5cGVcbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGUob2JqOiBhbnkpOiBvYmogaXMgRnVuY3Rpb24ge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKG9iaik7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIGNoZWNrcyB3aGV0aGVyIHBhc3NlZCB2YWx1ZSBpcyBhIHJlY29yZCBvZiBgVGAgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdNYXA8VCA9IGFueT4ob2JqOiBhbnkpOiBvYmogaXMgUmVjb3JkPHN0cmluZywgVD4ge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGw7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIGNoZWNrcyB3aGV0aGVyIHBhc3NlZCB2YWx1ZSBpcyBhbiBgb2JqZWN0YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0PFQ+KGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGl0ZW0pICYmIGl0ZW0gIT09IG51bGw7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIGNoZWNrcyB3aGV0aGVyIHBhc3NlZCB2YWx1ZSBpcyBhIHByb21pc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2U8VCA9IGFueT4ob2JqOiBhbnkpOiBvYmogaXMgUHJvbWlzZTxUPiB7XG4gICAgLy8gYWxsb3cgYW55IFByb21pc2UvQSsgY29tcGxpYW50IHRoZW5hYmxlLlxuICAgIC8vIEl0J3MgdXAgdG8gdGhlIGNhbGxlciB0byBlbnN1cmUgdGhhdCBvYmoudGhlbiBjb25mb3JtcyB0byB0aGUgc3BlY1xuICAgIHJldHVybiAhIW9iaiAmJiBpc0Z1bmN0aW9uKG9iai50aGVuKTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgcGFzc2VkIHZhbHVlIGlzIGFuIE9ic2VydmFibGUvU3Vic2NyaWJhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdWJzY3JpYmFibGU8VCA9IGFueT4ob2JqOiBhbnkgfCBPYnNlcnZhYmxlPFQ+KTogb2JqIGlzIE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiAhIW9iaiAmJiBpc0Z1bmN0aW9uKG9iai5zdWJzY3JpYmUpO1xufVxuIl19","import { isNumber } from '../typecheck';\n/**\n * Utility type, that allows to track and select ranges of elements while using multi-selection.\n *\n * @usage\n * Imagine we have a simple list of checkboxes:\n * ```html\n * <input\n * #checkboxInput\n * *ngFor=\"let o of options; let idx = index\"\n * type=\"checkbox\"\n * [checked]=\"selectionModel.checked(o)\"\n * (click)=\"toggle(idx, $event)\"\n * >\n * ```\n * With the given layout the logic should be as follows:\n * ```typescript\n * export class YourComponent {\n * options = ['a', 'b', 'c'];\n * readonly selectionModel = new SelectionModel(true);\n *\n * private readonly _rangeSelector = new RangeSelector();\n *\n *\n * toggle(idx: number, event: PointerEvent): void {\n * // getting the toggled value of the checkbox\n * const toggledSelection = event.target.value;\n *\n * // registering the selection of current checkbox\n * this._rangeSelector.onRangeElementToggled(idx, event);\n *\n * // Apply value to each element in range.\n * // If checkbox was toggled without shift pressed or without previously selected one,\n * // this method will select only it.\n * this._rangeSelector.applyValueToEachInRange(idx => {\n * if (toggledSelection) {\n * this.selectionModel.select(options[idx]);\n * } else {\n * this.selectionModel.deselect(options[idx]);\n * }\n * });\n * }\n * }\n * ```\n */\nexport class RangeSelector {\n constructor() {\n /** @hidden */\n this._previousSelectedIndex = null;\n }\n /**\n * Last registered selection state (either multiple or single).\n * Is updated on each `onRangeElementClicked` invokation. Will be `null` initially or once `reset()` is called.\n */\n get lastRangeSelectionState() {\n return this._state ? { ...this._state } : null;\n }\n /**\n * The method that should be used to register each checkbox toggle.\n * Accepts two arguments: `index` and `event`. If none provided, will reset existing state.\n * Otherwise will register current index as last checked.\n *\n * If toggling was done with \"shift\" pressed and there's a previously registered index, will register a range selection.\n * At the same time if checkbox was toggled without shift pressed or without previously selected one, this method will select only it.\n *\n * After calling this method it's recommended to use `applyValueToEachInRange` to actually toggle each checkbox in range.\n *\n * See usage example on this class itself.\n */\n onRangeElementToggled(index, event) {\n if (this._isNonNegativeInteger(this._previousSelectedIndex) &&\n this._isNonNegativeInteger(index) &&\n event?.shiftKey) {\n this._state = {\n isRangeSelection: true,\n from: Math.min(this._previousSelectedIndex, index),\n to: Math.max(this._previousSelectedIndex, index)\n };\n this._previousSelectedIndex = index;\n }\n else if (this._isNonNegativeInteger(index)) {\n this._state = { isRangeSelection: false, from: index, to: index };\n this._previousSelectedIndex = index;\n }\n else {\n this.reset();\n }\n return this.lastRangeSelectionState;\n }\n /**\n * Allows to apply selection to each item in selection range.\n * Accepts a function to apply selection to each item by registered index.\n *\n * See usage example on this class itself.\n */\n applyValueToEachInRange(selectionMethod) {\n const state = this.lastRangeSelectionState;\n if (!state) {\n return;\n }\n if (this._isNonNegativeInteger(state?.from) && this._isNonNegativeInteger(state?.to)) {\n for (let index = state.from; index <= state.to; index++) {\n selectionMethod(index);\n }\n }\n }\n /** Resets selection state. Useful when the list of selectable items is changed (e.g. by filtering, sorting, page change) */\n reset() {\n this._state = null;\n this._previousSelectedIndex = null;\n }\n /** @hidden */\n _isNonNegativeInteger(num) {\n return isNumber(num) && num >= 0;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9oZWxwZXJzL3JhbmdlLXNlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQ0c7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUExQjtRQUNJLGNBQWM7UUFDTiwyQkFBc0IsR0FBa0IsSUFBSSxDQUFDO0lBNEV6RCxDQUFDO0lBeEVHOzs7T0FHRztJQUNILElBQUksdUJBQXVCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILHFCQUFxQixDQUFDLEtBQWMsRUFBRSxLQUErQztRQUNqRixJQUNJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7WUFDdkQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQztZQUNqQyxLQUFLLEVBQUUsUUFBUSxFQUNqQixDQUFDO1lBQ0MsSUFBSSxDQUFDLE1BQU0sR0FBRztnQkFDVixnQkFBZ0IsRUFBRSxJQUFJO2dCQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDO2dCQUNsRCxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDO2FBQ25ELENBQUM7WUFDRixJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN4QyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsdUJBQXVCLENBQUMsZUFBd0M7UUFDNUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBRTNDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNULE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNuRixLQUFLLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDdEQsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELDRIQUE0SDtJQUM1SCxLQUFLO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYztJQUNOLHFCQUFxQixDQUFDLEdBQXFCO1FBQy9DLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi9tb2RlbHMvbnVsbGFibGUnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi90eXBlY2hlY2snO1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSwgdGhhdCBhbGxvd3MgdG8gdHJhY2sgYW5kIHNlbGVjdCByYW5nZXMgb2YgZWxlbWVudHMgd2hpbGUgdXNpbmcgbXVsdGktc2VsZWN0aW9uLlxuICpcbiAqIEB1c2FnZVxuICogSW1hZ2luZSB3ZSBoYXZlIGEgc2ltcGxlIGxpc3Qgb2YgY2hlY2tib3hlczpcbiAqIGBgYGh0bWxcbiAqIDxpbnB1dFxuICogICNjaGVja2JveElucHV0XG4gKiAgKm5nRm9yPVwibGV0IG8gb2Ygb3B0aW9uczsgbGV0IGlkeCA9IGluZGV4XCJcbiAqICB0eXBlPVwiY2hlY2tib3hcIlxuICogIFtjaGVja2VkXT1cInNlbGVjdGlvbk1vZGVsLmNoZWNrZWQobylcIlxuICogIChjbGljayk9XCJ0b2dnbGUoaWR4LCAkZXZlbnQpXCJcbiAqICA+XG4gKiBgYGBcbiAqIFdpdGggdGhlIGdpdmVuIGxheW91dCB0aGUgbG9naWMgc2hvdWxkIGJlIGFzIGZvbGxvd3M6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgY2xhc3MgWW91ckNvbXBvbmVudCB7XG4gKiAgb3B0aW9ucyA9IFsnYScsICdiJywgJ2MnXTtcbiAqICByZWFkb25seSBzZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbCh0cnVlKTtcbiAqXG4gKiAgcHJpdmF0ZSByZWFkb25seSBfcmFuZ2VTZWxlY3RvciA9IG5ldyBSYW5nZVNlbGVjdG9yKCk7XG4gKlxuICpcbiAqICB0b2dnbGUoaWR4OiBudW1iZXIsIGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAqICAgICAgLy8gZ2V0dGluZyB0aGUgdG9nZ2xlZCB2YWx1ZSBvZiB0aGUgY2hlY2tib3hcbiAqICAgICAgY29uc3QgdG9nZ2xlZFNlbGVjdGlvbiA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAqXG4gKiAgICAgIC8vIHJlZ2lzdGVyaW5nIHRoZSBzZWxlY3Rpb24gb2YgY3VycmVudCBjaGVja2JveFxuICogICAgICB0aGlzLl9yYW5nZVNlbGVjdG9yLm9uUmFuZ2VFbGVtZW50VG9nZ2xlZChpZHgsIGV2ZW50KTtcbiAqXG4gKiAgICAgIC8vIEFwcGx5IHZhbHVlIHRvIGVhY2ggZWxlbWVudCBpbiByYW5nZS5cbiAqICAgICAgLy8gSWYgY2hlY2tib3ggd2FzIHRvZ2dsZWQgd2l0aG91dCBzaGlmdCBwcmVzc2VkIG9yIHdpdGhvdXQgcHJldmlvdXNseSBzZWxlY3RlZCBvbmUsXG4gKiAgICAgIC8vIHRoaXMgbWV0aG9kIHdpbGwgc2VsZWN0IG9ubHkgaXQuXG4gKiAgICAgIHRoaXMuX3JhbmdlU2VsZWN0b3IuYXBwbHlWYWx1ZVRvRWFjaEluUmFuZ2UoaWR4ID0+IHtcbiAqICAgICAgICAgIGlmICh0b2dnbGVkU2VsZWN0aW9uKSB7XG4gKiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3Qob3B0aW9uc1tpZHhdKTtcbiAqICAgICAgICAgIH0gZWxzZSB7XG4gKiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdChvcHRpb25zW2lkeF0pO1xuICogICAgICAgICAgfVxuICogICAgICB9KTtcbiAqICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFJhbmdlU2VsZWN0b3Ige1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNTZWxlY3RlZEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0YXRlOiBSYW5nZVNlbGVjdGlvblN0YXRlIHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIExhc3QgcmVnaXN0ZXJlZCBzZWxlY3Rpb24gc3RhdGUgKGVpdGhlciBtdWx0aXBsZSBvciBzaW5nbGUpLlxuICAgICAqIElzIHVwZGF0ZWQgb24gZWFjaCBgb25SYW5nZUVsZW1lbnRDbGlja2VkYCBpbnZva2F0aW9uLiBXaWxsIGJlIGBudWxsYCBpbml0aWFsbHkgb3Igb25jZSBgcmVzZXQoKWAgaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIGdldCBsYXN0UmFuZ2VTZWxlY3Rpb25TdGF0ZSgpOiBSYW5nZVNlbGVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZSA/IHsgLi4udGhpcy5fc3RhdGUgfSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG1ldGhvZCB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIHJlZ2lzdGVyIGVhY2ggY2hlY2tib3ggdG9nZ2xlLlxuICAgICAqIEFjY2VwdHMgdHdvIGFyZ3VtZW50czogYGluZGV4YCBhbmQgYGV2ZW50YC4gSWYgbm9uZSBwcm92aWRlZCwgd2lsbCByZXNldCBleGlzdGluZyBzdGF0ZS5cbiAgICAgKiBPdGhlcndpc2Ugd2lsbCByZWdpc3RlciBjdXJyZW50IGluZGV4IGFzIGxhc3QgY2hlY2tlZC5cbiAgICAgKlxuICAgICAqIElmIHRvZ2dsaW5nIHdhcyBkb25lIHdpdGggXCJzaGlmdFwiIHByZXNzZWQgYW5kIHRoZXJlJ3MgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgaW5kZXgsIHdpbGwgcmVnaXN0ZXIgYSByYW5nZSBzZWxlY3Rpb24uXG4gICAgICogQXQgdGhlIHNhbWUgdGltZSBpZiBjaGVja2JveCB3YXMgdG9nZ2xlZCB3aXRob3V0IHNoaWZ0IHByZXNzZWQgb3Igd2l0aG91dCBwcmV2aW91c2x5IHNlbGVjdGVkIG9uZSwgdGhpcyBtZXRob2Qgd2lsbCBzZWxlY3Qgb25seSBpdC5cbiAgICAgKlxuICAgICAqIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgaXQncyByZWNvbW1lbmRlZCB0byB1c2UgYGFwcGx5VmFsdWVUb0VhY2hJblJhbmdlYCB0byBhY3R1YWxseSB0b2dnbGUgZWFjaCBjaGVja2JveCBpbiByYW5nZS5cbiAgICAgKlxuICAgICAqIFNlZSB1c2FnZSBleGFtcGxlIG9uIHRoaXMgY2xhc3MgaXRzZWxmLlxuICAgICAqL1xuICAgIG9uUmFuZ2VFbGVtZW50VG9nZ2xlZChpbmRleD86IG51bWJlciwgZXZlbnQ/OiBLZXlib2FyZEV2ZW50IHwgTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBSYW5nZVNlbGVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuX2lzTm9uTmVnYXRpdmVJbnRlZ2VyKHRoaXMuX3ByZXZpb3VzU2VsZWN0ZWRJbmRleCkgJiZcbiAgICAgICAgICAgIHRoaXMuX2lzTm9uTmVnYXRpdmVJbnRlZ2VyKGluZGV4KSAmJlxuICAgICAgICAgICAgZXZlbnQ/LnNoaWZ0S2V5XG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgaXNSYW5nZVNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmcm9tOiBNYXRoLm1pbih0aGlzLl9wcmV2aW91c1NlbGVjdGVkSW5kZXgsIGluZGV4KSxcbiAgICAgICAgICAgICAgICB0bzogTWF0aC5tYXgodGhpcy5fcHJldmlvdXNTZWxlY3RlZEluZGV4LCBpbmRleClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLl9wcmV2aW91c1NlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9pc05vbk5lZ2F0aXZlSW50ZWdlcihpbmRleCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlID0geyBpc1JhbmdlU2VsZWN0aW9uOiBmYWxzZSwgZnJvbTogaW5kZXgsIHRvOiBpbmRleCB9O1xuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTZWxlY3RlZEluZGV4ID0gaW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5sYXN0UmFuZ2VTZWxlY3Rpb25TdGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbGxvd3MgdG8gYXBwbHkgc2VsZWN0aW9uIHRvIGVhY2ggaXRlbSBpbiBzZWxlY3Rpb24gcmFuZ2UuXG4gICAgICogQWNjZXB0cyBhIGZ1bmN0aW9uIHRvIGFwcGx5IHNlbGVjdGlvbiB0byBlYWNoIGl0ZW0gYnkgcmVnaXN0ZXJlZCBpbmRleC5cbiAgICAgKlxuICAgICAqIFNlZSB1c2FnZSBleGFtcGxlIG9uIHRoaXMgY2xhc3MgaXRzZWxmLlxuICAgICAqL1xuICAgIGFwcGx5VmFsdWVUb0VhY2hJblJhbmdlKHNlbGVjdGlvbk1ldGhvZDogKGluZGV4OiBudW1iZXIpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmxhc3RSYW5nZVNlbGVjdGlvblN0YXRlO1xuXG4gICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9pc05vbk5lZ2F0aXZlSW50ZWdlcihzdGF0ZT8uZnJvbSkgJiYgdGhpcy5faXNOb25OZWdhdGl2ZUludGVnZXIoc3RhdGU/LnRvKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBzdGF0ZS5mcm9tOyBpbmRleCA8PSBzdGF0ZS50bzsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1ldGhvZChpbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUmVzZXRzIHNlbGVjdGlvbiBzdGF0ZS4gVXNlZnVsIHdoZW4gdGhlIGxpc3Qgb2Ygc2VsZWN0YWJsZSBpdGVtcyBpcyBjaGFuZ2VkIChlLmcuIGJ5IGZpbHRlcmluZywgc29ydGluZywgcGFnZSBjaGFuZ2UpICovXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNTZWxlY3RlZEluZGV4ID0gbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzTm9uTmVnYXRpdmVJbnRlZ2VyKG51bTogTnVsbGFibGU8bnVtYmVyPik6IG51bSBpcyBudW1iZXIge1xuICAgICAgICByZXR1cm4gaXNOdW1iZXIobnVtKSAmJiBudW0gPj0gMDtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFuZ2VTZWxlY3Rpb25TdGF0ZSB7XG4gICAgaXNSYW5nZVNlbGVjdGlvbjogYm9vbGVhbjtcbiAgICBmcm9tOiBudW1iZXI7XG4gICAgdG86IG51bWJlcjtcbn1cbiJdfQ==","const messages = new Set();\n/** @hidden */\nexport function warnOnce(message) {\n if (!messages.has(message)) {\n console.warn(message);\n messages.add(message);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fybi1vbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvaGVscGVycy93YXJuLW9uY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztBQUVuQyxjQUFjO0FBQ2QsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUFlO0lBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QixRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbWVzc2FnZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YXJuT25jZShtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIW1lc3NhZ2VzLmhhcyhtZXNzYWdlKSkge1xuICAgICAgICBjb25zb2xlLndhcm4obWVzc2FnZSk7XG4gICAgICAgIG1lc3NhZ2VzLmFkZChtZXNzYWdlKTtcbiAgICB9XG59XG4iXX0=","import { Injectable, isDevMode } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\nimport { isCompactDensity } from '../functions/is-compact-density';\nimport { warnOnce } from '../helpers';\nimport * as i0 from \"@angular/core\";\nexport const DEFAULT_CONTENT_DENSITY = 'cozy';\n/**\n * Service taking care of ContentDensity\n */\nexport class ContentDensityService {\n /** @hidden */\n constructor() {\n /** Content Density BehaviourSubject */\n this.contentDensity = new BehaviorSubject(DEFAULT_CONTENT_DENSITY);\n if (isDevMode()) {\n warnOnce(`[Deprecated] ContentDensityService is deprecated and will be removed in the next major version.\n Please use ContentDensityControllerService instead, or use the ContentDensityModule forRoot method.`);\n }\n }\n /** @hidden */\n get _contentDensityListener() {\n return this.contentDensity.pipe(distinctUntilChanged(), startWith(this.contentDensity.getValue()));\n }\n /** @hidden */\n get _isCompactDensity() {\n return this._contentDensityListener.pipe(map((density) => isCompactDensity(density)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ContentDensityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ContentDensityService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ContentDensityService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9zZXJ2aWNlcy9jb250ZW50LWRlbnNpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFHdEMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQW1CLE1BQU0sQ0FBQztBQUU5RDs7R0FFRztBQUVILE1BQU0sT0FBTyxxQkFBcUI7SUFJOUIsY0FBYztJQUNkO1FBSkEsdUNBQXVDO1FBQzlCLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUluRSxJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDZCxRQUFRLENBQ0o7cUhBQ3FHLENBQ3hHLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLHVCQUF1QjtRQUN2QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7OEdBdEJRLHFCQUFxQjtrSEFBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGlzQ29tcGFjdERlbnNpdHkgfSBmcm9tICcuLi9mdW5jdGlvbnMvaXMtY29tcGFjdC1kZW5zaXR5JztcbmltcG9ydCB7IHdhcm5PbmNlIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29udGVudC1kZW5zaXR5JztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09OVEVOVF9ERU5TSVRZOiBDb250ZW50RGVuc2l0eSA9ICdjb3p5JztcblxuLyoqXG4gKiBTZXJ2aWNlIHRha2luZyBjYXJlIG9mIENvbnRlbnREZW5zaXR5XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb250ZW50RGVuc2l0eVNlcnZpY2Uge1xuICAgIC8qKiBDb250ZW50IERlbnNpdHkgQmVoYXZpb3VyU3ViamVjdCAqL1xuICAgIHJlYWRvbmx5IGNvbnRlbnREZW5zaXR5ID0gbmV3IEJlaGF2aW9yU3ViamVjdChERUZBVUxUX0NPTlRFTlRfREVOU0lUWSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAgIGBbRGVwcmVjYXRlZF0gQ29udGVudERlbnNpdHlTZXJ2aWNlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uLlxuICAgICAgICAgICAgICAgICBQbGVhc2UgdXNlIENvbnRlbnREZW5zaXR5Q29udHJvbGxlclNlcnZpY2UgaW5zdGVhZCwgb3IgdXNlIHRoZSBDb250ZW50RGVuc2l0eU1vZHVsZSBmb3JSb290IG1ldGhvZC5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2NvbnRlbnREZW5zaXR5TGlzdGVuZXIoKTogT2JzZXJ2YWJsZTxDb250ZW50RGVuc2l0eT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50RGVuc2l0eS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHN0YXJ0V2l0aCh0aGlzLmNvbnRlbnREZW5zaXR5LmdldFZhbHVlKCkpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNDb21wYWN0RGVuc2l0eSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnREZW5zaXR5TGlzdGVuZXIucGlwZShtYXAoKGRlbnNpdHkpID0+IGlzQ29tcGFjdERlbnNpdHkoZGVuc2l0eSkpKTtcbiAgICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { warnOnce } from '../helpers';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated Use Angular's built-in `DestroyRef` and `takeUntilDestroyed` instead.\n * Will be removed in next release\n */\nexport class DestroyedService extends ReplaySubject {\n /** @hidden */\n constructor() {\n super(1);\n warnOnce(`DestroyedService is deprecated. Use Angular's built-in 'DestroyRef' and 'takeUntilDestroyed' instead.`);\n }\n /** @hidden */\n ngOnDestroy() {\n this.next();\n this.complete();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DestroyedService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DestroyedService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DestroyedService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveWVkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9zZXJ2aWNlcy9kZXN0cm95ZWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFFdEM7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQW1CO0lBQ3JELGNBQWM7SUFDZDtRQUNJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNULFFBQVEsQ0FDSix1R0FBdUcsQ0FDMUcsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDOzhHQWJRLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB3YXJuT25jZSB9IGZyb20gJy4uL2hlbHBlcnMnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBBbmd1bGFyJ3MgYnVpbHQtaW4gYERlc3Ryb3lSZWZgIGFuZCBgdGFrZVVudGlsRGVzdHJveWVkYCBpbnN0ZWFkLlxuICogV2lsbCBiZSByZW1vdmVkIGluIG5leHQgcmVsZWFzZVxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGVzdHJveWVkU2VydmljZSBleHRlbmRzIFJlcGxheVN1YmplY3Q8dm9pZD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKDEpO1xuICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgIGBEZXN0cm95ZWRTZXJ2aWNlIGlzIGRlcHJlY2F0ZWQuIFVzZSBBbmd1bGFyJ3MgYnVpbHQtaW4gJ0Rlc3Ryb3lSZWYnIGFuZCAndGFrZVVudGlsRGVzdHJveWVkJyBpbnN0ZWFkLmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5leHQoKTtcbiAgICAgICAgdGhpcy5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { createFocusTrap } from 'focus-trap';\nimport { uuidv4 } from '../functions/uuidv4-generator';\nimport * as i0 from \"@angular/core\";\nexport class FocusTrapService {\n constructor() {\n /** @hidden */\n this._focusTrapInstances = new Map();\n }\n /**\n * Creates focus trap instance for defined element\n * @param element Container for which to create focus trap\n * @param userOptions Focus-trap specific configuration\n * @returns {string} Unique ID of focus trap instance\n */\n createFocusTrap(element, userOptions) {\n const uid = uuidv4();\n const trap = createFocusTrap(element, userOptions);\n this._focusTrapInstances.set(uid, trap);\n this.activateFocusTrap(uid);\n return uid;\n }\n /**\n * Activates focus trap for defined ID\n * @param id Unique ID of focus trap instance\n */\n activateFocusTrap(id) {\n if (!this._focusTrapExists(id)) {\n return;\n }\n const trap = this.getFocusTrapInstance(id);\n trap?.activate();\n }\n /**\n * Deactivates focus trap for defined ID\n * @param id Unique ID of focus trap instance\n */\n deactivateFocusTrap(id) {\n if (!this._focusTrapExists(id)) {\n return;\n }\n const trap = this.getFocusTrapInstance(id);\n trap?.deactivate();\n this._focusTrapInstances.delete(id);\n }\n /**\n * Pauses current focus trap.\n */\n pauseCurrentFocusTrap() {\n if (this._focusTrapInstances.size === 0) {\n return;\n }\n const trapItem = this._getLastTrapedItem();\n trapItem?.pause();\n }\n /**\n * Unpauses current focus trap.\n */\n unpauseCurrentFocusTrap() {\n if (this._focusTrapInstances.size === 0) {\n return;\n }\n const trapItem = this._getLastTrapedItem();\n trapItem?.unpause();\n }\n /**\n * Get focus trap instance by ID.\n * @param id ID of the instance.\n * @returns Focus trap instance if exists.\n */\n getFocusTrapInstance(id) {\n return this._focusTrapInstances.get(id);\n }\n /** @hidden */\n _getLastTrapedItem() {\n const lastItem = Array.from(this._focusTrapInstances).pop();\n return lastItem ? lastItem[1] : undefined;\n }\n /** @hidden */\n _focusTrapExists(id) {\n return this._focusTrapInstances.has(id);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusTrapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusTrapService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusTrapService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvc2VydmljZXMvZm9jdXMtdHJhcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBc0IsTUFBTSxZQUFZLENBQUM7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUt2RCxNQUFNLE9BQU8sZ0JBQWdCO0lBSDdCO1FBSUksY0FBYztRQUNOLHdCQUFtQixHQUF3QixJQUFJLEdBQUcsRUFBRSxDQUFDO0tBbUdoRTtJQWpHRzs7Ozs7T0FLRztJQUNILGVBQWUsQ0FDWCxPQUFrRixFQUNsRixXQUFxQjtRQUVyQixNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUVyQixNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU1QixPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUIsQ0FBQyxFQUFVO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUzQyxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNILG1CQUFtQixDQUFDLEVBQVU7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTNDLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUVuQixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNILHFCQUFxQjtRQUNqQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUUzQyxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsdUJBQXVCO1FBQ25CLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTNDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILG9CQUFvQixDQUFDLEVBQVU7UUFDM0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxjQUFjO0lBQ04sa0JBQWtCO1FBQ3RCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFNUQsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjO0lBQ04sZ0JBQWdCLENBQUMsRUFBVTtRQUMvQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQzs4R0FwR1EsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGYixNQUFNOzsyRkFFVCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlRm9jdXNUcmFwLCBGb2N1c1RyYXAsIE9wdGlvbnMgfSBmcm9tICdmb2N1cy10cmFwJztcbmltcG9ydCB7IHV1aWR2NCB9IGZyb20gJy4uL2Z1bmN0aW9ucy91dWlkdjQtZ2VuZXJhdG9yJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGb2N1c1RyYXBTZXJ2aWNlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzVHJhcEluc3RhbmNlczogTWFwPGFueSwgRm9jdXNUcmFwPiA9IG5ldyBNYXAoKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgZm9jdXMgdHJhcCBpbnN0YW5jZSBmb3IgZGVmaW5lZCBlbGVtZW50XG4gICAgICogQHBhcmFtIGVsZW1lbnQgQ29udGFpbmVyIGZvciB3aGljaCB0byBjcmVhdGUgZm9jdXMgdHJhcFxuICAgICAqIEBwYXJhbSB1c2VyT3B0aW9ucyBGb2N1cy10cmFwIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBVbmlxdWUgSUQgb2YgZm9jdXMgdHJhcCBpbnN0YW5jZVxuICAgICAqL1xuICAgIGNyZWF0ZUZvY3VzVHJhcChcbiAgICAgICAgZWxlbWVudDogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50IHwgKHN0cmluZyB8IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudClbXSxcbiAgICAgICAgdXNlck9wdGlvbnM/OiBPcHRpb25zXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdWlkID0gdXVpZHY0KCk7XG5cbiAgICAgICAgY29uc3QgdHJhcCA9IGNyZWF0ZUZvY3VzVHJhcChlbGVtZW50LCB1c2VyT3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5fZm9jdXNUcmFwSW5zdGFuY2VzLnNldCh1aWQsIHRyYXApO1xuXG4gICAgICAgIHRoaXMuYWN0aXZhdGVGb2N1c1RyYXAodWlkKTtcblxuICAgICAgICByZXR1cm4gdWlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFjdGl2YXRlcyBmb2N1cyB0cmFwIGZvciBkZWZpbmVkIElEXG4gICAgICogQHBhcmFtIGlkIFVuaXF1ZSBJRCBvZiBmb2N1cyB0cmFwIGluc3RhbmNlXG4gICAgICovXG4gICAgYWN0aXZhdGVGb2N1c1RyYXAoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2ZvY3VzVHJhcEV4aXN0cyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRyYXAgPSB0aGlzLmdldEZvY3VzVHJhcEluc3RhbmNlKGlkKTtcblxuICAgICAgICB0cmFwPy5hY3RpdmF0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlYWN0aXZhdGVzIGZvY3VzIHRyYXAgZm9yIGRlZmluZWQgSURcbiAgICAgKiBAcGFyYW0gaWQgVW5pcXVlIElEIG9mIGZvY3VzIHRyYXAgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBkZWFjdGl2YXRlRm9jdXNUcmFwKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9mb2N1c1RyYXBFeGlzdHMoaWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0cmFwID0gdGhpcy5nZXRGb2N1c1RyYXBJbnN0YW5jZShpZCk7XG5cbiAgICAgICAgdHJhcD8uZGVhY3RpdmF0ZSgpO1xuXG4gICAgICAgIHRoaXMuX2ZvY3VzVHJhcEluc3RhbmNlcy5kZWxldGUoaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhdXNlcyBjdXJyZW50IGZvY3VzIHRyYXAuXG4gICAgICovXG4gICAgcGF1c2VDdXJyZW50Rm9jdXNUcmFwKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZm9jdXNUcmFwSW5zdGFuY2VzLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRyYXBJdGVtID0gdGhpcy5fZ2V0TGFzdFRyYXBlZEl0ZW0oKTtcblxuICAgICAgICB0cmFwSXRlbT8ucGF1c2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbnBhdXNlcyBjdXJyZW50IGZvY3VzIHRyYXAuXG4gICAgICovXG4gICAgdW5wYXVzZUN1cnJlbnRGb2N1c1RyYXAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9mb2N1c1RyYXBJbnN0YW5jZXMuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJhcEl0ZW0gPSB0aGlzLl9nZXRMYXN0VHJhcGVkSXRlbSgpO1xuXG4gICAgICAgIHRyYXBJdGVtPy51bnBhdXNlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGZvY3VzIHRyYXAgaW5zdGFuY2UgYnkgSUQuXG4gICAgICogQHBhcmFtIGlkIElEIG9mIHRoZSBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJucyBGb2N1cyB0cmFwIGluc3RhbmNlIGlmIGV4aXN0cy5cbiAgICAgKi9cbiAgICBnZXRGb2N1c1RyYXBJbnN0YW5jZShpZDogc3RyaW5nKTogRm9jdXNUcmFwIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZvY3VzVHJhcEluc3RhbmNlcy5nZXQoaWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TGFzdFRyYXBlZEl0ZW0oKTogRm9jdXNUcmFwIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgbGFzdEl0ZW0gPSBBcnJheS5mcm9tKHRoaXMuX2ZvY3VzVHJhcEluc3RhbmNlcykucG9wKCk7XG5cbiAgICAgICAgcmV0dXJuIGxhc3RJdGVtID8gbGFzdEl0ZW1bMV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb2N1c1RyYXBFeGlzdHMoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNUcmFwSW5zdGFuY2VzLmhhcyhpZCk7XG4gICAgfVxufVxuIl19","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, TAB, UP_ARROW, hasModifierKey } from '@angular/cdk/keycodes';\nimport { DestroyRef, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject, merge } from 'rxjs';\nimport { filter, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { KeyUtil } from '../../functions';\nimport { destroyObservable } from '../../helpers/destroy-observable';\nimport * as i0 from \"@angular/core\";\nexport class KeyboardSupportService {\n constructor() {\n /** Subject that is thrown, when focus escapes the list */\n this.focusEscapeList = new Subject();\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */\n this._onRefresh$ = new Subject();\n /** @hidden\n * allow tab key navigation. default is true.\n */\n this._tabKeyNavigation = true;\n }\n /** @hidden */\n get keyManager() {\n return this._keyManager;\n }\n /** @hidden */\n setKeyboardService(queryList, wrap, tabKeyNavigation = true) {\n this._keyManager?.destroy();\n this._tabKeyNavigation = tabKeyNavigation;\n this._keyManager = new FocusKeyManager(queryList).withWrap(wrap).withHomeAndEnd();\n queryList.changes\n .pipe(startWith(0), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._refreshEscapeLogic(queryList));\n }\n /** @hidden */\n onKeyDown(event) {\n this._keyManager.onKeydown(event);\n if (KeyUtil.isKeyCode(event, TAB)) {\n if (KeyUtil.isKeyCode(event, TAB) && this._tabKeyNavigation) {\n event.preventDefault();\n hasModifierKey(event, 'shiftKey')\n ? this.keyManager.setPreviousItemActive()\n : this.keyManager.setNextItemActive();\n }\n }\n }\n /** Destroys KeyboardSupportService dependencies */\n ngOnDestroy() {\n this._keyManager?.destroy();\n }\n /** @hidden */\n _refreshEscapeLogic(queryList) {\n const createEscapeListener = (listItem, onKeyCode, escapeDirection) => {\n listItem.keyDown\n .pipe(takeUntil(unsubscribe$), filter((event) => KeyUtil.isKeyCode(event, onKeyCode)), tap((event) => event.preventDefault()))\n .subscribe(() => this.focusEscapeList.next(escapeDirection));\n };\n /** Finish all of the streams, form before */\n this._onRefresh$.next();\n const unsubscribe$ = merge(this._onRefresh$, destroyObservable(this._destroyRef));\n if (queryList.length) {\n createEscapeListener(queryList.last, DOWN_ARROW, 'down');\n createEscapeListener(queryList.first, UP_ARROW, 'up');\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: KeyboardSupportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: KeyboardSupportService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: KeyboardSupportService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtc3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvc2VydmljZXMva2V5Ym9hcmQtc3VwcG9ydC9rZXlib2FyZC1zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBd0IsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBTXJFLE1BQU0sT0FBTyxzQkFBc0I7SUFEbkM7UUFFSSwwREFBMEQ7UUFDMUQsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBd0IsQ0FBQztRQUV0RCxlQUFlO1FBQ0UsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbEQsaUdBQWlHO1FBQ2hGLGdCQUFXLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFVbEU7O1dBRUc7UUFDSyxzQkFBaUIsR0FBRyxJQUFJLENBQUM7S0E0RHBDO0lBcEVHLGNBQWM7SUFDZCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FB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ICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBUQUIsIFVQX0FSUk9XLCBoYXNNb2RpZmllcktleSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBEZXN0cm95UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFF1ZXJ5TGlzdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgS2V5VXRpbCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBkZXN0cm95T2JzZXJ2YWJsZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZGVzdHJveS1vYnNlcnZhYmxlJztcbmltcG9ydCB7IEtleWJvYXJkU3VwcG9ydEl0ZW1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2tleWJvYXJkLXN1cHBvcnQtaXRlbS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgdHlwZSBGb2N1c0VzY2FwZURpcmVjdGlvbiA9ICd1cCcgfCAnZG93bic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBLZXlib2FyZFN1cHBvcnRTZXJ2aWNlPFQ+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKiogU3ViamVjdCB0aGF0IGlzIHRocm93biwgd2hlbiBmb2N1cyBlc2NhcGVzIHRoZSBsaXN0ICovXG4gICAgZm9jdXNFc2NhcGVMaXN0ID0gbmV3IFN1YmplY3Q8Rm9jdXNFc2NhcGVEaXJlY3Rpb24+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBxdWVyeUxpc3QgY2hhbmdlcyAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uUmVmcmVzaCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9rZXlNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8VD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBrZXlNYW5hZ2VyKCk6IEZvY3VzS2V5TWFuYWdlcjxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9rZXlNYW5hZ2VyO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogYWxsb3cgdGFiIGtleSBuYXZpZ2F0aW9uLiBkZWZhdWx0IGlzIHRydWUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdGFiS2V5TmF2aWdhdGlvbiA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldEtleWJvYXJkU2VydmljZShcbiAgICAgICAgcXVlcnlMaXN0OiBRdWVyeUxpc3Q8S2V5Ym9hcmRTdXBwb3J0SXRlbUludGVyZmFjZSAmIFQ+LFxuICAgICAgICB3cmFwPzogYm9vbGVhbixcbiAgICAgICAgdGFiS2V5TmF2aWdhdGlvbiA9IHRydWVcbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlcj8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLl90YWJLZXlOYXZpZ2F0aW9uID0gdGFiS2V5TmF2aWdhdGlvbjtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIocXVlcnlMaXN0KS53aXRoV3JhcCh3cmFwKS53aXRoSG9tZUFuZEVuZCgpO1xuICAgICAgICBxdWVyeUxpc3QuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoc3RhcnRXaXRoKDApLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3JlZnJlc2hFc2NhcGVMb2dpYyhxdWVyeUxpc3QpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVEFCKSkge1xuICAgICAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBUQUIpICYmIHRoaXMuX3RhYktleU5hdmlnYXRpb24pIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGhhc01vZGlmaWVyS2V5KGV2ZW50LCAnc2hpZnRLZXknKVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMua2V5TWFuYWdlci5zZXRQcmV2aW91c0l0ZW1BY3RpdmUoKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMua2V5TWFuYWdlci5zZXROZXh0SXRlbUFjdGl2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIERlc3Ryb3lzIEtleWJvYXJkU3VwcG9ydFNlcnZpY2UgZGVwZW5kZW5jaWVzICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXI/LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hFc2NhcGVMb2dpYyhxdWVyeUxpc3Q6IFF1ZXJ5TGlzdDxLZXlib2FyZFN1cHBvcnRJdGVtSW50ZXJmYWNlICYgVD4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3JlYXRlRXNjYXBlTGlzdGVuZXIgPSAoXG4gICAgICAgICAgICBsaXN0SXRlbTogS2V5Ym9hcmRTdXBwb3J0SXRlbUludGVyZmFjZSAmIFQsXG4gICAgICAgICAgICBvbktleUNvZGU6IG51bWJlcixcbiAgICAgICAgICAgIGVzY2FwZURpcmVjdGlvbjogRm9jdXNFc2NhcGVEaXJlY3Rpb25cbiAgICAgICAgKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBsaXN0SXRlbS5rZXlEb3duXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh1bnN1YnNjcmliZSQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgb25LZXlDb2RlKSksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5mb2N1c0VzY2FwZUxpc3QubmV4dChlc2NhcGVEaXJlY3Rpb24pKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKiogRmluaXNoIGFsbCBvZiB0aGUgc3RyZWFtcywgZm9ybSBiZWZvcmUgKi9cbiAgICAgICAgdGhpcy5fb25SZWZyZXNoJC5uZXh0KCk7XG5cbiAgICAgICAgY29uc3QgdW5zdWJzY3JpYmUkID0gbWVyZ2UodGhpcy5fb25SZWZyZXNoJCwgZGVzdHJveU9ic2VydmFibGUodGhpcy5fZGVzdHJveVJlZikpO1xuXG4gICAgICAgIGlmIChxdWVyeUxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICBjcmVhdGVFc2NhcGVMaXN0ZW5lcihxdWVyeUxpc3QubGFzdCwgRE9XTl9BUlJPVywgJ2Rvd24nKTtcbiAgICAgICAgICAgIGNyZWF0ZUVzY2FwZUxpc3RlbmVyKHF1ZXJ5TGlzdC5maXJzdCwgVVBfQVJST1csICd1cCcpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nclass MockStorage {\n // eslint-disable-next-line\n key(index) { }\n clear() { }\n // eslint-disable-next-line\n getItem(key) { }\n // eslint-disable-next-line\n removeItem(key) { }\n // eslint-disable-next-line\n setItem(key, value) { }\n}\nexport class LocalStorageService {\n /** @hidden */\n constructor() {\n typeof localStorage !== 'undefined' ? (this._storage = localStorage) : (this._storage = new MockStorage());\n }\n /** Get item from local storage. */\n get(key) {\n const value = this._storage.getItem(key);\n if (value) {\n return JSON.parse(value);\n }\n return null;\n }\n /** Set item in local storage. */\n set(key, value) {\n this._storage.setItem(key, JSON.stringify(value));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: LocalStorageService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: LocalStorageService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvc2VydmljZXMvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLE1BQU0sV0FBVztJQUdiLDJCQUEyQjtJQUMzQixHQUFHLENBQUMsS0FBYSxJQUFRLENBQUM7SUFFMUIsS0FBSyxLQUFVLENBQUM7SUFFaEIsMkJBQTJCO0lBQzNCLE9BQU8sQ0FBQyxHQUFXLElBQVEsQ0FBQztJQUU1QiwyQkFBMkI7SUFDM0IsVUFBVSxDQUFDLEdBQVcsSUFBUyxDQUFDO0lBRWhDLDJCQUEyQjtJQUMzQixPQUFPLENBQUMsR0FBVyxFQUFFLEtBQWEsSUFBUyxDQUFDO0NBQy9DO0FBR0QsTUFBTSxPQUFPLG1CQUFtQjtJQUk1QixjQUFjO0lBQ2Q7UUFDSSxPQUFPLFlBQVksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLEdBQUcsQ0FBQyxHQUFXO1FBQ1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGlDQUFpQztJQUNqQyxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDOzhHQXJCUSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUROLE1BQU07OzJGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jbGFzcyBNb2NrU3RvcmFnZSB7XG4gICAgcmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBrZXkoaW5kZXg6IG51bWJlcik6IGFueSB7fVxuXG4gICAgY2xlYXIoKTogdm9pZCB7fVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgZ2V0SXRlbShrZXk6IHN0cmluZyk6IGFueSB7fVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IHZvaWQge31cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHt9XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlU2VydmljZSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdG9yYWdlOiBTdG9yYWdlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdHlwZW9mIGxvY2FsU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcgPyAodGhpcy5fc3RvcmFnZSA9IGxvY2FsU3RvcmFnZSkgOiAodGhpcy5fc3RvcmFnZSA9IG5ldyBNb2NrU3RvcmFnZSgpKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGl0ZW0gZnJvbSBsb2NhbCBzdG9yYWdlLiAqL1xuICAgIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fc3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKiBTZXQgaXRlbSBpbiBsb2NhbCBzdG9yYWdlLiAqL1xuICAgIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgIH1cbn1cbiJdfQ==","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { MutationObserverFactory } from '@angular/cdk/observers';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/cdk/observers\";\nexport class AttributeObserver {\n /** @hidden */\n constructor(_mutationObserverFactory) {\n this._mutationObserverFactory = _mutationObserverFactory;\n /** @Hidden */\n this._observedElements = new Map();\n }\n /** @hidden */\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n /** @Hidden */\n observe(elementOrRef) {\n const element = getNativeElement(elementOrRef);\n return new Observable((observer) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n /** @Hidden */\n unobserve(element) {\n this._unobserveElement(getNativeElement(element));\n }\n /** @hidden */\n _observeElement(element) {\n if (!this._observedElements.has(element)) {\n const stream = new Subject();\n const observer = this._mutationObserverFactory.create((mutations) => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n attributes: true\n });\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n }\n else {\n this._observedElements.get(element).count++;\n }\n return this._observedElements.get(element).stream;\n }\n /** @Hidden */\n _unobserveElement(element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element).count--;\n if (!this._observedElements.get(element).count) {\n this._cleanupObserver(element);\n }\n }\n }\n /** @hidden */\n _cleanupObserver(element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element);\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AttributeObserver, deps: [{ token: i1.MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AttributeObserver, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AttributeObserver, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: () => [{ type: i1.MutationObserverFactory }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLm9ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvc2VydmljZXMvb2JzZXJ2ZXJzL2F0dHJpYnV0ZS5vYnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2REFBNkQ7QUFDN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFjLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFZLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBTXBFLE1BQU0sT0FBTyxpQkFBaUI7SUFXMUIsY0FBYztJQUNkLFlBQW9CLHdCQUFpRDtRQUFqRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBWHJFLGNBQWM7UUFDRyxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFPekMsQ0FBQztJQUdvRSxDQUFDO0lBRXpFLGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxjQUFjO0lBQ2QsT0FBTyxDQUFDLFlBQW9FO1FBQ3hFLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9DLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFvQyxFQUFFLEVBQUU7WUFDM0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWhELE9BQU8sR0FBRyxFQUFFO2dCQUNSLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDZCxTQUFTLENBQUMsT0FBK0Q7UUFDckUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELGNBQWM7SUFDTixlQUFlLENBQUMsT0FBZ0I7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztZQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDN0YsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDWCxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7aUJBQ25CLENBQUMsQ0FBQztZQUNQLENBQUM7WUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxjQUFjO0lBQ04saUJBQWlCLENBQUMsT0FBZ0I7UUFDdEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTixnQkFBZ0IsQ0FBQyxPQUFnQjtRQUNyQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFFLENBQUM7WUFDbEUsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDWCxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUIsQ0FBQztZQUNELE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDTCxDQUFDOzhHQTNFUSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZkLE1BQU07OzJGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uICovXG5pbXBvcnQgeyBNdXRhdGlvbk9ic2VydmVyRmFjdG9yeSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vYnNlcnZlcnMnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPYnNlcnZlciwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0TmF0aXZlRWxlbWVudCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZ2V0LW5hdGl2ZS1lbGVtZW50JztcbmltcG9ydCB7IEhhc0VsZW1lbnRSZWYgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2hhcy1lbGVtZW50LXJlZi5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZU9ic2VydmVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29ic2VydmVkRWxlbWVudHMgPSBuZXcgTWFwPFxuICAgICAgICBFbGVtZW50LFxuICAgICAgICB7XG4gICAgICAgICAgICBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB8IG51bGw7XG4gICAgICAgICAgICBzdHJlYW06IFN1YmplY3Q8TXV0YXRpb25SZWNvcmRbXT47XG4gICAgICAgICAgICBjb3VudDogbnVtYmVyO1xuICAgICAgICB9XG4gICAgPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9tdXRhdGlvbk9ic2VydmVyRmFjdG9yeTogTXV0YXRpb25PYnNlcnZlckZhY3RvcnkpIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmZvckVhY2goKF8sIGVsZW1lbnQpID0+IHRoaXMuX2NsZWFudXBPYnNlcnZlcihlbGVtZW50KSk7XG4gICAgfVxuXG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBvYnNlcnZlKGVsZW1lbnRPclJlZjogRWxlbWVudCB8IEVsZW1lbnRSZWY8RWxlbWVudD4gfCBIYXNFbGVtZW50UmVmPEVsZW1lbnQ+KTogT2JzZXJ2YWJsZTxNdXRhdGlvblJlY29yZFtdPiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBnZXROYXRpdmVFbGVtZW50KGVsZW1lbnRPclJlZik7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPE11dGF0aW9uUmVjb3JkW10+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdHJlYW0gPSB0aGlzLl9vYnNlcnZlRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHN0cmVhbS5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Vub2JzZXJ2ZUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIHVub2JzZXJ2ZShlbGVtZW50OiBIYXNFbGVtZW50UmVmPEVsZW1lbnQ+IHwgRWxlbWVudCB8IEVsZW1lbnRSZWY8RWxlbWVudD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdW5vYnNlcnZlRWxlbWVudChnZXROYXRpdmVFbGVtZW50KGVsZW1lbnQpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29ic2VydmVFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpOiBTdWJqZWN0PE11dGF0aW9uUmVjb3JkW10+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3Qgc3RyZWFtID0gbmV3IFN1YmplY3Q8TXV0YXRpb25SZWNvcmRbXT4oKTtcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gdGhpcy5fbXV0YXRpb25PYnNlcnZlckZhY3RvcnkuY3JlYXRlKChtdXRhdGlvbnMpID0+IHN0cmVhbS5uZXh0KG11dGF0aW9ucykpO1xuICAgICAgICAgICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX29ic2VydmVkRWxlbWVudHMuc2V0KGVsZW1lbnQsIHsgb2JzZXJ2ZXIsIHN0cmVhbSwgY291bnQ6IDEgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmdldChlbGVtZW50KSEuY291bnQrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQoZWxlbWVudCkhLnN0cmVhbTtcbiAgICB9XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Vub2JzZXJ2ZUVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5oYXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KGVsZW1lbnQpIS5jb3VudC0tO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmdldChlbGVtZW50KSEuY291bnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jbGVhbnVwT2JzZXJ2ZXIoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NsZWFudXBPYnNlcnZlcihlbGVtZW50OiBFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgeyBvYnNlcnZlciwgc3RyZWFtIH0gPSB0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmdldChlbGVtZW50KSE7XG4gICAgICAgICAgICBpZiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdHJlYW0uY29tcGxldGUoKTtcbiAgICAgICAgICAgIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZGVsZXRlKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","import { coerceElement } from '@angular/cdk/coercion';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class ResizeObserverFactory {\n /** Factory to create ResizeObserver if it's present in browser. */\n create(callback) {\n return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeObserverFactory, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeObserverFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\nexport class ResizeObserverService {\n /** @hidden */\n constructor(_resizeObserverFactory) {\n this._resizeObserverFactory = _resizeObserverFactory;\n /** @hidden */\n this._observedElements = new Map();\n }\n /** @hidden */\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n /** Observe the given element and emit whenever its size changes. */\n observe(elementOrRef) {\n const element = coerceElement(elementOrRef);\n return new Observable((observer) => {\n const stream = this._observeElement(element);\n const subscription = stream?.subscribe(observer);\n return () => {\n subscription?.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n /**\n * Observes the given element by using the existing MutationObserver if available, or creating a\n * new one if not.\n */\n _observeElement(element) {\n let observedElement = this._observedElements.get(element);\n if (!observedElement) {\n const stream = new Subject();\n const observer = this._resizeObserverFactory.create((mutations) => stream.next(mutations));\n if (observer) {\n observer.observe(element);\n }\n observedElement = { observer, stream, count: 0 };\n this._observedElements.set(element, observedElement);\n }\n observedElement.count++;\n return observedElement?.stream;\n }\n /**\n * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n * observing this element.\n */\n _unobserveElement(element) {\n const observedElement = this._observedElements.get(element);\n if (!observedElement) {\n return;\n }\n if (--observedElement.count) {\n return;\n }\n this._cleanupObserver(element);\n }\n /** Clean up the underlying MutationObserver for the specified element. */\n _cleanupObserver(element) {\n const observedElement = this._observedElements.get(element);\n if (!observedElement) {\n return;\n }\n const { observer, stream } = observedElement;\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeObserverService, deps: [{ token: ResizeObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeObserverService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeObserverService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: ResizeObserverFactory }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9zZXJ2aWNlcy9yZXNpemUtb2JzZXJ2ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFjLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFZLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFTckQsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixvRUFBb0U7SUFDcEUsTUFBTSxDQUFDLFFBQWdDO1FBQ25DLE9BQU8sT0FBTyxjQUFjLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7OEdBSlEscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FEUixNQUFNOzsyRkFDbkIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUFTbEMsTUFBTSxPQUFPLHFCQUFxQjtJQUk5QixjQUFjO0lBQ2QsWUFBb0Isc0JBQTZDO1FBQTdDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFKakUsY0FBYztRQUNOLHNCQUFpQixHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO0lBR0ksQ0FBQztJQUVyRSxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLE9BQU8sQ0FBQyxZQUEyQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFNUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFFBQXlDLEVBQUUsRUFBRTtZQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdDLE1BQU0sWUFBWSxHQUFHLE1BQU0sRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFakQsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZUFBZSxDQUFDLE9BQWdCO1FBQ3BDLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO1lBQ3BELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUMzRixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNYLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsQ0FBQztZQUNELGVBQWUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFDRCxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsT0FBTyxlQUFlLEVBQUUsTUFBTSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSyxpQkFBaUIsQ0FBQyxPQUFnQjtRQUN0QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNuQixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksRUFBRSxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELDBFQUEwRTtJQUNsRSxnQkFBZ0IsQ0FBQyxPQUFnQjtRQUNyQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNuQixPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsZUFBZSxDQUFDO1FBQzdDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDWCxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUNELE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7OEdBNUVRLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRFIsTUFBTTs7MkZBQ25CLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW50ZXJmYWNlIE9ic2VydmVkRWxlbWVudCB7XG4gICAgb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyIHwgbnVsbDtcbiAgICByZWFkb25seSBzdHJlYW06IFN1YmplY3Q8UmVzaXplT2JzZXJ2ZXJFbnRyeVtdPjtcbiAgICBjb3VudDogbnVtYmVyO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJlc2l6ZU9ic2VydmVyRmFjdG9yeSB7XG4gICAgLyoqIEZhY3RvcnkgdG8gY3JlYXRlIFJlc2l6ZU9ic2VydmVyIGlmIGl0J3MgcHJlc2VudCBpbiBicm93c2VyLiAgKi9cbiAgICBjcmVhdGUoY2FsbGJhY2s6IFJlc2l6ZU9ic2VydmVyQ2FsbGJhY2spOiBSZXNpemVPYnNlcnZlciB8IG51bGwge1xuICAgICAgICByZXR1cm4gdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiBuZXcgUmVzaXplT2JzZXJ2ZXIoY2FsbGJhY2spO1xuICAgIH1cbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBSZXNpemVPYnNlcnZlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb2JzZXJ2ZWRFbGVtZW50cyA9IG5ldyBNYXA8RWxlbWVudCwgT2JzZXJ2ZWRFbGVtZW50PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yZXNpemVPYnNlcnZlckZhY3Rvcnk6IFJlc2l6ZU9ic2VydmVyRmFjdG9yeSkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZm9yRWFjaCgoXywgZWxlbWVudCkgPT4gdGhpcy5fY2xlYW51cE9ic2VydmVyKGVsZW1lbnQpKTtcbiAgICB9XG5cbiAgICAvKiogT2JzZXJ2ZSB0aGUgZ2l2ZW4gZWxlbWVudCBhbmQgZW1pdCB3aGVuZXZlciBpdHMgc2l6ZSBjaGFuZ2VzLiAqL1xuICAgIG9ic2VydmUoZWxlbWVudE9yUmVmOiBFbGVtZW50IHwgRWxlbWVudFJlZjxFbGVtZW50Pik6IE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeVtdPiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBjb2VyY2VFbGVtZW50KGVsZW1lbnRPclJlZik7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcjogT2JzZXJ2ZXI8UmVzaXplT2JzZXJ2ZXJFbnRyeVtdPikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RyZWFtID0gdGhpcy5fb2JzZXJ2ZUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBzdHJlYW0/LnN1YnNjcmliZShvYnNlcnZlcik7XG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Vub2JzZXJ2ZUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnNlcnZlcyB0aGUgZ2l2ZW4gZWxlbWVudCBieSB1c2luZyB0aGUgZXhpc3RpbmcgTXV0YXRpb25PYnNlcnZlciBpZiBhdmFpbGFibGUsIG9yIGNyZWF0aW5nIGFcbiAgICAgKiBuZXcgb25lIGlmIG5vdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9vYnNlcnZlRWxlbWVudChlbGVtZW50OiBFbGVtZW50KTogU3ViamVjdDxSZXNpemVPYnNlcnZlckVudHJ5W10+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IG9ic2VydmVkRWxlbWVudCA9IHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KGVsZW1lbnQpO1xuXG4gICAgICAgIGlmICghb2JzZXJ2ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBzdHJlYW0gPSBuZXcgU3ViamVjdDxSZXNpemVPYnNlcnZlckVudHJ5W10+KCk7XG4gICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IHRoaXMuX3Jlc2l6ZU9ic2VydmVyRmFjdG9yeS5jcmVhdGUoKG11dGF0aW9ucykgPT4gc3RyZWFtLm5leHQobXV0YXRpb25zKSk7XG4gICAgICAgICAgICBpZiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2JzZXJ2ZWRFbGVtZW50ID0geyBvYnNlcnZlciwgc3RyZWFtLCBjb3VudDogMCB9O1xuICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5zZXQoZWxlbWVudCwgb2JzZXJ2ZWRFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBvYnNlcnZlZEVsZW1lbnQuY291bnQrKztcbiAgICAgICAgcmV0dXJuIG9ic2VydmVkRWxlbWVudD8uc3RyZWFtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVuLW9ic2VydmVzIHRoZSBnaXZlbiBlbGVtZW50IGFuZCBjbGVhbnMgdXAgdGhlIHVuZGVybHlpbmcgTXV0YXRpb25PYnNlcnZlciBpZiBub2JvZHkgZWxzZSBpc1xuICAgICAqIG9ic2VydmluZyB0aGlzIGVsZW1lbnQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdW5vYnNlcnZlRWxlbWVudChlbGVtZW50OiBFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9ic2VydmVkRWxlbWVudCA9IHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KGVsZW1lbnQpO1xuICAgICAgICBpZiAoIW9ic2VydmVkRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKC0tb2JzZXJ2ZWRFbGVtZW50LmNvdW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2xlYW51cE9ic2VydmVyKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKiBDbGVhbiB1cCB0aGUgdW5kZXJseWluZyBNdXRhdGlvbk9ic2VydmVyIGZvciB0aGUgc3BlY2lmaWVkIGVsZW1lbnQuICovXG4gICAgcHJpdmF0ZSBfY2xlYW51cE9ic2VydmVyKGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZWRFbGVtZW50ID0gdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQoZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKCFvYnNlcnZlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IG9ic2VydmVyLCBzdHJlYW0gfSA9IG9ic2VydmVkRWxlbWVudDtcbiAgICAgICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyZWFtLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZGVsZXRlKGVsZW1lbnQpO1xuICAgIH1cbn1cbiJdfQ==","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/** Default RTL languages */\nconst DefaultRtlLanguages = ['ar', 'arc', 'dv', 'fa', 'ha', 'he', 'khw', 'ks', 'ku', 'ps', 'ur', 'yi'];\nexport const RTL_LANGUAGE = new InjectionToken('RtlLanguage');\n/**\n * Service taking care of RTL trough behavior subject\n * language list is used to determine if rtl should be enabled at start\n * user can overwrite default languages by using injection token RtlLanguageToken\n */\nexport class RtlService {\n /** @hidden */\n constructor(injectedRtlLanguages) {\n injectedRtlLanguages = injectedRtlLanguages || DefaultRtlLanguages;\n const filtered = injectedRtlLanguages.filter((language) => navigator.language.includes(language));\n this.rtl = new BehaviorSubject(filtered.length > 0);\n this.rtlSignal = toSignal(this.rtl, { requireSync: true });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RtlService, deps: [{ token: RTL_LANGUAGE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RtlService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RtlService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL_LANGUAGE]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9zZXJ2aWNlcy9ydGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUV2Qyw0QkFBNEI7QUFDNUIsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkcsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFXLGFBQWEsQ0FBQyxDQUFDO0FBR3hFOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQU9uQixjQUFjO0lBQ2QsWUFBOEMsb0JBQThCO1FBQ3hFLG9CQUFvQixHQUFHLG9CQUFvQixJQUFJLG1CQUFtQixDQUFDO1FBRW5FLE1BQU0sUUFBUSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUVsRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7OEdBaEJRLFVBQVUsa0JBUWEsWUFBWTtrSEFSbkMsVUFBVTs7MkZBQVYsVUFBVTtrQkFOdEIsVUFBVTs7MEJBY00sUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuLyoqIERlZmF1bHQgUlRMIGxhbmd1YWdlcyAqL1xuY29uc3QgRGVmYXVsdFJ0bExhbmd1YWdlcyA9IFsnYXInLCAnYXJjJywgJ2R2JywgJ2ZhJywgJ2hhJywgJ2hlJywgJ2todycsICdrcycsICdrdScsICdwcycsICd1cicsICd5aSddO1xuZXhwb3J0IGNvbnN0IFJUTF9MQU5HVUFHRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmdbXT4oJ1J0bExhbmd1YWdlJyk7XG5cbkBJbmplY3RhYmxlKClcbi8qKlxuICogU2VydmljZSB0YWtpbmcgY2FyZSBvZiBSVEwgdHJvdWdoIGJlaGF2aW9yIHN1YmplY3RcbiAqIGxhbmd1YWdlIGxpc3QgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgcnRsIHNob3VsZCBiZSBlbmFibGVkIGF0IHN0YXJ0XG4gKiB1c2VyIGNhbiBvdmVyd3JpdGUgZGVmYXVsdCBsYW5ndWFnZXMgYnkgdXNpbmcgaW5qZWN0aW9uIHRva2VuIFJ0bExhbmd1YWdlVG9rZW5cbiAqL1xuZXhwb3J0IGNsYXNzIFJ0bFNlcnZpY2Uge1xuICAgIC8qKiBSVEwgdmFsdWUgKi9cbiAgICBydGw6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICAgIC8qKiBTaWduYWwgd3JhcHBlciBmb3IgUlRMIHZhbHVlLiAqL1xuICAgIHJ0bFNpZ25hbDogU2lnbmFsPGJvb2xlYW4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KFJUTF9MQU5HVUFHRSkgaW5qZWN0ZWRSdGxMYW5ndWFnZXM6IHN0cmluZ1tdKSB7XG4gICAgICAgIGluamVjdGVkUnRsTGFuZ3VhZ2VzID0gaW5qZWN0ZWRSdGxMYW5ndWFnZXMgfHwgRGVmYXVsdFJ0bExhbmd1YWdlcztcblxuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IGluamVjdGVkUnRsTGFuZ3VhZ2VzLmZpbHRlcigobGFuZ3VhZ2UpID0+IG5hdmlnYXRvci5sYW5ndWFnZS5pbmNsdWRlcyhsYW5ndWFnZSkpO1xuXG4gICAgICAgIHRoaXMucnRsID0gbmV3IEJlaGF2aW9yU3ViamVjdChmaWx0ZXJlZC5sZW5ndGggPiAwKTtcblxuICAgICAgICB0aGlzLnJ0bFNpZ25hbCA9IHRvU2lnbmFsKHRoaXMucnRsLCB7IHJlcXVpcmVTeW5jOiB0cnVlIH0pO1xuICAgIH1cbn1cbiJdfQ==","import { InteractivityChecker } from '@angular/cdk/a11y';\nimport { DOCUMENT, Inject, Injectable, Optional } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/cdk/a11y\";\nexport class TabbableElementService {\n /** @hidden */\n constructor(_checker, _document) {\n this._checker = _checker;\n this._document = _document;\n }\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n getTabbableElement(root, focusLastElement = false, skipSelf = false) {\n if (!skipSelf && this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in DOM order. Note that IE doesn't have `children` for SVG, so we fall\n // back to `childNodes` which includes text nodes, comments etc.\n const rootChildren = root.children || root.childNodes;\n const children = focusLastElement ? Array.from(rootChildren).reverse() : rootChildren;\n for (let i = 0; i < children.length; i++) {\n const tabbableChild = children[i].nodeType === this._document?.ELEMENT_NODE\n ? this.getTabbableElement(children[i], focusLastElement)\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TabbableElementService, deps: [{ token: i1.InteractivityChecker }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TabbableElementService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TabbableElementService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.InteractivityChecker }, { type: Document, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmFibGUtZWxlbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvc2VydmljZXMvdGFiYmFibGUtZWxlbWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUd2RSxNQUFNLE9BQU8sc0JBQXNCO0lBQy9CLGNBQWM7SUFDZCxZQUNxQixRQUE4QixFQUNBLFNBQTBCO1FBRHhELGFBQVEsR0FBUixRQUFRLENBQXNCO1FBQ0EsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFDMUUsQ0FBQztJQUVKLHFFQUFxRTtJQUNyRSxrQkFBa0IsQ0FBQyxJQUFpQixFQUFFLGdCQUFnQixHQUFHLEtBQUssRUFBRSxRQUFRLEdBQUcsS0FBSztRQUM1RSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakYsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELGlGQUFpRjtRQUNqRixnRUFBZ0U7UUFDaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRXRELE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFFdEYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN2QyxNQUFNLGFBQWEsR0FDZixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWTtnQkFDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFnQixFQUFFLGdCQUFnQixDQUFDO2dCQUN2RSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBRWYsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxhQUFhLENBQUM7WUFDekIsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzhHQS9CUSxzQkFBc0Isc0RBSVAsUUFBUTtrSEFKdkIsc0JBQXNCLGNBRFQsTUFBTTs7MkZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUt6QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcmFjdGl2aXR5Q2hlY2tlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcblxuaW1wb3J0IHsgRE9DVU1FTlQsIEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGVja2VyOiBJbnRlcmFjdGl2aXR5Q2hlY2tlcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IERvY3VtZW50IHwgbnVsbFxuICAgICkge31cblxuICAgIC8qKiBHZXQgdGhlIGZpcnN0IHRhYmJhYmxlIGVsZW1lbnQgZnJvbSBhIERPTSBzdWJ0cmVlIChpbmNsdXNpdmUpLiAqL1xuICAgIGdldFRhYmJhYmxlRWxlbWVudChyb290OiBIVE1MRWxlbWVudCwgZm9jdXNMYXN0RWxlbWVudCA9IGZhbHNlLCBza2lwU2VsZiA9IGZhbHNlKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgaWYgKCFza2lwU2VsZiAmJiB0aGlzLl9jaGVja2VyLmlzRm9jdXNhYmxlKHJvb3QpICYmIHRoaXMuX2NoZWNrZXIuaXNUYWJiYWJsZShyb290KSkge1xuICAgICAgICAgICAgcmV0dXJuIHJvb3Q7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJdGVyYXRlIGluIERPTSBvcmRlci4gTm90ZSB0aGF0IElFIGRvZXNuJ3QgaGF2ZSBgY2hpbGRyZW5gIGZvciBTVkcsIHNvIHdlIGZhbGxcbiAgICAgICAgLy8gYmFjayB0byBgY2hpbGROb2Rlc2Agd2hpY2ggaW5jbHVkZXMgdGV4dCBub2RlcywgY29tbWVudHMgZXRjLlxuICAgICAgICBjb25zdCByb290Q2hpbGRyZW4gPSByb290LmNoaWxkcmVuIHx8IHJvb3QuY2hpbGROb2RlcztcblxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGZvY3VzTGFzdEVsZW1lbnQgPyBBcnJheS5mcm9tKHJvb3RDaGlsZHJlbikucmV2ZXJzZSgpIDogcm9vdENoaWxkcmVuO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYmJhYmxlQ2hpbGQgPVxuICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldLm5vZGVUeXBlID09PSB0aGlzLl9kb2N1bWVudD8uRUxFTUVOVF9OT0RFXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5nZXRUYWJiYWJsZUVsZW1lbnQoY2hpbGRyZW5baV0gYXMgSFRNTEVsZW1lbnQsIGZvY3VzTGFzdEVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgaWYgKHRhYmJhYmxlQ2hpbGQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFiYmFibGVDaGlsZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiJdfQ==","import { ViewportRuler } from '@angular/cdk/overlay';\nimport { inject, InjectionToken } from '@angular/core';\nimport { map } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n/**\n * Injection token for the viewport size observable.\n * Emits the viewport size in pixels, which are outputted by the ViewportRuler\n * from @angular/cdk/overlay.\n */\nexport const ViewportSizeObservable = new InjectionToken('ViewportSizeObservable', {\n providedIn: 'root',\n factory: () => {\n const viewportRuler = inject(ViewportRuler);\n return viewportRuler\n .change(50)\n .pipe(map((e) => e.target.innerWidth))\n .pipe(startWith(window.innerWidth));\n }\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtc2l6ZS5vYnNlcnZhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvdG9rZW5zL3ZpZXdwb3J0LXNpemUub2JzZXJ2YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0M7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUFxQix3QkFBd0IsRUFBRTtJQUNuRyxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ1YsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sYUFBYTthQUNmLE1BQU0sQ0FBQyxFQUFFLENBQUM7YUFDVixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFDLENBQUMsTUFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3cG9ydFJ1bGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciB0aGUgdmlld3BvcnQgc2l6ZSBvYnNlcnZhYmxlLlxuICogRW1pdHMgdGhlIHZpZXdwb3J0IHNpemUgaW4gcGl4ZWxzLCB3aGljaCBhcmUgb3V0cHV0dGVkIGJ5IHRoZSBWaWV3cG9ydFJ1bGVyXG4gKiBmcm9tIEBhbmd1bGFyL2Nkay9vdmVybGF5LlxuICovXG5leHBvcnQgY29uc3QgVmlld3BvcnRTaXplT2JzZXJ2YWJsZSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPG51bWJlcj4+KCdWaWV3cG9ydFNpemVPYnNlcnZhYmxlJywge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0UnVsZXIgPSBpbmplY3QoVmlld3BvcnRSdWxlcik7XG4gICAgICAgIHJldHVybiB2aWV3cG9ydFJ1bGVyXG4gICAgICAgICAgICAuY2hhbmdlKDUwKVxuICAgICAgICAgICAgLnBpcGUobWFwKChlKSA9PiAoZS50YXJnZXQgYXMgV2luZG93KS5pbm5lcldpZHRoKSlcbiAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aCh3aW5kb3cuaW5uZXJXaWR0aCkpO1xuICAgIH1cbn0pO1xuIl19","export const ResponsiveBreakpoints = {\n S: 600,\n M: 1024,\n L: 1440\n};\n/** @hidden */\nexport function getBreakpointName(width) {\n if (width < ResponsiveBreakpoints.S) {\n return 'S';\n }\n if (width < ResponsiveBreakpoints.M) {\n return 'M';\n }\n if (width < ResponsiveBreakpoints.L) {\n return 'L';\n }\n return 'XL';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2l2ZS1icmVha3BvaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvYnJlYWtwb2ludHMvcmVzcG9uc2l2ZS1icmVha3BvaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNqQyxDQUFDLEVBQUUsR0FBRztJQUNOLENBQUMsRUFBRSxJQUFJO0lBQ1AsQ0FBQyxFQUFFLElBQUk7Q0FDRCxDQUFDO0FBTVgsY0FBYztBQUNkLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFhO0lBQzNDLElBQUksS0FBSyxHQUFHLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksS0FBSyxHQUFHLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksS0FBSyxHQUFHLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUmVzcG9uc2l2ZUJyZWFrcG9pbnRzID0ge1xuICAgIFM6IDYwMCxcbiAgICBNOiAxMDI0LFxuICAgIEw6IDE0NDBcbn0gYXMgY29uc3Q7XG5cbnR5cGUgYnJlYWtwb2ludE5hbWUgPSBrZXlvZiB0eXBlb2YgUmVzcG9uc2l2ZUJyZWFrcG9pbnRzIHwgJ1hMJztcblxuZXhwb3J0IHR5cGUgQnJlYWtwb2ludE5hbWUgPSBMb3dlcmNhc2U8YnJlYWtwb2ludE5hbWU+IHwgVXBwZXJjYXNlPGJyZWFrcG9pbnROYW1lPjtcblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCcmVha3BvaW50TmFtZSh3aWR0aDogbnVtYmVyKTogYnJlYWtwb2ludE5hbWUge1xuICAgIGlmICh3aWR0aCA8IFJlc3BvbnNpdmVCcmVha3BvaW50cy5TKSB7XG4gICAgICAgIHJldHVybiAnUyc7XG4gICAgfVxuICAgIGlmICh3aWR0aCA8IFJlc3BvbnNpdmVCcmVha3BvaW50cy5NKSB7XG4gICAgICAgIHJldHVybiAnTSc7XG4gICAgfVxuICAgIGlmICh3aWR0aCA8IFJlc3BvbnNpdmVCcmVha3BvaW50cy5MKSB7XG4gICAgICAgIHJldHVybiAnTCc7XG4gICAgfVxuICAgIHJldHVybiAnWEwnO1xufVxuIl19","/* eslint-disable @angular-eslint/no-input-rename */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { DestroyRef, Directive, Input, NgModule, TemplateRef, ViewContainerRef, booleanAttribute, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Subject, combineLatest } from 'rxjs';\nimport { finalize, map, startWith, switchMap, tap } from 'rxjs/operators';\nimport { ResizeObserverService } from '../../services';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\nimport { getBreakpointName } from './responsive-breakpoints';\nimport * as i0 from \"@angular/core\";\n/**\n * Directive to show/hide element on specific breakpoint or range of window width.\n * Uses native ngIf directive to show/hide element.\n */\nexport class BreakpointDirective {\n /**\n * Provide list of the breakpoints to show element on.\n * */\n set fdkBreakpoint(value) {\n const providedValues = value.map((v) => v.toLowerCase());\n this.showOnS = providedValues.includes('s');\n this.showOnM = providedValues.includes('m');\n this.showOnL = providedValues.includes('l');\n this.showOnXL = providedValues.includes('xl');\n }\n /**\n * Observe element width changes.\n */\n set observationSource(value) {\n if (!value) {\n this._sizeObservable$.next(this.viewportSize$);\n return;\n }\n const element = coerceElement(value);\n this._sizeObservable$.next(this._resizeObserverService.observe(value).pipe(map(() => element.offsetWidth), startWith(element.offsetWidth)));\n }\n /** @hidden */\n constructor(templateRef, viewContainer) {\n this.templateRef = templateRef;\n this.viewContainer = viewContainer;\n /**\n * Show element on S breakpoint.\n * S - 0 - 599px\n * */\n this.showOnS = false;\n /**\n * Show element on M breakpoint.\n * M - 0 - 1023px\n * */\n this.showOnM = false;\n /**\n * Show element on L breakpoint.\n * L - 0 - 1439px\n * */\n this.showOnL = false;\n /**\n * Show element on XL breakpoint.\n * */\n this.showOnXL = false;\n /** @hidden */\n this.onChanges$ = new Subject();\n /** @hidden */\n this._sizeObservable$ = new BehaviorSubject(inject(ViewportSizeObservable));\n /** @hidden */\n this.viewportSize$ = inject(ViewportSizeObservable);\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._resizeObserverService = inject(ResizeObserverService);\n }\n /** @hidden */\n ngAfterViewInit() {\n combineLatest([this._sizeObservable$.pipe(switchMap((obs$) => obs$)), this.onChanges$.pipe(startWith(void 0))])\n .pipe(map(([w]) => [w, getBreakpointName(w)]), map(([width, breakpointName]) => this._shouldShow(width, breakpointName)), tap((shouldShow) => {\n if (shouldShow) {\n if (!this.templateViewRef) {\n this.viewContainer.clear();\n this.templateViewRef = this.viewContainer.createEmbeddedView(this.templateRef);\n this.templateViewRef.detectChanges();\n }\n }\n else {\n this.viewContainer.clear();\n this.templateViewRef = undefined;\n }\n }), takeUntilDestroyed(this._destroyRef), finalize(() => {\n this.viewContainer.clear();\n this.templateViewRef = undefined;\n }))\n .subscribe();\n }\n /** @hidden */\n ngOnChanges() {\n this.onChanges$.next();\n }\n /** @hidden */\n _shouldShow(width, currentBreakpoint) {\n const shouldShowOnBreakpoints = [\n this.showOnS && 'S',\n this.showOnM && 'M',\n this.showOnL && 'L',\n this.showOnXL && 'XL'\n ].filter(Boolean);\n const shouldShow = shouldShowOnBreakpoints.includes(currentBreakpoint);\n if (this.fdkBreakpointLt) {\n return width < this.fdkBreakpointLt;\n }\n if (this.fdkBreakpointGt) {\n return width > this.fdkBreakpointGt;\n }\n return shouldShow;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BreakpointDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.1.4\", type: BreakpointDirective, isStandalone: true, selector: \"[fdkBreakpoint], [fdkBreakpointS], [fdkBreakpointM], [fdkBreakpointL], [fdkBreakpointXL], [fdkBreakpointLt], [fdkBreakpointGt]\", inputs: { fdkBreakpoint: \"fdkBreakpoint\", showOnS: [\"fdkBreakpointS\", \"showOnS\", booleanAttribute], showOnM: [\"fdkBreakpointM\", \"showOnM\", booleanAttribute], showOnL: [\"fdkBreakpointL\", \"showOnL\", booleanAttribute], showOnXL: [\"fdkBreakpointXL\", \"showOnXL\", booleanAttribute], fdkBreakpointLt: \"fdkBreakpointLt\", fdkBreakpointGt: \"fdkBreakpointGt\", observationSource: [\"fdkBreakpointObserve\", \"observationSource\"] }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BreakpointDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkBreakpoint], [fdkBreakpointS], [fdkBreakpointM], [fdkBreakpointL], [fdkBreakpointXL], [fdkBreakpointLt], [fdkBreakpointGt]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { fdkBreakpoint: [{\n type: Input\n }], showOnS: [{\n type: Input,\n args: [{ alias: 'fdkBreakpointS', transform: booleanAttribute }]\n }], showOnM: [{\n type: Input,\n args: [{ alias: 'fdkBreakpointM', transform: booleanAttribute }]\n }], showOnL: [{\n type: Input,\n args: [{ alias: 'fdkBreakpointL', transform: booleanAttribute }]\n }], showOnXL: [{\n type: Input,\n args: [{ alias: 'fdkBreakpointXL', transform: booleanAttribute }]\n }], fdkBreakpointLt: [{\n type: Input\n }], fdkBreakpointGt: [{\n type: Input\n }], observationSource: [{\n type: Input,\n args: ['fdkBreakpointObserve']\n }] } });\nexport class BreakpointModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BreakpointModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: BreakpointModule, imports: [BreakpointDirective], exports: [BreakpointDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BreakpointModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BreakpointModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BreakpointDirective],\n exports: [BreakpointDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWtwb2ludC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2JyZWFrcG9pbnRzL2JyZWFrcG9pbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9EQUFvRDtBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUVILFVBQVUsRUFDVixTQUFTLEVBR1QsS0FBSyxFQUNMLFFBQVEsRUFFUixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFrQixpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUU3RTs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzVCOztTQUVLO0lBQ0wsSUFDSSxhQUFhLENBQUMsS0FBdUI7UUFDckMsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcs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LFVBQVUsQ0FBQztJQUN0QixDQUFDOzhHQWhKUSxtQkFBbUI7a0dBQW5CLG1CQUFtQixtUEFpQmlCLGdCQUFnQiwwQ0FPaEIsZ0JBQWdCLDBDQU9oQixnQkFBZ0IsNkNBTWYsZ0JBQWdCOzsyRkFyQ3JELG1CQUFtQjtrQkFML0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQ0osZ0lBQWdJO29CQUNwSSxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7K0dBTU8sYUFBYTtzQkFEaEIsS0FBSztnQkFjTixPQUFPO3NCQUROLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVEvRCxPQUFPO3NCQUROLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVEvRCxPQUFPO3NCQUROLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU8vRCxRQUFRO3NCQURQLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU9oRSxlQUFlO3NCQURkLEtBQUs7Z0JBT04sZUFBZTtzQkFEZCxLQUFLO2dCQU9GLGlCQUFpQjtzQkFEcEIsS0FBSzt1QkFBQyxzQkFBc0I7O0FBZ0dqQyxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixZQXZKaEIsbUJBQW1CLGFBQW5CLG1CQUFtQjsrR0F1Sm5CLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZSAqL1xuaW1wb3J0IHsgY29lcmNlRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGVzdHJveVJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbWJlZGRlZFZpZXdSZWYsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgT25DaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBWaWV3cG9ydFNpemVPYnNlcnZhYmxlIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3ZpZXdwb3J0LXNpemUub2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBCcmVha3BvaW50TmFtZSwgZ2V0QnJlYWtwb2ludE5hbWUgfSBmcm9tICcuL3Jlc3BvbnNpdmUtYnJlYWtwb2ludHMnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0byBzaG93L2hpZGUgZWxlbWVudCBvbiBzcGVjaWZpYyBicmVha3BvaW50IG9yIHJhbmdlIG9mIHdpbmRvdyB3aWR0aC5cbiAqIFVzZXMgbmF0aXZlIG5nSWYgZGlyZWN0aXZlIHRvIHNob3cvaGlkZSBlbGVtZW50LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjpcbiAgICAgICAgJ1tmZGtCcmVha3BvaW50XSwgW2Zka0JyZWFrcG9pbnRTXSwgW2Zka0JyZWFrcG9pbnRNXSwgW2Zka0JyZWFrcG9pbnRMXSwgW2Zka0JyZWFrcG9pbnRYTF0sIFtmZGtCcmVha3BvaW50THRdLCBbZmRrQnJlYWtwb2ludEd0XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBCcmVha3BvaW50RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBQcm92aWRlIGxpc3Qgb2YgdGhlIGJyZWFrcG9pbnRzIHRvIHNob3cgZWxlbWVudCBvbi5cbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZka0JyZWFrcG9pbnQodmFsdWU6IEJyZWFrcG9pbnROYW1lW10pIHtcbiAgICAgICAgY29uc3QgcHJvdmlkZWRWYWx1ZXMgPSB2YWx1ZS5tYXAoKHYpID0+IHYudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIHRoaXMuc2hvd09uUyA9IHByb3ZpZGVkVmFsdWVzLmluY2x1ZGVzKCdzJyk7XG4gICAgICAgIHRoaXMuc2hvd09uTSA9IHByb3ZpZGVkVmFsdWVzLmluY2x1ZGVzKCdtJyk7XG4gICAgICAgIHRoaXMuc2hvd09uTCA9IHByb3ZpZGVkVmFsdWVzLmluY2x1ZGVzKCdsJyk7XG4gICAgICAgIHRoaXMuc2hvd09uWEwgPSBwcm92aWRlZFZhbHVlcy5pbmNsdWRlcygneGwnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93IGVsZW1lbnQgb24gUyBicmVha3BvaW50LlxuICAgICAqIFMgLSAwIC0gNTk5cHhcbiAgICAgKiAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAnZmRrQnJlYWtwb2ludFMnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBzaG93T25TID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IGVsZW1lbnQgb24gTSBicmVha3BvaW50LlxuICAgICAqIE0gLSAwIC0gMTAyM3B4XG4gICAgICogKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ2Zka0JyZWFrcG9pbnRNJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgc2hvd09uTSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyBlbGVtZW50IG9uIEwgYnJlYWtwb2ludC5cbiAgICAgKiBMIC0gMCAtIDE0MzlweFxuICAgICAqICovXG4gICAgQElucHV0KHsgYWxpYXM6ICdmZGtCcmVha3BvaW50TCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHNob3dPbkwgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNob3cgZWxlbWVudCBvbiBYTCBicmVha3BvaW50LlxuICAgICAqICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAnZmRrQnJlYWtwb2ludFhMJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgc2hvd09uWEwgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNob3cgZWxlbWVudCBvbiBicmVha3BvaW50IGxlc3MgdGhhbiBwcm92aWRlZCB2YWx1ZS5cbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmRrQnJlYWtwb2ludEx0OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IGVsZW1lbnQgb24gYnJlYWtwb2ludCBncmVhdGVyIHRoYW4gcHJvdmlkZWQgdmFsdWUuXG4gICAgICogICovXG4gICAgQElucHV0KClcbiAgICBmZGtCcmVha3BvaW50R3Q6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIE9ic2VydmUgZWxlbWVudCB3aWR0aCBjaGFuZ2VzLlxuICAgICAqL1xuICAgIEBJbnB1dCgnZmRrQnJlYWtwb2ludE9ic2VydmUnKVxuICAgIHNldCBvYnNlcnZhdGlvblNvdXJjZSh2YWx1ZTogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9zaXplT2JzZXJ2YWJsZSQubmV4dCh0aGlzLnZpZXdwb3J0U2l6ZSQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBjb2VyY2VFbGVtZW50KHZhbHVlKTtcbiAgICAgICAgdGhpcy5fc2l6ZU9ic2VydmFibGUkLm5leHQoXG4gICAgICAgICAgICB0aGlzLl9yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4gZWxlbWVudC5vZmZzZXRXaWR0aCksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKGVsZW1lbnQub2Zmc2V0V2lkdGgpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0ZW1wbGF0ZVZpZXdSZWY/OiBFbWJlZGRlZFZpZXdSZWY8dW5rbm93bj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlcyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2l6ZU9ic2VydmFibGUkOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTxudW1iZXI+PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTxudW1iZXI+PihcbiAgICAgICAgaW5qZWN0KFZpZXdwb3J0U2l6ZU9ic2VydmFibGUpXG4gICAgKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSB2aWV3cG9ydFNpemUkID0gaW5qZWN0KFZpZXdwb3J0U2l6ZU9ic2VydmFibGUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNpemVPYnNlcnZlclNlcnZpY2UgPSBpbmplY3QoUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9zaXplT2JzZXJ2YWJsZSQucGlwZShzd2l0Y2hNYXAoKG9icyQpID0+IG9icyQpKSwgdGhpcy5vbkNoYW5nZXMkLnBpcGUoc3RhcnRXaXRoKHZvaWQgMCkpXSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoW3ddKSA9PiBbdywgZ2V0QnJlYWtwb2ludE5hbWUodyldIGFzIGNvbnN0KSxcbiAgICAgICAgICAgICAgICBtYXAoKFt3aWR0aCwgYnJlYWtwb2ludE5hbWVdKSA9PiB0aGlzLl9zaG91bGRTaG93KHdpZHRoLCBicmVha3BvaW50TmFtZSkpLFxuICAgICAgICAgICAgICAgIHRhcCgoc2hvdWxkU2hvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkU2hvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRlbXBsYXRlVmlld1JlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVWaWV3UmVmID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlVmlld1JlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVWaWV3UmVmID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVWaWV3UmVmID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZXMkLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3VsZFNob3cod2lkdGg6IG51bWJlciwgY3VycmVudEJyZWFrcG9pbnQ6IEJyZWFrcG9pbnROYW1lKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHNob3VsZFNob3dPbkJyZWFrcG9pbnRzID0gW1xuICAgICAgICAgICAgdGhpcy5zaG93T25TICYmICdTJyxcbiAgICAgICAgICAgIHRoaXMuc2hvd09uTSAmJiAnTScsXG4gICAgICAgICAgICB0aGlzLnNob3dPbkwgJiYgJ0wnLFxuICAgICAgICAgICAgdGhpcy5zaG93T25YTCAmJiAnWEwnXG4gICAgICAgIF0uZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICBjb25zdCBzaG91bGRTaG93ID0gc2hvdWxkU2hvd09uQnJlYWtwb2ludHMuaW5jbHVkZXMoY3VycmVudEJyZWFrcG9pbnQpO1xuICAgICAgICBpZiAodGhpcy5mZGtCcmVha3BvaW50THQpIHtcbiAgICAgICAgICAgIHJldHVybiB3aWR0aCA8IHRoaXMuZmRrQnJlYWtwb2ludEx0O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZka0JyZWFrcG9pbnRHdCkge1xuICAgICAgICAgICAgcmV0dXJuIHdpZHRoID4gdGhpcy5mZGtCcmVha3BvaW50R3Q7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNob3VsZFNob3c7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtCcmVha3BvaW50RGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbQnJlYWtwb2ludERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgQnJlYWtwb2ludE1vZHVsZSB7fVxuIl19","import { DestroyRef, Directive, ElementRef, inject, Output, Renderer2 } from '@angular/core';\nimport { fromEvent, merge, Observable, Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class ClickedDirective {\n /**\n * Event name.\n */\n static { this.eventName = 'fdkClicked'; }\n /** @hidden */\n constructor() {\n const { nativeElement: element } = inject(ElementRef);\n const renderer = inject(Renderer2);\n const destroyRef = inject(DestroyRef);\n const enter$ = new Subject();\n const space$ = new Subject();\n destroyRef.onDestroy(renderer.listen(element, 'keydown.enter', (e) => enter$.next(e)));\n destroyRef.onDestroy(renderer.listen(element, 'keydown.space', (e) => space$.next(e)));\n destroyRef.onDestroy(() => {\n enter$.complete();\n space$.complete();\n });\n this.fdkClicked = merge(fromEvent(element, 'click'), enter$, space$);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ClickedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: ClickedDirective, isStandalone: true, selector: \"[fdkClicked]\", outputs: { fdkClicked: \"fdkClicked\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ClickedDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkClicked]',\n standalone: true\n }]\n }], ctorParameters: () => [], propDecorators: { fdkClicked: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2tlZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2NsaWNrZWQvY2xpY2tlZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTTdELE1BQU0sT0FBTyxnQkFBZ0I7SUFDekI7O09BRUc7YUFDSSxjQUFTLEdBQUcsWUFBWSxBQUFmLENBQWdCO0lBUWhDLGNBQWM7SUFDZDtRQUNJLE1BQU0sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUMvRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBRTVDLFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RixVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkYsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEIsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBYSxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JGLENBQUM7OEdBN0JRLGdCQUFnQjtrR0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7d0RBV2EsVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBPdXRwdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtDbGlja2VkXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDbGlja2VkRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBFdmVudCBuYW1lLlxuICAgICAqL1xuICAgIHN0YXRpYyBldmVudE5hbWUgPSAnZmRrQ2xpY2tlZCc7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdXNlciBlaXRoZXIgY2xpY2tzIHdpdGggbW91c2UsIG9yXG4gICAgICogY2xpY2tzIG9uIHNwYWNlIG9yIGVudGVyIGtleXNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZmRrQ2xpY2tlZDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCB7IG5hdGl2ZUVsZW1lbnQ6IGVsZW1lbnQgfSA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gICAgICAgIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgICAgIGNvbnN0IGVudGVyJCA9IG5ldyBTdWJqZWN0PEtleWJvYXJkRXZlbnQ+KCk7XG4gICAgICAgIGNvbnN0IHNwYWNlJCA9IG5ldyBTdWJqZWN0PEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICAgICAgZGVzdHJveVJlZi5vbkRlc3Ryb3kocmVuZGVyZXIubGlzdGVuKGVsZW1lbnQsICdrZXlkb3duLmVudGVyJywgKGUpID0+IGVudGVyJC5uZXh0KGUpKSk7XG4gICAgICAgIGRlc3Ryb3lSZWYub25EZXN0cm95KHJlbmRlcmVyLmxpc3RlbihlbGVtZW50LCAna2V5ZG93bi5zcGFjZScsIChlKSA9PiBzcGFjZSQubmV4dChlKSkpO1xuXG4gICAgICAgIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgICAgICAgIGVudGVyJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgc3BhY2UkLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZmRrQ2xpY2tlZCA9IG1lcmdlKGZyb21FdmVudDxNb3VzZUV2ZW50PihlbGVtZW50LCAnY2xpY2snKSwgZW50ZXIkLCBzcGFjZSQpO1xuICAgIH1cbn1cbiJdfQ==","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { DOCUMENT, Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { ClickedDirective } from './clicked.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * No need to use it anymore. Use ClickedDirective directly instead.\n */\nexport class ClickedEventPlugin {\n /** @hidden */\n constructor(document, platformId) {\n this.document = document;\n this.platformId = platformId;\n console.warn(`ClickedEventPlugin is deprecated and will be removed in the next major release. Use ClickedDirective instead.`);\n }\n /** @hidden */\n addEventListener(element, eventName, handler) {\n return this._setupEventBinding(element, handler);\n }\n /** @hidden */\n addGlobalEventListener(higherOrderElement, eventName, handler) {\n const target = this._parseHigherOrderElement(higherOrderElement);\n return this._setupEventBinding(target, handler);\n }\n /** @hidden */\n supports(eventName) {\n return eventName === ClickedDirective.eventName;\n }\n /** @hidden */\n _parseHigherOrderElement(selector) {\n if (this.platformId !== 'browser') {\n return this.document;\n }\n switch (selector) {\n case 'window':\n return window;\n case 'document':\n return document;\n case 'body':\n return document.body;\n default:\n throw new Error(`Element selector [${selector}] not supported.`);\n }\n }\n /** @hidden */\n _setupEventBinding(target, handler) {\n const addProxyFunction = () => {\n target.addEventListener('click', proxyFunction, false);\n target.addEventListener('keydown', proxyFunction, false);\n };\n const removeProxyFunction = () => {\n target.removeEventListener('click', proxyFunction, false);\n target.removeEventListener('keydown', proxyFunction, false);\n };\n const proxyFunction = (event) => {\n if (event instanceof KeyboardEvent) {\n if (event.keyCode !== ENTER && event.keyCode !== SPACE) {\n return;\n }\n }\n handler(event);\n };\n addProxyFunction();\n return removeProxyFunction;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ClickedEventPlugin, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ClickedEventPlugin }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ClickedEventPlugin, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2tlZC1ldmVudC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2NsaWNrZWQvY2xpY2tlZC1ldmVudC5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUt2RDs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLGNBQWM7SUFDZCxZQUM4QixRQUFrQixFQUNmLFVBQWU7UUFEbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNmLGVBQVUsR0FBVixVQUFVLENBQUs7UUFFNUMsT0FBTyxDQUFDLElBQUksQ0FDUiwrR0FBK0csQ0FDbEgsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO0lBQ2QsZ0JBQWdCLENBQUMsT0FBb0IsRUFBRSxTQUFpQixFQUFFLE9BQTZCO1FBQ25GLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsY0FBYztJQUNkLHNCQUFzQixDQUNsQixrQkFBMEIsRUFDMUIsU0FBaUIsRUFDakIsT0FBNkI7UUFFN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxjQUFjO0lBQ2QsUUFBUSxDQUFDLFNBQWlCO1FBQ3RCLE9BQU8sU0FBUyxLQUFLLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsY0FBYztJQUNOLHdCQUF3QixDQUFDLFFBQWdCO1FBQzdDLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDekIsQ0FBQztRQUNELFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDZixLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxNQUFNLENBQUM7WUFDbEIsS0FBSyxVQUFVO2dCQUNYLE9BQU8sUUFBUSxDQUFDO1lBQ3BCLEtBQUssTUFBTTtnQkFDUCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDekI7Z0JBQ0ksTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsUUFBUSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLGtCQUFrQixDQUFDLE1BQW1CLEVBQUUsT0FBNkI7UUFDekUsTUFBTSxnQkFBZ0IsR0FBRyxHQUFTLEVBQUU7WUFDaEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDO1FBRUYsTUFBTSxtQkFBbUIsR0FBRyxHQUFTLEVBQUU7WUFDbkMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUF5QyxFQUFRLEVBQUU7WUFDdEUsSUFBSSxLQUFLLFlBQVksYUFBYSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDckQsT0FBTztnQkFDWCxDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUM7UUFFRixnQkFBZ0IsRUFBRSxDQUFDO1FBRW5CLE9BQU8sbUJBQW1CLENBQUM7SUFDL0IsQ0FBQzs4R0F4RVEsa0JBQWtCLGtCQUdmLFFBQVEsYUFDUixXQUFXO2tIQUpkLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVTs7MEJBSUYsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFTlRFUiwgU1BBQ0UgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuXG5pbXBvcnQgeyBET0NVTUVOVCwgSW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xpY2tlZERpcmVjdGl2ZSB9IGZyb20gJy4vY2xpY2tlZC5kaXJlY3RpdmUnO1xuXG50eXBlIEV2ZW50SGFuZGxlckZ1bmN0aW9uID0gKCRldmVudDogRXZlbnQpID0+IHZvaWQ7XG50eXBlIEhhbmRsZXJSZW1vdmVGdW5jdGlvbiA9ICgpID0+IHZvaWQ7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIE5vIG5lZWQgdG8gdXNlIGl0IGFueW1vcmUuIFVzZSBDbGlja2VkRGlyZWN0aXZlIGRpcmVjdGx5IGluc3RlYWQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDbGlja2VkRXZlbnRQbHVnaW4ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueVxuICAgICkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgQ2xpY2tlZEV2ZW50UGx1Z2luIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLiBVc2UgQ2xpY2tlZERpcmVjdGl2ZSBpbnN0ZWFkLmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoZWxlbWVudDogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBFdmVudEhhbmRsZXJGdW5jdGlvbik6ICgkZXZlbnQ6IEV2ZW50KSA9PiB2b2lkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NldHVwRXZlbnRCaW5kaW5nKGVsZW1lbnQsIGhhbmRsZXIpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgaGlnaGVyT3JkZXJFbGVtZW50OiBzdHJpbmcsXG4gICAgICAgIGV2ZW50TmFtZTogc3RyaW5nLFxuICAgICAgICBoYW5kbGVyOiBFdmVudEhhbmRsZXJGdW5jdGlvblxuICAgICk6IEhhbmRsZXJSZW1vdmVGdW5jdGlvbiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuX3BhcnNlSGlnaGVyT3JkZXJFbGVtZW50KGhpZ2hlck9yZGVyRWxlbWVudCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXR1cEV2ZW50QmluZGluZyh0YXJnZXQsIGhhbmRsZXIpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3VwcG9ydHMoZXZlbnROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50TmFtZSA9PT0gQ2xpY2tlZERpcmVjdGl2ZS5ldmVudE5hbWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wYXJzZUhpZ2hlck9yZGVyRWxlbWVudChzZWxlY3Rvcjogc3RyaW5nKTogRXZlbnRUYXJnZXQge1xuICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybUlkICE9PSAnYnJvd3NlcicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50O1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIGNhc2UgJ3dpbmRvdyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdztcbiAgICAgICAgICAgIGNhc2UgJ2RvY3VtZW50JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQ7XG4gICAgICAgICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbGVtZW50IHNlbGVjdG9yIFske3NlbGVjdG9yfV0gbm90IHN1cHBvcnRlZC5gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBFdmVudEJpbmRpbmcodGFyZ2V0OiBFdmVudFRhcmdldCwgaGFuZGxlcjogRXZlbnRIYW5kbGVyRnVuY3Rpb24pOiBIYW5kbGVyUmVtb3ZlRnVuY3Rpb24ge1xuICAgICAgICBjb25zdCBhZGRQcm94eUZ1bmN0aW9uID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcHJveHlGdW5jdGlvbiwgZmFsc2UpO1xuICAgICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBwcm94eUZ1bmN0aW9uLCBmYWxzZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgcmVtb3ZlUHJveHlGdW5jdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHByb3h5RnVuY3Rpb24sIGZhbHNlKTtcbiAgICAgICAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgcHJveHlGdW5jdGlvbiwgZmFsc2UpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHByb3h5RnVuY3Rpb24gPSAoZXZlbnQ6IEV2ZW50IHwgTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSAhPT0gRU5URVIgJiYgZXZlbnQua2V5Q29kZSAhPT0gU1BBQ0UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhbmRsZXIoZXZlbnQpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGFkZFByb3h5RnVuY3Rpb24oKTtcblxuICAgICAgICByZXR1cm4gcmVtb3ZlUHJveHlGdW5jdGlvbjtcbiAgICB9XG59XG4iXX0=","import { InjectionToken, isDevMode } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { ClickedEventPlugin } from './clicked-event.plugin';\n/**\n * @deprecated\n * ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.\n */\nexport const ClickedBehaviorModuleForRootLoadedOnce = new InjectionToken('Checking Module providers had been loaded', { factory: () => false });\n/**\n * Provides ClickedEventPlugin to the application\n * @deprecated\n */\nexport function provideFdkClicked() {\n if (isDevMode()) {\n console.warn(`provideFdkClicked() is deprecated and will be removed in the next major release. Use ClickedDirective instead.`);\n }\n return [\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: ClickedEventPlugin,\n multi: true\n },\n {\n provide: ClickedBehaviorModuleForRootLoadedOnce,\n useValue: true\n }\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1mZGstY2xpY2tlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvY2xpY2tlZC9wcm92aWRlLWZkay1jbGlja2VkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLElBQUksY0FBYyxDQUNwRSwyQ0FBMkMsRUFDM0MsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQzNCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCO0lBQzdCLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxJQUFJLENBQ1IsZ0hBQWdILENBQ25ILENBQUM7SUFDTixDQUFDO0lBQ0QsT0FBTztRQUNIO1lBQ0ksT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLEtBQUssRUFBRSxJQUFJO1NBQ2Q7UUFDRDtZQUNJLE9BQU8sRUFBRSxzQ0FBc0M7WUFDL0MsUUFBUSxFQUFFLElBQUk7U0FDakI7S0FDSixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBpc0Rldk1vZGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFVkVOVF9NQU5BR0VSX1BMVUdJTlMgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IENsaWNrZWRFdmVudFBsdWdpbiB9IGZyb20gJy4vY2xpY2tlZC1ldmVudC5wbHVnaW4nO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBDbGlja2VkQmVoYXZpb3JNb2R1bGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuIFVzZSBDbGlja2VkRGlyZWN0aXZlIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBDbGlja2VkQmVoYXZpb3JNb2R1bGVGb3JSb290TG9hZGVkT25jZSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPihcbiAgICAnQ2hlY2tpbmcgTW9kdWxlIHByb3ZpZGVycyBoYWQgYmVlbiBsb2FkZWQnLFxuICAgIHsgZmFjdG9yeTogKCkgPT4gZmFsc2UgfVxuKTtcblxuLyoqXG4gKiBQcm92aWRlcyBDbGlja2VkRXZlbnRQbHVnaW4gdG8gdGhlIGFwcGxpY2F0aW9uXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUZka0NsaWNrZWQoKTogUHJvdmlkZXJbXSB7XG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBwcm92aWRlRmRrQ2xpY2tlZCgpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLiBVc2UgQ2xpY2tlZERpcmVjdGl2ZSBpbnN0ZWFkLmBcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRVZFTlRfTUFOQUdFUl9QTFVHSU5TLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IENsaWNrZWRFdmVudFBsdWdpbixcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENsaWNrZWRCZWhhdmlvck1vZHVsZUZvclJvb3RMb2FkZWRPbmNlLFxuICAgICAgICAgICAgdXNlVmFsdWU6IHRydWVcbiAgICAgICAgfVxuICAgIF07XG59XG4iXX0=","import { isDevMode, NgModule } from '@angular/core';\nimport { ClickedDirective } from './clicked.directive';\nimport { provideFdkClicked } from './provide-fdk-clicked';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.\n */\nexport class ClickedBehaviorModule {\n /** @hidden */\n constructor() {\n console.warn(`ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.`);\n }\n /** @hidden */\n static forRoot() {\n if (isDevMode()) {\n console.warn(`ClickedBehaviorModule.forRoot() is deprecated and will be removed in the next major release. Use ClickedDirective instead.`);\n }\n return {\n ngModule: ClickedBehaviorModule,\n providers: [provideFdkClicked()]\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ClickedBehaviorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: ClickedBehaviorModule, imports: [ClickedDirective], exports: [ClickedDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ClickedBehaviorModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ClickedBehaviorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ClickedDirective],\n exports: [ClickedDirective]\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2tlZC1iZWhhdmlvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2NsaWNrZWQvY2xpY2tlZC1iZWhhdmlvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUUxRDs7O0dBR0c7QUFLSCxNQUFNLE9BQU8scUJBQXFCO0lBQzlCLGNBQWM7SUFDZDtRQUNJLE9BQU8sQ0FBQyxJQUFJLENBQ1Isa0hBQWtILENBQ3JILENBQUM7SUFDTixDQUFDO0lBQ0QsY0FBYztJQUNkLE1BQU0sQ0FBQyxPQUFPO1FBQ1YsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLElBQUksQ0FDUiw0SEFBNEgsQ0FDL0gsQ0FBQztRQUNOLENBQUM7UUFDRCxPQUFPO1lBQ0gsUUFBUSxFQUFFLHFCQUFxQjtZQUMvQixTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQ25DLENBQUM7SUFDTixDQUFDOzhHQWxCUSxxQkFBcUI7K0dBQXJCLHFCQUFxQixZQUhwQixnQkFBZ0IsYUFDaEIsZ0JBQWdCOytHQUVqQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBSmpDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGV2TW9kZSwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENsaWNrZWREaXJlY3RpdmUgfSBmcm9tICcuL2NsaWNrZWQuZGlyZWN0aXZlJztcbmltcG9ydCB7IHByb3ZpZGVGZGtDbGlja2VkIH0gZnJvbSAnLi9wcm92aWRlLWZkay1jbGlja2VkJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogQ2xpY2tlZEJlaGF2aW9yTW9kdWxlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLiBVc2UgQ2xpY2tlZERpcmVjdGl2ZSBpbnN0ZWFkLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDbGlja2VkRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbQ2xpY2tlZERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2tlZEJlaGF2aW9yTW9kdWxlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgQ2xpY2tlZEJlaGF2aW9yTW9kdWxlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLiBVc2UgQ2xpY2tlZERpcmVjdGl2ZSBpbnN0ZWFkLmBcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPENsaWNrZWRCZWhhdmlvck1vZHVsZT4ge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICBgQ2xpY2tlZEJlaGF2aW9yTW9kdWxlLmZvclJvb3QoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4gVXNlIENsaWNrZWREaXJlY3RpdmUgaW5zdGVhZC5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogQ2xpY2tlZEJlaGF2aW9yTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbcHJvdmlkZUZka0NsaWNrZWQoKV1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=","import { inject, Renderer2 } from '@angular/core';\nimport { Observable } from 'rxjs';\n/**\n * Returns Observable that emits when element is clicked. Uses Renderer2 to listen to events.\n * @param element\n * @param renderer\n */\nexport function elementClick$(element, renderer = inject(Renderer2)) {\n return new Observable((observer) => {\n const cleanups = [\n renderer.listen(element, 'click', (event) => observer.next(event)),\n renderer.listen(element, 'keydown.enter', (event) => observer.next(event)),\n renderer.listen(element, 'keydown.space', (event) => {\n event.preventDefault();\n observer.next(event);\n })\n ];\n return () => cleanups.forEach((cleanup) => cleanup());\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1jbGljay5vYnNlcnZhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9jbGlja2VkL2VsZW1lbnQtY2xpY2sub2JzZXJ2YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUN6QixPQUE4QyxFQUM5QyxXQUFzQixNQUFNLENBQUMsU0FBUyxDQUFDO0lBRXZDLE9BQU8sSUFBSSxVQUFVLENBQTZCLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDM0QsTUFBTSxRQUFRLEdBQW1CO1lBQzdCLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRSxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2hELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQUM7U0FDTCxDQUFDO1FBQ0YsT0FBTyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIGluamVjdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogUmV0dXJucyBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBlbGVtZW50IGlzIGNsaWNrZWQuIFVzZXMgUmVuZGVyZXIyIHRvIGxpc3RlbiB0byBldmVudHMuXG4gKiBAcGFyYW0gZWxlbWVudFxuICogQHBhcmFtIHJlbmRlcmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbGVtZW50Q2xpY2skKFxuICAgIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgSFRNTEVsZW1lbnQsXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMiA9IGluamVjdChSZW5kZXJlcjIpXG4pOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pigob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgY29uc3QgY2xlYW51cHM6ICgoKSA9PiB2b2lkKVtdID0gW1xuICAgICAgICAgICAgcmVuZGVyZXIubGlzdGVuKGVsZW1lbnQsICdjbGljaycsIChldmVudCkgPT4gb2JzZXJ2ZXIubmV4dChldmVudCkpLFxuICAgICAgICAgICAgcmVuZGVyZXIubGlzdGVuKGVsZW1lbnQsICdrZXlkb3duLmVudGVyJywgKGV2ZW50KSA9PiBvYnNlcnZlci5uZXh0KGV2ZW50KSksXG4gICAgICAgICAgICByZW5kZXJlci5saXN0ZW4oZWxlbWVudCwgJ2tleWRvd24uc3BhY2UnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZXZlbnQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuICgpID0+IGNsZWFudXBzLmZvckVhY2goKGNsZWFudXApID0+IGNsZWFudXAoKSk7XG4gICAgfSk7XG59XG4iXX0=","import { ElementRef, Inject, Injectable, Renderer2 } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\nimport { ClickedEventPlugin } from './clicked-event.plugin';\nimport { ClickedDirective } from './clicked.directive';\nimport * as i0 from \"@angular/core\";\nexport class FdkClickedProvider extends Subject {\n /** @hidden */\n constructor(_elementRef, _renderer, eventManagerPlugins) {\n super();\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n /** @hidden */\n this._preventDefault = true;\n this._fdkClickedEventManagerPluginLoaded = eventManagerPlugins.some((em) => em instanceof ClickedEventPlugin);\n this._initialize();\n }\n /** @hidden */\n setPreventDefault(val) {\n this._preventDefault = val;\n }\n /** @hidden */\n ngOnDestroy() {\n this._listeners.forEach((d) => d());\n this.complete();\n }\n /** @hidden */\n _initialize() {\n const eventsList = this._fdkClickedEventManagerPluginLoaded\n ? [ClickedDirective.eventName]\n : ['click', 'keydown.enter', 'keydown.space'];\n this._listeners = eventsList.map((eventName) => this._renderer.listen(this._elementRef.nativeElement, eventName, (event) => {\n if (this._preventDefault) {\n event.preventDefault();\n }\n this.next(event);\n }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdkClickedProvider, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: EVENT_MANAGER_PLUGINS }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdkClickedProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdkClickedProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [EVENT_MANAGER_PLUGINS]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmRrLWNsaWNrZWQtcHJvdmlkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvY2xpY2tlZC9mZGstY2xpY2tlZC1wcm92aWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHdkQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLE9BQW1DO0lBUXZFLGNBQWM7SUFDZCxZQUNxQixXQUFnQyxFQUNoQyxTQUFvQixFQUNOLG1CQUEwQjtRQUV6RCxLQUFLLEVBQUUsQ0FBQztRQUpTLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUNoQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBVnpDLGNBQWM7UUFDTixvQkFBZSxHQUFHLElBQUksQ0FBQztRQWEzQixJQUFJLENBQUMsbUNBQW1DLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFlBQVksa0JBQWtCLENBQUMsQ0FBQztRQUM5RyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWM7SUFDZCxpQkFBaUIsQ0FBQyxHQUFZO1FBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsY0FBYztJQUNOLFdBQVc7UUFDZixNQUFNLFVBQVUsR0FBYSxJQUFJLENBQUMsbUNBQW1DO1lBQ2pFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQWlDLEVBQUUsRUFBRTtZQUNuRyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOzhHQTNDUSxrQkFBa0IscUVBWWYscUJBQXFCO2tIQVp4QixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7OzBCQWFGLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRVZFTlRfTUFOQUdFUl9QTFVHSU5TIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDbGlja2VkRXZlbnRQbHVnaW4gfSBmcm9tICcuL2NsaWNrZWQtZXZlbnQucGx1Z2luJztcbmltcG9ydCB7IENsaWNrZWREaXJlY3RpdmUgfSBmcm9tICcuL2NsaWNrZWQuZGlyZWN0aXZlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZka0NsaWNrZWRQcm92aWRlciBleHRlbmRzIFN1YmplY3Q8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlbmVycyE6IEFycmF5PCgpID0+IHZvaWQ+O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZmRrQ2xpY2tlZEV2ZW50TWFuYWdlclBsdWdpbkxvYWRlZDogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8RWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBJbmplY3QoRVZFTlRfTUFOQUdFUl9QTFVHSU5TKSBldmVudE1hbmFnZXJQbHVnaW5zOiBhbnlbXVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9mZGtDbGlja2VkRXZlbnRNYW5hZ2VyUGx1Z2luTG9hZGVkID0gZXZlbnRNYW5hZ2VyUGx1Z2lucy5zb21lKChlbSkgPT4gZW0gaW5zdGFuY2VvZiBDbGlja2VkRXZlbnRQbHVnaW4pO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRQcmV2ZW50RGVmYXVsdCh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcHJldmVudERlZmF1bHQgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuZXJzLmZvckVhY2goKGQpID0+IGQoKSk7XG4gICAgICAgIHRoaXMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50c0xpc3Q6IHN0cmluZ1tdID0gdGhpcy5fZmRrQ2xpY2tlZEV2ZW50TWFuYWdlclBsdWdpbkxvYWRlZFxuICAgICAgICAgICAgPyBbQ2xpY2tlZERpcmVjdGl2ZS5ldmVudE5hbWVdXG4gICAgICAgICAgICA6IFsnY2xpY2snLCAna2V5ZG93bi5lbnRlcicsICdrZXlkb3duLnNwYWNlJ107XG4gICAgICAgIHRoaXMuX2xpc3RlbmVycyA9IGV2ZW50c0xpc3QubWFwKChldmVudE5hbWUpID0+XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5saXN0ZW4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBldmVudE5hbWUsIChldmVudDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const FDK_DISABLED_DIRECTIVE = new InjectionToken('Disabled directive token');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmRrLWRpc2FibGVkLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9kaXNhYmxlZC9mZGstZGlzYWJsZWQudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsMEJBQTBCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXNhYmxlZEJlaGF2aW9yIH0gZnJvbSAnLi9kaXNhYmxlZC1iZWhhdmlvci5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgRkRLX0RJU0FCTEVEX0RJUkVDVElWRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEaXNhYmxlZEJlaGF2aW9yPignRGlzYWJsZWQgZGlyZWN0aXZlIHRva2VuJyk7XG4iXX0=","import { getNativeElement } from '../../helpers/get-native-element';\n/** @hidden */\nexport function setDisabledState(element, isDisabled, disabledClass, addDisabledClass) {\n const htmlElement = getNativeElement(element);\n if (isDisabled) {\n if (addDisabledClass) {\n htmlElement.classList.add(disabledClass);\n }\n htmlElement.setAttribute('disabled', '');\n htmlElement.setAttribute('aria-disabled', 'true');\n }\n else {\n htmlElement.classList.remove(disabledClass);\n htmlElement.removeAttribute('disabled');\n htmlElement.removeAttribute('aria-disabled');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWRpc2FibGVkLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9kaXNhYmxlZC9zZXQtZGlzYWJsZWQtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHcEUsY0FBYztBQUNkLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDNUIsT0FBK0QsRUFDL0QsVUFBbUIsRUFDbkIsYUFBcUIsRUFDckIsZ0JBQXlCO0lBRXpCLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLElBQUksVUFBVSxFQUFFLENBQUM7UUFDYixJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDbkIsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELFdBQVcsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLFdBQVcsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELENBQUM7U0FBTSxDQUFDO1FBQ0osV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxXQUFXLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0TmF0aXZlRWxlbWVudCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZ2V0LW5hdGl2ZS1lbGVtZW50JztcbmltcG9ydCB7IEhhc0VsZW1lbnRSZWYgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2hhcy1lbGVtZW50LXJlZi5pbnRlcmZhY2UnO1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldERpc2FibGVkU3RhdGUoXG4gICAgZWxlbWVudDogSGFzRWxlbWVudFJlZjxFbGVtZW50PiB8IEVsZW1lbnQgfCBFbGVtZW50UmVmPEVsZW1lbnQ+LFxuICAgIGlzRGlzYWJsZWQ6IGJvb2xlYW4sXG4gICAgZGlzYWJsZWRDbGFzczogc3RyaW5nLFxuICAgIGFkZERpc2FibGVkQ2xhc3M6IGJvb2xlYW5cbik6IHZvaWQge1xuICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZ2V0TmF0aXZlRWxlbWVudChlbGVtZW50KTtcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgICBpZiAoYWRkRGlzYWJsZWRDbGFzcykge1xuICAgICAgICAgICAgaHRtbEVsZW1lbnQuY2xhc3NMaXN0LmFkZChkaXNhYmxlZENsYXNzKTtcbiAgICAgICAgfVxuICAgICAgICBodG1sRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJycpO1xuICAgICAgICBodG1sRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGh0bWxFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoZGlzYWJsZWRDbGFzcyk7XG4gICAgICAgIGh0bWxFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICAgICAgaHRtbEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJyk7XG4gICAgfVxufVxuIl19","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DestroyRef, Directive, ElementRef, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, ReplaySubject, filter } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FdkClickedProvider } from '../clicked';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\nimport { setDisabledState } from './set-disabled-state';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../clicked\";\nexport class DisabledBehaviorDirective extends ReplaySubject {\n /** @hidden */\n set fdkDisabled(value) {\n const val = coerceBooleanProperty(value);\n this._clicked.setPreventDefault(val);\n this._fdkDisableInput$.next(val);\n }\n get fdkDisabled() {\n return this._disabled;\n }\n /** @hidden */\n constructor(_elementRef, _destroyRef, _clicked) {\n super(1);\n this._elementRef = _elementRef;\n this._destroyRef = _destroyRef;\n this._clicked = _clicked;\n /**\n * Whether to add `disabledClass` class to the element.\n */\n this.addDisabledClass = true;\n /**\n * Disabled css class to apply to the element.\n */\n this.disabledClass = 'is-disabled';\n /** @hidden */\n this._disabled = false;\n /** @hidden */\n this._fdkDisableInput$ = new BehaviorSubject(false);\n /** @hidden */\n this.setDisabledState = (isDisabled) => {\n setDisabledState(this._elementRef, isDisabled, this.disabledClass, this.addDisabledClass);\n };\n this._destroyRef.onDestroy(() => this.complete());\n }\n /** @hidden */\n ngAfterViewInit() {\n this._fdkDisableInput$\n .pipe(filter((isDisabled) => isDisabled !== this._disabled), tap((isDisabled) => {\n this.setDisabledState(isDisabled);\n this._disabled = isDisabled;\n this.next(isDisabled);\n }), takeUntilDestroyed(this._destroyRef))\n .subscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DisabledBehaviorDirective, deps: [{ token: i0.ElementRef }, { token: i0.DestroyRef }, { token: i1.FdkClickedProvider }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: DisabledBehaviorDirective, isStandalone: true, selector: \"[fdkDisabled]\", inputs: { fdkDisabled: \"fdkDisabled\", addDisabledClass: \"addDisabledClass\", disabledClass: \"disabledClass\" }, providers: [\n {\n provide: FDK_DISABLED_DIRECTIVE,\n useExisting: DisabledBehaviorDirective\n },\n FdkClickedProvider\n ], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DisabledBehaviorDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkDisabled]',\n standalone: true,\n providers: [\n {\n provide: FDK_DISABLED_DIRECTIVE,\n useExisting: DisabledBehaviorDirective\n },\n FdkClickedProvider\n ]\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.DestroyRef }, { type: i1.FdkClickedProvider }], propDecorators: { fdkDisabled: [{\n type: Input\n }], addDisabledClass: [{\n type: Input\n }], disabledClass: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQtYmVoYXZpb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9kaXNhYmxlZC9kaXNhYmxlZC1iZWhhdmlvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBaUIsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR2hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFheEQsTUFBTSxPQUFPLHlCQUNULFNBQVEsYUFBc0I7SUFHOUIsY0FBYztJQUNkLElBQ0ksV0FBVyxDQUFDLEtBQW1CO1FBQy9CLE1BQU0sR0FBRyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFtQkQsY0FBYztJQUNkLFlBQ1ksV0FBb0MsRUFDcEMsV0FBdUIsRUFDdkIsUUFBNEI7UUFFcEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBSkQsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBckJ4Qzs7V0FFRztRQUVILHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUV4Qjs7V0FFRztRQUVILGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBRTlCLGNBQWM7UUFDTixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzFCLGNBQWM7UUFDRyxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQVloRSxjQUFjO1FBQ2QscUJBQWdCLEdBQUcsQ0FBQyxVQUFtQixFQUFRLEVBQUU7WUFDN0MsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5RixDQUFDLENBQUM7UUFORSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBT0QsY0FBYztJQUNkLGVBQWU7UUFDWCxJQUFJLENBQUMsaUJBQWlCO2FBQ2pCLElBQUksQ0FDRCxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3JELEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLEVBQ0Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUN2QzthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7OEdBN0RRLHlCQUF5QjtrR0FBekIseUJBQXlCLDBLQVJ2QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxzQkFBc0I7Z0JBQy9CLFdBQVcsRUFBRSx5QkFBeUI7YUFDekM7WUFDRCxrQkFBa0I7U0FDckI7OzJGQUVRLHlCQUF5QjtrQkFYckMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsc0JBQXNCOzRCQUMvQixXQUFXLDJCQUEyQjt5QkFDekM7d0JBQ0Qsa0JBQWtCO3FCQUNyQjtpQkFDSjt5SUFPTyxXQUFXO3NCQURkLEtBQUs7Z0JBZU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBT04sYUFBYTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0LCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZka0NsaWNrZWRQcm92aWRlciB9IGZyb20gJy4uL2NsaWNrZWQnO1xuaW1wb3J0IHsgRGlzYWJsZWRCZWhhdmlvciB9IGZyb20gJy4vZGlzYWJsZWQtYmVoYXZpb3IuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpc2FibGVkVmlld01vZGlmaWVyIH0gZnJvbSAnLi9kaXNhYmxlZC12aWV3LW1vZGlmaWVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGREtfRElTQUJMRURfRElSRUNUSVZFIH0gZnJvbSAnLi9mZGstZGlzYWJsZWQudG9rZW4nO1xuaW1wb3J0IHsgc2V0RGlzYWJsZWRTdGF0ZSB9IGZyb20gJy4vc2V0LWRpc2FibGVkLXN0YXRlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrRGlzYWJsZWRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGREtfRElTQUJMRURfRElSRUNUSVZFLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IERpc2FibGVkQmVoYXZpb3JEaXJlY3RpdmVcbiAgICAgICAgfSxcbiAgICAgICAgRmRrQ2xpY2tlZFByb3ZpZGVyXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEaXNhYmxlZEJlaGF2aW9yRGlyZWN0aXZlXG4gICAgZXh0ZW5kcyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+XG4gICAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBEaXNhYmxlZEJlaGF2aW9yLCBEaXNhYmxlZFZpZXdNb2RpZmllclxue1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmRrRGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICBjb25zdCB2YWwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICB0aGlzLl9jbGlja2VkLnNldFByZXZlbnREZWZhdWx0KHZhbCk7XG4gICAgICAgIHRoaXMuX2Zka0Rpc2FibGVJbnB1dCQubmV4dCh2YWwpO1xuICAgIH1cblxuICAgIGdldCBmZGtEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYWRkIGBkaXNhYmxlZENsYXNzYCBjbGFzcyB0byB0aGUgZWxlbWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFkZERpc2FibGVkQ2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZWQgY3NzIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBlbGVtZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWRDbGFzcyA9ICdpcy1kaXNhYmxlZCc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9mZGtEaXNhYmxlSW5wdXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSBfZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICAgICAgcHJpdmF0ZSBfY2xpY2tlZDogRmRrQ2xpY2tlZFByb3ZpZGVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKDEpO1xuICAgICAgICB0aGlzLl9kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLmNvbXBsZXRlKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSA9IChpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIHNldERpc2FibGVkU3RhdGUodGhpcy5fZWxlbWVudFJlZiwgaXNEaXNhYmxlZCwgdGhpcy5kaXNhYmxlZENsYXNzLCB0aGlzLmFkZERpc2FibGVkQ2xhc3MpO1xuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZmRrRGlzYWJsZUlucHV0JFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChpc0Rpc2FibGVkKSA9PiBpc0Rpc2FibGVkICE9PSB0aGlzLl9kaXNhYmxlZCksXG4gICAgICAgICAgICAgICAgdGFwKChpc0Rpc2FibGVkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHQoaXNEaXNhYmxlZCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { DisabledBehaviorDirective } from './disabled-behavior.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class DisabledBehaviorModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DisabledBehaviorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DisabledBehaviorModule, imports: [DisabledBehaviorDirective], exports: [DisabledBehaviorDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DisabledBehaviorModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DisabledBehaviorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [DisabledBehaviorDirective],\n exports: [DisabledBehaviorDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQtYmVoYXZpb3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9kaXNhYmxlZC9kaXNhYmxlZC1iZWhhdmlvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFMUU7OztHQUdHO0FBS0gsTUFBTSxPQUFPLHNCQUFzQjs4R0FBdEIsc0JBQXNCOytHQUF0QixzQkFBc0IsWUFIckIseUJBQXlCLGFBQ3pCLHlCQUF5QjsrR0FFMUIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQUpsQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUNwQyxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztpQkFDdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlzYWJsZWRCZWhhdmlvckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlzYWJsZWQtYmVoYXZpb3IuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIGRpcmVjdCBpbXBvcnRzIG9mIGNvbXBvbmVudHMgYW5kIGRpcmVjdGl2ZXMuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0Rpc2FibGVkQmVoYXZpb3JEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtEaXNhYmxlZEJlaGF2aW9yRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBEaXNhYmxlZEJlaGF2aW9yTW9kdWxlIHt9XG4iXX0=","import { Injectable } from '@angular/core';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../services/observers/attribute.observer\";\nexport class DisabledObserver {\n /** @hidden */\n constructor(_attributeObserver) {\n this._attributeObserver = _attributeObserver;\n }\n /** @hidden */\n static isDisabled(el) {\n return (el.hasAttribute('disabled') ||\n el.getAttribute('aria-disabled') === 'true' ||\n el.classList.contains('is-disabled'));\n }\n /** @hidden */\n observe(element) {\n return this._attributeObserver.observe(element).pipe(map(() => DisabledObserver.isDisabled(getNativeElement(element))), distinctUntilChanged());\n }\n /** @hidden */\n unobserve(element) {\n this._attributeObserver.unobserve(element);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DisabledObserver, deps: [{ token: i1.AttributeObserver }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DisabledObserver, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DisabledObserver, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: () => [{ type: i1.AttributeObserver }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQub2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2Rpc2FibGVkL2Rpc2FibGVkLm9ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7QUFLaEYsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixjQUFjO0lBQ2QsWUFBb0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7SUFBRyxDQUFDO0lBRTdELGNBQWM7SUFDZCxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQVc7UUFDekIsT0FBTyxDQUNILEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO1lBQzNCLEVBQUUsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEtBQUssTUFBTTtZQUMzQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FDdkMsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO0lBQ2QsT0FBTyxDQUFDLE9BQStEO1FBQ25FLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ2hELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUNqRSxvQkFBb0IsRUFBRSxDQUN6QixDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7SUFDZCxTQUFTLENBQUMsT0FBK0Q7UUFDckUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDOzhHQXhCUSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZiLE1BQU07OzJGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZ2V0TmF0aXZlRWxlbWVudCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZ2V0LW5hdGl2ZS1lbGVtZW50JztcbmltcG9ydCB7IEhhc0VsZW1lbnRSZWYgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2hhcy1lbGVtZW50LXJlZi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXR0cmlidXRlT2JzZXJ2ZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vYnNlcnZlcnMvYXR0cmlidXRlLm9ic2VydmVyJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEaXNhYmxlZE9ic2VydmVyIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2F0dHJpYnV0ZU9ic2VydmVyOiBBdHRyaWJ1dGVPYnNlcnZlcikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhdGljIGlzRGlzYWJsZWQoZWw6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGVsLmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSB8fFxuICAgICAgICAgICAgZWwuZ2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJykgPT09ICd0cnVlJyB8fFxuICAgICAgICAgICAgZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1kaXNhYmxlZCcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvYnNlcnZlKGVsZW1lbnQ6IEhhc0VsZW1lbnRSZWY8RWxlbWVudD4gfCBFbGVtZW50IHwgRWxlbWVudFJlZjxFbGVtZW50Pik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXR0cmlidXRlT2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50KS5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+IERpc2FibGVkT2JzZXJ2ZXIuaXNEaXNhYmxlZChnZXROYXRpdmVFbGVtZW50KGVsZW1lbnQpKSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB1bm9ic2VydmUoZWxlbWVudDogSGFzRWxlbWVudFJlZjxFbGVtZW50PiB8IEVsZW1lbnQgfCBFbGVtZW50UmVmPEVsZW1lbnQ+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2F0dHJpYnV0ZU9ic2VydmVyLnVub2JzZXJ2ZShlbGVtZW50KTtcbiAgICB9XG59XG4iXX0=","import { setDisabledState } from './set-disabled-state';\nexport class DefaultDisabledViewModifier {\n /** @hidden */\n constructor(elementRef) {\n this.elementRef = elementRef;\n /** @hidden */\n this.setDisabledState = (isDisabled) => {\n setDisabledState(this.elementRef, isDisabled, 'is-disabled', true);\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1kaXNhYmxlZC12aWV3LW1vZGlmaWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9kaXNhYmxlZC9kZWZhdWx0LWRpc2FibGVkLXZpZXctbW9kaWZpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsTUFBTSxPQUFPLDJCQUEyQjtJQUNwQyxjQUFjO0lBQ2QsWUFBb0IsVUFBK0I7UUFBL0IsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFFbkQsY0FBYztRQUNkLHFCQUFnQixHQUFHLENBQUMsVUFBbUIsRUFBUSxFQUFFO1lBQzdDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUM7SUFMb0QsQ0FBQztDQU0xRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpc2FibGVkVmlld01vZGlmaWVyIH0gZnJvbSAnLi9kaXNhYmxlZC12aWV3LW1vZGlmaWVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBzZXREaXNhYmxlZFN0YXRlIH0gZnJvbSAnLi9zZXQtZGlzYWJsZWQtc3RhdGUnO1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdERpc2FibGVkVmlld01vZGlmaWVyIGltcGxlbWVudHMgRGlzYWJsZWRWaWV3TW9kaWZpZXIge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEVsZW1lbnQ+KSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlID0gKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmVsZW1lbnRSZWYsIGlzRGlzYWJsZWQsICdpcy1kaXNhYmxlZCcsIHRydWUpO1xuICAgIH07XG59XG4iXX0=","import { DestroyRef, ElementRef, Inject, Injectable, NgZone, Optional, Self, SkipSelf, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, ReplaySubject, combineLatest, firstValueFrom } from 'rxjs';\nimport { distinctUntilChanged, startWith, tap } from 'rxjs/operators';\nimport { DefaultDisabledViewModifier } from './default-disabled-view-modifier';\nimport { DisabledObserver } from './disabled.observer';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./disabled.observer\";\nexport class FdkDisabledProvider extends ReplaySubject {\n /** @hidden */\n constructor(ngZone, elementRef, disabledObserver, selfDisabled$, parentDisabled$) {\n super(1);\n this.ngZone = ngZone;\n this.elementRef = elementRef;\n this.disabledObserver = disabledObserver;\n this.selfDisabled$ = selfDisabled$;\n this.parentDisabled$ = parentDisabled$;\n /** @Hidden */\n this.fdkDisabled = false;\n /** @Hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._viewModifiers$ = new BehaviorSubject(this._getInitialViewModifiers());\n /** @hidden */\n this._disabledChange$ = this._getDisabledChange$();\n combineLatest([this._disabledChange$, this._viewModifiers$])\n .pipe(tap(([isDisabled]) => this.setDisabledState(isDisabled)), takeUntilDestroyed(this._destroyRef))\n .subscribe();\n this._disabledChange$\n .pipe(tap((isDisabled) => (this.fdkDisabled = isDisabled)), tap((isDisabled) => this.next(isDisabled)), takeUntilDestroyed(this._destroyRef))\n .subscribe();\n }\n /** @hidden */\n addViewModifier(modifier) {\n const viewModifiers = [...new Set([...this._viewModifiers$.value, modifier]).values()];\n this._viewModifiers$.next(viewModifiers);\n }\n /** @hidden */\n setDisabledState(isDisabled) {\n firstValueFrom(this.ngZone.onStable).then(() => {\n this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setDisabledState(isDisabled));\n });\n }\n /** @hidden */\n ngOnDestroy() {\n this.complete();\n this.disabledObserver.unobserve(this.elementRef);\n }\n /** @hidden */\n _getDisabledChange$() {\n let selfDisabled = false;\n let parentDisabled = false;\n if (this.parentDisabled$) {\n this.parentDisabled$\n .pipe(startWith(this.parentDisabled$.fdkDisabled), tap((d) => (parentDisabled = d)), distinctUntilChanged(), tap(() => {\n if (parentDisabled) {\n this.setDisabledState(true);\n }\n if (!selfDisabled && !parentDisabled) {\n this.setDisabledState(false);\n }\n }), takeUntilDestroyed(this._destroyRef))\n .subscribe();\n }\n if (this.selfDisabled$) {\n this.selfDisabled$\n .pipe(startWith(this.selfDisabled$.fdkDisabled), tap((d) => (selfDisabled = d)), distinctUntilChanged(), tap((isDisabled) => {\n if (!parentDisabled) {\n this.setDisabledState(isDisabled);\n }\n }), takeUntilDestroyed(this._destroyRef))\n .subscribe();\n }\n return this.disabledObserver.observe(this.elementRef).pipe(distinctUntilChanged());\n }\n /** @hidden */\n _getInitialViewModifiers() {\n return !this.selfDisabled$ ? [new DefaultDisabledViewModifier(this.elementRef)] : [this.selfDisabled$];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdkDisabledProvider, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.DisabledObserver }, { token: FDK_DISABLED_DIRECTIVE, optional: true, self: true }, { token: FDK_DISABLED_DIRECTIVE, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdkDisabledProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdkDisabledProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.DisabledObserver }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [FDK_DISABLED_DIRECTIVE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [FDK_DISABLED_DIRECTIVE]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmRrLWRpc2FibGVkLXByb3ZpZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2Rpc2FibGVkL2Zkay1kaXNhYmxlZC1wcm92aWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUVOLFFBQVEsRUFDUixJQUFJLEVBQ0osUUFBUSxFQUNSLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUc5RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBc0I7SUFZM0QsY0FBYztJQUNkLFlBQ1ksTUFBYyxFQUNkLFVBQW1DLEVBQ25DLGdCQUFrQyxFQUNrQixhQUFnQyxFQUM1QixlQUFrQztRQUVsRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFORCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNrQixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDNUIsb0JBQWUsR0FB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MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUNqRCxRQUFROzswQkFBSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBTa2lwU2VsZixcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEZWZhdWx0RGlzYWJsZWRWaWV3TW9kaWZpZXIgfSBmcm9tICcuL2RlZmF1bHQtZGlzYWJsZWQtdmlldy1tb2RpZmllcic7XG5pbXBvcnQgeyBEaXNhYmxlZEJlaGF2aW9yIH0gZnJvbSAnLi9kaXNhYmxlZC1iZWhhdmlvci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGlzYWJsZWRWaWV3TW9kaWZpZXIgfSBmcm9tICcuL2Rpc2FibGVkLXZpZXctbW9kaWZpZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpc2FibGVkT2JzZXJ2ZXIgfSBmcm9tICcuL2Rpc2FibGVkLm9ic2VydmVyJztcbmltcG9ydCB7IEZES19ESVNBQkxFRF9ESVJFQ1RJVkUgfSBmcm9tICcuL2Zkay1kaXNhYmxlZC50b2tlbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGZGtEaXNhYmxlZFByb3ZpZGVyIGV4dGVuZHMgUmVwbGF5U3ViamVjdDxib29sZWFuPiBpbXBsZW1lbnRzIERpc2FibGVkQmVoYXZpb3IsIE9uRGVzdHJveSB7XG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBmZGtEaXNhYmxlZCA9IGZhbHNlO1xuICAgIC8qKiBASGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdNb2RpZmllcnMkOiBCZWhhdmlvclN1YmplY3Q8RGlzYWJsZWRWaWV3TW9kaWZpZXJbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgICAgICBEaXNhYmxlZFZpZXdNb2RpZmllcltdXG4gICAgPih0aGlzLl9nZXRJbml0aWFsVmlld01vZGlmaWVycygpKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rpc2FibGVkQ2hhbmdlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2dldERpc2FibGVkQ2hhbmdlJCgpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSBkaXNhYmxlZE9ic2VydmVyOiBEaXNhYmxlZE9ic2VydmVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoRkRLX0RJU0FCTEVEX0RJUkVDVElWRSkgcHJpdmF0ZSBzZWxmRGlzYWJsZWQkPzogRGlzYWJsZWRCZWhhdmlvcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEluamVjdChGREtfRElTQUJMRURfRElSRUNUSVZFKSBwcml2YXRlIHBhcmVudERpc2FibGVkJD86IERpc2FibGVkQmVoYXZpb3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoMSk7XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2Rpc2FibGVkQ2hhbmdlJCwgdGhpcy5fdmlld01vZGlmaWVycyRdKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChbaXNEaXNhYmxlZF0pID0+IHRoaXMuc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkKSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkQ2hhbmdlJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChpc0Rpc2FibGVkKSA9PiAodGhpcy5mZGtEaXNhYmxlZCA9IGlzRGlzYWJsZWQpKSxcbiAgICAgICAgICAgICAgICB0YXAoKGlzRGlzYWJsZWQpID0+IHRoaXMubmV4dChpc0Rpc2FibGVkKSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhZGRWaWV3TW9kaWZpZXIobW9kaWZpZXI6IERpc2FibGVkVmlld01vZGlmaWVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZpZXdNb2RpZmllcnMgPSBbLi4ubmV3IFNldChbLi4udGhpcy5fdmlld01vZGlmaWVycyQudmFsdWUsIG1vZGlmaWVyXSkudmFsdWVzKCldO1xuICAgICAgICB0aGlzLl92aWV3TW9kaWZpZXJzJC5uZXh0KHZpZXdNb2RpZmllcnMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGZpcnN0VmFsdWVGcm9tKHRoaXMubmdab25lLm9uU3RhYmxlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdNb2RpZmllcnMkLnZhbHVlLmZvckVhY2goKHZpZXdNb2RpZmllcikgPT4gdmlld01vZGlmaWVyLnNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuZGlzYWJsZWRPYnNlcnZlci51bm9ic2VydmUodGhpcy5lbGVtZW50UmVmKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldERpc2FibGVkQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgbGV0IHNlbGZEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICBsZXQgcGFyZW50RGlzYWJsZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5wYXJlbnREaXNhYmxlZCQpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50RGlzYWJsZWQkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLnBhcmVudERpc2FibGVkJC5mZGtEaXNhYmxlZCksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoZCkgPT4gKHBhcmVudERpc2FibGVkID0gZCkpLFxuICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudERpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWxmRGlzYWJsZWQgJiYgIXBhcmVudERpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2VsZkRpc2FibGVkJCkge1xuICAgICAgICAgICAgdGhpcy5zZWxmRGlzYWJsZWQkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLnNlbGZEaXNhYmxlZCQuZmRrRGlzYWJsZWQpLFxuICAgICAgICAgICAgICAgICAgICB0YXAoKGQpID0+IChzZWxmRGlzYWJsZWQgPSBkKSksXG4gICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoaXNEaXNhYmxlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnREaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWRPYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudFJlZikucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEluaXRpYWxWaWV3TW9kaWZpZXJzKCk6IERpc2FibGVkVmlld01vZGlmaWVyW10ge1xuICAgICAgICByZXR1cm4gIXRoaXMuc2VsZkRpc2FibGVkJCA/IFtuZXcgRGVmYXVsdERpc2FibGVkVmlld01vZGlmaWVyKHRoaXMuZWxlbWVudFJlZildIDogW3RoaXMuc2VsZkRpc2FibGVkJF07XG4gICAgfVxufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const FOCUSABLE_ITEM = new InjectionToken('Focusable Option');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMta2V5LW1hbmFnZXIudG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1cy1rZXktbWFuYWdlci9mb2N1cy1rZXktbWFuYWdlci50b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQWtCLGtCQUFrQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c2FibGVPcHRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgRk9DVVNBQkxFX0lURU0gPSBuZXcgSW5qZWN0aW9uVG9rZW48Rm9jdXNhYmxlT3B0aW9uPignRm9jdXNhYmxlIE9wdGlvbicpO1xuIl19","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { ChangeDetectorRef, ContentChildren, DestroyRef, Directive, inject, Input, Optional, QueryList } from '@angular/core';\nimport { filter } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RtlService } from '../../services/rtl.service';\nimport { FOCUSABLE_ITEM } from './focus-key-manager.tokens';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../services/rtl.service\";\n/** Directive to apply Angular Material FocusKeyManager to lists.\n * To be used with FocusKeyManagerItemDirective\n */\nexport class FocusKeyManagerListDirective {\n /** @hidden */\n get focusKeyManager() {\n return this._focusKeyManager;\n }\n /** @hidden */\n constructor(_rtlService, _cdr) {\n this._rtlService = _rtlService;\n this._cdr = _cdr;\n /** @hidden */\n this._onDestroy$ = inject(DestroyRef);\n }\n /** @hidden */\n ngOnChanges(changes) {\n if (!this._focusKeyManager) {\n return;\n }\n if ('orientation' in changes) {\n this._applyOrientation();\n }\n if ('skiPredicate' in changes) {\n this._focusKeyManager.skipPredicate(this.skipPredicate);\n }\n }\n /** @hidden */\n ngAfterContentInit() {\n this._focusKeyManager = new FocusKeyManager(this._items).skipPredicate(this.skipPredicate);\n this._applyOrientation();\n this._cdr.detectChanges();\n this._rtlService?.rtl\n .pipe(filter(() => this.orientation === 'horizontal'), takeUntilDestroyed(this._onDestroy$))\n .subscribe(() => this._applyOrientation());\n }\n /** @hidden */\n ngOnDestroy() {\n this._focusKeyManager.destroy();\n }\n /** Focus certain list's item */\n focusItem(item) {\n if (typeof item === 'number') {\n this._focusKeyManager.setActiveItem(item);\n }\n else {\n this._focusKeyManager.setActiveItem(item);\n }\n }\n /** @hidden */\n _applyOrientation() {\n switch (this.orientation) {\n case 'horizontal':\n this._focusKeyManager.withHorizontalOrientation(this._rtlService?.rtl.value ? 'rtl' : 'ltr');\n break;\n case 'vertical':\n this._focusKeyManager.withVerticalOrientation(true);\n break;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusKeyManagerListDirective, deps: [{ token: i1.RtlService, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FocusKeyManagerListDirective, isStandalone: true, selector: \"[fdkFocusKeyManagerList]\", inputs: { orientation: \"orientation\", skipPredicate: \"skipPredicate\" }, queries: [{ propertyName: \"_items\", predicate: FOCUSABLE_ITEM }], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusKeyManagerListDirective, decorators: [{\n type: Directive,\n args: [{\n selector: `[fdkFocusKeyManagerList]`,\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.RtlService, decorators: [{\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }], propDecorators: { orientation: [{\n type: Input\n }], skipPredicate: [{\n type: Input\n }], _items: [{\n type: ContentChildren,\n args: [FOCUSABLE_ITEM]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMta2V5LW1hbmFnZXItbGlzdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2ZvY3VzLWtleS1tYW5hZ2VyL2ZvY3VzLWtleS1tYW5hZ2VyLWxpc3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckUsT0FBTyxFQUVILGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUU1RDs7R0FFRztBQUtILE1BQU0sT0FBTyw0QkFBNEI7SUFlckMsY0FBYztJQUNkLElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFRRCxjQUFjO0lBQ2QsWUFDaUMsV0FBdUIsRUFDbkMsSUFBdUI7UUFEWCxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUNuQyxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQU41QyxjQUFjO1FBQ0csZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFNL0MsQ0FBQztJQUVKLGNBQWM7SUFDZCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxhQUFhLElBQUksT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksY0FBYyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLGtCQUFrQjtRQUNkLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBUSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVsRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUV6QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTFCLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRzthQUNoQixJQUFJLENBQ0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDLEVBQy9DLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDdkM7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxTQUFTLENBQUMsSUFBb0I7UUFDMUIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTixpQkFBaUI7UUFDckIsUUFBUSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkIsS0FBSyxZQUFZO2dCQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdGLE1BQU07WUFDVixLQUFLLFVBQVU7Z0JBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwRCxNQUFNO1FBQ2QsQ0FBQztJQUNMLENBQUM7OEdBdkZRLDRCQUE0QjtrR0FBNUIsNEJBQTRCLG1MQVlwQixjQUFjOzsyRkFadEIsNEJBQTRCO2tCQUp4QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBNkJRLFFBQVE7eUVBdkJiLFdBQVc7c0JBRFYsS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS0csTUFBTTtzQkFEZCxlQUFlO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c2FibGVPcHRpb24sIEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGVzdHJveVJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFJ0bFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ydGwuc2VydmljZSc7XG5pbXBvcnQgeyBGT0NVU0FCTEVfSVRFTSB9IGZyb20gJy4vZm9jdXMta2V5LW1hbmFnZXIudG9rZW5zJztcblxuLyoqIERpcmVjdGl2ZSB0byBhcHBseSBBbmd1bGFyIE1hdGVyaWFsIEZvY3VzS2V5TWFuYWdlciB0byBsaXN0cy5cbiAqIFRvIGJlIHVzZWQgd2l0aCBGb2N1c0tleU1hbmFnZXJJdGVtRGlyZWN0aXZlXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBgW2Zka0ZvY3VzS2V5TWFuYWdlckxpc3RdYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEZvY3VzS2V5TWFuYWdlckxpc3REaXJlY3RpdmU8VEl0ZW0gZXh0ZW5kcyBGb2N1c2FibGVPcHRpb24gPSBSZWNvcmQ8YW55LCBhbnk+ICYgRm9jdXNhYmxlT3B0aW9uPlxuICAgIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcbntcbiAgICAvKiogT3JpZW50YXRpb24gZm9yIHRoZSBGb2N1c0tleU1hbmFnZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnO1xuXG4gICAgLyoqIFNraXAgcHJlZGljYXRlIGZvciB0aGUgRm9jdXNLZXlNYW5hZ2VyICovXG4gICAgQElucHV0KClcbiAgICBza2lwUHJlZGljYXRlOiAoaXRlbTogVEl0ZW0pID0+IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRk9DVVNBQkxFX0lURU0pXG4gICAgcmVhZG9ubHkgX2l0ZW1zOiBRdWVyeUxpc3Q8VEl0ZW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgZm9jdXNLZXlNYW5hZ2VyKCk6IEZvY3VzS2V5TWFuYWdlcjxUSXRlbT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNLZXlNYW5hZ2VyO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNLZXlNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8VEl0ZW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2ZvY3VzS2V5TWFuYWdlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCdvcmllbnRhdGlvbicgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fYXBwbHlPcmllbnRhdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCdza2lQcmVkaWNhdGUnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzS2V5TWFuYWdlci5za2lwUHJlZGljYXRlKHRoaXMuc2tpcFByZWRpY2F0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9jdXNLZXlNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcjxUSXRlbT4odGhpcy5faXRlbXMpLnNraXBQcmVkaWNhdGUodGhpcy5za2lwUHJlZGljYXRlKTtcblxuICAgICAgICB0aGlzLl9hcHBseU9yaWVudGF0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICB0aGlzLl9ydGxTZXJ2aWNlPy5ydGxcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9vbkRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9hcHBseU9yaWVudGF0aW9uKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvY3VzS2V5TWFuYWdlci5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzIGNlcnRhaW4gbGlzdCdzIGl0ZW0gKi9cbiAgICBmb2N1c0l0ZW0oaXRlbTogbnVtYmVyIHwgVEl0ZW0pOiBhbnkge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzS2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hcHBseU9yaWVudGF0aW9uKCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKHRoaXMub3JpZW50YXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ2hvcml6b250YWwnOlxuICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzS2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC52YWx1ZSA/ICdydGwnIDogJ2x0cicpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmVydGljYWwnOlxuICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzS2V5TWFuYWdlci53aXRoVmVydGljYWxPcmllbnRhdGlvbih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==","import { booleanAttribute, Directive, ElementRef, forwardRef, HostBinding, HostListener, Input } from '@angular/core';\nimport { FocusKeyManagerListDirective } from './focus-key-manager-list.directive';\nimport { FOCUSABLE_ITEM } from './focus-key-manager.tokens';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./focus-key-manager-list.directive\";\n/** Directive to apply Angular Material FocusKeyManager to lists.\n * To be used with FocusKeyManagerItemDirective\n */\nexport class FocusKeyManagerItemDirective {\n /** @hidden */\n get _tabindex() {\n return this.initialFocus ? 0 : (this.nativeElement?.tabIndex ?? -1);\n }\n /** Native element of the item */\n get nativeElement() {\n return this._elRef?.nativeElement;\n }\n /** @hidden */\n get _focusKeyManager() {\n return this._list.focusKeyManager;\n }\n /** @hidden */\n constructor(_list, _elRef) {\n this._list = _list;\n this._elRef = _elRef;\n /** Whether item should be initially focused */\n this.initialFocus = false;\n }\n /** @hidden */\n _onFocus() {\n // For cases where initially selected item doesn't have 0 index\n this._focusKeyManager?.updateActiveItem(this);\n }\n /** @hidden */\n _onKeydown(event) {\n this._focusKeyManager?.onKeydown(event);\n }\n /** Focus current item native element */\n focus() {\n this._elRef?.nativeElement.focus();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusKeyManagerItemDirective, deps: [{ token: i1.FocusKeyManagerListDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.1.4\", type: FocusKeyManagerItemDirective, isStandalone: true, selector: \"[fdkFocusKeyManagerItem]\", inputs: { initialFocus: [\"initialFocus\", \"initialFocus\", booleanAttribute], _tabindex: \"_tabindex\" }, host: { listeners: { \"focus\": \"_onFocus()\", \"keydown\": \"_onKeydown($event)\" }, properties: { \"attr.tabindex\": \"this._tabindex\" } }, providers: [{ provide: FOCUSABLE_ITEM, useExisting: forwardRef(() => FocusKeyManagerItemDirective) }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusKeyManagerItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkFocusKeyManagerItem]',\n standalone: true,\n providers: [{ provide: FOCUSABLE_ITEM, useExisting: forwardRef(() => FocusKeyManagerItemDirective) }]\n }]\n }], ctorParameters: () => [{ type: i1.FocusKeyManagerListDirective }, { type: i0.ElementRef }], propDecorators: { initialFocus: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], _tabindex: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['attr.tabindex']\n }], _onFocus: [{\n type: HostListener,\n args: ['focus']\n }], _onKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMta2V5LW1hbmFnZXItaXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2ZvY3VzLWtleS1tYW5hZ2VyL2ZvY3VzLWtleS1tYW5hZ2VyLWl0ZW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUU1RDs7R0FFRztBQU1ILE1BQU0sT0FBTyw0QkFBNEI7SUFLckMsY0FBYztJQUNkLElBRUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELGlDQUFpQztJQUNqQyxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBWSxnQkFBZ0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsY0FBYztJQUNkLFlBQ3FCLEtBQW1DLEVBQ25DLE1BQWtCO1FBRGxCLFVBQUssR0FBTCxLQUFLLENBQThCO1FBQ25DLFdBQU0sR0FBTixNQUFNLENBQVk7UUF4QnZDLCtDQUErQztRQUUvQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztJQXVCbEIsQ0FBQztJQUVKLGNBQWM7SUFFZCxRQUFRO1FBQ0osK0RBQStEO1FBQy9ELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsY0FBYztJQUVkLFVBQVUsQ0FBQyxLQUFvQjtRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsS0FBSztRQUNELElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZDLENBQUM7OEdBNUNRLDRCQUE0QjtrR0FBNUIsNEJBQTRCLHFIQUVqQixnQkFBZ0IsNEtBSnpCLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDOzsyRkFFNUYsNEJBQTRCO2tCQUx4QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNkJBQTZCLENBQUMsRUFBRSxDQUFDO2lCQUN4RzswSEFJRyxZQUFZO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBTWxDLFNBQVM7c0JBRlosS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxlQUFlO2dCQXVCNUIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLE9BQU87Z0JBUXJCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c2FibGVPcHRpb24sIEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvY3VzS2V5TWFuYWdlckxpc3REaXJlY3RpdmUgfSBmcm9tICcuL2ZvY3VzLWtleS1tYW5hZ2VyLWxpc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZPQ1VTQUJMRV9JVEVNIH0gZnJvbSAnLi9mb2N1cy1rZXktbWFuYWdlci50b2tlbnMnO1xuXG4vKiogRGlyZWN0aXZlIHRvIGFwcGx5IEFuZ3VsYXIgTWF0ZXJpYWwgRm9jdXNLZXlNYW5hZ2VyIHRvIGxpc3RzLlxuICogVG8gYmUgdXNlZCB3aXRoIEZvY3VzS2V5TWFuYWdlckl0ZW1EaXJlY3RpdmVcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrRm9jdXNLZXlNYW5hZ2VySXRlbV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGT0NVU0FCTEVfSVRFTSwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9jdXNLZXlNYW5hZ2VySXRlbURpcmVjdGl2ZSkgfV1cbn0pXG5leHBvcnQgY2xhc3MgRm9jdXNLZXlNYW5hZ2VySXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIEZvY3VzYWJsZU9wdGlvbiB7XG4gICAgLyoqIFdoZXRoZXIgaXRlbSBzaG91bGQgYmUgaW5pdGlhbGx5IGZvY3VzZWQgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBpbml0aWFsRm9jdXMgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIGdldCBfdGFiaW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbEZvY3VzID8gMCA6ICh0aGlzLm5hdGl2ZUVsZW1lbnQ/LnRhYkluZGV4ID8/IC0xKTtcbiAgICB9XG5cbiAgICAvKiogTmF0aXZlIGVsZW1lbnQgb2YgdGhlIGl0ZW0gKi9cbiAgICBnZXQgbmF0aXZlRWxlbWVudCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfZm9jdXNLZXlNYW5hZ2VyKCk6IEZvY3VzS2V5TWFuYWdlcjxGb2N1c2FibGVPcHRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xpc3QuZm9jdXNLZXlNYW5hZ2VyO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2xpc3Q6IEZvY3VzS2V5TWFuYWdlckxpc3REaXJlY3RpdmUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsUmVmOiBFbGVtZW50UmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gICAgX29uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIC8vIEZvciBjYXNlcyB3aGVyZSBpbml0aWFsbHkgc2VsZWN0ZWQgaXRlbSBkb2Vzbid0IGhhdmUgMCBpbmRleFxuICAgICAgICB0aGlzLl9mb2N1c0tleU1hbmFnZXI/LnVwZGF0ZUFjdGl2ZUl0ZW0odGhpcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBfb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvY3VzS2V5TWFuYWdlcj8ub25LZXlkb3duKGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKiogRm9jdXMgY3VycmVudCBpdGVtIG5hdGl2ZSBlbGVtZW50ICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsUmVmPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { FocusKeyManagerItemDirective } from './focus-key-manager-item.directive';\nimport { FocusKeyManagerListDirective } from './focus-key-manager-list.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class FocusKeyManagerHelpersModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusKeyManagerHelpersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusKeyManagerHelpersModule, imports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective], exports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusKeyManagerHelpersModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusKeyManagerHelpersModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective],\n exports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMta2V5LW1hbmFnZXItaGVscGVycy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2ZvY3VzLWtleS1tYW5hZ2VyL2ZvY3VzLWtleS1tYW5hZ2VyLWhlbHBlcnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBRWxGOzs7R0FHRztBQUtILE1BQU0sT0FBTyw0QkFBNEI7OEdBQTVCLDRCQUE0QjsrR0FBNUIsNEJBQTRCLFlBSDNCLDRCQUE0QixFQUFFLDRCQUE0QixhQUMxRCw0QkFBNEIsRUFBRSw0QkFBNEI7K0dBRTNELDRCQUE0Qjs7MkZBQTVCLDRCQUE0QjtrQkFKeEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSw0QkFBNEIsQ0FBQztvQkFDckUsT0FBTyxFQUFFLENBQUMsNEJBQTRCLEVBQUUsNEJBQTRCLENBQUM7aUJBQ3hFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VySXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vZm9jdXMta2V5LW1hbmFnZXItaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4vZm9jdXMta2V5LW1hbmFnZXItbGlzdC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgZGlyZWN0IGltcG9ydHMgb2YgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbRm9jdXNLZXlNYW5hZ2VySXRlbURpcmVjdGl2ZSwgRm9jdXNLZXlNYW5hZ2VyTGlzdERpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW0ZvY3VzS2V5TWFuYWdlckl0ZW1EaXJlY3RpdmUsIEZvY3VzS2V5TWFuYWdlckxpc3REaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIEZvY3VzS2V5TWFuYWdlckhlbHBlcnNNb2R1bGUge31cbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport const FDK_FOCUSABLE_ITEM_DIRECTIVE = new InjectionToken('Focusable directive token');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWl0ZW0udG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtaXRlbS9mb2N1c2FibGUtaXRlbS50b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEZES19GT0NVU0FCTEVfSVRFTV9ESVJFQ1RJVkUgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0ZvY3VzYWJsZSBkaXJlY3RpdmUgdG9rZW4nKTtcbiJdfQ==","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { getNativeElement } from '../../helpers/get-native-element';\nconst focusableTagnamesByDefault = new Set(['select', 'textarea', 'input', 'button', 'audio', 'video']);\nconst focusableTagOptions = [\n {\n tag: 'div',\n attributes: [\n {\n name: 'contenteditable',\n valueMatcher: (value) => coerceBooleanProperty(value)\n }\n ]\n }\n];\n/** @hidden */\nexport function isElementFocusableByDefault(el) {\n const element = getNativeElement(el);\n const tagName = element.tagName.toLowerCase();\n if (focusableTagnamesByDefault.has(tagName)) {\n return true;\n }\n return focusableTagOptions.some((tagOptions) => {\n if (tagOptions.tag === tagName) {\n return tagOptions.attributes.some((attribute) => {\n const attrVal = element.getAttribute(attribute.name);\n return attrVal && attribute.valueMatcher(attrVal);\n });\n }\n return false;\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZWxlbWVudC1mb2N1c2FibGUtYnktZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvZm9jdXNhYmxlLWl0ZW0vaXMtZWxlbWVudC1mb2N1c2FibGUtYnktZGVmYXVsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUdwRSxNQUFNLDBCQUEwQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBRXhHLE1BQU0sbUJBQW1CLEdBQUc7SUFDeEI7UUFDSSxHQUFHLEVBQUUsS0FBSztRQUNWLFVBQVUsRUFBRTtZQUNSO2dCQUNJLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLFlBQVksRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO2FBQ2hFO1NBQ0o7S0FDSjtDQUNKLENBQUM7QUFFRixjQUFjO0FBQ2QsTUFBTSxVQUFVLDJCQUEyQixDQUFDLEVBQTBEO0lBQ2xHLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUMsSUFBSSwwQkFBMEIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUMzQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDN0IsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUM1QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckQsT0FBTyxPQUFPLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0TmF0aXZlRWxlbWVudCB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZ2V0LW5hdGl2ZS1lbGVtZW50JztcbmltcG9ydCB7IEhhc0VsZW1lbnRSZWYgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuY29uc3QgZm9jdXNhYmxlVGFnbmFtZXNCeURlZmF1bHQgPSBuZXcgU2V0KFsnc2VsZWN0JywgJ3RleHRhcmVhJywgJ2lucHV0JywgJ2J1dHRvbicsICdhdWRpbycsICd2aWRlbyddKTtcblxuY29uc3QgZm9jdXNhYmxlVGFnT3B0aW9ucyA9IFtcbiAgICB7XG4gICAgICAgIHRhZzogJ2RpdicsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnY29udGVudGVkaXRhYmxlJyxcbiAgICAgICAgICAgICAgICB2YWx1ZU1hdGNoZXI6ICh2YWx1ZTogc3RyaW5nKSA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9XG5dO1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWxlbWVudEZvY3VzYWJsZUJ5RGVmYXVsdChlbDogSGFzRWxlbWVudFJlZjxFbGVtZW50PiB8IEVsZW1lbnQgfCBFbGVtZW50UmVmPEVsZW1lbnQ+KTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGdldE5hdGl2ZUVsZW1lbnQoZWwpO1xuICAgIGNvbnN0IHRhZ05hbWUgPSBlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoZm9jdXNhYmxlVGFnbmFtZXNCeURlZmF1bHQuaGFzKHRhZ05hbWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmb2N1c2FibGVUYWdPcHRpb25zLnNvbWUoKHRhZ09wdGlvbnMpID0+IHtcbiAgICAgICAgaWYgKHRhZ09wdGlvbnMudGFnID09PSB0YWdOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFnT3B0aW9ucy5hdHRyaWJ1dGVzLnNvbWUoKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJWYWwgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJWYWwgJiYgYXR0cmlidXRlLnZhbHVlTWF0Y2hlcihhdHRyVmFsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\nimport { DisabledObserver } from '../disabled/disabled.observer';\nimport { isElementFocusableByDefault } from './is-element-focusable-by-default';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../services/observers/attribute.observer\";\nexport class FocusableObserver {\n /** @hidden */\n constructor(_attributeObserver) {\n this._attributeObserver = _attributeObserver;\n }\n /** @Hidden */\n static isFocusable(element, respectTabIndex) {\n if (DisabledObserver.isDisabled(element)) {\n return false;\n }\n if (!respectTabIndex) {\n return true;\n }\n const tabIndex = parseInt(element.getAttribute('tabindex') + '', 10);\n if (isNaN(tabIndex)) {\n return isElementFocusableByDefault(element);\n }\n return tabIndex > -1;\n }\n /** @hidden */\n observe(element, respectTabIndex = true) {\n const nativeElement = getNativeElement(element);\n return this._attributeObserver.observe(nativeElement).pipe(map(() => FocusableObserver.isFocusable(nativeElement, respectTabIndex)), distinctUntilChanged());\n }\n /** @hidden */\n unobserve(element) {\n this._attributeObserver.unobserve(element);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableObserver, deps: [{ token: i1.AttributeObserver }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableObserver, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableObserver, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: () => [{ type: i1.AttributeObserver }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLm9ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtaXRlbS9mb2N1c2FibGUub2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7OztBQUtoRixNQUFNLE9BQU8saUJBQWlCO0lBQzFCLGNBQWM7SUFDZCxZQUFvQixrQkFBcUM7UUFBckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtJQUFHLENBQUM7SUFFN0QsY0FBYztJQUNkLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBZ0IsRUFBRSxlQUF3QjtRQUN6RCxJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sMkJBQTJCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELE9BQU8sUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxjQUFjO0lBQ2QsT0FBTyxDQUNILE9BQStELEVBQy9ELGVBQWUsR0FBRyxJQUFJO1FBRXRCLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQ3RELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDLEVBQ3hFLG9CQUFvQixFQUFFLENBQ3pCLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztJQUNkLFNBQVMsQ0FBQyxPQUErRDtRQUNyRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBckNRLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmQsTUFBTTs7MkZBRVQsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXROYXRpdmVFbGVtZW50IH0gZnJvbSAnLi4vLi4vaGVscGVycy9nZXQtbmF0aXZlLWVsZW1lbnQnO1xuaW1wb3J0IHsgSGFzRWxlbWVudFJlZiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaGFzLWVsZW1lbnQtcmVmLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBdHRyaWJ1dGVPYnNlcnZlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29ic2VydmVycy9hdHRyaWJ1dGUub2JzZXJ2ZXInO1xuaW1wb3J0IHsgRGlzYWJsZWRPYnNlcnZlciB9IGZyb20gJy4uL2Rpc2FibGVkL2Rpc2FibGVkLm9ic2VydmVyJztcbmltcG9ydCB7IGlzRWxlbWVudEZvY3VzYWJsZUJ5RGVmYXVsdCB9IGZyb20gJy4vaXMtZWxlbWVudC1mb2N1c2FibGUtYnktZGVmYXVsdCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRm9jdXNhYmxlT2JzZXJ2ZXIge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXR0cmlidXRlT2JzZXJ2ZXI6IEF0dHJpYnV0ZU9ic2VydmVyKSB7fVxuXG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBzdGF0aWMgaXNGb2N1c2FibGUoZWxlbWVudDogRWxlbWVudCwgcmVzcGVjdFRhYkluZGV4OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChEaXNhYmxlZE9ic2VydmVyLmlzRGlzYWJsZWQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzcGVjdFRhYkluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhYkluZGV4ID0gcGFyc2VJbnQoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JykgKyAnJywgMTApO1xuICAgICAgICBpZiAoaXNOYU4odGFiSW5kZXgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNFbGVtZW50Rm9jdXNhYmxlQnlEZWZhdWx0KGVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhYkluZGV4ID4gLTE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvYnNlcnZlKFxuICAgICAgICBlbGVtZW50OiBIYXNFbGVtZW50UmVmPEVsZW1lbnQ+IHwgRWxlbWVudCB8IEVsZW1lbnRSZWY8RWxlbWVudD4sXG4gICAgICAgIHJlc3BlY3RUYWJJbmRleCA9IHRydWVcbiAgICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IGdldE5hdGl2ZUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVPYnNlcnZlci5vYnNlcnZlKG5hdGl2ZUVsZW1lbnQpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKCkgPT4gRm9jdXNhYmxlT2JzZXJ2ZXIuaXNGb2N1c2FibGUobmF0aXZlRWxlbWVudCwgcmVzcGVjdFRhYkluZGV4KSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB1bm9ic2VydmUoZWxlbWVudDogSGFzRWxlbWVudFJlZjxFbGVtZW50PiB8IEVsZW1lbnQgfCBFbGVtZW50UmVmPEVsZW1lbnQ+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2F0dHJpYnV0ZU9ic2VydmVyLnVub2JzZXJ2ZShlbGVtZW50KTtcbiAgICB9XG59XG4iXX0=","import { InteractivityChecker, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\nimport { DOCUMENT, DestroyRef, Directive, ElementRef, EventEmitter, Input, NgZone, Output, Renderer2, booleanAttribute, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject, fromEvent } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { TabbableElementService } from '../../services';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable-item.tokens';\nimport { FocusableObserver } from './focusable.observer';\nimport * as i0 from \"@angular/core\";\nexport class FocusableItemDirective {\n /** Whether the item is focusable. Default is true. */\n set fdkFocusableItem(val) {\n this._focusable = val;\n this.setTabbable(this._focusable);\n }\n get fdkFocusableItem() {\n return this._focusable;\n }\n /** @hidden */\n constructor() {\n /** Function, which returns a string to be announced by screen-reader whenever an item which is in grid receives focus. */\n this.cellFocusedEventAnnouncer = this._defaultItemFocusedEventAnnouncer;\n /** Event emitted when the cell receives focus, not being emitted when focus moves between item's children. */\n this.cellFocused = new EventEmitter();\n /** Event emitted when a focusable child element is focused. */\n this.focusableChildElementFocused = new EventEmitter();\n /** @hidden */\n this._parentFocusableItemFocused = new EventEmitter();\n /** Element reference. */\n this.elementRef = inject(ElementRef);\n /** @hidden */\n this.keydown = new Subject();\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._zone = inject(NgZone);\n /** @hidden */\n this._focusable = true;\n /** @hidden */\n this._tabbableElements = new Map();\n /** @hidden */\n this._tabbable = true;\n /** @hidden */\n this._focusableObserver = inject(FocusableObserver);\n /** @hidden */\n this._tabbableElementService = inject(TabbableElementService);\n /** @hidden */\n this._liveAnnouncer = inject(LiveAnnouncer);\n /** @hidden */\n this._renderer2 = inject(Renderer2);\n /** @hidden */\n this._document = inject(DOCUMENT);\n /** @hidden */\n this._checker = inject(InteractivityChecker);\n /** @hidden */\n this.element = () => this.elementRef.nativeElement;\n this._focusableObserver\n .observe(this.elementRef, false)\n .pipe(takeUntilDestroyed())\n .subscribe((isFocusable) => {\n if (isFocusable !== this.fdkFocusableItem) {\n this.fdkFocusableItem = isFocusable;\n }\n });\n this._zone.runOutsideAngular(() => {\n fromEvent(this.elementRef.nativeElement, 'focusin')\n .pipe(takeUntilDestroyed())\n .subscribe(async () => {\n await this._onFocusin();\n });\n fromEvent(this.elementRef.nativeElement, 'keydown')\n .pipe(takeUntilDestroyed())\n .subscribe((event) => {\n this._onKeydown(event);\n });\n });\n }\n /** @hidden */\n isFocusable() {\n return this._focusable;\n }\n /** @hidden */\n focus() {\n this.elementRef.nativeElement.focus();\n }\n /** Set tabbable state */\n setTabbable(state) {\n this._zone.runOutsideAngular(() => {\n this._tabbable = state;\n this._renderer2.setAttribute(this.elementRef.nativeElement, 'tabindex', this._tabbable ? '0' : '-1');\n });\n }\n /** @hidden */\n enableTabbableElements() {\n if (this._tabbableElements.size === 0) {\n return;\n }\n this._tabbableElements.forEach((tabIndex, element) => (element.tabIndex = tabIndex));\n this._tabbable = false;\n }\n /** @hidden */\n disableTabbableElements() {\n // Since we cannot select by tabindex attribute (links, inputs, buttons might not have one but still can be focusable),\n // Select all elements from the cell and filter by tabIndex property.\n Array.from(this.elementRef.nativeElement.querySelectorAll('*'))\n .filter((elm) => elm.tabIndex >= 0)\n .forEach((elm) => {\n this._tabbableElements.set(elm, elm.tabIndex);\n elm.tabIndex = -1;\n });\n }\n /** @hidden */\n async _onFocusin() {\n if (!this.fdkFocusableItem) {\n return;\n }\n if (this._position) {\n this.cellFocused.next(this._position);\n if (this.cellFocusedEventAnnouncer) {\n this._liveAnnouncer.clear();\n await this._liveAnnouncer.announce(this.cellFocusedEventAnnouncer(this._position));\n }\n }\n const activeEl = this._document.activeElement;\n if (activeEl === this.elementRef.nativeElement) {\n this._parentFocusableItemFocused.emit();\n }\n else if (activeEl && activeEl !== this.elementRef.nativeElement && this._checker.isFocusable(activeEl)) {\n this.focusableChildElementFocused.emit();\n }\n }\n /** @hidden */\n _onKeydown(event) {\n if (!this.fdkFocusableItem) {\n return;\n }\n const activeEl = this._document.activeElement;\n const isFocused = activeEl === this.elementRef.nativeElement;\n const shouldFocusChild = KeyUtil.isKeyCode(event, [ENTER, MAC_ENTER, F2]) && !event.shiftKey && isFocused;\n const shouldFocusCell = ((KeyUtil.isKeyCode(event, F2) && event.shiftKey) || KeyUtil.isKeyCode(event, ESCAPE)) && !isFocused;\n if (shouldFocusChild) {\n event.stopPropagation();\n const tabbableElement = this._tabbableElementService.getTabbableElement(this.elementRef.nativeElement, false, true);\n tabbableElement?.focus();\n this.focusableChildElementFocused.emit();\n return;\n }\n else if (shouldFocusCell) {\n event.stopPropagation();\n this.elementRef.nativeElement.focus();\n return;\n }\n if (isFocused) {\n this.keydown.next(event);\n }\n }\n /** @hidden */\n _defaultItemFocusedEventAnnouncer(position) {\n return `Column ${position.colIndex + 1} of ${position.totalCols}, row: ${position.rowIndex + 1} of ${position.totalRows}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.1.4\", type: FocusableItemDirective, isStandalone: true, selector: \"[fdkFocusableItem]\", inputs: { fdkFocusableItem: [\"fdkFocusableItem\", \"fdkFocusableItem\", booleanAttribute], cellFocusedEventAnnouncer: \"cellFocusedEventAnnouncer\" }, outputs: { cellFocused: \"cellFocused\", focusableChildElementFocused: \"focusableChildElementFocused\", _parentFocusableItemFocused: \"_parentFocusableItemFocused\" }, providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: FocusableItemDirective\n }\n ], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkFocusableItem]',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: FocusableItemDirective\n }\n ]\n }]\n }], ctorParameters: () => [], propDecorators: { fdkFocusableItem: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], cellFocusedEventAnnouncer: [{\n type: Input\n }], cellFocused: [{\n type: Output\n }], focusableChildElementFocused: [{\n type: Output\n }], _parentFocusableItemFocused: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtaXRlbS9mb2N1c2FibGUtaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRSxPQUFPLEVBQ0gsUUFBUSxFQUNSLFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBcUJ6RCxNQUFNLE9BQU8sc0JBQXNCO0lBQy9CLHNEQUFzRDtJQUN0RCxJQUNJLGdCQUFnQixDQUFDLEdBQVk7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FB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QUFjO0lBQ04saUNBQWlDLENBQUMsUUFBK0I7UUFDckUsT0FBTyxVQUFVLFFBQVEsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxTQUFTLFVBQVUsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLE9BQzFGLFFBQVEsQ0FBQyxTQUNiLEVBQUUsQ0FBQztJQUNQLENBQUM7OEdBMU1RLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDJIQUVYLGdCQUFnQiwyT0FUekI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxXQUFXLEVBQUUsc0JBQXNCO2FBQ3RDO1NBQ0o7OzJGQUVRLHNCQUFzQjtrQkFWbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSw0QkFBNEI7NEJBQ3JDLFdBQVcsd0JBQXdCO3lCQUN0QztxQkFDSjtpQkFDSjt3REFJTyxnQkFBZ0I7c0JBRG5CLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBWXRDLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFLRyxXQUFXO3NCQURuQixNQUFNO2dCQUtFLDRCQUE0QjtzQkFEcEMsTUFBTTtnQkFLRSwyQkFBMkI7c0JBRG5DLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcmFjdGl2aXR5Q2hlY2tlciwgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEVOVEVSLCBFU0NBUEUsIEYyLCBNQUNfRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuXG5pbXBvcnQge1xuICAgIERPQ1VNRU5ULFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBLZXlVdGlsIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IEhhc0VsZW1lbnRSZWYgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2hhcy1lbGVtZW50LXJlZi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvbnVsbGFibGUnO1xuaW1wb3J0IHsgVGFiYmFibGVFbGVtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEZES19GT0NVU0FCTEVfSVRFTV9ESVJFQ1RJVkUgfSBmcm9tICcuL2ZvY3VzYWJsZS1pdGVtLnRva2Vucyc7XG5pbXBvcnQgeyBGb2N1c2FibGVJdGVtIH0gZnJvbSAnLi9mb2N1c2FibGUuaXRlbSc7XG5pbXBvcnQgeyBGb2N1c2FibGVPYnNlcnZlciB9IGZyb20gJy4vZm9jdXNhYmxlLm9ic2VydmVyJztcblxuZXhwb3J0IHR5cGUgQ2VsbEZvY3VzZWRFdmVudEFubm91bmNlciA9IE51bGxhYmxlPChwb3NpdGlvbjogRm9jdXNhYmxlSXRlbVBvc2l0aW9uKSA9PiBzdHJpbmc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbiB7XG4gICAgcm93SW5kZXg6IG51bWJlcjtcbiAgICBjb2xJbmRleDogbnVtYmVyO1xuICAgIHRvdGFsUm93czogbnVtYmVyO1xuICAgIHRvdGFsQ29sczogbnVtYmVyO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtGb2N1c2FibGVJdGVtXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBGb2N1c2FibGVJdGVtRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUgaW1wbGVtZW50cyBGb2N1c2FibGVJdGVtLCBIYXNFbGVtZW50UmVmIHtcbiAgICAvKiogV2hldGhlciB0aGUgaXRlbSBpcyBmb2N1c2FibGUuIERlZmF1bHQgaXMgdHJ1ZS4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBzZXQgZmRrRm9jdXNhYmxlSXRlbSh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlID0gdmFsO1xuICAgICAgICB0aGlzLnNldFRhYmJhYmxlKHRoaXMuX2ZvY3VzYWJsZSk7XG4gICAgfVxuXG4gICAgZ2V0IGZka0ZvY3VzYWJsZUl0ZW0oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb2N1c2FibGU7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGEgc3RyaW5nIHRvIGJlIGFubm91bmNlZCBieSBzY3JlZW4tcmVhZGVyIHdoZW5ldmVyIGFuIGl0ZW0gd2hpY2ggaXMgaW4gZ3JpZCByZWNlaXZlcyBmb2N1cy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXI6IENlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXIgPSB0aGlzLl9kZWZhdWx0SXRlbUZvY3VzZWRFdmVudEFubm91bmNlcjtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNlbGwgcmVjZWl2ZXMgZm9jdXMsIG5vdCBiZWluZyBlbWl0dGVkIHdoZW4gZm9jdXMgbW92ZXMgYmV0d2VlbiBpdGVtJ3MgY2hpbGRyZW4uICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY2VsbEZvY3VzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBmb2N1c2FibGUgY2hpbGQgZWxlbWVudCBpcyBmb2N1c2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGZvY3VzYWJsZUNoaWxkRWxlbWVudEZvY3VzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IF9wYXJlbnRGb2N1c2FibGVJdGVtRm9jdXNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFbGVtZW50IHJlZmVyZW5jZS4gKi9cbiAgICByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkga2V5ZG93biA9IG5ldyBTdWJqZWN0PEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wb3NpdGlvbjogRm9jdXNhYmxlSXRlbVBvc2l0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNhYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGFiYmFibGVFbGVtZW50cyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGFiYmFibGUgPSB0cnVlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNhYmxlT2JzZXJ2ZXIgPSBpbmplY3QoRm9jdXNhYmxlT2JzZXJ2ZXIpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFiYmFibGVFbGVtZW50U2VydmljZSA9IGluamVjdChUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2xpdmVBbm5vdW5jZXIgPSBpbmplY3QoTGl2ZUFubm91bmNlcik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyMiA9IGluamVjdChSZW5kZXJlcjIpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoZWNrZXIgPSBpbmplY3QoSW50ZXJhY3Rpdml0eUNoZWNrZXIpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlT2JzZXJ2ZXJcbiAgICAgICAgICAgIC5vYnNlcnZlKHRoaXMuZWxlbWVudFJlZiwgZmFsc2UpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGlzRm9jdXNhYmxlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRm9jdXNhYmxlICE9PSB0aGlzLmZka0ZvY3VzYWJsZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZGtGb2N1c2FibGVJdGVtID0gaXNGb2N1c2FibGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdmb2N1c2luJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fb25Gb2N1c2luKCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uS2V5ZG93bihldmVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZWxlbWVudCA9ICgpOiBIVE1MRWxlbWVudCA9PiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaXNGb2N1c2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb2N1c2FibGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IHRhYmJhYmxlIHN0YXRlICovXG4gICAgc2V0VGFiYmFibGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90YWJiYWJsZSA9IHN0YXRlO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3RhYmluZGV4JywgdGhpcy5fdGFiYmFibGUgPyAnMCcgOiAnLTEnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBlbmFibGVUYWJiYWJsZUVsZW1lbnRzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fdGFiYmFibGVFbGVtZW50cy5zaXplID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl90YWJiYWJsZUVsZW1lbnRzLmZvckVhY2goKHRhYkluZGV4LCBlbGVtZW50KSA9PiAoZWxlbWVudC50YWJJbmRleCA9IHRhYkluZGV4KSk7XG4gICAgICAgIHRoaXMuX3RhYmJhYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBkaXNhYmxlVGFiYmFibGVFbGVtZW50cygpOiB2b2lkIHtcbiAgICAgICAgLy8gU2luY2Ugd2UgY2Fubm90IHNlbGVjdCBieSB0YWJpbmRleCBhdHRyaWJ1dGUgKGxpbmtzLCBpbnB1dHMsIGJ1dHRvbnMgbWlnaHQgbm90IGhhdmUgb25lIGJ1dCBzdGlsbCBjYW4gYmUgZm9jdXNhYmxlKSxcbiAgICAgICAgLy8gU2VsZWN0IGFsbCBlbGVtZW50cyBmcm9tIHRoZSBjZWxsIGFuZCBmaWx0ZXIgYnkgdGFiSW5kZXggcHJvcGVydHkuXG4gICAgICAgIEFycmF5LmZyb20odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJyonKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGVsbSkgPT4gZWxtLnRhYkluZGV4ID49IDApXG4gICAgICAgICAgICAuZm9yRWFjaCgoZWxtKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFiYmFibGVFbGVtZW50cy5zZXQoZWxtLCBlbG0udGFiSW5kZXgpO1xuICAgICAgICAgICAgICAgIGVsbS50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF9vbkZvY3VzaW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5mZGtGb2N1c2FibGVJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fcG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuY2VsbEZvY3VzZWQubmV4dCh0aGlzLl9wb3NpdGlvbik7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9saXZlQW5ub3VuY2VyLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZSh0aGlzLmNlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXIodGhpcy5fcG9zaXRpb24pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGl2ZUVsID0gdGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAoYWN0aXZlRWwgPT09IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9wYXJlbnRGb2N1c2FibGVJdGVtRm9jdXNlZC5lbWl0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aXZlRWwgJiYgYWN0aXZlRWwgIT09IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ICYmIHRoaXMuX2NoZWNrZXIuaXNGb2N1c2FibGUoYWN0aXZlRWwpKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzYWJsZUNoaWxkRWxlbWVudEZvY3VzZWQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmZka0ZvY3VzYWJsZUl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RpdmVFbCA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGlzRm9jdXNlZCA9IGFjdGl2ZUVsID09PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2hvdWxkRm9jdXNDaGlsZCA9IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRU5URVIsIE1BQ19FTlRFUiwgRjJdKSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgaXNGb2N1c2VkO1xuICAgICAgICBjb25zdCBzaG91bGRGb2N1c0NlbGwgPVxuICAgICAgICAgICAgKChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRjIpICYmIGV2ZW50LnNoaWZ0S2V5KSB8fCBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRVNDQVBFKSkgJiYgIWlzRm9jdXNlZDtcblxuICAgICAgICBpZiAoc2hvdWxkRm9jdXNDaGlsZCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRhYmJhYmxlRWxlbWVudCA9IHRoaXMuX3RhYmJhYmxlRWxlbWVudFNlcnZpY2UuZ2V0VGFiYmFibGVFbGVtZW50KFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRhYmJhYmxlRWxlbWVudD8uZm9jdXMoKTtcblxuICAgICAgICAgICAgdGhpcy5mb2N1c2FibGVDaGlsZEVsZW1lbnRGb2N1c2VkLmVtaXQoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKHNob3VsZEZvY3VzQ2VsbCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMua2V5ZG93bi5uZXh0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVmYXVsdEl0ZW1Gb2N1c2VkRXZlbnRBbm5vdW5jZXIocG9zaXRpb246IEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgQ29sdW1uICR7cG9zaXRpb24uY29sSW5kZXggKyAxfSBvZiAke3Bvc2l0aW9uLnRvdGFsQ29sc30sIHJvdzogJHtwb3NpdGlvbi5yb3dJbmRleCArIDF9IG9mICR7XG4gICAgICAgICAgICBwb3NpdGlvbi50b3RhbFJvd3NcbiAgICAgICAgfWA7XG4gICAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { FocusableItemDirective } from './focusable-item.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class FocusableItemModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableItemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableItemModule, imports: [FocusableItemDirective], exports: [FocusableItemDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableItemModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableItemModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [FocusableItemDirective],\n exports: [FocusableItemDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWl0ZW0ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtaXRlbS9mb2N1c2FibGUtaXRlbS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFcEU7OztHQUdHO0FBS0gsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsWUFIbEIsc0JBQXNCLGFBQ3RCLHNCQUFzQjsrR0FFdkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vZm9jdXNhYmxlLWl0ZW0uZGlyZWN0aXZlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIGRpcmVjdCBpbXBvcnRzIG9mIGNvbXBvbmVudHMgYW5kIGRpcmVjdGl2ZXMuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0ZvY3VzYWJsZUl0ZW1EaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtGb2N1c2FibGVJdGVtRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c2FibGVJdGVtTW9kdWxlIHt9XG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const FDK_FOCUSABLE_LIST_DIRECTIVE = new InjectionToken('Focusable list token');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWxpc3QudG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtbGlzdC9mb2N1c2FibGUtbGlzdC50b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEZES19GT0NVU0FCTEVfTElTVF9ESVJFQ1RJVkUgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0ZvY3VzYWJsZSBsaXN0IHRva2VuJyk7XG4iXX0=","import { Directive, inject, Injector } from '@angular/core';\nimport deepEqual from 'fast-deep-equal';\nimport { BehaviorSubject, debounceTime, distinctUntilChanged, map } from 'rxjs';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';\nimport * as i0 from \"@angular/core\";\nexport class IndirectFocusableListDirective {\n /** @hidden */\n constructor() {\n /** @hidden */\n this.injector = inject(Injector);\n /** @hidden */\n this._focusableList = inject(FDK_FOCUSABLE_LIST_DIRECTIVE, { optional: true });\n /** @hidden */\n this._indirectChildren = new BehaviorSubject([]);\n /** @hidden */\n this._indirectChildrenMap = new Map();\n if (this._focusableList) {\n const queryList = {\n toArray: () => this._indirectChildren.value,\n get: (index) => this._indirectChildren.value[index],\n [Symbol.iterator]: () => this._indirectChildren.value[Symbol.iterator](),\n forEach: (callback, thisArg) => this._indirectChildren.value.forEach(callback, thisArg)\n };\n queryList['changes'] = this._indirectChildren.pipe(debounceTime(100), distinctUntilChanged(deepEqual), map(() => queryList));\n this._focusableList.setItems(queryList);\n }\n }\n /** @hidden */\n register(item, itemOrder) {\n this._indirectChildrenMap.set(item, itemOrder);\n this._updateIndirectChildren();\n }\n /** @hidden */\n unregister(item) {\n this._indirectChildrenMap.delete(item);\n this._updateIndirectChildren();\n }\n /** @hidden */\n _updateIndirectChildren() {\n this._indirectChildren.next(Array.from(this._indirectChildrenMap.entries())\n .sort(([, orderA], [, orderB]) => {\n const orderAValue = typeof orderA === 'function' ? orderA() : orderA;\n const orderBValue = typeof orderB === 'function' ? orderB() : orderB;\n return orderAValue - orderBValue;\n })\n .map(([focusableItem]) => focusableItem));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IndirectFocusableListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: IndirectFocusableListDirective, isStandalone: true, selector: \"[fdkIndirectFocusableList]\", exportAs: [\"fdkIndirectFocusableList\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IndirectFocusableListDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkIndirectFocusableList]',\n exportAs: 'fdkIndirectFocusableList',\n standalone: true\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kaXJlY3QtZm9jdXNhYmxlLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtbGlzdC9pbmRpcmVjdC1mb2N1c2FibGUtbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdoRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFPdkUsTUFBTSxPQUFPLDhCQUE4QjtJQVV2QyxjQUFjO0lBQ2Q7UUFWQSxjQUFjO1FBQ2QsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixjQUFjO1FBQ2QsbUJBQWMsR0FBRyxNQUFNLENBQXlCLDRCQUE0QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEcsY0FBYztRQUNkLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUM3RCxjQUFjO1FBQ2QseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQTBDLENBQUM7UUFJckUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsTUFBTSxTQUFTLEdBQWtDO2dCQUM3QyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUs7Z0JBQzNDLEdBQUcsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzNELENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN4RSxPQUFPLEVBQUUsQ0FDTCxRQUErRSxFQUMvRSxPQUFhLEVBQ2YsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7YUFDeEQsQ0FBQztZQUNULFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUM5QyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxFQUMvQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQ3ZCLENBQUM7WUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxRQUFRLENBQUMsSUFBbUIsRUFBRSxTQUFrQztRQUM1RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYztJQUNkLFVBQVUsQ0FBQyxJQUFtQjtRQUMxQixJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjO0lBQ0osdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQzFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUM3QixNQUFNLFdBQVcsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDckUsTUFBTSxXQUFXLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3JFLE9BQU8sV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUNyQyxDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FDL0MsQ0FBQztJQUNOLENBQUM7OEdBdERRLDhCQUE4QjtrR0FBOUIsOEJBQThCOzsyRkFBOUIsOEJBQThCO2tCQUwxQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvY3VzYWJsZUl0ZW0gfSBmcm9tICcuLi9mb2N1c2FibGUtaXRlbS9mb2N1c2FibGUuaXRlbSc7XG5pbXBvcnQgeyBGb2N1c2FibGVMaXN0RGlyZWN0aXZlLCBJdGVtc1F1ZXJ5TGlzdCB9IGZyb20gJy4vZm9jdXNhYmxlLWxpc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZES19GT0NVU0FCTEVfTElTVF9ESVJFQ1RJVkUgfSBmcm9tICcuL2ZvY3VzYWJsZS1saXN0LnRva2Vucyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0luZGlyZWN0Rm9jdXNhYmxlTGlzdF0nLFxuICAgIGV4cG9ydEFzOiAnZmRrSW5kaXJlY3RGb2N1c2FibGVMaXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEluZGlyZWN0Rm9jdXNhYmxlTGlzdERpcmVjdGl2ZSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZm9jdXNhYmxlTGlzdCA9IGluamVjdDxGb2N1c2FibGVMaXN0RGlyZWN0aXZlPihGREtfRk9DVVNBQkxFX0xJU1RfRElSRUNUSVZFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luZGlyZWN0Q2hpbGRyZW4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvY3VzYWJsZUl0ZW1bXT4oW10pO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luZGlyZWN0Q2hpbGRyZW5NYXAgPSBuZXcgTWFwPEZvY3VzYWJsZUl0ZW0sIG51bWJlciB8ICgoKSA9PiBudW1iZXIpPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaWYgKHRoaXMuX2ZvY3VzYWJsZUxpc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5TGlzdDogSXRlbXNRdWVyeUxpc3Q8Rm9jdXNhYmxlSXRlbT4gPSB7XG4gICAgICAgICAgICAgICAgdG9BcnJheTogKCkgPT4gdGhpcy5faW5kaXJlY3RDaGlsZHJlbi52YWx1ZSxcbiAgICAgICAgICAgICAgICBnZXQ6IChpbmRleDogbnVtYmVyKSA9PiB0aGlzLl9pbmRpcmVjdENoaWxkcmVuLnZhbHVlW2luZGV4XSxcbiAgICAgICAgICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXTogKCkgPT4gdGhpcy5faW5kaXJlY3RDaGlsZHJlbi52YWx1ZVtTeW1ib2wuaXRlcmF0b3JdKCksXG4gICAgICAgICAgICAgICAgZm9yRWFjaDogKFxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogKHZhbHVlOiBGb2N1c2FibGVJdGVtLCBpbmRleDogbnVtYmVyLCBhcnJheTogRm9jdXNhYmxlSXRlbVtdKSA9PiB2b2lkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzQXJnPzogYW55XG4gICAgICAgICAgICAgICAgKSA9PiB0aGlzLl9pbmRpcmVjdENoaWxkcmVuLnZhbHVlLmZvckVhY2goY2FsbGJhY2ssIHRoaXNBcmcpXG4gICAgICAgICAgICB9IGFzIGFueTtcbiAgICAgICAgICAgIHF1ZXJ5TGlzdFsnY2hhbmdlcyddID0gdGhpcy5faW5kaXJlY3RDaGlsZHJlbi5waXBlKFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGRlZXBFcXVhbCksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHF1ZXJ5TGlzdClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c2FibGVMaXN0LnNldEl0ZW1zKHF1ZXJ5TGlzdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyKGl0ZW06IEZvY3VzYWJsZUl0ZW0sIGl0ZW1PcmRlcjogbnVtYmVyIHwgKCgpID0+IG51bWJlcikpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5kaXJlY3RDaGlsZHJlbk1hcC5zZXQoaXRlbSwgaXRlbU9yZGVyKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlSW5kaXJlY3RDaGlsZHJlbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdW5yZWdpc3RlcihpdGVtOiBGb2N1c2FibGVJdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luZGlyZWN0Q2hpbGRyZW5NYXAuZGVsZXRlKGl0ZW0pO1xuICAgICAgICB0aGlzLl91cGRhdGVJbmRpcmVjdENoaWxkcmVuKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZUluZGlyZWN0Q2hpbGRyZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luZGlyZWN0Q2hpbGRyZW4ubmV4dChcbiAgICAgICAgICAgIEFycmF5LmZyb20odGhpcy5faW5kaXJlY3RDaGlsZHJlbk1hcC5lbnRyaWVzKCkpXG4gICAgICAgICAgICAgICAgLnNvcnQoKFssIG9yZGVyQV0sIFssIG9yZGVyQl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JkZXJBVmFsdWUgPSB0eXBlb2Ygb3JkZXJBID09PSAnZnVuY3Rpb24nID8gb3JkZXJBKCkgOiBvcmRlckE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yZGVyQlZhbHVlID0gdHlwZW9mIG9yZGVyQiA9PT0gJ2Z1bmN0aW9uJyA/IG9yZGVyQigpIDogb3JkZXJCO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JkZXJBVmFsdWUgLSBvcmRlckJWYWx1ZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5tYXAoKFtmb2N1c2FibGVJdGVtXSkgPT4gZm9jdXNhYmxlSXRlbSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=","import { DestroyRef, Directive, inject, InjectionToken } from '@angular/core';\nimport { IndirectFocusableListDirective } from '../focusable-list/indirect-focusable-list.directive';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable-item.tokens';\nimport * as i0 from \"@angular/core\";\nexport const FDK_INDIRECT_FOCUSABLE_ITEM_ORDER = new InjectionToken('FDK_INDIRECT_FOCUSABLE_ITEM_ORDER');\n/**\n * Directive, to mark the focusable item in the focusable list, which\n * is not the direct child of the focusable list.\n *\n * Useful in cases, when you need to make the item focusable, and\n * you do not have the access to the focusable list.\n */\nexport class IndirectFocusableItemDirective {\n /** @hidden */\n constructor() {\n /** @hidden */\n this._focusableItem = inject(FDK_FOCUSABLE_ITEM_DIRECTIVE, { optional: true });\n /** @hidden */\n this._indirectFocusableList = inject(IndirectFocusableListDirective, { optional: true });\n /** @hidden */\n this._order = inject(FDK_INDIRECT_FOCUSABLE_ITEM_ORDER, { optional: true });\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n if (!this._focusableItem) {\n throw new Error('fdkIndirectFocusableItem directive must be used in conjunction with fdkFocusableItem directive');\n }\n if (this._indirectFocusableList && this._order) {\n const focusableItem = this._focusableItem;\n const indirectFocusableList = this._indirectFocusableList;\n indirectFocusableList.register(this._focusableItem, this._order);\n this._destroyRef.onDestroy(() => indirectFocusableList.unregister(focusableItem));\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IndirectFocusableItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: IndirectFocusableItemDirective, isStandalone: true, selector: \"[fdkIndirectFocusableItem]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IndirectFocusableItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkIndirectFocusableItem]',\n standalone: true\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kaXJlY3QtZm9jdXNhYmxlLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtaXRlbS9pbmRpcmVjdC1mb2N1c2FibGUtaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNyRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFHdkUsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsSUFBSSxjQUFjLENBQy9ELG1DQUFtQyxDQUN0QyxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBS0gsTUFBTSxPQUFPLDhCQUE4QjtJQVV2QyxjQUFjO0lBQ2Q7UUFWQSxjQUFjO1FBQ0osbUJBQWMsR0FBRyxNQUFNLENBQWdCLDRCQUE0QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkcsY0FBYztRQUNKLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLGNBQWM7UUFDSixXQUFNLEdBQW1DLE1BQU0sQ0FBQyxpQ0FBaUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pILGNBQWM7UUFDSixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUl2QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQ1gsZ0dBQWdHLENBQ25HLENBQUM7UUFDTixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsc0JBQXNCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDMUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7WUFDMUQscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7SUFDTCxDQUFDOzhHQXZCUSw4QkFBOEI7a0dBQTlCLDhCQUE4Qjs7MkZBQTlCLDhCQUE4QjtrQkFKMUMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIGluamVjdCwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEluZGlyZWN0Rm9jdXNhYmxlTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uL2ZvY3VzYWJsZS1saXN0L2luZGlyZWN0LWZvY3VzYWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGREtfRk9DVVNBQkxFX0lURU1fRElSRUNUSVZFIH0gZnJvbSAnLi9mb2N1c2FibGUtaXRlbS50b2tlbnMnO1xuaW1wb3J0IHsgRm9jdXNhYmxlSXRlbSB9IGZyb20gJy4vZm9jdXNhYmxlLml0ZW0nO1xuXG5leHBvcnQgY29uc3QgRkRLX0lORElSRUNUX0ZPQ1VTQUJMRV9JVEVNX09SREVSID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlciB8ICgoKSA9PiBudW1iZXIpPihcbiAgICAnRkRLX0lORElSRUNUX0ZPQ1VTQUJMRV9JVEVNX09SREVSJ1xuKTtcblxuLyoqXG4gKiBEaXJlY3RpdmUsIHRvIG1hcmsgdGhlIGZvY3VzYWJsZSBpdGVtIGluIHRoZSBmb2N1c2FibGUgbGlzdCwgd2hpY2hcbiAqIGlzIG5vdCB0aGUgZGlyZWN0IGNoaWxkIG9mIHRoZSBmb2N1c2FibGUgbGlzdC5cbiAqXG4gKiBVc2VmdWwgaW4gY2FzZXMsIHdoZW4geW91IG5lZWQgdG8gbWFrZSB0aGUgaXRlbSBmb2N1c2FibGUsIGFuZFxuICogeW91IGRvIG5vdCBoYXZlIHRoZSBhY2Nlc3MgdG8gdGhlIGZvY3VzYWJsZSBsaXN0LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtJbmRpcmVjdEZvY3VzYWJsZUl0ZW1dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEluZGlyZWN0Rm9jdXNhYmxlSXRlbURpcmVjdGl2ZSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2ZvY3VzYWJsZUl0ZW0gPSBpbmplY3Q8Rm9jdXNhYmxlSXRlbT4oRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfaW5kaXJlY3RGb2N1c2FibGVMaXN0ID0gaW5qZWN0KEluZGlyZWN0Rm9jdXNhYmxlTGlzdERpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfb3JkZXI6IG51bWJlciB8ICgoKSA9PiBudW1iZXIpIHwgbnVsbCA9IGluamVjdChGREtfSU5ESVJFQ1RfRk9DVVNBQkxFX0lURU1fT1JERVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoIXRoaXMuX2ZvY3VzYWJsZUl0ZW0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAnZmRrSW5kaXJlY3RGb2N1c2FibGVJdGVtIGRpcmVjdGl2ZSBtdXN0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBmZGtGb2N1c2FibGVJdGVtIGRpcmVjdGl2ZSdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2luZGlyZWN0Rm9jdXNhYmxlTGlzdCAmJiB0aGlzLl9vcmRlcikge1xuICAgICAgICAgICAgY29uc3QgZm9jdXNhYmxlSXRlbSA9IHRoaXMuX2ZvY3VzYWJsZUl0ZW07XG4gICAgICAgICAgICBjb25zdCBpbmRpcmVjdEZvY3VzYWJsZUxpc3QgPSB0aGlzLl9pbmRpcmVjdEZvY3VzYWJsZUxpc3Q7XG4gICAgICAgICAgICBpbmRpcmVjdEZvY3VzYWJsZUxpc3QucmVnaXN0ZXIodGhpcy5fZm9jdXNhYmxlSXRlbSwgdGhpcy5fb3JkZXIpO1xuICAgICAgICAgICAgdGhpcy5fZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4gaW5kaXJlY3RGb2N1c2FibGVMaXN0LnVucmVnaXN0ZXIoZm9jdXNhYmxlSXRlbSkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","/**\n * Returns true if the item configured to be focusable.\n * @param item\n */\nexport function isItemFocusable(item) {\n return Boolean(typeof item.isFocusable === 'function' ? item.isFocusable() : item.isFocusable);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtaXRlbS1mb2N1c2FibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2ZvY3VzYWJsZS1pdGVtL2lzLWl0ZW0tZm9jdXNhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7R0FHRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBbUI7SUFDL0MsT0FBTyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbkcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzYWJsZUl0ZW0gfSBmcm9tICcuL2ZvY3VzYWJsZS5pdGVtJztcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGl0ZW0gY29uZmlndXJlZCB0byBiZSBmb2N1c2FibGUuXG4gKiBAcGFyYW0gaXRlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJdGVtRm9jdXNhYmxlKGl0ZW06IEZvY3VzYWJsZUl0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbih0eXBlb2YgaXRlbS5pc0ZvY3VzYWJsZSA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0uaXNGb2N1c2FibGUoKSA6IGl0ZW0uaXNGb2N1c2FibGUpO1xufVxuIl19","/**\n * Returns the element of the item.\n * @param item\n */\nexport function getItemElement(item) {\n if (!item) {\n return null;\n }\n if (typeof item.element === 'function') {\n return item.element();\n }\n return item.element;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWl0ZW0tZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvZm9jdXNhYmxlLWl0ZW0vZ2V0LWl0ZW0tZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLElBQThCO0lBQ3pELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uLy4uL21vZGVscy9udWxsYWJsZSc7XG5pbXBvcnQgeyBGb2N1c2FibGVJdGVtIH0gZnJvbSAnLi9mb2N1c2FibGUuaXRlbSc7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZWxlbWVudCBvZiB0aGUgaXRlbS5cbiAqIEBwYXJhbSBpdGVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJdGVtRWxlbWVudChpdGVtPzogTnVsbGFibGU8Rm9jdXNhYmxlSXRlbT4pOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBpdGVtLmVsZW1lbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uZWxlbWVudCgpO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtLmVsZW1lbnQ7XG59XG4iXX0=","/** Helper function to scroll to focusable list or its item relatively to the container. */\nexport function scrollIntoView(element, position) {\n if (!element) {\n return;\n }\n const scrollableParent = getScrollParent(element);\n if (scrollableParent) {\n const itemOffsetTop = element.offsetTop - scrollableParent.offsetTop;\n if (!position) {\n /**\n * check if top of focused element is fully visible, and if not, adjust scroll.\n * this is triggered when a sticky table header overlaps the focused cell.\n */\n const elRect = element.getBoundingClientRect();\n const topEl = document.elementFromPoint(elRect.left, elRect.top);\n if (!element.isSameNode(topEl) &&\n topEl &&\n element.getBoundingClientRect().top !== topEl.getBoundingClientRect().top) {\n scrollableParent.scrollBy({ top: elRect.top - topEl.getBoundingClientRect().bottom });\n }\n }\n switch (position) {\n case 'top':\n scrollableParent.scrollTop = itemOffsetTop;\n break;\n case 'bottom':\n scrollableParent.scrollTop = itemOffsetTop - (scrollableParent.offsetHeight - element.offsetHeight);\n break;\n }\n }\n}\nfunction getScrollParent(node) {\n if (node == null) {\n return null;\n }\n if (node.scrollHeight > node.clientHeight && ['auto', 'scroll'].includes(getComputedStyle(node).overflowY)) {\n return node;\n }\n else {\n return getScrollParent(node.parentNode);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtbGlzdC9zY3JvbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsMkZBQTJGO0FBQzNGLE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBOEIsRUFBRSxRQUFrQztJQUM3RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDWCxPQUFPO0lBQ1gsQ0FBQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWxELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsU0FBUyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDWjs7O2VBR0c7WUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFnQixDQUFDO1lBQ2hGLElBQ0ksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztnQkFDMUIsS0FBSztnQkFDTCxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUMsR0FBRyxFQUMzRSxDQUFDO2dCQUNDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDMUYsQ0FBQztRQUNMLENBQUM7UUFDRCxRQUFRLFFBQVEsRUFBRSxDQUFDO1lBQ2YsS0FBSyxLQUFLO2dCQUNOLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLFFBQVE7Z0JBQ1QsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLGFBQWEsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3BHLE1BQU07UUFDZCxDQUFDO0lBQ0wsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUF3QjtJQUM3QyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNmLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN6RyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxVQUF5QixDQUFDLENBQUM7SUFDM0QsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uLy4uL21vZGVscy9udWxsYWJsZSc7XG5cbmV4cG9ydCB0eXBlIFNjcm9sbFBvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8IHVuZGVmaW5lZDtcblxuLyoqIEhlbHBlciBmdW5jdGlvbiB0byBzY3JvbGwgdG8gZm9jdXNhYmxlIGxpc3Qgb3IgaXRzIGl0ZW0gcmVsYXRpdmVseSB0byB0aGUgY29udGFpbmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcm9sbEludG9WaWV3KGVsZW1lbnQ6IE51bGxhYmxlPEhUTUxFbGVtZW50PiwgcG9zaXRpb246IE51bGxhYmxlPFNjcm9sbFBvc2l0aW9uPik6IHZvaWQge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsYWJsZVBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcblxuICAgIGlmIChzY3JvbGxhYmxlUGFyZW50KSB7XG4gICAgICAgIGNvbnN0IGl0ZW1PZmZzZXRUb3AgPSBlbGVtZW50Lm9mZnNldFRvcCAtIHNjcm9sbGFibGVQYXJlbnQub2Zmc2V0VG9wO1xuICAgICAgICBpZiAoIXBvc2l0aW9uKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIGNoZWNrIGlmIHRvcCBvZiBmb2N1c2VkIGVsZW1lbnQgaXMgZnVsbHkgdmlzaWJsZSwgYW5kIGlmIG5vdCwgYWRqdXN0IHNjcm9sbC5cbiAgICAgICAgICAgICAqIHRoaXMgaXMgdHJpZ2dlcmVkIHdoZW4gYSBzdGlja3kgdGFibGUgaGVhZGVyIG92ZXJsYXBzIHRoZSBmb2N1c2VkIGNlbGwuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IGVsUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCB0b3BFbCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZWxSZWN0LmxlZnQsIGVsUmVjdC50b3ApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICFlbGVtZW50LmlzU2FtZU5vZGUodG9wRWwpICYmXG4gICAgICAgICAgICAgICAgdG9wRWwgJiZcbiAgICAgICAgICAgICAgICBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCAhPT0gdG9wRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxhYmxlUGFyZW50LnNjcm9sbEJ5KHsgdG9wOiBlbFJlY3QudG9wIC0gdG9wRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAocG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgc2Nyb2xsYWJsZVBhcmVudC5zY3JvbGxUb3AgPSBpdGVtT2Zmc2V0VG9wO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxhYmxlUGFyZW50LnNjcm9sbFRvcCA9IGl0ZW1PZmZzZXRUb3AgLSAoc2Nyb2xsYWJsZVBhcmVudC5vZmZzZXRIZWlnaHQgLSBlbGVtZW50Lm9mZnNldEhlaWdodCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChub2RlOiBIVE1MRWxlbWVudCB8IG51bGwpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGlmIChub2RlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUuc2Nyb2xsSGVpZ2h0ID4gbm9kZS5jbGllbnRIZWlnaHQgJiYgWydhdXRvJywgJ3Njcm9sbCddLmluY2x1ZGVzKGdldENvbXB1dGVkU3R5bGUobm9kZSkub3ZlcmZsb3dZKSkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZ2V0U2Nyb2xsUGFyZW50KG5vZGUucGFyZW50Tm9kZSBhcyBIVE1MRWxlbWVudCk7XG4gICAgfVxufVxuIl19","import { FocusKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\nimport { ContentChildren, DOCUMENT, DestroyRef, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, Renderer2, booleanAttribute, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject, merge } from 'rxjs';\nimport { finalize, map, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { KeyUtil, intersectionObservable } from '../../functions';\nimport { destroyObservable } from '../../helpers';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE, FocusableObserver, isItemFocusable } from '../focusable-item';\nimport { getItemElement } from '../focusable-item/get-item-element';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';\nimport { scrollIntoView } from './scroll';\nimport * as i0 from \"@angular/core\";\nexport class FocusableListDirective {\n /** Whether the whole list should be focusable, handy in grids. */\n set focusable(value) {\n this._focusable = value;\n this.setTabbable(this._focusable);\n }\n get focusable() {\n return this._focusable;\n }\n /** @hidden */\n get _focusableItems() {\n return this._items ? this._items : this._projectedFocusableItems;\n }\n /** @hidden */\n get _tabindex() {\n return this._tabbable ? 0 : -1;\n }\n /** @hidden */\n constructor() {\n /** Direction of navigation. Should be set to 'grid' when list is a part of grid. */\n this.navigationDirection = 'vertical';\n /** Direction of the content. */\n this.contentDirection = 'ltr';\n /**\n * Configures wrapping mode which determines whether the active item will wrap to the other end of list when there are no more items in the given direction.\n */\n this.wrap = false;\n /** Function, which returns a string to be announced by screen-reader whenever an row which is in grid receives focus. */\n this.listFocusedEventAnnouncer = this._defaultListFocusedEventAnnouncer;\n /** Event emitted when list's item focused, contains item's position info. */\n this.itemFocused = new EventEmitter();\n /** @hidden */\n this._gridItemFocused$ = new Subject();\n /** @hidden */\n this._gridListFocused$ = new Subject();\n /** @hidden */\n this._keydown$ = new Subject();\n /** @hidden */\n this._isVisible = false;\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._focusable = false;\n /** @hidden */\n this._tabbable = false;\n /** @hidden */\n this._refreshItems$ = new Subject();\n /** @hidden */\n this._refresh$ = new Subject();\n /** @hidden */\n this._renderer = inject(Renderer2);\n /** @hidden */\n this._elementRef = inject(ElementRef);\n /** @hidden */\n this._liveAnnouncer = inject(LiveAnnouncer);\n /** @hidden */\n this._focusableObserver = inject(FocusableObserver);\n /** @hidden */\n this._document = inject(DOCUMENT);\n intersectionObservable(this._elementRef.nativeElement, { threshold: 0.25 })\n .pipe(takeUntilDestroyed())\n .subscribe((isVisible) => (this._isVisible = isVisible[0]?.isIntersecting));\n this._focusableObserver\n .observe(this._elementRef, false)\n .pipe(takeUntilDestroyed())\n .subscribe((isFocusable) => {\n if (!isFocusable && isFocusable !== this.focusable) {\n this.focusable = isFocusable;\n }\n });\n }\n /** @hidden */\n _onKeydown(event) {\n // Already handled\n if (event.defaultPrevented) {\n return;\n }\n const isFocused = this._document.activeElement === this._elementRef.nativeElement;\n const shouldFocusChild = KeyUtil.isKeyCode(event, [ENTER, MAC_ENTER, F2]) && !event.shiftKey && isFocused;\n const shouldFocusList = ((KeyUtil.isKeyCode(event, F2) && event.shiftKey) || KeyUtil.isKeyCode(event, ESCAPE)) && !isFocused;\n if (shouldFocusChild) {\n event.stopPropagation();\n this.setActiveItem(0);\n return;\n }\n else if (shouldFocusList) {\n event.stopPropagation();\n this.focus();\n return;\n }\n this._keydown$.next({ list: this, event, activeItemIndex: this._keyManager?.activeItemIndex ?? null });\n }\n /** @hidden */\n async _onFocus() {\n if (this._gridPosition) {\n this._gridListFocused$.next(this._gridPosition);\n this._liveAnnouncer.clear();\n await this._liveAnnouncer.announce(this.listFocusedEventAnnouncer(this._gridPosition));\n this.setTabbable(true);\n }\n }\n /** @hidden */\n ngOnChanges(changes) {\n if (!this._keyManager) {\n return;\n }\n if (changes['wrap']) {\n this._keyManager = this._keyManager.withWrap(changes['wrap'].currentValue);\n }\n if (changes['navigationDirection']) {\n this._updateNavigationDirection();\n }\n }\n /** @hidden */\n ngAfterViewInit() {\n this._listenOnItems();\n }\n /** Set items programmatically. */\n setItems(items) {\n this._items = items;\n this._listenOnItems();\n }\n /** @hidden */\n ngOnDestroy() {\n this._keyManager?.destroy();\n }\n /** Set active item in list */\n setActiveItem(index, scrollPosition) {\n let availableIndex;\n this._focusableItems.find((item, itemIndex) => {\n if (itemIndex >= index && isItemFocusable(item)) {\n availableIndex = itemIndex;\n return true;\n }\n return false;\n });\n if (availableIndex != null) {\n scrollIntoView(getItemElement(this._focusableItems.get(availableIndex)), scrollPosition);\n this._keyManager?.setActiveItem(availableIndex);\n }\n }\n /** Focus whole list */\n focus(scrollPosition) {\n if (this.focusable) {\n scrollIntoView(this._elementRef.nativeElement, scrollPosition);\n this._elementRef.nativeElement.focus();\n }\n }\n /** Set tabbable state */\n setTabbable(state) {\n this._tabbable = state;\n }\n /** @hidden */\n _updateNavigationDirection() {\n if (!this._keyManager) {\n return;\n }\n if (this.navigationDirection === 'vertical') {\n this._keyManager = this._keyManager.withVerticalOrientation(true);\n this._keyManager = this._keyManager.withHorizontalOrientation(null);\n }\n else {\n this._keyManager = this._keyManager.withVerticalOrientation(false);\n this._keyManager = this._keyManager.withHorizontalOrientation(this.contentDirection || 'ltr');\n }\n }\n /** @hidden */\n _setItemsTabbable(state) {\n this._focusableItems.forEach((item) => item.setTabbable(state));\n }\n /** @hidden */\n _setGridPosition(position) {\n this._gridPosition = position;\n this._focusableItems.changes\n .pipe(startWith(this._focusableItems), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) => items.forEach((item, index) => (item._position = {\n ...this._gridPosition,\n colIndex: index,\n totalCols: this._focusableItems.length\n })));\n }\n /** @hidden */\n _initializeFocusManager(items, config = {}) {\n this._refreshItems$.next();\n let keyManager = new FocusKeyManager(items).withHomeAndEnd();\n if (config.wrap !== false) {\n keyManager = keyManager.withWrap();\n }\n if (config.direction === 'horizontal') {\n keyManager = keyManager.withHorizontalOrientation(config.contentDirection || 'ltr'); // should be replaced\n // Vertical is enabled by default, so let's disable it here in consistency purposes\n keyManager = keyManager.withVerticalOrientation(false);\n }\n keyManager.skipPredicate((i) => !isItemFocusable(i));\n this._keyManager = keyManager;\n const focusListenerDestroyers = items.map((item, index) => this._renderer.listen(getItemElement(item), 'focus', () => {\n const directiveItem = this._focusableItems.get(index);\n if (!directiveItem) {\n return;\n }\n if (this._gridPosition) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._gridItemFocused$.next(directiveItem._position);\n }\n const id = getItemElement(item)?.id ?? null;\n this.itemFocused.next({ index, total: items.length, id });\n this._focusableItems.forEach((i) => i.setTabbable(i === directiveItem));\n this._keyManager?.setActiveItem(index);\n }));\n merge(...items.map((item) => item.keydown))\n .pipe(tap((event) => {\n // Already handled\n if (event.defaultPrevented) {\n return;\n }\n this._keyManager?.onKeydown(event);\n }), takeUntil(merge(this._refreshItems$, destroyObservable(this._destroyRef))), finalize(() => focusListenerDestroyers.forEach((d) => d())))\n .subscribe();\n }\n /** @hidden */\n _defaultListFocusedEventAnnouncer(position) {\n return `Row: ${position.rowIndex + 1} of ${position.totalRows}, use F2 button to dive in and focus list's item`;\n }\n /** @hidden */\n _listenOnItems() {\n const refresh$ = merge(this._refresh$, destroyObservable(this._destroyRef));\n this._refresh$.next();\n this._focusableItems.changes\n .pipe(startWith(null), map(() => this._focusableItems.toArray()), tap((items) => {\n const direction = this.navigationDirection === 'grid' ? 'horizontal' : this.navigationDirection;\n this._initializeFocusManager(items, {\n direction,\n contentDirection: this.contentDirection,\n wrap: !!this.wrap\n });\n }), takeUntil(refresh$))\n .subscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.1.4\", type: FocusableListDirective, isStandalone: true, selector: \"[fdkFocusableList]\", inputs: { focusable: [\"focusable\", \"focusable\", booleanAttribute], navigationDirection: \"navigationDirection\", contentDirection: \"contentDirection\", wrap: [\"wrap\", \"wrap\", booleanAttribute], listFocusedEventAnnouncer: \"listFocusedEventAnnouncer\" }, outputs: { itemFocused: \"itemFocused\" }, host: { listeners: { \"keydown\": \"_onKeydown($event)\", \"focus\": \"_onFocus()\" }, properties: { \"attr.tabindex\": \"this._tabindex\" } }, providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: FocusableListDirective\n }\n ], queries: [{ propertyName: \"_projectedFocusableItems\", predicate: FDK_FOCUSABLE_ITEM_DIRECTIVE, descendants: true }], exportAs: [\"fdkFocusableList\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableListDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkFocusableList]',\n exportAs: 'fdkFocusableList',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: FocusableListDirective\n }\n ]\n }]\n }], ctorParameters: () => [], propDecorators: { focusable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], navigationDirection: [{\n type: Input\n }], contentDirection: [{\n type: Input\n }], wrap: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], listFocusedEventAnnouncer: [{\n type: Input\n }], itemFocused: [{\n type: Output\n }], _projectedFocusableItems: [{\n type: ContentChildren,\n args: [FDK_FOCUSABLE_ITEM_DIRECTIVE, { descendants: true }]\n }], _tabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], _onKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], _onFocus: [{\n type: HostListener,\n args: ['focus']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtbGlzdC9mb2N1c2FibGUtbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckUsT0FBTyxFQUVILGVBQWUsRUFDZixRQUFRLEVBQ1IsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBRVQsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQWMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUNILDRCQUE0QixFQUc1QixpQkFBaUIsRUFDakIsZUFBZSxFQUNsQixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUs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QixDQUFDOzhHQWpWUSxzQkFBc0I7a0dBQXRCLHNCQUFzQixzR0FFWCxnQkFBZ0IsNEdBc0JoQixnQkFBZ0IscVBBL0J6QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSw0QkFBNEI7Z0JBQ3JDLFdBQVcsRUFBRSxzQkFBc0I7YUFDdEM7U0FDSixtRUFzQ2dCLDRCQUE0Qjs7MkZBcENwQyxzQkFBc0I7a0JBWGxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsNEJBQTRCOzRCQUNyQyxXQUFXLHdCQUF3Qjt5QkFDdEM7cUJBQ0o7aUJBQ0o7d0RBSU8sU0FBUztzQkFEWixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWF0QyxtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBT04sSUFBSTtzQkFESCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUt0Qyx5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBS0csV0FBVztzQkFEbkIsTUFBTTtnQkFLRSx3QkFBd0I7c0JBRGhDLGVBQWU7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQXdEaEUsU0FBUztzQkFEWixXQUFXO3VCQUFDLGVBQWU7Z0JBdUI1QixVQUFVO3NCQURULFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQStCN0IsUUFBUTtzQkFEYixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c0tleU1hbmFnZXIsIExpdmVBbm5vdW5jZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBFTlRFUiwgRVNDQVBFLCBGMiwgTUFDX0VOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcblxuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBET0NVTUVOVCxcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUsIG1hcCwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEtleVV0aWwsIGludGVyc2VjdGlvbk9ic2VydmFibGUgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgZGVzdHJveU9ic2VydmFibGUgfSBmcm9tICcuLi8uLi9oZWxwZXJzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL251bGxhYmxlJztcbmltcG9ydCB7XG4gICAgRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSxcbiAgICBGb2N1c2FibGVJdGVtLFxuICAgIEZvY3VzYWJsZUxpc3RQb3NpdGlvbixcbiAgICBGb2N1c2FibGVPYnNlcnZlcixcbiAgICBpc0l0ZW1Gb2N1c2FibGVcbn0gZnJvbSAnLi4vZm9jdXNhYmxlLWl0ZW0nO1xuaW1wb3J0IHsgRm9jdXNhYmxlSXRlbVBvc2l0aW9uIH0gZnJvbSAnLi4vZm9jdXNhYmxlLWl0ZW0vZm9jdXNhYmxlLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IGdldEl0ZW1FbGVtZW50IH0gZnJvbSAnLi4vZm9jdXNhYmxlLWl0ZW0vZ2V0LWl0ZW0tZWxlbWVudCc7XG5pbXBvcnQgeyBGREtfRk9DVVNBQkxFX0xJU1RfRElSRUNUSVZFIH0gZnJvbSAnLi9mb2N1c2FibGUtbGlzdC50b2tlbnMnO1xuaW1wb3J0IHsgU2Nyb2xsUG9zaXRpb24sIHNjcm9sbEludG9WaWV3IH0gZnJvbSAnLi9zY3JvbGwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvY3VzYWJsZUxpc3RJdGVtRm9jdXNlZEV2ZW50IHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIHRvdGFsOiBudW1iZXI7XG4gICAgaWQ/OiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvY3VzYWJsZUxpc3RLZXlkb3duRXZlbnQge1xuICAgIGxpc3Q6IEZvY3VzYWJsZUxpc3REaXJlY3RpdmU7XG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ7XG4gICAgYWN0aXZlSXRlbUluZGV4OiBOdWxsYWJsZTxudW1iZXI+O1xufVxuXG5pbnRlcmZhY2UgRm9jdXNhYmxlTGlzdENvbmZpZyB7XG4gICAgd3JhcD86IGJvb2xlYW47XG4gICAgZGlyZWN0aW9uPzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcbiAgICBjb250ZW50RGlyZWN0aW9uPzogJ2x0cicgfCAncnRsJyB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbXNRdWVyeUxpc3Q8VD4gZXh0ZW5kcyBJdGVyYWJsZTxUPiB7XG4gICAgY2hhbmdlczogT2JzZXJ2YWJsZTxJdGVtc1F1ZXJ5TGlzdDxUPj47XG4gICAgbGVuZ3RoOiBudW1iZXI7XG4gICAgdG9BcnJheSgpOiBUW107XG4gICAgZmluZChwcmVkaWNhdGU6IChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiBib29sZWFuKTogTnVsbGFibGU8VD47XG4gICAgZ2V0KGluZGV4OiBudW1iZXIpOiBOdWxsYWJsZTxUPjtcbiAgICBmb3JFYWNoKHBhcmFtOiAoaXRlbTogVCwgaW5kZXg6IG51bWJlcikgPT4gdm9pZCk6IHZvaWQ7XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0ZvY3VzYWJsZUxpc3RdJyxcbiAgICBleHBvcnRBczogJ2Zka0ZvY3VzYWJsZUxpc3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZES19GT0NVU0FCTEVfTElTVF9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogRm9jdXNhYmxlTGlzdERpcmVjdGl2ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c2FibGVMaXN0RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBXaGV0aGVyIHRoZSB3aG9sZSBsaXN0IHNob3VsZCBiZSBmb2N1c2FibGUsIGhhbmR5IGluIGdyaWRzLiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHNldCBmb2N1c2FibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5zZXRUYWJiYWJsZSh0aGlzLl9mb2N1c2FibGUpO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb2N1c2FibGU7XG4gICAgfVxuXG4gICAgLyoqIERpcmVjdGlvbiBvZiBuYXZpZ2F0aW9uLiBTaG91bGQgYmUgc2V0IHRvICdncmlkJyB3aGVuIGxpc3QgaXMgYSBwYXJ0IG9mIGdyaWQuICovXG4gICAgQElucHV0KClcbiAgICBuYXZpZ2F0aW9uRGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnIHwgJ2dyaWQnID0gJ3ZlcnRpY2FsJztcblxuICAgIC8qKiBEaXJlY3Rpb24gb2YgdGhlIGNvbnRlbnQuICovXG4gICAgQElucHV0KClcbiAgICBjb250ZW50RGlyZWN0aW9uOiAnbHRyJyB8ICdydGwnIHwgbnVsbCA9ICdsdHInO1xuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJlcyB3cmFwcGluZyBtb2RlIHdoaWNoIGRldGVybWluZXMgd2hldGhlciB0aGUgYWN0aXZlIGl0ZW0gd2lsbCB3cmFwIHRvIHRoZSBvdGhlciBlbmQgb2YgbGlzdCB3aGVuIHRoZXJlIGFyZSBubyBtb3JlIGl0ZW1zIGluIHRoZSBnaXZlbiBkaXJlY3Rpb24uXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgd3JhcCA9IGZhbHNlO1xuXG4gICAgLyoqIEZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGEgc3RyaW5nIHRvIGJlIGFubm91bmNlZCBieSBzY3JlZW4tcmVhZGVyIHdoZW5ldmVyIGFuIHJvdyB3aGljaCBpcyBpbiBncmlkIHJlY2VpdmVzIGZvY3VzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGlzdEZvY3VzZWRFdmVudEFubm91bmNlcjogKHBvc2l0aW9uOiBGb2N1c2FibGVMaXN0UG9zaXRpb24pID0+IHN0cmluZyA9IHRoaXMuX2RlZmF1bHRMaXN0Rm9jdXNlZEV2ZW50QW5ub3VuY2VyO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBsaXN0J3MgaXRlbSBmb2N1c2VkLCBjb250YWlucyBpdGVtJ3MgcG9zaXRpb24gaW5mby4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBpdGVtRm9jdXNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNhYmxlTGlzdEl0ZW1Gb2N1c2VkRXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHJlYWRvbmx5IF9wcm9qZWN0ZWRGb2N1c2FibGVJdGVtczogSXRlbXNRdWVyeUxpc3Q8Rm9jdXNhYmxlSXRlbT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfZm9jdXNhYmxlSXRlbXMoKTogSXRlbXNRdWVyeUxpc3Q8Rm9jdXNhYmxlSXRlbT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXMgPyB0aGlzLl9pdGVtcyA6IHRoaXMuX3Byb2plY3RlZEZvY3VzYWJsZUl0ZW1zO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2l0ZW1zOiBJdGVtc1F1ZXJ5TGlzdDxGb2N1c2FibGVJdGVtPiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2dyaWRJdGVtRm9jdXNlZCQgPSBuZXcgU3ViamVjdDxGb2N1c2FibGVJdGVtUG9zaXRpb24+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9ncmlkTGlzdEZvY3VzZWQkID0gbmV3IFN1YmplY3Q8Rm9jdXNhYmxlTGlzdFBvc2l0aW9uPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfa2V5ZG93biQgPSBuZXcgU3ViamVjdDxGb2N1c2FibGVMaXN0S2V5ZG93bkV2ZW50PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9mb2N1c2FibGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ3JpZFBvc2l0aW9uOiB7IHJvd0luZGV4OiBudW1iZXI7IHRvdGFsUm93czogbnVtYmVyIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2tleU1hbmFnZXI/OiBGb2N1c0tleU1hbmFnZXI8Rm9jdXNhYmxlSXRlbT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RhYmJhYmxlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlZnJlc2hJdGVtcyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVmcmVzaCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbGl2ZUFubm91bmNlciA9IGluamVjdChMaXZlQW5ub3VuY2VyKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZvY3VzYWJsZU9ic2VydmVyID0gaW5qZWN0KEZvY3VzYWJsZU9ic2VydmVyKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIGdldCBfdGFiaW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmJhYmxlID8gMCA6IC0xO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGludGVyc2VjdGlvbk9ic2VydmFibGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7IHRocmVzaG9sZDogMC4yNSB9KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpc1Zpc2libGUpID0+ICh0aGlzLl9pc1Zpc2libGUgPSBpc1Zpc2libGVbMF0/LmlzSW50ZXJzZWN0aW5nKSk7XG5cbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlT2JzZXJ2ZXJcbiAgICAgICAgICAgIC5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYsIGZhbHNlKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpc0ZvY3VzYWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNGb2N1c2FibGUgJiYgaXNGb2N1c2FibGUgIT09IHRoaXMuZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNhYmxlID0gaXNGb2N1c2FibGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBfb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIEFscmVhZHkgaGFuZGxlZFxuICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNGb2N1c2VkID0gdGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBzaG91bGRGb2N1c0NoaWxkID0gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFTlRFUiwgTUFDX0VOVEVSLCBGMl0pICYmICFldmVudC5zaGlmdEtleSAmJiBpc0ZvY3VzZWQ7XG4gICAgICAgIGNvbnN0IHNob3VsZEZvY3VzTGlzdCA9XG4gICAgICAgICAgICAoKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBGMikgJiYgZXZlbnQuc2hpZnRLZXkpIHx8IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBFU0NBUEUpKSAmJiAhaXNGb2N1c2VkO1xuXG4gICAgICAgIGlmIChzaG91bGRGb2N1c0NoaWxkKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtKDApO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkRm9jdXNMaXN0KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgdGhpcy5mb2N1cygpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9rZXlkb3duJC5uZXh0KHsgbGlzdDogdGhpcywgZXZlbnQsIGFjdGl2ZUl0ZW1JbmRleDogdGhpcy5fa2V5TWFuYWdlcj8uYWN0aXZlSXRlbUluZGV4ID8/IG51bGwgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gICAgYXN5bmMgX29uRm9jdXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLl9ncmlkUG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2dyaWRMaXN0Rm9jdXNlZCQubmV4dCh0aGlzLl9ncmlkUG9zaXRpb24pO1xuXG4gICAgICAgICAgICB0aGlzLl9saXZlQW5ub3VuY2VyLmNsZWFyKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9saXZlQW5ub3VuY2VyLmFubm91bmNlKHRoaXMubGlzdEZvY3VzZWRFdmVudEFubm91bmNlcih0aGlzLl9ncmlkUG9zaXRpb24pKTtcblxuICAgICAgICAgICAgdGhpcy5zZXRUYWJiYWJsZSh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2tleU1hbmFnZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzWyd3cmFwJ10pIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXIgPSB0aGlzLl9rZXlNYW5hZ2VyLndpdGhXcmFwKGNoYW5nZXNbJ3dyYXAnXS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXNbJ25hdmlnYXRpb25EaXJlY3Rpb24nXSkge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlTmF2aWdhdGlvbkRpcmVjdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uSXRlbXMoKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IGl0ZW1zIHByb2dyYW1tYXRpY2FsbHkuICovXG4gICAgc2V0SXRlbXMoaXRlbXM6IEl0ZW1zUXVlcnlMaXN0PEZvY3VzYWJsZUl0ZW0+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uSXRlbXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyPy5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBhY3RpdmUgaXRlbSBpbiBsaXN0ICovXG4gICAgc2V0QWN0aXZlSXRlbShpbmRleDogbnVtYmVyLCBzY3JvbGxQb3NpdGlvbj86IFNjcm9sbFBvc2l0aW9uKTogdm9pZCB7XG4gICAgICAgIGxldCBhdmFpbGFibGVJbmRleDtcblxuICAgICAgICB0aGlzLl9mb2N1c2FibGVJdGVtcy5maW5kKChpdGVtLCBpdGVtSW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtSW5kZXggPj0gaW5kZXggJiYgaXNJdGVtRm9jdXNhYmxlKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlSW5kZXggPSBpdGVtSW5kZXg7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGF2YWlsYWJsZUluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNjcm9sbEludG9WaWV3KGdldEl0ZW1FbGVtZW50KHRoaXMuX2ZvY3VzYWJsZUl0ZW1zLmdldChhdmFpbGFibGVJbmRleCkpLCBzY3JvbGxQb3NpdGlvbik7XG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyPy5zZXRBY3RpdmVJdGVtKGF2YWlsYWJsZUluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBGb2N1cyB3aG9sZSBsaXN0ICovXG4gICAgZm9jdXMoc2Nyb2xsUG9zaXRpb24/OiBTY3JvbGxQb3NpdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2FibGUpIHtcbiAgICAgICAgICAgIHNjcm9sbEludG9WaWV3KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgc2Nyb2xsUG9zaXRpb24pO1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogU2V0IHRhYmJhYmxlIHN0YXRlICovXG4gICAgc2V0VGFiYmFibGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFiYmFibGUgPSBzdGF0ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF91cGRhdGVOYXZpZ2F0aW9uRGlyZWN0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2tleU1hbmFnZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25EaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXIgPSB0aGlzLl9rZXlNYW5hZ2VyLndpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlciA9IHRoaXMuX2tleU1hbmFnZXIud2l0aEhvcml6b250YWxPcmllbnRhdGlvbihudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXIgPSB0aGlzLl9rZXlNYW5hZ2VyLndpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXIgPSB0aGlzLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5jb250ZW50RGlyZWN0aW9uIHx8ICdsdHInKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldEl0ZW1zVGFiYmFibGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5zZXRUYWJiYWJsZShzdGF0ZSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldEdyaWRQb3NpdGlvbihwb3NpdGlvbjogRm9jdXNhYmxlTGlzdFBvc2l0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dyaWRQb3NpdGlvbiA9IHBvc2l0aW9uO1xuXG4gICAgICAgIHRoaXMuX2ZvY3VzYWJsZUl0ZW1zLmNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aCh0aGlzLl9mb2N1c2FibGVJdGVtcyksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zKSA9PlxuICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goXG4gICAgICAgICAgICAgICAgICAgIChpdGVtLCBpbmRleCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtLl9wb3NpdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLl9ncmlkUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sSW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ29sczogdGhpcy5fZm9jdXNhYmxlSXRlbXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplRm9jdXNNYW5hZ2VyKGl0ZW1zOiBGb2N1c2FibGVJdGVtW10sIGNvbmZpZzogRm9jdXNhYmxlTGlzdENvbmZpZyA9IHt9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hJdGVtcyQubmV4dCgpO1xuXG4gICAgICAgIGxldCBrZXlNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcjxhbnk+KGl0ZW1zKS53aXRoSG9tZUFuZEVuZCgpO1xuXG4gICAgICAgIGlmIChjb25maWcud3JhcCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGtleU1hbmFnZXIgPSBrZXlNYW5hZ2VyLndpdGhXcmFwKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgICBrZXlNYW5hZ2VyID0ga2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKGNvbmZpZy5jb250ZW50RGlyZWN0aW9uIHx8ICdsdHInKTsgLy8gc2hvdWxkIGJlIHJlcGxhY2VkXG5cbiAgICAgICAgICAgIC8vIFZlcnRpY2FsIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgc28gbGV0J3MgZGlzYWJsZSBpdCBoZXJlIGluIGNvbnNpc3RlbmN5IHB1cnBvc2VzXG4gICAgICAgICAgICBrZXlNYW5hZ2VyID0ga2V5TWFuYWdlci53aXRoVmVydGljYWxPcmllbnRhdGlvbihmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBrZXlNYW5hZ2VyLnNraXBQcmVkaWNhdGUoKGkpID0+ICFpc0l0ZW1Gb2N1c2FibGUoaSkpO1xuXG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIgPSBrZXlNYW5hZ2VyO1xuXG4gICAgICAgIGNvbnN0IGZvY3VzTGlzdGVuZXJEZXN0cm95ZXJzID0gaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT5cbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmxpc3RlbihnZXRJdGVtRWxlbWVudChpdGVtKSwgJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpcmVjdGl2ZUl0ZW0gPSB0aGlzLl9mb2N1c2FibGVJdGVtcy5nZXQoaW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmICghZGlyZWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2dyaWRQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ncmlkSXRlbUZvY3VzZWQkLm5leHQoZGlyZWN0aXZlSXRlbS5fcG9zaXRpb24hKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IGdldEl0ZW1FbGVtZW50KGl0ZW0pPy5pZCA/PyBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbUZvY3VzZWQubmV4dCh7IGluZGV4LCB0b3RhbDogaXRlbXMubGVuZ3RoLCBpZCB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c2FibGVJdGVtcy5mb3JFYWNoKChpKSA9PiBpLnNldFRhYmJhYmxlKGkgPT09IGRpcmVjdGl2ZUl0ZW0pKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyPy5zZXRBY3RpdmVJdGVtKGluZGV4KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgbWVyZ2UoLi4uaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmtleWRvd24pKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBBbHJlYWR5IGhhbmRsZWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXI/Lm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKG1lcmdlKHRoaXMuX3JlZnJlc2hJdGVtcyQsIGRlc3Ryb3lPYnNlcnZhYmxlKHRoaXMuX2Rlc3Ryb3lSZWYpKSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gZm9jdXNMaXN0ZW5lckRlc3Ryb3llcnMuZm9yRWFjaCgoZCkgPT4gZCgpKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RlZmF1bHRMaXN0Rm9jdXNlZEV2ZW50QW5ub3VuY2VyKHBvc2l0aW9uOiBGb2N1c2FibGVMaXN0UG9zaXRpb24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYFJvdzogJHtwb3NpdGlvbi5yb3dJbmRleCArIDF9IG9mICR7cG9zaXRpb24udG90YWxSb3dzfSwgdXNlIEYyIGJ1dHRvbiB0byBkaXZlIGluIGFuZCBmb2N1cyBsaXN0J3MgaXRlbWA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Pbkl0ZW1zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZWZyZXNoJCA9IG1lcmdlKHRoaXMuX3JlZnJlc2gkLCBkZXN0cm95T2JzZXJ2YWJsZSh0aGlzLl9kZXN0cm95UmVmKSk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2gkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlSXRlbXMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLl9mb2N1c2FibGVJdGVtcy50b0FycmF5KCkpLFxuICAgICAgICAgICAgICAgIHRhcCgoaXRlbXM6IEZvY3VzYWJsZUl0ZW1bXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSB0aGlzLm5hdmlnYXRpb25EaXJlY3Rpb24gPT09ICdncmlkJyA/ICdob3Jpem9udGFsJyA6IHRoaXMubmF2aWdhdGlvbkRpcmVjdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplRm9jdXNNYW5hZ2VyKGl0ZW1zLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50RGlyZWN0aW9uOiB0aGlzLmNvbnRlbnREaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB3cmFwOiAhIXRoaXMud3JhcFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwocmVmcmVzaCQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { FocusableItemDirective } from '../focusable-item';\nimport { FocusableListDirective } from './focusable-list.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class FocusableListModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableListModule, imports: [FocusableItemDirective, FocusableListDirective], exports: [FocusableItemDirective, FocusableListDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableListModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableListModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [FocusableItemDirective, FocusableListDirective],\n exports: [FocusableItemDirective, FocusableListDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtbGlzdC9mb2N1c2FibGUtbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFcEU7OztHQUdHO0FBS0gsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsWUFIbEIsc0JBQXNCLEVBQUUsc0JBQXNCLGFBQzlDLHNCQUFzQixFQUFFLHNCQUFzQjsrR0FFL0MsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLHNCQUFzQixDQUFDO29CQUN6RCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxzQkFBc0IsQ0FBQztpQkFDNUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uL2ZvY3VzYWJsZS1pdGVtJztcbmltcG9ydCB7IEZvY3VzYWJsZUxpc3REaXJlY3RpdmUgfSBmcm9tICcuL2ZvY3VzYWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBkaXJlY3QgaW1wb3J0cyBvZiBjb21wb25lbnRzIGFuZCBkaXJlY3RpdmVzLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtGb2N1c2FibGVJdGVtRGlyZWN0aXZlLCBGb2N1c2FibGVMaXN0RGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSwgRm9jdXNhYmxlTGlzdERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgRm9jdXNhYmxlTGlzdE1vZHVsZSB7fVxuIl19","import { InjectionToken } from '@angular/core';\nexport const FDK_FOCUSABLE_GRID_DIRECTIVE = new InjectionToken('Focusable grid directive token');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWdyaWQudG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtZ3JpZC9mb2N1c2FibGUtZ3JpZC50b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEZES19GT0NVU0FCTEVfR1JJRF9ESVJFQ1RJVkUgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0ZvY3VzYWJsZSBncmlkIGRpcmVjdGl2ZSB0b2tlbicpO1xuIl19","import { DOWN_ARROW, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ContentChildren, DestroyRef, Directive, EventEmitter, Input, Output, QueryList, booleanAttribute, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge, startWith, switchMap } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE } from '../focusable-item';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE } from '../focusable-list';\nimport { FDK_FOCUSABLE_GRID_DIRECTIVE } from './focusable-grid.tokens';\nimport * as i0 from \"@angular/core\";\nexport class FocusableGridDirective {\n constructor() {\n /** Direction of the content. */\n this.contentDirection = 'ltr';\n /** Whether the item in the previous/next row should be selected when going out of the first/last cell in the row. Default is false. */\n this.wrapHorizontally = false;\n /** Specify which item to select in prev/next row if its length smaller than current index. Nullish value means do not select. Default is null. */\n this.shortRowFocus = null;\n /** Event emitted when item focused, contains item's position info. */\n this.itemFocused = new EventEmitter();\n /** Event emitted when whole row focused, contains row's position info. */\n this.rowFocused = new EventEmitter();\n /** @hidden */\n this._preventKeydown = false;\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n }\n /** @hidden */\n ngAfterViewInit() {\n this._focusableLists.changes\n .pipe(startWith(this._focusableLists), takeUntilDestroyed(this._destroyRef))\n .subscribe((lists) => {\n lists.forEach((list, index) => {\n list._setGridPosition({ rowIndex: index, totalRows: this._focusableLists.length });\n list._focusableItems.changes\n .pipe(startWith(list._focusableItems), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) => {\n this._handleItemSubscriptions(items);\n });\n });\n });\n this._focusableItems.changes\n .pipe(startWith(this._focusableItems), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) => {\n this._handleItemSubscriptions(items);\n });\n this._focusableLists.changes\n .pipe(startWith(this._focusableLists), switchMap((queryList) => merge(...queryList.toArray().map((list) => list._gridListFocused$))), takeUntilDestroyed(this._destroyRef))\n .subscribe((focusedEvent) => {\n this.rowFocused.emit(focusedEvent);\n this._focusableLists.forEach((list) => list.setTabbable(false));\n this._focusableLists.forEach((list) => list._setItemsTabbable(false));\n });\n this._focusableLists.changes\n .pipe(startWith(this._focusableLists), switchMap((queryList) => merge(...queryList.toArray().map((list) => list._gridItemFocused$))), takeUntilDestroyed(this._destroyRef))\n .subscribe((focusedEvent) => {\n this.itemFocused.emit(focusedEvent);\n this._focusableLists.forEach((list) => list.setTabbable(false));\n this._focusableLists.forEach((list) => list._setItemsTabbable(false));\n });\n this._focusableLists.changes\n .pipe(startWith(this._focusableLists), switchMap((queryList) => merge(...queryList.toArray().map((list) => list._keydown$))), takeUntilDestroyed(this._destroyRef))\n .subscribe(({ event, list, activeItemIndex }) => this._onKeydown(event, list, activeItemIndex));\n }\n /**\n * Focus cell by position.\n * @param position position of the cell\n */\n focusCell(position) {\n const list = this._focusableLists.get(position.rowIndex);\n if (list) {\n list.setActiveItem(position.colIndex);\n }\n }\n /** @hidden */\n _onKeydown(event, list, activeItemIndex) {\n if (!KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, PAGE_DOWN, PAGE_UP]) ||\n this._preventKeydown) {\n return;\n }\n const lists = this._focusableLists.toArray();\n const currentRowIndex = lists.findIndex((item) => item === list);\n let nextRowIndex;\n let nextRowItemIndex = activeItemIndex ?? 0;\n let scrollIntoView;\n const isFirstItemLtr = activeItemIndex === 0 && this.contentDirection !== 'rtl';\n const isLastItemRtl = activeItemIndex === list._focusableItems.length - 1 && this.contentDirection === 'rtl';\n const isFirstItemRtl = activeItemIndex === 0 && this.contentDirection === 'rtl';\n const isLastItemLtr = activeItemIndex === list._focusableItems.length - 1 && this.contentDirection !== 'rtl';\n switch (event.keyCode) {\n case UP_ARROW:\n event.preventDefault();\n nextRowIndex = currentRowIndex - 1;\n break;\n case DOWN_ARROW:\n event.preventDefault();\n nextRowIndex = currentRowIndex + 1;\n break;\n case LEFT_ARROW:\n if (this.wrapHorizontally && (isFirstItemLtr || isLastItemRtl)) {\n event.preventDefault();\n nextRowIndex = currentRowIndex - 1;\n nextRowItemIndex = lists[nextRowIndex]?._focusableItems.length - 1;\n }\n break;\n case RIGHT_ARROW:\n if (this.wrapHorizontally && (isFirstItemRtl || isLastItemLtr)) {\n event.preventDefault();\n nextRowIndex = currentRowIndex + 1;\n nextRowItemIndex = 0;\n }\n break;\n case PAGE_DOWN:\n event.preventDefault();\n nextRowIndex = lists.findLastIndex((item) => item._isVisible);\n scrollIntoView = 'top';\n break;\n case PAGE_UP:\n event.preventDefault();\n nextRowIndex = lists.findIndex((item) => item._isVisible);\n scrollIntoView = 'bottom';\n break;\n }\n const nextRow = lists[nextRowIndex ?? -1];\n if (nextRow) {\n if (nextRow.focusable) {\n nextRow.focus(scrollIntoView);\n return;\n }\n const itemIndex = this._getItemIndex(nextRow, nextRowItemIndex);\n if (itemIndex != null) {\n nextRow.setActiveItem(itemIndex, scrollIntoView);\n }\n }\n }\n /** @hidden */\n _getItemIndex(list, activeIndex) {\n if (activeIndex >= 0 && activeIndex < list._focusableItems.length) {\n return activeIndex;\n }\n if (this.shortRowFocus == null) {\n return null;\n }\n return this.shortRowFocus === 'first' ? 0 : list._focusableItems.length - 1;\n }\n /** @hidden */\n _handleItemSubscriptions(items) {\n items.forEach((item) => {\n item.focusableChildElementFocused.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._focusableLists.forEach((focusableList) => {\n focusableList._focusableItems.forEach((focusableItem) => {\n focusableItem.setTabbable(false);\n focusableItem.enableTabbableElements();\n });\n });\n });\n item._parentFocusableItemFocused.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._focusableLists.forEach((focusableList) => {\n focusableList._focusableItems.forEach((focusableItem) => {\n if (item !== focusableItem) {\n focusableItem.disableTabbableElements();\n }\n else {\n focusableItem.enableTabbableElements();\n }\n });\n });\n });\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableGridDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.1.4\", type: FocusableGridDirective, isStandalone: true, selector: \"[fdkFocusableGrid]\", inputs: { contentDirection: \"contentDirection\", wrapHorizontally: [\"wrapHorizontally\", \"wrapHorizontally\", booleanAttribute], shortRowFocus: \"shortRowFocus\" }, outputs: { itemFocused: \"itemFocused\", rowFocused: \"rowFocused\" }, providers: [\n {\n provide: FDK_FOCUSABLE_GRID_DIRECTIVE,\n useExisting: FocusableGridDirective\n }\n ], queries: [{ propertyName: \"_focusableLists\", predicate: FDK_FOCUSABLE_LIST_DIRECTIVE, descendants: true }, { propertyName: \"_focusableItems\", predicate: FDK_FOCUSABLE_ITEM_DIRECTIVE, descendants: true }], exportAs: [\"fdkFocusableGrid\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableGridDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkFocusableGrid]',\n exportAs: 'fdkFocusableGrid',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_GRID_DIRECTIVE,\n useExisting: FocusableGridDirective\n }\n ]\n }]\n }], propDecorators: { contentDirection: [{\n type: Input\n }], wrapHorizontally: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], shortRowFocus: [{\n type: Input\n }], itemFocused: [{\n type: Output\n }], rowFocused: [{\n type: Output\n }], _focusableLists: [{\n type: ContentChildren,\n args: [FDK_FOCUSABLE_LIST_DIRECTIVE, { descendants: true }]\n }], _focusableItems: [{\n type: ContentChildren,\n args: [FDK_FOCUSABLE_ITEM_DIRECTIVE, { descendants: true }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWdyaWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtZ3JpZC9mb2N1c2FibGUtZ3JpZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUcsT0FBTyxFQUVILGVBQWUsRUFDZixVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUNILDRCQUE0QixFQUkvQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSw0QkFBNEIsRUFBMEMsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFrQnZFLE1BQU0sT0FBTyxzQkFBc0I7SUFYbkM7UUFZSSxnQ0FBZ0M7UUFFaEMscUJBQWdCLEdBQXlCLEtBQUssQ0FBQztRQUUvQyx1SUFBdUk7UUFFdkkscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCLGtKQUFrSjtRQUVsSixrQkFBYSxHQUErQixJQUFJLENBQUM7UUFFakQsc0VBQXNFO1FBRTdELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7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QTRCLHFFQUk1Qiw0QkFBNEI7OzJGQTFCcEMsc0JBQXNCO2tCQVhsQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDRCQUE0Qjs0QkFDckMsV0FBVyx3QkFBd0I7eUJBQ3RDO3FCQUNKO2lCQUNKOzhCQUlHLGdCQUFnQjtzQkFEZixLQUFLO2dCQUtOLGdCQUFnQjtzQkFEZixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUt0QyxhQUFhO3NCQURaLEtBQUs7Z0JBS0csV0FBVztzQkFEbkIsTUFBTTtnQkFLRSxVQUFVO3NCQURsQixNQUFNO2dCQUtVLGVBQWU7c0JBRC9CLGVBQWU7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUtuRCxlQUFlO3NCQUQvQixlQUFlO3VCQUFDLDRCQUE0QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPV05fQVJST1csIExFRlRfQVJST1csIFBBR0VfRE9XTiwgUEFHRV9VUCwgUklHSFRfQVJST1csIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGVzdHJveVJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBtZXJnZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEtleVV0aWwgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvbnVsbGFibGUnO1xuaW1wb3J0IHtcbiAgICBGREtfRk9DVVNBQkxFX0lURU1fRElSRUNUSVZFLFxuICAgIEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUsXG4gICAgRm9jdXNhYmxlSXRlbVBvc2l0aW9uLFxuICAgIEZvY3VzYWJsZUxpc3RQb3NpdGlvblxufSBmcm9tICcuLi9mb2N1c2FibGUtaXRlbSc7XG5pbXBvcnQgeyBGREtfRk9DVVNBQkxFX0xJU1RfRElSRUNUSVZFLCBGb2N1c2FibGVMaXN0RGlyZWN0aXZlLCBTY3JvbGxQb3NpdGlvbiB9IGZyb20gJy4uL2ZvY3VzYWJsZS1saXN0JztcbmltcG9ydCB7IEZES19GT0NVU0FCTEVfR1JJRF9ESVJFQ1RJVkUgfSBmcm9tICcuL2ZvY3VzYWJsZS1ncmlkLnRva2Vucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9jdXNhYmxlQ2VsbFBvc2l0aW9uIHtcbiAgICByb3dJbmRleDogbnVtYmVyO1xuICAgIGNvbEluZGV4OiBudW1iZXI7XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0ZvY3VzYWJsZUdyaWRdJyxcbiAgICBleHBvcnRBczogJ2Zka0ZvY3VzYWJsZUdyaWQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZES19GT0NVU0FCTEVfR1JJRF9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogRm9jdXNhYmxlR3JpZERpcmVjdGl2ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c2FibGVHcmlkRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIERpcmVjdGlvbiBvZiB0aGUgY29udGVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnREaXJlY3Rpb246ICdsdHInIHwgJ3J0bCcgfCBudWxsID0gJ2x0cic7XG5cbiAgICAvKiogV2hldGhlciB0aGUgaXRlbSBpbiB0aGUgcHJldmlvdXMvbmV4dCByb3cgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gZ29pbmcgb3V0IG9mIHRoZSBmaXJzdC9sYXN0IGNlbGwgaW4gdGhlIHJvdy4gRGVmYXVsdCBpcyBmYWxzZS4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICB3cmFwSG9yaXpvbnRhbGx5ID0gZmFsc2U7XG5cbiAgICAvKiogU3BlY2lmeSB3aGljaCBpdGVtIHRvIHNlbGVjdCBpbiBwcmV2L25leHQgcm93IGlmIGl0cyBsZW5ndGggc21hbGxlciB0aGFuIGN1cnJlbnQgaW5kZXguIE51bGxpc2ggdmFsdWUgbWVhbnMgZG8gbm90IHNlbGVjdC4gRGVmYXVsdCBpcyBudWxsLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvcnRSb3dGb2N1czogTnVsbGFibGU8J2ZpcnN0JyB8ICdsYXN0Jz4gPSBudWxsO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBpdGVtIGZvY3VzZWQsIGNvbnRhaW5zIGl0ZW0ncyBwb3NpdGlvbiBpbmZvLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGl0ZW1Gb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c2FibGVJdGVtUG9zaXRpb24+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHdob2xlIHJvdyBmb2N1c2VkLCBjb250YWlucyByb3cncyBwb3NpdGlvbiBpbmZvLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHJvd0ZvY3VzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzYWJsZUxpc3RQb3NpdGlvbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihGREtfRk9DVVNBQkxFX0xJU1RfRElSRUNUSVZFLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNhYmxlTGlzdHM6IFF1ZXJ5TGlzdDxGb2N1c2FibGVMaXN0RGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihGREtfRk9DVVNBQkxFX0lURU1fRElSRUNUSVZFLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNhYmxlSXRlbXM6IFF1ZXJ5TGlzdDxGb2N1c2FibGVJdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ByZXZlbnRLZXlkb3duID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlTGlzdHMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoc3RhcnRXaXRoKHRoaXMuX2ZvY3VzYWJsZUxpc3RzKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgobGlzdHMpID0+IHtcbiAgICAgICAgICAgICAgICBsaXN0cy5mb3JFYWNoKChsaXN0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsaXN0Ll9zZXRHcmlkUG9zaXRpb24oeyByb3dJbmRleDogaW5kZXgsIHRvdGFsUm93czogdGhpcy5fZm9jdXNhYmxlTGlzdHMubGVuZ3RoIH0pO1xuICAgICAgICAgICAgICAgICAgICBsaXN0Ll9mb2N1c2FibGVJdGVtcy5jaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShzdGFydFdpdGgobGlzdC5fZm9jdXNhYmxlSXRlbXMpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUl0ZW1TdWJzY3JpcHRpb25zKGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlSXRlbXMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoc3RhcnRXaXRoKHRoaXMuX2ZvY3VzYWJsZUl0ZW1zKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVJdGVtU3Vic2NyaXB0aW9ucyhpdGVtcyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9mb2N1c2FibGVMaXN0cy5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodGhpcy5fZm9jdXNhYmxlTGlzdHMpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocXVlcnlMaXN0OiBRdWVyeUxpc3Q8Rm9jdXNhYmxlTGlzdERpcmVjdGl2ZT4pID0+XG4gICAgICAgICAgICAgICAgICAgIG1lcmdlKC4uLnF1ZXJ5TGlzdC50b0FycmF5KCkubWFwKChsaXN0KSA9PiBsaXN0Ll9ncmlkTGlzdEZvY3VzZWQkKSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZm9jdXNlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dGb2N1c2VkLmVtaXQoZm9jdXNlZEV2ZW50KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzYWJsZUxpc3RzLmZvckVhY2goKGxpc3QpID0+IGxpc3Quc2V0VGFiYmFibGUoZmFsc2UpKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c2FibGVMaXN0cy5mb3JFYWNoKChsaXN0KSA9PiBsaXN0Ll9zZXRJdGVtc1RhYmJhYmxlKGZhbHNlKSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9mb2N1c2FibGVMaXN0cy5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodGhpcy5fZm9jdXNhYmxlTGlzdHMpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocXVlcnlMaXN0OiBRdWVyeUxpc3Q8Rm9jdXNhYmxlTGlzdERpcmVjdGl2ZT4pID0+XG4gICAgICAgICAgICAgICAgICAgIG1lcmdlKC4uLnF1ZXJ5TGlzdC50b0FycmF5KCkubWFwKChsaXN0KSA9PiBsaXN0Ll9ncmlkSXRlbUZvY3VzZWQkKSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZm9jdXNlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtRm9jdXNlZC5lbWl0KGZvY3VzZWRFdmVudCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c2FibGVMaXN0cy5mb3JFYWNoKChsaXN0KSA9PiBsaXN0LnNldFRhYmJhYmxlKGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNhYmxlTGlzdHMuZm9yRWFjaCgobGlzdCkgPT4gbGlzdC5fc2V0SXRlbXNUYWJiYWJsZShmYWxzZSkpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZm9jdXNhYmxlTGlzdHMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuX2ZvY3VzYWJsZUxpc3RzKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHF1ZXJ5TGlzdDogUXVlcnlMaXN0PEZvY3VzYWJsZUxpc3REaXJlY3RpdmU+KSA9PlxuICAgICAgICAgICAgICAgICAgICBtZXJnZSguLi5xdWVyeUxpc3QudG9BcnJheSgpLm1hcCgobGlzdCkgPT4gbGlzdC5fa2V5ZG93biQpKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IGV2ZW50LCBsaXN0LCBhY3RpdmVJdGVtSW5kZXggfSkgPT4gdGhpcy5fb25LZXlkb3duKGV2ZW50LCBsaXN0LCBhY3RpdmVJdGVtSW5kZXgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb2N1cyBjZWxsIGJ5IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSBwb3NpdGlvbiBwb3NpdGlvbiBvZiB0aGUgY2VsbFxuICAgICAqL1xuICAgIGZvY3VzQ2VsbChwb3NpdGlvbjogRm9jdXNhYmxlQ2VsbFBvc2l0aW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLl9mb2N1c2FibGVMaXN0cy5nZXQocG9zaXRpb24ucm93SW5kZXgpO1xuICAgICAgICBpZiAobGlzdCkge1xuICAgICAgICAgICAgbGlzdC5zZXRBY3RpdmVJdGVtKHBvc2l0aW9uLmNvbEluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgbGlzdDogRm9jdXNhYmxlTGlzdERpcmVjdGl2ZSwgYWN0aXZlSXRlbUluZGV4OiBOdWxsYWJsZTxudW1iZXI+KTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW1VQX0FSUk9XLCBET1dOX0FSUk9XLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgUEFHRV9ET1dOLCBQQUdFX1VQXSkgfHxcbiAgICAgICAgICAgIHRoaXMuX3ByZXZlbnRLZXlkb3duXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGlzdHMgPSB0aGlzLl9mb2N1c2FibGVMaXN0cy50b0FycmF5KCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSb3dJbmRleCA9IGxpc3RzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbSA9PT0gbGlzdCk7XG4gICAgICAgIGxldCBuZXh0Um93SW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IG5leHRSb3dJdGVtSW5kZXggPSBhY3RpdmVJdGVtSW5kZXggPz8gMDtcbiAgICAgICAgbGV0IHNjcm9sbEludG9WaWV3OiBTY3JvbGxQb3NpdGlvbjtcblxuICAgICAgICBjb25zdCBpc0ZpcnN0SXRlbUx0ciA9IGFjdGl2ZUl0ZW1JbmRleCA9PT0gMCAmJiB0aGlzLmNvbnRlbnREaXJlY3Rpb24gIT09ICdydGwnO1xuICAgICAgICBjb25zdCBpc0xhc3RJdGVtUnRsID0gYWN0aXZlSXRlbUluZGV4ID09PSBsaXN0Ll9mb2N1c2FibGVJdGVtcy5sZW5ndGggLSAxICYmIHRoaXMuY29udGVudERpcmVjdGlvbiA9PT0gJ3J0bCc7XG5cbiAgICAgICAgY29uc3QgaXNGaXJzdEl0ZW1SdGwgPSBhY3RpdmVJdGVtSW5kZXggPT09IDAgJiYgdGhpcy5jb250ZW50RGlyZWN0aW9uID09PSAncnRsJztcbiAgICAgICAgY29uc3QgaXNMYXN0SXRlbUx0ciA9IGFjdGl2ZUl0ZW1JbmRleCA9PT0gbGlzdC5fZm9jdXNhYmxlSXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLmNvbnRlbnREaXJlY3Rpb24gIT09ICdydGwnO1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgICAgICAgY2FzZSBVUF9BUlJPVzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIG5leHRSb3dJbmRleCA9IGN1cnJlbnRSb3dJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERPV05fQVJST1c6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBuZXh0Um93SW5kZXggPSBjdXJyZW50Um93SW5kZXggKyAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMRUZUX0FSUk9XOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLndyYXBIb3Jpem9udGFsbHkgJiYgKGlzRmlyc3RJdGVtTHRyIHx8IGlzTGFzdEl0ZW1SdGwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIG5leHRSb3dJbmRleCA9IGN1cnJlbnRSb3dJbmRleCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIG5leHRSb3dJdGVtSW5kZXggPSBsaXN0c1tuZXh0Um93SW5kZXhdPy5fZm9jdXNhYmxlSXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFJJR0hUX0FSUk9XOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLndyYXBIb3Jpem9udGFsbHkgJiYgKGlzRmlyc3RJdGVtUnRsIHx8IGlzTGFzdEl0ZW1MdHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIG5leHRSb3dJbmRleCA9IGN1cnJlbnRSb3dJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgICAgIG5leHRSb3dJdGVtSW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUEFHRV9ET1dOOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgbmV4dFJvd0luZGV4ID0gbGlzdHMuZmluZExhc3RJbmRleCgoaXRlbSkgPT4gaXRlbS5faXNWaXNpYmxlKTtcbiAgICAgICAgICAgICAgICBzY3JvbGxJbnRvVmlldyA9ICd0b3AnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQQUdFX1VQOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgbmV4dFJvd0luZGV4ID0gbGlzdHMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLl9pc1Zpc2libGUpO1xuICAgICAgICAgICAgICAgIHNjcm9sbEludG9WaWV3ID0gJ2JvdHRvbSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXh0Um93ID0gbGlzdHNbbmV4dFJvd0luZGV4ID8/IC0xXTtcbiAgICAgICAgaWYgKG5leHRSb3cpIHtcbiAgICAgICAgICAgIGlmIChuZXh0Um93LmZvY3VzYWJsZSkge1xuICAgICAgICAgICAgICAgIG5leHRSb3cuZm9jdXMoc2Nyb2xsSW50b1ZpZXcpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5fZ2V0SXRlbUluZGV4KG5leHRSb3csIG5leHRSb3dJdGVtSW5kZXgpO1xuICAgICAgICAgICAgaWYgKGl0ZW1JbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbmV4dFJvdy5zZXRBY3RpdmVJdGVtKGl0ZW1JbmRleCwgc2Nyb2xsSW50b1ZpZXcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRJdGVtSW5kZXgobGlzdDogRm9jdXNhYmxlTGlzdERpcmVjdGl2ZSwgYWN0aXZlSW5kZXg6IG51bWJlcik6IE51bGxhYmxlPG51bWJlcj4ge1xuICAgICAgICBpZiAoYWN0aXZlSW5kZXggPj0gMCAmJiBhY3RpdmVJbmRleCA8IGxpc3QuX2ZvY3VzYWJsZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZUluZGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvcnRSb3dGb2N1cyA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnNob3J0Um93Rm9jdXMgPT09ICdmaXJzdCcgPyAwIDogbGlzdC5fZm9jdXNhYmxlSXRlbXMubGVuZ3RoIC0gMTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZUl0ZW1TdWJzY3JpcHRpb25zKGl0ZW1zOiBRdWVyeUxpc3Q8Rm9jdXNhYmxlSXRlbURpcmVjdGl2ZT4pOiB2b2lkIHtcbiAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5mb2N1c2FibGVDaGlsZEVsZW1lbnRGb2N1c2VkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzYWJsZUxpc3RzLmZvckVhY2goKGZvY3VzYWJsZUxpc3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlTGlzdC5fZm9jdXNhYmxlSXRlbXMuZm9yRWFjaCgoZm9jdXNhYmxlSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlSXRlbS5zZXRUYWJiYWJsZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNhYmxlSXRlbSBhcyBGb2N1c2FibGVJdGVtRGlyZWN0aXZlKS5lbmFibGVUYWJiYWJsZUVsZW1lbnRzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpdGVtLl9wYXJlbnRGb2N1c2FibGVJdGVtRm9jdXNlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c2FibGVMaXN0cy5mb3JFYWNoKChmb2N1c2FibGVMaXN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZUxpc3QuX2ZvY3VzYWJsZUl0ZW1zLmZvckVhY2goKGZvY3VzYWJsZUl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtICE9PSBmb2N1c2FibGVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzYWJsZUl0ZW0gYXMgRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSkuZGlzYWJsZVRhYmJhYmxlRWxlbWVudHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzYWJsZUl0ZW0gYXMgRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSkuZW5hYmxlVGFiYmFibGVFbGVtZW50cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport { FocusableListModule } from '../focusable-list';\nimport { FocusableGridDirective } from './focusable-grid.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class FocusableGridModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableGridModule, imports: [FocusableListModule, FocusableGridDirective], exports: [FocusableListModule, FocusableGridDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableGridModule, imports: [FocusableListModule, FocusableListModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FocusableGridModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [FocusableListModule, FocusableGridDirective],\n exports: [FocusableListModule, FocusableGridDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWdyaWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9mb2N1c2FibGUtZ3JpZC9mb2N1c2FibGUtZ3JpZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFcEU7OztHQUdHO0FBS0gsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsWUFIbEIsbUJBQW1CLEVBQUUsc0JBQXNCLGFBQzNDLG1CQUFtQixFQUFFLHNCQUFzQjsrR0FFNUMsbUJBQW1CLFlBSGxCLG1CQUFtQixFQUNuQixtQkFBbUI7OzJGQUVwQixtQkFBbUI7a0JBSi9CLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsc0JBQXNCLENBQUM7b0JBQ3RELE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLHNCQUFzQixDQUFDO2lCQUN6RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c2FibGVMaXN0TW9kdWxlIH0gZnJvbSAnLi4vZm9jdXNhYmxlLWxpc3QnO1xuaW1wb3J0IHsgRm9jdXNhYmxlR3JpZERpcmVjdGl2ZSB9IGZyb20gJy4vZm9jdXNhYmxlLWdyaWQuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIGRpcmVjdCBpbXBvcnRzIG9mIGNvbXBvbmVudHMgYW5kIGRpcmVjdGl2ZXMuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0ZvY3VzYWJsZUxpc3RNb2R1bGUsIEZvY3VzYWJsZUdyaWREaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtGb2N1c2FibGVMaXN0TW9kdWxlLCBGb2N1c2FibGVHcmlkRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBGb2N1c2FibGVHcmlkTW9kdWxlIHt9XG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const IgnoreClickOnSelectionDirectiveToken = new InjectionToken('Ignore click on selection directive');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uL3Rva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLElBQUksY0FBYyxDQUFDLHFDQUFxQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZVRva2VuID0gbmV3IEluamVjdGlvblRva2VuKCdJZ25vcmUgY2xpY2sgb24gc2VsZWN0aW9uIGRpcmVjdGl2ZScpO1xuIl19","import { Directive, DOCUMENT, ElementRef, HostListener, Inject } from '@angular/core';\nimport { IgnoreClickOnSelectionDirectiveToken } from './tokens';\nimport * as i0 from \"@angular/core\";\n/**\n * Directive will stop propagation and prevent default of click, if selected area is coming from\n * directive's host element. This gives ability to not cancel all clicks on element, just the ones\n * which include selection\n */\nexport class IgnoreClickOnSelectionDirective {\n /** @hidden */\n constructor(document, _elementRef) {\n this.document = document;\n this._elementRef = _elementRef;\n }\n /** Host click listener. Checks for selection existence and if finds one, checks anchor */\n clicked($event) {\n const selection = this.document.getSelection();\n if (selection?.toString()) {\n if (selection.anchorNode &&\n (this._elementRef.nativeElement.isSameNode(selection.anchorNode) ||\n this._elementRef.nativeElement.isSameNode(selection.anchorNode.parentElement))) {\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IgnoreClickOnSelectionDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: IgnoreClickOnSelectionDirective, isStandalone: true, selector: \"[fdkIgnoreClickOnSelection]\", host: { listeners: { \"click\": \"clicked($event)\" } }, providers: [\n {\n provide: IgnoreClickOnSelectionDirectiveToken,\n useExisting: IgnoreClickOnSelectionDirective\n }\n ], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IgnoreClickOnSelectionDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkIgnoreClickOnSelection]',\n standalone: true,\n providers: [\n {\n provide: IgnoreClickOnSelectionDirectiveToken,\n useExisting: IgnoreClickOnSelectionDirective\n }\n ]\n }]\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }], propDecorators: { clicked: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24vaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUVoRTs7OztHQUlHO0FBV0gsTUFBTSxPQUFPLCtCQUErQjtJQUN4QyxjQUFjO0lBQ2QsWUFDOEIsUUFBa0IsRUFDcEMsV0FBb0M7UUFEbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7SUFDN0MsQ0FBQztJQUVKLDBGQUEwRjtJQUUxRixPQUFPLENBQUMsTUFBa0I7UUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMvQyxJQUFJLFNBQVMsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQ0ksU0FBUyxDQUFDLFVBQVU7Z0JBQ3BCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7b0JBQzVELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQ3BGLENBQUM7Z0JBQ0MsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN6QixNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDOzhHQXJCUSwrQkFBK0Isa0JBRzVCLFFBQVE7a0dBSFgsK0JBQStCLCtIQVA3QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxvQ0FBb0M7Z0JBQzdDLFdBQVcsRUFBRSwrQkFBK0I7YUFDL0M7U0FDSjs7MkZBRVEsK0JBQStCO2tCQVYzQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG9DQUFvQzs0QkFDN0MsV0FBVyxpQ0FBaUM7eUJBQy9DO3FCQUNKO2lCQUNKOzswQkFJUSxNQUFNOzJCQUFDLFFBQVE7a0VBTXBCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIERPQ1VNRU5ULCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZVRva2VuIH0gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB3aWxsIHN0b3AgcHJvcGFnYXRpb24gYW5kIHByZXZlbnQgZGVmYXVsdCBvZiBjbGljaywgaWYgc2VsZWN0ZWQgYXJlYSBpcyBjb21pbmcgZnJvbVxuICogZGlyZWN0aXZlJ3MgaG9zdCBlbGVtZW50LiBUaGlzIGdpdmVzIGFiaWxpdHkgdG8gbm90IGNhbmNlbCBhbGwgY2xpY2tzIG9uIGVsZW1lbnQsIGp1c3QgdGhlIG9uZXNcbiAqIHdoaWNoIGluY2x1ZGUgc2VsZWN0aW9uXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0lnbm9yZUNsaWNrT25TZWxlY3Rpb25dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBJZ25vcmVDbGlja09uU2VsZWN0aW9uRGlyZWN0aXZlVG9rZW4sXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBJZ25vcmVDbGlja09uU2VsZWN0aW9uRGlyZWN0aXZlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICApIHt9XG5cbiAgICAvKiogSG9zdCBjbGljayBsaXN0ZW5lci4gQ2hlY2tzIGZvciBzZWxlY3Rpb24gZXhpc3RlbmNlIGFuZCBpZiBmaW5kcyBvbmUsIGNoZWNrcyBhbmNob3IgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgY2xpY2tlZCgkZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5kb2N1bWVudC5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgaWYgKHNlbGVjdGlvbj8udG9TdHJpbmcoKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5hbmNob3JOb2RlICYmXG4gICAgICAgICAgICAgICAgKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pc1NhbWVOb2RlKHNlbGVjdGlvbi5hbmNob3JOb2RlKSB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaXNTYW1lTm9kZShzZWxlY3Rpb24uYW5jaG9yTm9kZS5wYXJlbnRFbGVtZW50KSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { IgnoreClickOnSelectionDirective } from './ignore-click-on-selection.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class IgnoreClickOnSelectionModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IgnoreClickOnSelectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: IgnoreClickOnSelectionModule, imports: [IgnoreClickOnSelectionDirective], exports: [IgnoreClickOnSelectionDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IgnoreClickOnSelectionModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IgnoreClickOnSelectionModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [IgnoreClickOnSelectionDirective],\n exports: [IgnoreClickOnSelectionDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24vaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFFeEY7OztHQUdHO0FBS0gsTUFBTSxPQUFPLDRCQUE0Qjs4R0FBNUIsNEJBQTRCOytHQUE1Qiw0QkFBNEIsWUFIM0IsK0JBQStCLGFBQy9CLCtCQUErQjsrR0FFaEMsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUp4QyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUMxQyxPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztpQkFDN0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgZGlyZWN0IGltcG9ydHMgb2YgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbSWdub3JlQ2xpY2tPblNlbGVjdGlvbkRpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW0lnbm9yZUNsaWNrT25TZWxlY3Rpb25EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElnbm9yZUNsaWNrT25TZWxlY3Rpb25Nb2R1bGUge31cbiJdfQ==","import { DestroyRef, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, filter, take } from 'rxjs/operators';\nimport { TabbableElementService } from '../../services/tabbable-element.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../services/tabbable-element.service\";\nexport class InitialFocusDirective {\n /**\n * Whether initial focus enabled for a current element.\n */\n set enabled(value) {\n if (value === this.enabled) {\n return;\n }\n this._enabled$.next(value);\n }\n get enabled() {\n return this._enabled$.getValue();\n }\n /** @hidden */\n constructor(_elmRef, _ngZone, _tabbableService) {\n this._elmRef = _elmRef;\n this._ngZone = _ngZone;\n this._tabbableService = _tabbableService;\n /**\n * CSS selector of an element that should be focused.\n */\n this.fdkInitialFocus = '.fd-initial-focus-item';\n /**\n * Whether to focus last element in a found array of elements.\n */\n this.focusLastElement = false;\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._enabled$ = new BehaviorSubject(true);\n }\n /** @hidden */\n ngAfterViewInit() {\n this._enabled$\n .pipe(distinctUntilChanged(), filter((enabled) => enabled), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._executeOnEmpty(() => this._focus());\n });\n }\n /**\n * @hidden\n * Executes a function when the zone is stable.\n */\n _executeOnEmpty(fn) {\n if (!this._ngZone.hasPendingMicrotasks) {\n fn();\n }\n else {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(fn);\n }\n }\n /**\n * @hidden\n * Searches for an appropriate focusable element\n */\n _getFocusableElement() {\n if (!this.fdkInitialFocus) {\n return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);\n }\n const autoFocusableItems = this._elmRef.nativeElement.querySelectorAll(this.fdkInitialFocus);\n if (autoFocusableItems.length > 0) {\n return !this.focusLastElement ? autoFocusableItems[0] : autoFocusableItems[autoFocusableItems.length - 1];\n }\n // If no elements found, fallback to a first tabbable element.\n return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);\n }\n /** @hidden */\n _focus() {\n if (!this.enabled) {\n return;\n }\n const elm = this._getFocusableElement();\n elm?.focus();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: InitialFocusDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.TabbableElementService }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: InitialFocusDirective, isStandalone: true, selector: \"[fdkInitialFocus]\", inputs: { fdkInitialFocus: \"fdkInitialFocus\", enabled: \"enabled\", focusLastElement: \"focusLastElement\" }, providers: [TabbableElementService], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: InitialFocusDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkInitialFocus]',\n standalone: true,\n providers: [TabbableElementService]\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.TabbableElementService }], propDecorators: { fdkInitialFocus: [{\n type: Input\n }], enabled: [{\n type: Input\n }], focusLastElement: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbC1mb2N1cy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2luaXRpYWwtZm9jdXMvaW5pdGlhbC1mb2N1cy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7OztBQU9qRixNQUFNLE9BQU8scUJBQXFCO0lBTzlCOztPQUVHO0lBQ0gsSUFDSSxPQUFPLENBQUMsS0FBYztRQUN0QixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFjRCxjQUFjO0lBQ2QsWUFDWSxPQUFnQyxFQUNoQyxPQUFlLEVBQ04sZ0JBQXdDO1FBRmpELFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ2hDLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDTixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXdCO1FBckM3RDs7V0FFRztRQUVILG9CQUFlLEdBQUcsd0JBQXdCLENBQUM7UUFpQjNDOztXQUVHO1FBRUgscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCLGNBQWM7UUFDRyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsRCxjQUFjO1FBQ0csY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO0lBTzdELENBQUM7SUFFSixjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksQ0FBQyxTQUFTO2FBQ1QsSUFBSSxDQUNELG9CQUFvQixFQUFFLEVBQ3RCLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQzVCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDdkM7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRDs7O09BR0c7SUFDSyxlQUFlLENBQUMsRUFBYTtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3JDLEVBQUUsRUFBRSxDQUFDO1FBQ1QsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSyxvQkFBb0I7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RyxDQUFDO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FDbEUsSUFBSSxDQUFDLGVBQWUsQ0FDSSxDQUFDO1FBRTdCLElBQUksa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUcsQ0FBQztRQUVELDhEQUE4RDtRQUM5RCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBRUQsY0FBYztJQUNOLE1BQU07UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDWCxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDeEMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7OEdBOUZRLHFCQUFxQjtrR0FBckIscUJBQXFCLDBLQUZuQixDQUFDLHNCQUFzQixDQUFDOzsyRkFFMUIscUJBQXFCO2tCQUxqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDdEM7eUlBTUcsZUFBZTtzQkFEZCxLQUFLO2dCQU9GLE9BQU87c0JBRFYsS0FBSztnQkFnQk4sZ0JBQWdCO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGFiYmFibGVFbGVtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RhYmJhYmxlLWVsZW1lbnQuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0luaXRpYWxGb2N1c10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbVGFiYmFibGVFbGVtZW50U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgSW5pdGlhbEZvY3VzRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICogQ1NTIHNlbGVjdG9yIG9mIGFuIGVsZW1lbnQgdGhhdCBzaG91bGQgYmUgZm9jdXNlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZka0luaXRpYWxGb2N1cyA9ICcuZmQtaW5pdGlhbC1mb2N1cy1pdGVtJztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgaW5pdGlhbCBmb2N1cyBlbmFibGVkIGZvciBhIGN1cnJlbnQgZWxlbWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBlbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5lbmFibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZW5hYmxlZCQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmFibGVkJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZm9jdXMgbGFzdCBlbGVtZW50IGluIGEgZm91bmQgYXJyYXkgb2YgZWxlbWVudHMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmb2N1c0xhc3RFbGVtZW50ID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VuYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VsbVJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJiYWJsZVNlcnZpY2U6IFRhYmJhYmxlRWxlbWVudFNlcnZpY2VcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZW5hYmxlZCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChlbmFibGVkKSA9PiBlbmFibGVkKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2V4ZWN1dGVPbkVtcHR5KCgpID0+IHRoaXMuX2ZvY3VzKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEV4ZWN1dGVzIGEgZnVuY3Rpb24gd2hlbiB0aGUgem9uZSBpcyBzdGFibGUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZXhlY3V0ZU9uRW1wdHkoZm46ICgpID0+IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX25nWm9uZS5oYXNQZW5kaW5nTWljcm90YXNrcykge1xuICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX25nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWFyY2hlcyBmb3IgYW4gYXBwcm9wcmlhdGUgZm9jdXNhYmxlIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGlmICghdGhpcy5mZGtJbml0aWFsRm9jdXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90YWJiYWJsZVNlcnZpY2UuZ2V0VGFiYmFibGVFbGVtZW50KHRoaXMuX2VsbVJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmZvY3VzTGFzdEVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXV0b0ZvY3VzYWJsZUl0ZW1zID0gdGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgIHRoaXMuZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICkgYXMgTm9kZUxpc3RPZjxIVE1MRWxlbWVudD47XG5cbiAgICAgICAgaWYgKGF1dG9Gb2N1c2FibGVJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuZm9jdXNMYXN0RWxlbWVudCA/IGF1dG9Gb2N1c2FibGVJdGVtc1swXSA6IGF1dG9Gb2N1c2FibGVJdGVtc1thdXRvRm9jdXNhYmxlSXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBubyBlbGVtZW50cyBmb3VuZCwgZmFsbGJhY2sgdG8gYSBmaXJzdCB0YWJiYWJsZSBlbGVtZW50LlxuICAgICAgICByZXR1cm4gdGhpcy5fdGFiYmFibGVTZXJ2aWNlLmdldFRhYmJhYmxlRWxlbWVudCh0aGlzLl9lbG1SZWYubmF0aXZlRWxlbWVudCwgdGhpcy5mb2N1c0xhc3RFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsbSA9IHRoaXMuX2dldEZvY3VzYWJsZUVsZW1lbnQoKTtcbiAgICAgICAgZWxtPy5mb2N1cygpO1xuICAgIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { InitialFocusDirective } from './initial-focus.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class InitialFocusModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: InitialFocusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: InitialFocusModule, imports: [InitialFocusDirective], exports: [InitialFocusDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: InitialFocusModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: InitialFocusModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [InitialFocusDirective],\n exports: [InitialFocusDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbC1mb2N1cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2luaXRpYWwtZm9jdXMvaW5pdGlhbC1mb2N1cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFbEU7OztHQUdHO0FBS0gsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0IsWUFIakIscUJBQXFCLGFBQ3JCLHFCQUFxQjsrR0FFdEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5pdGlhbEZvY3VzRGlyZWN0aXZlIH0gZnJvbSAnLi9pbml0aWFsLWZvY3VzLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBkaXJlY3QgaW1wb3J0cyBvZiBjb21wb25lbnRzIGFuZCBkaXJlY3RpdmVzLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtJbml0aWFsRm9jdXNEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJbml0aWFsRm9jdXNEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIEluaXRpYWxGb2N1c01vZHVsZSB7fVxuIl19","import { DestroyRef, Directive, ElementRef, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { intersectionObservable } from '../../functions';\nimport * as i0 from \"@angular/core\";\nexport class IntersectionSpyDirective {\n constructor() {\n /** Intersection offset in px. */\n this.offset = 20;\n /** Event emitted when intersection observer emits with the current element. */\n this.intersected = new EventEmitter();\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._elementRef = inject(ElementRef);\n }\n /** @hidden */\n ngOnInit() {\n intersectionObservable(this._elementRef.nativeElement, this.viewportOptions)\n .pipe(map((entries) => entries[0]), takeUntilDestroyed(this._destroyRef))\n .subscribe((entry) => {\n this.intersected.emit(entry.isIntersecting);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IntersectionSpyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: IntersectionSpyDirective, isStandalone: true, selector: \"[fdkIntersectionSpy]\", inputs: { offset: [\"fdkIntersectionSpy\", \"offset\"], viewportOptions: \"viewportOptions\" }, outputs: { intersected: \"intersected\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IntersectionSpyDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkIntersectionSpy]',\n standalone: true\n }]\n }], propDecorators: { offset: [{\n type: Input,\n args: ['fdkIntersectionSpy']\n }], viewportOptions: [{\n type: Input\n }], intersected: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJzZWN0aW9uLXNweS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2ludGVyc2VjdGlvbi1zcHkvaW50ZXJzZWN0aW9uLXNweS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQU16RCxNQUFNLE9BQU8sd0JBQXdCO0lBSnJDO1FBS0ksaUNBQWlDO1FBRWpDLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFLWiwrRUFBK0U7UUFFL0UsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTFDLGNBQWM7UUFDRyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsRCxjQUFjO1FBQ0csZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FhckQ7SUFYRyxjQUFjO0lBQ2QsUUFBUTtRQUNKLHNCQUFzQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUM7YUFDdkUsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzVCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDdkM7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDOzhHQTVCUSx3QkFBd0I7a0dBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBSUcsTUFBTTtzQkFETCxLQUFLO3VCQUFDLG9CQUFvQjtnQkFJM0IsZUFBZTtzQkFEZCxLQUFLO2dCQUtOLFdBQVc7c0JBRFYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpbnRlcnNlY3Rpb25PYnNlcnZhYmxlIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrSW50ZXJzZWN0aW9uU3B5XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJbnRlcnNlY3Rpb25TcHlEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKiBJbnRlcnNlY3Rpb24gb2Zmc2V0IGluIHB4LiAqL1xuICAgIEBJbnB1dCgnZmRrSW50ZXJzZWN0aW9uU3B5JylcbiAgICBvZmZzZXQgPSAyMDtcbiAgICAvKiogSW50ZXJzZWN0aW9uIG9ic2VydmVyIG9wdGlvbnMuICovXG4gICAgQElucHV0KClcbiAgICB2aWV3cG9ydE9wdGlvbnM6IEludGVyc2VjdGlvbk9ic2VydmVySW5pdDtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gaW50ZXJzZWN0aW9uIG9ic2VydmVyIGVtaXRzIHdpdGggdGhlIGN1cnJlbnQgZWxlbWVudC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBpbnRlcnNlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGludGVyc2VjdGlvbk9ic2VydmFibGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLnZpZXdwb3J0T3B0aW9ucylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoZW50cmllcykgPT4gZW50cmllc1swXSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChlbnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJzZWN0ZWQuZW1pdChlbnRyeS5pc0ludGVyc2VjdGluZyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { DestroyRef, Directive, ElementRef, EventEmitter, inject, Input, Output, Renderer2 } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\nimport * as i0 from \"@angular/core\";\nexport class LineClampTargetDirective {\n /** @hidden */\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n /**\n * Event with target instance for clamping\n */\n this.update = new EventEmitter();\n }\n /**\n * Native element of clamping target\n */\n get targetElement() {\n return this._elementRef.nativeElement;\n }\n /** @hidden */\n ngOnChanges() {\n this.update.emit(this);\n }\n /** @hidden */\n ngAfterViewInit() {\n this.update.emit(this);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: LineClampTargetDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: LineClampTargetDirective, isStandalone: true, selector: \"[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]\", inputs: { fdLineClampTargetText: \"fdLineClampTargetText\" }, outputs: { update: \"update\" }, exportAs: [\"fdLineClampTarget\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: LineClampTargetDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]',\n exportAs: 'fdLineClampTarget',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { fdLineClampTargetText: [{\n type: Input\n }], update: [{\n type: Output\n }] } });\nexport class LineClampDirective {\n /**\n * Count lines for clamping\n */\n set fdLineClampLines(value) {\n this._lineCount = coerceNumberProperty(value);\n }\n /** @hidden */\n /**\n * Root native element of clamping box\n */\n get rootElement() {\n return this._elementRef.nativeElement;\n }\n /** @hidden */\n constructor(_elementRef, _renderer) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n /**\n * Clamping state\n */\n this.fdLineclampState = false;\n /**\n * Event return count of lines from the target\n */\n this.lineCountUpdate = new EventEmitter();\n /** @hidden */\n this._isNativeSupport = true;\n /** @hidden */\n this.viewportSize$ = inject(ViewportSizeObservable);\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n }\n /** @hidden */\n ngAfterViewInit() {\n this._isNativeSupport = typeof this.rootElement.style.webkitLineClamp !== 'undefined';\n // need to use setTimeout to force recheck of parent elements\n setTimeout(() => {\n this._checkLineCount();\n });\n this.viewportSize$\n .pipe(distinctUntilChanged(), debounceTime(200), takeUntilDestroyed(this._destroyRef))\n .subscribe({\n next: () => this._checkLineCount()\n });\n }\n /** @hidden */\n ngOnChanges() {\n this.reset();\n this.refreshClamp();\n }\n /** @hidden */\n reset() {\n if (this._lineClampTarget) {\n this._lineClampTarget.textContent = this._originalText;\n }\n if (this._isNativeSupport) {\n this._resetNative();\n }\n }\n /** @hidden */\n refreshTarget(event) {\n this._lineClampTarget = event.targetElement;\n this._originalText = event.fdLineClampTargetText;\n this._checkLineCount();\n }\n /** @hidden */\n refreshClamp() {\n if (this.fdLineclampState && this._lineCount) {\n this.native();\n if (!this._isNativeSupport) {\n this._truncate();\n }\n }\n }\n /** @hidden\n * Truncate text in the target box, if browser not support lineclamp style\n */\n _truncate() {\n if (!this._lineClampTarget) {\n return;\n }\n const lineClampHeight = Math.ceil(this.getLineHeight() * this._lineCount);\n const ellipsisTextArray = this._originalText.split(' ');\n const ellipsisText = () => {\n if (this.rootElement.scrollHeight > lineClampHeight) {\n ellipsisTextArray.pop();\n this._lineClampTarget.textContent = ellipsisTextArray.join(' ') + '...';\n ellipsisText.call(this);\n }\n };\n ellipsisText();\n }\n /** @hidden\n * Get lineheight for rootelement, if browser not support lineclamp style\n */\n getLineHeight() {\n const lineHeight = window.getComputedStyle(this.rootElement, null).getPropertyValue('line-height');\n if (lineHeight === 'normal') {\n return parseInt(window.getComputedStyle(this.rootElement, null).getPropertyValue('font-size'), 10) * 1.25;\n }\n return parseFloat(lineHeight);\n }\n /** @hidden\n * Setup native styles for lineclamp text\n */\n native() {\n if (this._isNativeSupport) {\n this._renderer.setStyle(this.rootElement, 'display', '-webkit-box');\n this._renderer.setStyle(this.rootElement, 'overflow', 'hidden');\n this._renderer.setStyle(this.rootElement, 'text-overflow', 'ellipsis');\n this._renderer.setStyle(this.rootElement, '-webkit-box-orient', 'vertical');\n this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', `${this._lineCount}`);\n }\n }\n /** @hidden\n * Reset native styles for lineclamp text\n */\n _resetNative() {\n if (this._isNativeSupport) {\n this._renderer.setStyle(this.rootElement, 'display', '');\n this._renderer.setStyle(this.rootElement, 'overflow', '');\n this._renderer.setStyle(this.rootElement, 'text-overflow', '');\n this._renderer.setStyle(this.rootElement, '-webkit-box-orient', '');\n this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', '');\n }\n }\n /** @hidden */\n _checkLineCount() {\n if (!this.rootElement) {\n return;\n }\n const style = window.getComputedStyle(this.rootElement, null);\n this.reset();\n const fontSize = parseInt(style.getPropertyValue('font-size'), 10);\n const boxSizing = style.getPropertyValue('box-sizing');\n let height = parseInt(style.getPropertyValue('height'), 10);\n let lineHeight = parseFloat(style.getPropertyValue('line-height'));\n if (isNaN(lineHeight)) {\n lineHeight = fontSize * 1.2;\n }\n if (boxSizing === 'border-box') {\n const padding_top = parseInt(style.getPropertyValue('padding-top'), 10);\n const padding_bottom = parseInt(style.getPropertyValue('padding-bottom'), 10);\n const border_top = parseInt(style.getPropertyValue('border-top-width'), 10);\n const border_bottom = parseInt(style.getPropertyValue('border-bottom-width'), 10);\n height = height - padding_top - padding_bottom - border_top - border_bottom;\n }\n this.refreshClamp();\n this.lineCountUpdate.emit(Math.ceil(height / lineHeight));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: LineClampDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: LineClampDirective, isStandalone: true, selector: \"[fdkLineClamp]\", inputs: { fdLineClampLines: \"fdLineClampLines\", fdLineclampState: \"fdLineclampState\" }, outputs: { lineCountUpdate: \"lineCountUpdate\" }, exportAs: [\"fdLineClamp\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: LineClampDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkLineClamp]',\n exportAs: 'fdLineClamp',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { fdLineClampLines: [{\n type: Input\n }], fdLineclampState: [{\n type: Input\n }], lineCountUpdate: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jbGFtcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2xpbmUtY2xhbXAvbGluZS1jbGFtcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUVILFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQU8vRSxNQUFNLE9BQU8sd0JBQXdCO0lBWWpDLGNBQWM7SUFDZCxZQUE2QixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQU5wRDs7V0FFRztRQUNPLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQztJQUdULENBQUM7SUFFeEQ7O09BRUc7SUFDSCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQzFDLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7OEdBOUJRLHdCQUF3QjtrR0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrRUFBa0U7b0JBQzVFLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjsrRUFNRyxxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBTUksTUFBTTtzQkFBZixNQUFNOztBQTRCWCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCOztPQUVHO0lBQ0gsSUFDSSxnQkFBZ0IsQ0FBQyxLQUF1QjtRQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUErQkQsY0FBYztJQUNkOztPQUVHO0lBQ0gsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsY0FBYztJQUNkLFlBQ3FCLFdBQXVCLEVBQ3ZCLFNBQW9CO1FBRHBCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUF4Q3pDOztXQUVHO1FBRUgscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCOztXQUVHO1FBRUgsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBTzdDLGNBQWM7UUFDTixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFLaEMsY0FBYztRQUNOLGtCQUFhLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFdkQsY0FBYztRQUNOLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBY3RDLENBQUM7SUFFSixjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGVBQWUsS0FBSyxXQUFXLENBQUM7UUFFdEYsNkRBQTZEO1FBQzdELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYTthQUNiLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDckYsU0FBUyxDQUFDO1lBQ1AsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7U0FDckMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjO0lBQ2QsS0FBSztRQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzNELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxhQUFhLENBQUMsS0FBK0I7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMscUJBQXFCLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFBWTtRQUNSLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLFNBQVM7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDekIsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4RCxNQUFNLFlBQVksR0FBRyxHQUFTLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksR0FBRyxlQUFlLEVBQUUsQ0FBQztnQkFDbEQsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDeEUsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBQ0YsWUFBWSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNqQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxQixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDOUcsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNLLE1BQU07UUFDVixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxZQUFZO1FBQ2hCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLGVBQWU7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTlELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUViLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ25FLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDcEIsVUFBVSxHQUFHLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksU0FBUyxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQzdCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEUsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlFLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RSxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEYsTUFBTSxHQUFHLE1BQU0sR0FBRyxXQUFXLEdBQUcsY0FBYyxHQUFHLFVBQVUsR0FBRyxhQUFhLENBQUM7UUFDaEYsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7OEdBdkxRLGtCQUFrQjtrR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUw5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7dUdBTU8sZ0JBQWdCO3NCQURuQixLQUFLO2dCQVNOLGdCQUFnQjtzQkFEZixLQUFLO2dCQU9OLGVBQWU7c0JBRGQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvbnVsbGFibGUnO1xuaW1wb3J0IHsgVmlld3BvcnRTaXplT2JzZXJ2YWJsZSB9IGZyb20gJy4uLy4uL3Rva2Vucy92aWV3cG9ydC1zaXplLm9ic2VydmFibGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtMaW5lQ2xhbXBUYXJnZXRdLCBbZmRMaW5lQ2xhbXBUYXJnZXRdLCBbZmQtbGluZWNsYW1wLXRhcmdldF0nLFxuICAgIGV4cG9ydEFzOiAnZmRMaW5lQ2xhbXBUYXJnZXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTGluZUNsYW1wVGFyZ2V0RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBUYXJnZXQgdGV4dCBmb3IgY2xhbXBpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZkTGluZUNsYW1wVGFyZ2V0VGV4dDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2l0aCB0YXJnZXQgaW5zdGFuY2UgZm9yIGNsYW1waW5nXG4gICAgICovXG4gICAgQE91dHB1dCgpIHVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TGluZUNsYW1wVGFyZ2V0RGlyZWN0aXZlPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqXG4gICAgICogTmF0aXZlIGVsZW1lbnQgb2YgY2xhbXBpbmcgdGFyZ2V0XG4gICAgICovXG4gICAgZ2V0IHRhcmdldEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlLmVtaXQodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlLmVtaXQodGhpcyk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtMaW5lQ2xhbXBdJyxcbiAgICBleHBvcnRBczogJ2ZkTGluZUNsYW1wJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIExpbmVDbGFtcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICogQ291bnQgbGluZXMgZm9yIGNsYW1waW5nXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmRMaW5lQ2xhbXBMaW5lcyh2YWx1ZTogTnVsbGFibGU8bnVtYmVyPikge1xuICAgICAgICB0aGlzLl9saW5lQ291bnQgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xhbXBpbmcgc3RhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZkTGluZWNsYW1wU3RhdGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHJldHVybiBjb3VudCBvZiBsaW5lcyBmcm9tIHRoZSB0YXJnZXRcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBsaW5lQ291bnRVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGluZUNsYW1wVGFyZ2V0OiBIVE1MRWxlbWVudDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29yaWdpbmFsVGV4dDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc05hdGl2ZVN1cHBvcnQgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saW5lQ291bnQ6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSB2aWV3cG9ydFNpemUkID0gaW5qZWN0KFZpZXdwb3J0U2l6ZU9ic2VydmFibGUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICAvKipcbiAgICAgKiBSb290IG5hdGl2ZSBlbGVtZW50IG9mIGNsYW1waW5nIGJveFxuICAgICAqL1xuICAgIGdldCByb290RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc05hdGl2ZVN1cHBvcnQgPSB0eXBlb2YgdGhpcy5yb290RWxlbWVudC5zdHlsZS53ZWJraXRMaW5lQ2xhbXAgIT09ICd1bmRlZmluZWQnO1xuXG4gICAgICAgIC8vIG5lZWQgdG8gdXNlIHNldFRpbWVvdXQgdG8gZm9yY2UgcmVjaGVjayBvZiBwYXJlbnQgZWxlbWVudHNcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja0xpbmVDb3VudCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnZpZXdwb3J0U2l6ZSRcbiAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIGRlYm91bmNlVGltZSgyMDApLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB0aGlzLl9jaGVja0xpbmVDb3VudCgpXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMucmVmcmVzaENsYW1wKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2xpbmVDbGFtcFRhcmdldCkge1xuICAgICAgICAgICAgdGhpcy5fbGluZUNsYW1wVGFyZ2V0LnRleHRDb250ZW50ID0gdGhpcy5fb3JpZ2luYWxUZXh0O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9pc05hdGl2ZVN1cHBvcnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0TmF0aXZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZnJlc2hUYXJnZXQoZXZlbnQ6IExpbmVDbGFtcFRhcmdldERpcmVjdGl2ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saW5lQ2xhbXBUYXJnZXQgPSBldmVudC50YXJnZXRFbGVtZW50O1xuICAgICAgICB0aGlzLl9vcmlnaW5hbFRleHQgPSBldmVudC5mZExpbmVDbGFtcFRhcmdldFRleHQ7XG4gICAgICAgIHRoaXMuX2NoZWNrTGluZUNvdW50KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWZyZXNoQ2xhbXAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZkTGluZWNsYW1wU3RhdGUgJiYgdGhpcy5fbGluZUNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZSgpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc05hdGl2ZVN1cHBvcnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90cnVuY2F0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBUcnVuY2F0ZSB0ZXh0IGluIHRoZSB0YXJnZXQgYm94LCBpZiBicm93c2VyIG5vdCBzdXBwb3J0IGxpbmVjbGFtcCBzdHlsZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3RydW5jYXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2xpbmVDbGFtcFRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxpbmVDbGFtcEhlaWdodCA9IE1hdGguY2VpbCh0aGlzLmdldExpbmVIZWlnaHQoKSAqIHRoaXMuX2xpbmVDb3VudCk7XG4gICAgICAgIGNvbnN0IGVsbGlwc2lzVGV4dEFycmF5ID0gdGhpcy5fb3JpZ2luYWxUZXh0LnNwbGl0KCcgJyk7XG4gICAgICAgIGNvbnN0IGVsbGlwc2lzVGV4dCA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvb3RFbGVtZW50LnNjcm9sbEhlaWdodCA+IGxpbmVDbGFtcEhlaWdodCkge1xuICAgICAgICAgICAgICAgIGVsbGlwc2lzVGV4dEFycmF5LnBvcCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xpbmVDbGFtcFRhcmdldC50ZXh0Q29udGVudCA9IGVsbGlwc2lzVGV4dEFycmF5LmpvaW4oJyAnKSArICcuLi4nO1xuICAgICAgICAgICAgICAgIGVsbGlwc2lzVGV4dC5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBlbGxpcHNpc1RleHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIEdldCBsaW5laGVpZ2h0IGZvciByb290ZWxlbWVudCwgaWYgYnJvd3NlciBub3Qgc3VwcG9ydCBsaW5lY2xhbXAgc3R5bGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldExpbmVIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbGluZUhlaWdodCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2xpbmUtaGVpZ2h0Jyk7XG4gICAgICAgIGlmIChsaW5lSGVpZ2h0ID09PSAnbm9ybWFsJykge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAxMCkgKiAxLjI1O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobGluZUhlaWdodCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBTZXR1cCBuYXRpdmUgc3R5bGVzIGZvciBsaW5lY2xhbXAgdGV4dFxuICAgICAqL1xuICAgIHByaXZhdGUgbmF0aXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNOYXRpdmVTdXBwb3J0KSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAnZGlzcGxheScsICctd2Via2l0LWJveCcpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJ3RleHQtb3ZlcmZsb3cnLCAnZWxsaXBzaXMnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsICctd2Via2l0LWJveC1vcmllbnQnLCAndmVydGljYWwnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsICctd2Via2l0LWxpbmUtY2xhbXAnLCBgJHt0aGlzLl9saW5lQ291bnR9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFJlc2V0IG5hdGl2ZSBzdHlsZXMgZm9yIGxpbmVjbGFtcCB0ZXh0XG4gICAgICovXG4gICAgcHJpdmF0ZSBfcmVzZXROYXRpdmUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc05hdGl2ZVN1cHBvcnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsICdkaXNwbGF5JywgJycpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJ292ZXJmbG93JywgJycpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJ3RleHQtb3ZlcmZsb3cnLCAnJyk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAnLXdlYmtpdC1ib3gtb3JpZW50JywgJycpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJy13ZWJraXQtbGluZS1jbGFtcCcsICcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hlY2tMaW5lQ291bnQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5yb290RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5yb290RWxlbWVudCwgbnVsbCk7XG5cbiAgICAgICAgdGhpcy5yZXNldCgpO1xuXG4gICAgICAgIGNvbnN0IGZvbnRTaXplID0gcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJyksIDEwKTtcbiAgICAgICAgY29uc3QgYm94U2l6aW5nID0gc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm94LXNpemluZycpO1xuICAgICAgICBsZXQgaGVpZ2h0ID0gcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnaGVpZ2h0JyksIDEwKTtcbiAgICAgICAgbGV0IGxpbmVIZWlnaHQgPSBwYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2xpbmUtaGVpZ2h0JykpO1xuICAgICAgICBpZiAoaXNOYU4obGluZUhlaWdodCkpIHtcbiAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBmb250U2l6ZSAqIDEuMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm94U2l6aW5nID09PSAnYm9yZGVyLWJveCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhZGRpbmdfdG9wID0gcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy10b3AnKSwgMTApO1xuICAgICAgICAgICAgY29uc3QgcGFkZGluZ19ib3R0b20gPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWJvdHRvbScpLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBib3JkZXJfdG9wID0gcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXRvcC13aWR0aCcpLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBib3JkZXJfYm90dG9tID0gcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLWJvdHRvbS13aWR0aCcpLCAxMCk7XG4gICAgICAgICAgICBoZWlnaHQgPSBoZWlnaHQgLSBwYWRkaW5nX3RvcCAtIHBhZGRpbmdfYm90dG9tIC0gYm9yZGVyX3RvcCAtIGJvcmRlcl9ib3R0b207XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWZyZXNoQ2xhbXAoKTtcbiAgICAgICAgdGhpcy5saW5lQ291bnRVcGRhdGUuZW1pdChNYXRoLmNlaWwoaGVpZ2h0IC8gbGluZUhlaWdodCkpO1xuICAgIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { LineClampDirective, LineClampTargetDirective } from './line-clamp.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class LineClampModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: LineClampModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: LineClampModule, imports: [LineClampTargetDirective, LineClampDirective], exports: [LineClampTargetDirective, LineClampDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: LineClampModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: LineClampModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [LineClampTargetDirective, LineClampDirective],\n exports: [LineClampTargetDirective, LineClampDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jbGFtcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL2xpbmUtY2xhbXAvbGluZS1jbGFtcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFdEY7OztHQUdHO0FBS0gsTUFBTSxPQUFPLGVBQWU7OEdBQWYsZUFBZTsrR0FBZixlQUFlLFlBSGQsd0JBQXdCLEVBQUUsa0JBQWtCLGFBQzVDLHdCQUF3QixFQUFFLGtCQUFrQjsrR0FFN0MsZUFBZTs7MkZBQWYsZUFBZTtrQkFKM0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSxrQkFBa0IsQ0FBQztvQkFDdkQsT0FBTyxFQUFFLENBQUMsd0JBQXdCLEVBQUUsa0JBQWtCLENBQUM7aUJBQzFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTGluZUNsYW1wRGlyZWN0aXZlLCBMaW5lQ2xhbXBUYXJnZXREaXJlY3RpdmUgfSBmcm9tICcuL2xpbmUtY2xhbXAuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIGRpcmVjdCBpbXBvcnRzIG9mIGNvbXBvbmVudHMgYW5kIGRpcmVjdGl2ZXMuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0xpbmVDbGFtcFRhcmdldERpcmVjdGl2ZSwgTGluZUNsYW1wRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbTGluZUNsYW1wVGFyZ2V0RGlyZWN0aXZlLCBMaW5lQ2xhbXBEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIExpbmVDbGFtcE1vZHVsZSB7fVxuIl19","import { A, BACKSPACE, C, DASH, DELETE, DOWN_ARROW, END, ENTER, ESCAPE, HOME, LEFT_ARROW, NUMPAD_MINUS, RIGHT_ARROW, TAB, UP_ARROW, V, X } from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { KeyUtil } from '../../functions';\nimport * as i0 from \"@angular/core\";\nexport class OnlyDigitsDirective {\n /** @hidden */\n constructor(_el) {\n this._el = _el;\n /** Allow using decimal */\n this.decimal = false;\n /** Define decimal separator\n * Default: .(dot)\n */\n this.decimalSeparator = '.';\n /** @hidden */\n this._hasDecimalPoint = false;\n this._inputElement = this._el.nativeElement;\n }\n /** @hidden */\n onKeyDown(e) {\n if (\n // Allow: Delete, Backspace, Tab, Escape, Enter, End, Home, Arrow Left, Arrow Right, Arrow Up, Arrow Down\n KeyUtil.isKeyCode(e, [\n DELETE,\n BACKSPACE,\n TAB,\n ESCAPE,\n ENTER,\n END,\n HOME,\n LEFT_ARROW,\n RIGHT_ARROW,\n UP_ARROW,\n DOWN_ARROW\n ]) ||\n // Allow: Ctrl+(A/C/V/X) and Cmd+(A/C/V/X) (Mac)\n (KeyUtil.isKeyCode(e, [A, C, V, X]) && (e.ctrlKey || e.metaKey))) {\n return; // let it happen, don't do anything\n }\n if (KeyUtil.isKeyCode(e, [DASH, NUMPAD_MINUS])) {\n const newValue = this._forecastValue(e.key);\n if (this._inputElement.value[0] === '-' || newValue[0] !== '-') {\n e.preventDefault();\n return; // has DASH point\n }\n else {\n return; // Allow: only one DASH point\n }\n }\n if (this.decimal && e.key === this.decimalSeparator) {\n const newValue = this._forecastValue(e.key);\n if (newValue.split(this.decimalSeparator).length > 2) {\n // has two or more decimal points\n e.preventDefault();\n return;\n }\n else {\n this._hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;\n return; // Allow: only one decimal point\n }\n }\n // Ensure that it is a number and stop the keypress\n if (e.key === ' ' || isNaN(Number(e.key))) {\n e.preventDefault();\n return;\n }\n }\n /** @hidden */\n onPaste(event) {\n if (window['clipboardData']) {\n // Browser is IE\n this._pasteData(window['clipboardData'].getData('text'));\n }\n else if (event.clipboardData && event.clipboardData.getData) {\n // Other browsers\n this._pasteData(event.clipboardData.getData('text/plain'));\n }\n event.preventDefault();\n }\n /** @hidden */\n onDrop(event) {\n const textData = event.dataTransfer?.getData('text') ?? '';\n this._inputElement.focus();\n this._pasteData(textData);\n event.preventDefault();\n }\n /** @hidden */\n _pasteData(pastedContent) {\n const sanitizedContent = this._sanitizeInput(pastedContent);\n const pasted = document.execCommand('insertText', false, sanitizedContent);\n if (!pasted) {\n if (this._inputElement.setRangeText) {\n const { selectionStart: start, selectionEnd: end } = this._inputElement;\n this._inputElement.setRangeText(sanitizedContent, start ?? 0, end ?? 0, 'end');\n // Angular's Reactive Form relies on \"input\" event, but on Firefox, the setRangeText method doesn't trigger it\n // so we have to trigger it ourself.\n if (typeof window['InstallTrigger'] !== 'undefined') {\n this._inputElement.dispatchEvent(new Event('input', { cancelable: true }));\n }\n }\n else {\n // Browser does not support setRangeText, e.g. IE\n this._insertAtCursor(this._inputElement, sanitizedContent);\n }\n }\n if (this.decimal) {\n this._hasDecimalPoint = this._inputElement.value.indexOf(this.decimalSeparator) > -1;\n }\n }\n // The following 2 methods were added from the below article for browsers that do not support setRangeText\n // https://stackoverflow.com/questions/11076975/how-to-insert-text-into-the-textarea-at-the-current-cursor-position\n /** @hidden */\n _insertAtCursor(myField, myValue) {\n const startPos = myField.selectionStart ?? 0;\n const endPos = myField.selectionEnd ?? 0;\n myField.value =\n myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);\n const pos = startPos + myValue.length;\n myField.focus();\n myField.setSelectionRange(pos, pos);\n this._triggerEvent(myField, 'input');\n }\n /** @hidden */\n _triggerEvent(el, type) {\n if ('createEvent' in document) {\n // modern browsers, IE9+\n const e = document.createEvent('HTMLEvents');\n e.initEvent(type, false, true);\n el.dispatchEvent(e);\n }\n }\n // end stack overflow code\n /** @hidden */\n _sanitizeInput(input) {\n let result = '';\n if (this.decimal && this._isValidDecimal(input)) {\n const regex = new RegExp(`[^0-9${this.decimalSeparator}]`, 'g');\n result = input.replace(regex, '');\n }\n else {\n result = input.replace(/[^0-9]/g, '');\n }\n if (input[0] === '-') {\n result = `-${result}`;\n }\n const maxLength = this._inputElement.maxLength;\n if (maxLength > 0) {\n // the input element has maxLength limit\n const allowedLength = maxLength - this._inputElement.value.length;\n result = allowedLength > 0 ? result.substring(0, allowedLength) : '';\n }\n return result;\n }\n /** @hidden */\n _isValidDecimal(string) {\n if (!this._hasDecimalPoint) {\n return string.split(this.decimalSeparator).length <= 2;\n }\n else {\n // the input element already has a decimal separator\n const selectedText = this._getSelection;\n if (selectedText && selectedText.indexOf(this.decimalSeparator) > -1) {\n return string.split(this.decimalSeparator).length <= 2;\n }\n else {\n return string.indexOf(this.decimalSeparator) < 0;\n }\n }\n }\n /** @hidden */\n get _getSelection() {\n const { selectionStart, selectionEnd } = this._inputElement;\n return this._inputElement.value.substring(selectionStart ?? 0, selectionEnd ?? 0);\n }\n /** @hidden */\n _forecastValue(key) {\n const { selectionStart, selectionEnd, value: oldValue } = this._inputElement;\n const selection = oldValue.substring(selectionStart ?? 0, selectionEnd ?? 0);\n return selection\n ? oldValue.replace(selection, key)\n : oldValue.substring(0, selectionStart ?? 0) + key + oldValue.substring(selectionStart ?? 0);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: OnlyDigitsDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: OnlyDigitsDirective, isStandalone: true, selector: \"[fdkOnlyDigits]\", inputs: { decimal: \"decimal\", decimalSeparator: \"decimalSeparator\" }, host: { listeners: { \"keydown\": \"onKeyDown($event)\", \"paste\": \"onPaste($event)\", \"drop\": \"onDrop($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: OnlyDigitsDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkOnlyDigits]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { decimal: [{\n type: Input\n }], decimalSeparator: [{\n type: Input\n }], onKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], onPaste: [{\n type: HostListener,\n args: ['paste', ['$event']]\n }], onDrop: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25seS1kaWdpdHMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9vbmx5LWRpZ2l0cy9vbmx5LWRpZ2l0cy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILENBQUMsRUFDRCxTQUFTLEVBQ1QsQ0FBQyxFQUNELElBQUksRUFDSixNQUFNLEVBQ04sVUFBVSxFQUNWLEdBQUcsRUFDSCxLQUFLLEVBQ0wsTUFBTSxFQUNOLElBQUksRUFDSixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxHQUFHLEVBQ0gsUUFBUSxFQUNSLENBQUMsRUFDRCxDQUFDLEVBQ0osTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFNMUMsTUFBTSxPQUFPLG1CQUFtQjtJQWE1QixjQUFjO0lBQ2QsWUFBNkIsR0FBZTtRQUFmLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFiNUMsMEJBQTBCO1FBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDekI7O1dBRUc7UUFDTSxxQkFBZ0IsR0FBRyxHQUFHLENBQUM7UUFJaEMsY0FBYztRQUNOLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUk3QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBQ2hELENBQUM7SUFFRCxjQUFjO0lBRWQsU0FBUyxDQUFDLENBQWdCO1FBQ3RCO1FBQ0kseUdBQXlHO1FBQ3pHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFO1lBQ2pCLE1BQU07WUFDTixTQUFTO1lBQ1QsR0FBRztZQUNILE1BQU07WUFDTixLQUFLO1lBQ0ws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QUFjLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7OEdBM01RLG1CQUFtQjtrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjsrRUFHWSxPQUFPO3NCQUFmLEtBQUs7Z0JBSUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQWNOLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBd0RuQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWVqQyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBLFxuICAgIEJBQ0tTUEFDRSxcbiAgICBDLFxuICAgIERBU0gsXG4gICAgREVMRVRFLFxuICAgIERPV05fQVJST1csXG4gICAgRU5ELFxuICAgIEVOVEVSLFxuICAgIEVTQ0FQRSxcbiAgICBIT01FLFxuICAgIExFRlRfQVJST1csXG4gICAgTlVNUEFEX01JTlVTLFxuICAgIFJJR0hUX0FSUk9XLFxuICAgIFRBQixcbiAgICBVUF9BUlJPVyxcbiAgICBWLFxuICAgIFhcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2V5VXRpbCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka09ubHlEaWdpdHNdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE9ubHlEaWdpdHNEaXJlY3RpdmUge1xuICAgIC8qKiBBbGxvdyB1c2luZyBkZWNpbWFsICovXG4gICAgQElucHV0KCkgZGVjaW1hbCA9IGZhbHNlO1xuICAgIC8qKiBEZWZpbmUgZGVjaW1hbCBzZXBhcmF0b3JcbiAgICAgKiBEZWZhdWx0OiAuKGRvdClcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkZWNpbWFsU2VwYXJhdG9yID0gJy4nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYXNEZWNpbWFsUG9pbnQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfZWw6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50ID0gdGhpcy5fZWwubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIG9uS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIC8vIEFsbG93OiBEZWxldGUsIEJhY2tzcGFjZSwgVGFiLCBFc2NhcGUsIEVudGVyLCBFbmQsIEhvbWUsIEFycm93IExlZnQsIEFycm93IFJpZ2h0LCBBcnJvdyBVcCwgQXJyb3cgRG93blxuICAgICAgICAgICAgS2V5VXRpbC5pc0tleUNvZGUoZSwgW1xuICAgICAgICAgICAgICAgIERFTEVURSxcbiAgICAgICAgICAgICAgICBCQUNLU1BBQ0UsXG4gICAgICAgICAgICAgICAgVEFCLFxuICAgICAgICAgICAgICAgIEVTQ0FQRSxcbiAgICAgICAgICAgICAgICBFTlRFUixcbiAgICAgICAgICAgICAgICBFTkQsXG4gICAgICAgICAgICAgICAgSE9NRSxcbiAgICAgICAgICAgICAgICBMRUZUX0FSUk9XLFxuICAgICAgICAgICAgICAgIFJJR0hUX0FSUk9XLFxuICAgICAgICAgICAgICAgIFVQX0FSUk9XLFxuICAgICAgICAgICAgICAgIERPV05fQVJST1dcbiAgICAgICAgICAgIF0pIHx8XG4gICAgICAgICAgICAvLyBBbGxvdzogQ3RybCsoQS9DL1YvWCkgYW5kIENtZCsoQS9DL1YvWCkgKE1hYylcbiAgICAgICAgICAgIChLZXlVdGlsLmlzS2V5Q29kZShlLCBbQSwgQywgViwgWF0pICYmIChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47IC8vIGxldCBpdCBoYXBwZW4sIGRvbid0IGRvIGFueXRoaW5nXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZSwgW0RBU0gsIE5VTVBBRF9NSU5VU10pKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuX2ZvcmVjYXN0VmFsdWUoZS5rZXkpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5faW5wdXRFbGVtZW50LnZhbHVlWzBdID09PSAnLScgfHwgbmV3VmFsdWVbMF0gIT09ICctJykge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gaGFzIERBU0ggcG9pbnRcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBBbGxvdzogb25seSBvbmUgREFTSCBwb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGVjaW1hbCAmJiBlLmtleSA9PT0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuX2ZvcmVjYXN0VmFsdWUoZS5rZXkpO1xuICAgICAgICAgICAgaWYgKG5ld1ZhbHVlLnNwbGl0KHRoaXMuZGVjaW1hbFNlcGFyYXRvcikubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgICAgIC8vIGhhcyB0d28gb3IgbW9yZSBkZWNpbWFsIHBvaW50c1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhc0RlY2ltYWxQb2ludCA9IG5ld1ZhbHVlLmluZGV4T2YodGhpcy5kZWNpbWFsU2VwYXJhdG9yKSA+IC0xO1xuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gQWxsb3c6IG9ubHkgb25lIGRlY2ltYWwgcG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVuc3VyZSB0aGF0IGl0IGlzIGEgbnVtYmVyIGFuZCBzdG9wIHRoZSBrZXlwcmVzc1xuICAgICAgICBpZiAoZS5rZXkgPT09ICcgJyB8fCBpc05hTihOdW1iZXIoZS5rZXkpKSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pXG4gICAgb25QYXN0ZShldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh3aW5kb3dbJ2NsaXBib2FyZERhdGEnXSkge1xuICAgICAgICAgICAgLy8gQnJvd3NlciBpcyBJRVxuICAgICAgICAgICAgdGhpcy5fcGFzdGVEYXRhKHdpbmRvd1snY2xpcGJvYXJkRGF0YSddLmdldERhdGEoJ3RleHQnKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY2xpcGJvYXJkRGF0YSAmJiBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEpIHtcbiAgICAgICAgICAgIC8vIE90aGVyIGJyb3dzZXJzXG4gICAgICAgICAgICB0aGlzLl9wYXN0ZURhdGEoZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICAgIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRleHREYXRhID0gZXZlbnQuZGF0YVRyYW5zZmVyPy5nZXREYXRhKCd0ZXh0JykgPz8gJyc7XG4gICAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLl9wYXN0ZURhdGEodGV4dERhdGEpO1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wYXN0ZURhdGEocGFzdGVkQ29udGVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNhbml0aXplZENvbnRlbnQgPSB0aGlzLl9zYW5pdGl6ZUlucHV0KHBhc3RlZENvbnRlbnQpO1xuICAgICAgICBjb25zdCBwYXN0ZWQgPSBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0VGV4dCcsIGZhbHNlLCBzYW5pdGl6ZWRDb250ZW50KTtcbiAgICAgICAgaWYgKCFwYXN0ZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnQuc2V0UmFuZ2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzZWxlY3Rpb25TdGFydDogc3RhcnQsIHNlbGVjdGlvbkVuZDogZW5kIH0gPSB0aGlzLl9pbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnNldFJhbmdlVGV4dChzYW5pdGl6ZWRDb250ZW50LCBzdGFydCA/PyAwLCBlbmQgPz8gMCwgJ2VuZCcpO1xuICAgICAgICAgICAgICAgIC8vIEFuZ3VsYXIncyBSZWFjdGl2ZSBGb3JtIHJlbGllcyBvbiBcImlucHV0XCIgZXZlbnQsIGJ1dCBvbiBGaXJlZm94LCB0aGUgc2V0UmFuZ2VUZXh0IG1ldGhvZCBkb2Vzbid0IHRyaWdnZXIgaXRcbiAgICAgICAgICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIHRyaWdnZXIgaXQgb3Vyc2VsZi5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvd1snSW5zdGFsbFRyaWdnZXInXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsgY2FuY2VsYWJsZTogdHJ1ZSB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgc2V0UmFuZ2VUZXh0LCBlLmcuIElFXG4gICAgICAgICAgICAgICAgdGhpcy5faW5zZXJ0QXRDdXJzb3IodGhpcy5faW5wdXRFbGVtZW50LCBzYW5pdGl6ZWRDb250ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRlY2ltYWwpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhc0RlY2ltYWxQb2ludCA9IHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZS5pbmRleE9mKHRoaXMuZGVjaW1hbFNlcGFyYXRvcikgPiAtMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZSBmb2xsb3dpbmcgMiBtZXRob2RzIHdlcmUgYWRkZWQgZnJvbSB0aGUgYmVsb3cgYXJ0aWNsZSBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBzZXRSYW5nZVRleHRcbiAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMTA3Njk3NS9ob3ctdG8taW5zZXJ0LXRleHQtaW50by10aGUtdGV4dGFyZWEtYXQtdGhlLWN1cnJlbnQtY3Vyc29yLXBvc2l0aW9uXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbnNlcnRBdEN1cnNvcihteUZpZWxkOiBIVE1MSW5wdXRFbGVtZW50LCBteVZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3RhcnRQb3MgPSBteUZpZWxkLnNlbGVjdGlvblN0YXJ0ID8/IDA7XG4gICAgICAgIGNvbnN0IGVuZFBvcyA9IG15RmllbGQuc2VsZWN0aW9uRW5kID8/IDA7XG5cbiAgICAgICAgbXlGaWVsZC52YWx1ZSA9XG4gICAgICAgICAgICBteUZpZWxkLnZhbHVlLnN1YnN0cmluZygwLCBzdGFydFBvcykgKyBteVZhbHVlICsgbXlGaWVsZC52YWx1ZS5zdWJzdHJpbmcoZW5kUG9zLCBteUZpZWxkLnZhbHVlLmxlbmd0aCk7XG5cbiAgICAgICAgY29uc3QgcG9zID0gc3RhcnRQb3MgKyBteVZhbHVlLmxlbmd0aDtcbiAgICAgICAgbXlGaWVsZC5mb2N1cygpO1xuICAgICAgICBteUZpZWxkLnNldFNlbGVjdGlvblJhbmdlKHBvcywgcG9zKTtcblxuICAgICAgICB0aGlzLl90cmlnZ2VyRXZlbnQobXlGaWVsZCwgJ2lucHV0Jyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmlnZ2VyRXZlbnQoZWw6IEhUTUxJbnB1dEVsZW1lbnQsIHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoJ2NyZWF0ZUV2ZW50JyBpbiBkb2N1bWVudCkge1xuICAgICAgICAgICAgLy8gbW9kZXJuIGJyb3dzZXJzLCBJRTkrXG4gICAgICAgICAgICBjb25zdCBlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hUTUxFdmVudHMnKTtcbiAgICAgICAgICAgIGUuaW5pdEV2ZW50KHR5cGUsIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICAgIGVsLmRpc3BhdGNoRXZlbnQoZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gZW5kIHN0YWNrIG92ZXJmbG93IGNvZGVcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2FuaXRpemVJbnB1dChpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICBpZiAodGhpcy5kZWNpbWFsICYmIHRoaXMuX2lzVmFsaWREZWNpbWFsKGlucHV0KSkge1xuICAgICAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBbXjAtOSR7dGhpcy5kZWNpbWFsU2VwYXJhdG9yfV1gLCAnZycpO1xuICAgICAgICAgICAgcmVzdWx0ID0gaW5wdXQucmVwbGFjZShyZWdleCwgJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gaW5wdXQucmVwbGFjZSgvW14wLTldL2csICcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbnB1dFswXSA9PT0gJy0nKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBgLSR7cmVzdWx0fWA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSB0aGlzLl9pbnB1dEVsZW1lbnQubWF4TGVuZ3RoO1xuICAgICAgICBpZiAobWF4TGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gdGhlIGlucHV0IGVsZW1lbnQgaGFzIG1heExlbmd0aCBsaW1pdFxuICAgICAgICAgICAgY29uc3QgYWxsb3dlZExlbmd0aCA9IG1heExlbmd0aCAtIHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICByZXN1bHQgPSBhbGxvd2VkTGVuZ3RoID4gMCA/IHJlc3VsdC5zdWJzdHJpbmcoMCwgYWxsb3dlZExlbmd0aCkgOiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc1ZhbGlkRGVjaW1hbChzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuX2hhc0RlY2ltYWxQb2ludCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5zcGxpdCh0aGlzLmRlY2ltYWxTZXBhcmF0b3IpLmxlbmd0aCA8PSAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdGhlIGlucHV0IGVsZW1lbnQgYWxyZWFkeSBoYXMgYSBkZWNpbWFsIHNlcGFyYXRvclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gdGhpcy5fZ2V0U2VsZWN0aW9uO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkVGV4dCAmJiBzZWxlY3RlZFRleHQuaW5kZXhPZih0aGlzLmRlY2ltYWxTZXBhcmF0b3IpID4gLTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyaW5nLnNwbGl0KHRoaXMuZGVjaW1hbFNlcGFyYXRvcikubGVuZ3RoIDw9IDI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmcuaW5kZXhPZih0aGlzLmRlY2ltYWxTZXBhcmF0b3IpIDwgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX2dldFNlbGVjdGlvbigpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB7IHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQgfSA9IHRoaXMuX2lucHV0RWxlbWVudDtcblxuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50LnZhbHVlLnN1YnN0cmluZyhzZWxlY3Rpb25TdGFydCA/PyAwLCBzZWxlY3Rpb25FbmQgPz8gMCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb3JlY2FzdFZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kLCB2YWx1ZTogb2xkVmFsdWUgfSA9IHRoaXMuX2lucHV0RWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gb2xkVmFsdWUuc3Vic3RyaW5nKHNlbGVjdGlvblN0YXJ0ID8/IDAsIHNlbGVjdGlvbkVuZCA/PyAwKTtcblxuICAgICAgICByZXR1cm4gc2VsZWN0aW9uXG4gICAgICAgICAgICA/IG9sZFZhbHVlLnJlcGxhY2Uoc2VsZWN0aW9uLCBrZXkpXG4gICAgICAgICAgICA6IG9sZFZhbHVlLnN1YnN0cmluZygwLCBzZWxlY3Rpb25TdGFydCA/PyAwKSArIGtleSArIG9sZFZhbHVlLnN1YnN0cmluZyhzZWxlY3Rpb25TdGFydCA/PyAwKTtcbiAgICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport { OnlyDigitsDirective } from './only-digits.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class OnlyDigitsModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: OnlyDigitsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: OnlyDigitsModule, imports: [OnlyDigitsDirective], exports: [OnlyDigitsDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: OnlyDigitsModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: OnlyDigitsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [OnlyDigitsDirective],\n exports: [OnlyDigitsDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25seS1kaWdpdHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9vbmx5LWRpZ2l0cy9vbmx5LWRpZ2l0cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFFOUQ7OztHQUdHO0FBS0gsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsWUFIZixtQkFBbUIsYUFDbkIsbUJBQW1COytHQUVwQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBSjVCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQzlCLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ubHlEaWdpdHNEaXJlY3RpdmUgfSBmcm9tICcuL29ubHktZGlnaXRzLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBkaXJlY3QgaW1wb3J0cyBvZiBjb21wb25lbnRzIGFuZCBkaXJlY3RpdmVzLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtPbmx5RGlnaXRzRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbT25seURpZ2l0c0RpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgT25seURpZ2l0c01vZHVsZSB7fVxuIl19","import { Directive, ElementRef } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class OverflowListItemDirective {\n /** @hidden */\n constructor(el) {\n this.el = el;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: OverflowListItemDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: OverflowListItemDirective, isStandalone: true, selector: \"[fdkOverflowListItem]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: OverflowListItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkOverflowListItem]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctbGlzdC1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvb3ZlcmZsb3ctbGlzdC9vdmVyZmxvdy1saXN0LWl0ZW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU10RCxNQUFNLE9BQU8seUJBQXlCO0lBQ2xDLGNBQWM7SUFDZCxZQUFtQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtJQUFHLENBQUM7OEdBRjVCLHlCQUF5QjtrR0FBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtPdmVyZmxvd0xpc3RJdGVtXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBPdmVyZmxvd0xpc3RJdGVtRGlyZWN0aXZlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZikge31cbn1cbiJdfQ==","import { ContentChildren, DestroyRef, Directive, ElementRef, EventEmitter, Input, NgZone, Output, QueryList, inject } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\nimport * as i0 from \"@angular/core\";\nexport class OverflowListDirective {\n /** @hidden */\n constructor(_el, _ngZone) {\n this._el = _el;\n this._ngZone = _ngZone;\n /**\n * @description Offset to calculate correct position\n */\n this.overflowOffset = 0;\n /**\n * @description value of display property of existed list items\n */\n this.itemCssBlockValue = 'flex';\n /**\n * @description Emits when changed amount of extra items\n */\n this.overflowChanged = new EventEmitter();\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n }\n /** @hidden */\n ngAfterViewInit() {\n this.initResizeObserver();\n this.calculateOverflow();\n fromEvent(window, 'resize')\n .pipe(debounceTime(100))\n .subscribe(() => this.calculateOverflow());\n }\n /**\n * @description Get amount of extra items in current list\n * */\n getAmountOfExtraItems() {\n const elements = this.overflowItems.toArray().map((item) => item.el.nativeElement);\n const computed = getComputedStyle(this._el.nativeElement);\n const contentWidth = Math.floor(this._el.nativeElement.clientWidth -\n parseFloat(computed.paddingLeft || '0') -\n parseFloat(computed.paddingRight || '0'));\n if (contentWidth <= 0) {\n return 0;\n }\n return this._checkWidthWithOffset(elements, contentWidth);\n }\n /**\n * @description Ensuring that calculations run in the Angular zone\n */\n calculateOverflow() {\n this._ngZone.run(() => {\n setTimeout(() => {\n const elements = this.overflowItems.map((item) => item.el.nativeElement);\n const contentWidth = this._el.nativeElement.clientWidth;\n let totalWidth = 0;\n let overflowCount = 0;\n elements.forEach((elm) => {\n const elmWidth = elm.offsetWidth;\n totalWidth += elmWidth;\n if (totalWidth > contentWidth) {\n overflowCount++;\n }\n });\n this._calculateAmountOfOverflowedItems();\n }, 0);\n });\n }\n initResizeObserver() {\n this.observer = new ResizeObserver(() => {\n this._ngZone.run(() => this.calculateOverflow());\n });\n this.observer.observe(this._el.nativeElement);\n }\n /** @hidden */\n _calculateAmountOfOverflowedItems() {\n const extra = this.getAmountOfExtraItems();\n this.overflowChanged.emit(extra);\n }\n /**\n * @hidden\n * @param arrItems\n * @param containerWidth\n * @param checkWithOffset\n * */\n _checkWidthWithOffset(arrItems, containerWidth, checkWithOffset = false) {\n let itemsTotalWidth = 0;\n const parentWidth = checkWithOffset ? containerWidth - this.overflowOffset : containerWidth;\n arrItems.forEach((item) => {\n item.hidden = true;\n item.style.display = this.itemCssBlockValue;\n });\n for (let i = 0; i < arrItems.length; i++) {\n const item = arrItems[i];\n itemsTotalWidth += this.isRtl\n ? containerWidth - item.offsetLeft - itemsTotalWidth\n : Math.ceil(item.offsetWidth + item.offsetLeft - itemsTotalWidth);\n if (parentWidth < itemsTotalWidth) {\n this._clearTempStyles(arrItems);\n return checkWithOffset\n ? arrItems.length - i\n : this._checkWidthWithOffset(arrItems, containerWidth, true);\n }\n }\n this._clearTempStyles(arrItems);\n return 0;\n }\n /**\n * @param arrItems\n * @hidden\n * */\n _clearTempStyles(arrItems) {\n arrItems.forEach((item) => {\n item.hidden = false;\n item.style.removeProperty('display');\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: OverflowListDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: OverflowListDirective, isStandalone: true, selector: \"[fdkOverflowList]\", inputs: { overflowOffset: \"overflowOffset\", isRtl: \"isRtl\", itemCssBlockValue: \"itemCssBlockValue\" }, outputs: { overflowChanged: \"overflowChanged\" }, queries: [{ propertyName: \"overflowItems\", predicate: OverflowListItemDirective }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: OverflowListDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkOverflowList]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { overflowOffset: [{\n type: Input\n }], isRtl: [{\n type: Input\n }], itemCssBlockValue: [{\n type: Input\n }], overflowChanged: [{\n type: Output\n }], overflowItems: [{\n type: ContentChildren,\n args: [OverflowListItemDirective]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctbGlzdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL292ZXJmbG93LWxpc3Qvb3ZlcmZsb3ctbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGVBQWUsRUFDZixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFNM0UsTUFBTSxPQUFPLHFCQUFxQjtJQXFDOUIsY0FBYztJQUNkLFlBQ1ksR0FBZSxFQUNmLE9BQWU7UUFEZixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQ2YsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQXZDM0I7O1dBRUc7UUFFSCxtQkFBYyxHQUFHLENBQUMsQ0FBQztRQVFuQjs7V0FFRztRQUVILHNCQUFpQixHQUFHLE1BQU0sQ0FBQztRQUUzQjs7V0FFRztRQUVILG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFRbkUsY0FBYztRQUNHLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBUy9DLENBQUM7SUFFSixjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO2FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FB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RyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQTdKUSxxQkFBcUI7a0dBQXJCLHFCQUFxQixrUUE0QmIseUJBQXlCOzsyRkE1QmpDLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7b0dBTUcsY0FBYztzQkFEYixLQUFLO2dCQU9OLEtBQUs7c0JBREosS0FBSztnQkFPTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBT04sZUFBZTtzQkFEZCxNQUFNO2dCQU9QLGFBQWE7c0JBRFosZUFBZTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT3ZlcmZsb3dMaXN0SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vb3ZlcmZsb3ctbGlzdC1pdGVtLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka092ZXJmbG93TGlzdF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgT3ZlcmZsb3dMaXN0RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE9mZnNldCB0byBjYWxjdWxhdGUgY29ycmVjdCBwb3NpdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgb3ZlcmZsb3dPZmZzZXQgPSAwO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEZsYWcgcmVwcmVzZW50aW5nIHJ0bCBtb2RlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc1J0bDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiB2YWx1ZSBvZiBkaXNwbGF5IHByb3BlcnR5IG9mIGV4aXN0ZWQgbGlzdCBpdGVtc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXRlbUNzc0Jsb2NrVmFsdWUgPSAnZmxleCc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdHMgd2hlbiBjaGFuZ2VkIGFtb3VudCBvZiBleHRyYSBpdGVtc1xuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG92ZXJmbG93Q2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2VzIHRvIFF1ZXJ5TGlzdCBvZiBPdmVyZmxvd0xpc3RJdGVtRGlyZWN0aXZlXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihPdmVyZmxvd0xpc3RJdGVtRGlyZWN0aXZlKVxuICAgIG92ZXJmbG93SXRlbXM6IFF1ZXJ5TGlzdDxPdmVyZmxvd0xpc3RJdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBvYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9lbDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmVcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0UmVzaXplT2JzZXJ2ZXIoKTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVPdmVyZmxvdygpO1xuICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNhbGN1bGF0ZU92ZXJmbG93KCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgYW1vdW50IG9mIGV4dHJhIGl0ZW1zIGluIGN1cnJlbnQgbGlzdFxuICAgICAqICovXG4gICAgZ2V0QW1vdW50T2ZFeHRyYUl0ZW1zKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5vdmVyZmxvd0l0ZW1zLnRvQXJyYXkoKS5tYXAoKGl0ZW0pID0+IGl0ZW0uZWwubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGNvbXB1dGVkID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgY29uc3QgY29udGVudFdpZHRoID0gTWF0aC5mbG9vcihcbiAgICAgICAgICAgIHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggLVxuICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoY29tcHV0ZWQucGFkZGluZ0xlZnQgfHwgJzAnKSAtXG4gICAgICAgICAgICAgICAgcGFyc2VGbG9hdChjb21wdXRlZC5wYWRkaW5nUmlnaHQgfHwgJzAnKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjb250ZW50V2lkdGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tXaWR0aFdpdGhPZmZzZXQoZWxlbWVudHMsIGNvbnRlbnRXaWR0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVuc3VyaW5nIHRoYXQgY2FsY3VsYXRpb25zIHJ1biBpbiB0aGUgQW5ndWxhciB6b25lXG4gICAgICovXG4gICAgcHVibGljIGNhbGN1bGF0ZU92ZXJmbG93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5vdmVyZmxvd0l0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50V2lkdGggPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgbGV0IHRvdGFsV2lkdGggPSAwO1xuICAgICAgICAgICAgICAgIGxldCBvdmVyZmxvd0NvdW50ID0gMDtcblxuICAgICAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVsbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbG1XaWR0aCA9IGVsbS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgdG90YWxXaWR0aCArPSBlbG1XaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodG90YWxXaWR0aCA+IGNvbnRlbnRXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dDb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVBbW91bnRPZk92ZXJmbG93ZWRJdGVtcygpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFJlc2l6ZU9ic2VydmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5jYWxjdWxhdGVPdmVyZmxvdygpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUFtb3VudE9mT3ZlcmZsb3dlZEl0ZW1zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBleHRyYSA9IHRoaXMuZ2V0QW1vdW50T2ZFeHRyYUl0ZW1zKCk7XG4gICAgICAgIHRoaXMub3ZlcmZsb3dDaGFuZ2VkLmVtaXQoZXh0cmEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gYXJySXRlbXNcbiAgICAgKiBAcGFyYW0gY29udGFpbmVyV2lkdGhcbiAgICAgKiBAcGFyYW0gY2hlY2tXaXRoT2Zmc2V0XG4gICAgICogKi9cbiAgICBwcml2YXRlIF9jaGVja1dpZHRoV2l0aE9mZnNldChcbiAgICAgICAgYXJySXRlbXM6IEhUTUxFbGVtZW50W10sXG4gICAgICAgIGNvbnRhaW5lcldpZHRoOiBudW1iZXIsXG4gICAgICAgIGNoZWNrV2l0aE9mZnNldDogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGl0ZW1zVG90YWxXaWR0aCA9IDA7XG4gICAgICAgIGNvbnN0IHBhcmVudFdpZHRoID0gY2hlY2tXaXRoT2Zmc2V0ID8gY29udGFpbmVyV2lkdGggLSB0aGlzLm92ZXJmbG93T2Zmc2V0IDogY29udGFpbmVyV2lkdGg7XG5cbiAgICAgICAgYXJySXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgaXRlbS5zdHlsZS5kaXNwbGF5ID0gdGhpcy5pdGVtQ3NzQmxvY2tWYWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGFyckl0ZW1zW2ldO1xuXG4gICAgICAgICAgICBpdGVtc1RvdGFsV2lkdGggKz0gdGhpcy5pc1J0bFxuICAgICAgICAgICAgICAgID8gY29udGFpbmVyV2lkdGggLSBpdGVtLm9mZnNldExlZnQgLSBpdGVtc1RvdGFsV2lkdGhcbiAgICAgICAgICAgICAgICA6IE1hdGguY2VpbChpdGVtLm9mZnNldFdpZHRoICsgaXRlbS5vZmZzZXRMZWZ0IC0gaXRlbXNUb3RhbFdpZHRoKTtcblxuICAgICAgICAgICAgaWYgKHBhcmVudFdpZHRoIDwgaXRlbXNUb3RhbFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJUZW1wU3R5bGVzKGFyckl0ZW1zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tXaXRoT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgID8gYXJySXRlbXMubGVuZ3RoIC0gaVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2NoZWNrV2lkdGhXaXRoT2Zmc2V0KGFyckl0ZW1zLCBjb250YWluZXJXaWR0aCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jbGVhclRlbXBTdHlsZXMoYXJySXRlbXMpO1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gYXJySXRlbXNcbiAgICAgKiBAaGlkZGVuXG4gICAgICogKi9cbiAgICBwcml2YXRlIF9jbGVhclRlbXBTdHlsZXMoYXJySXRlbXM6IEhUTUxFbGVtZW50W10pOiB2b2lkIHtcbiAgICAgICAgYXJySXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGl0ZW0uc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2Rpc3BsYXknKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\nimport { OverflowListDirective } from './overflow-list.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class OverflowListModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: OverflowListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: OverflowListModule, imports: [OverflowListDirective, OverflowListItemDirective], exports: [OverflowListDirective, OverflowListItemDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: OverflowListModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: OverflowListModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [OverflowListDirective, OverflowListItemDirective],\n exports: [OverflowListDirective, OverflowListItemDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctbGlzdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL292ZXJmbG93LWxpc3Qvb3ZlcmZsb3ctbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFbEU7OztHQUdHO0FBS0gsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0IsWUFIakIscUJBQXFCLEVBQUUseUJBQXlCLGFBQ2hELHFCQUFxQixFQUFFLHlCQUF5QjsrR0FFakQsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFFLHlCQUF5QixDQUFDO29CQUMzRCxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSx5QkFBeUIsQ0FBQztpQkFDOUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPdmVyZmxvd0xpc3RJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9vdmVyZmxvdy1saXN0LWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IE92ZXJmbG93TGlzdERpcmVjdGl2ZSB9IGZyb20gJy4vb3ZlcmZsb3ctbGlzdC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgZGlyZWN0IGltcG9ydHMgb2YgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbT3ZlcmZsb3dMaXN0RGlyZWN0aXZlLCBPdmVyZmxvd0xpc3RJdGVtRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbT3ZlcmZsb3dMaXN0RGlyZWN0aXZlLCBPdmVyZmxvd0xpc3RJdGVtRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBPdmVyZmxvd0xpc3RNb2R1bGUge31cbiJdfQ==","import { getNativeElement } from '../../helpers/get-native-element';\n/** @Hidden */\nexport function setReadonlyState(element, isReadonly) {\n const htmlElement = getNativeElement(element);\n if (isReadonly) {\n htmlElement.classList.add('is-readonly');\n htmlElement.setAttribute('readonly', '');\n }\n else {\n htmlElement.classList.remove('is-readonly');\n htmlElement.removeAttribute('readonly');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LXJlYWRvbmx5LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9yZWFkb25seS9zZXQtcmVhZG9ubHktc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHcEUsY0FBYztBQUNkLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDNUIsT0FBK0QsRUFDL0QsVUFBbUI7SUFFbkIsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNiLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pDLFdBQVcsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7U0FBTSxDQUFDO1FBQ0osV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldE5hdGl2ZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2dldC1uYXRpdmUtZWxlbWVudCc7XG5pbXBvcnQgeyBIYXNFbGVtZW50UmVmIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9oYXMtZWxlbWVudC1yZWYuaW50ZXJmYWNlJztcblxuLyoqIEBIaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZWFkb25seVN0YXRlKFxuICAgIGVsZW1lbnQ6IEhhc0VsZW1lbnRSZWY8RWxlbWVudD4gfCBFbGVtZW50IHwgRWxlbWVudFJlZjxFbGVtZW50PixcbiAgICBpc1JlYWRvbmx5OiBib29sZWFuXG4pOiB2b2lkIHtcbiAgICBjb25zdCBodG1sRWxlbWVudCA9IGdldE5hdGl2ZUVsZW1lbnQoZWxlbWVudCk7XG4gICAgaWYgKGlzUmVhZG9ubHkpIHtcbiAgICAgICAgaHRtbEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnaXMtcmVhZG9ubHknKTtcbiAgICAgICAgaHRtbEVsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWFkb25seScsICcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBodG1sRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdpcy1yZWFkb25seScpO1xuICAgICAgICBodG1sRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3JlYWRvbmx5Jyk7XG4gICAgfVxufVxuIl19","import { setReadonlyState } from './set-readonly-state';\nexport class DefaultReadonlyViewModifier {\n /** @hidden */\n constructor(elementRef) {\n this.elementRef = elementRef;\n /** @hidden */\n this.setReadonlyState = (isDisabled) => {\n setReadonlyState(this.elementRef, isDisabled);\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1yZWFkb25seS12aWV3LW1vZGlmaWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9yZWFkb25seS9kZWZhdWx0LXJlYWRvbmx5LXZpZXctbW9kaWZpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsTUFBTSxPQUFPLDJCQUEyQjtJQUNwQyxjQUFjO0lBQ2QsWUFBb0IsVUFBK0I7UUFBL0IsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFFbkQsY0FBYztRQUNkLHFCQUFnQixHQUFHLENBQUMsVUFBbUIsRUFBUSxFQUFFO1lBQzdDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDO0lBTG9ELENBQUM7Q0FNMUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFkb25seVZpZXdNb2RpZmllciB9IGZyb20gJy4vcmVhZG9ubHktdmlldy1tb2RpZmllci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgc2V0UmVhZG9ubHlTdGF0ZSB9IGZyb20gJy4vc2V0LXJlYWRvbmx5LXN0YXRlJztcblxuZXhwb3J0IGNsYXNzIERlZmF1bHRSZWFkb25seVZpZXdNb2RpZmllciBpbXBsZW1lbnRzIFJlYWRvbmx5Vmlld01vZGlmaWVyIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxFbGVtZW50Pikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0UmVhZG9ubHlTdGF0ZSA9IChpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIHNldFJlYWRvbmx5U3RhdGUodGhpcy5lbGVtZW50UmVmLCBpc0Rpc2FibGVkKTtcbiAgICB9O1xufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const FDK_READONLY_DIRECTIVE = new InjectionToken('Readonly directive token');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmRrLXJlYWRvbmx5LnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9yZWFkb25seS9mZGstcmVhZG9ubHkudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEZES19SRUFET05MWV9ESVJFQ1RJVkUgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ1JlYWRvbmx5IGRpcmVjdGl2ZSB0b2tlbicpO1xuIl19","import { Injectable } from '@angular/core';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../services/observers/attribute.observer\";\nexport class ReadonlyObserver {\n /** @Hidden */\n constructor(_attributeObserver) {\n this._attributeObserver = _attributeObserver;\n }\n /** @Hidden */\n static isReadonly(element) {\n return element.classList.contains('is-readonly') || element.hasAttribute('readonly');\n }\n /** @hidden */\n observe(element) {\n return this._attributeObserver.observe(element).pipe(map(() => ReadonlyObserver.isReadonly(getNativeElement(element))), distinctUntilChanged());\n }\n /** @Hidden */\n unobserve(element) {\n this._attributeObserver.unobserve(element);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ReadonlyObserver, deps: [{ token: i1.AttributeObserver }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ReadonlyObserver, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ReadonlyObserver, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: () => [{ type: i1.AttributeObserver }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHkub2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL3JlYWRvbmx5L3JlYWRvbmx5Lm9ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7QUFLaEYsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixjQUFjO0lBQ2QsWUFBb0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7SUFBRyxDQUFDO0lBRTdELGNBQWM7SUFDZCxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQWdCO1FBQzlCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsY0FBYztJQUNkLE9BQU8sQ0FBQyxPQUErRDtRQUNuRSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNoRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFDakUsb0JBQW9CLEVBQUUsQ0FDekIsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO0lBQ2QsU0FBUyxDQUFDLE9BQStEO1FBQ3JFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0FwQlEsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGYixNQUFNOzsyRkFFVCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldE5hdGl2ZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2dldC1uYXRpdmUtZWxlbWVudCc7XG5pbXBvcnQgeyBIYXNFbGVtZW50UmVmIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9oYXMtZWxlbWVudC1yZWYuaW50ZXJmYWNlJztcbmltcG9ydCB7IEF0dHJpYnV0ZU9ic2VydmVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb2JzZXJ2ZXJzL2F0dHJpYnV0ZS5vYnNlcnZlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUmVhZG9ubHlPYnNlcnZlciB7XG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hdHRyaWJ1dGVPYnNlcnZlcjogQXR0cmlidXRlT2JzZXJ2ZXIpIHt9XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIHN0YXRpYyBpc1JlYWRvbmx5KGVsZW1lbnQ6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1yZWFkb25seScpIHx8IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdyZWFkb25seScpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb2JzZXJ2ZShlbGVtZW50OiBIYXNFbGVtZW50UmVmPEVsZW1lbnQ+IHwgRWxlbWVudCB8IEVsZW1lbnRSZWY8RWxlbWVudD4pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZU9ic2VydmVyLm9ic2VydmUoZWxlbWVudCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiBSZWFkb25seU9ic2VydmVyLmlzUmVhZG9ubHkoZ2V0TmF0aXZlRWxlbWVudChlbGVtZW50KSkpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgdW5vYnNlcnZlKGVsZW1lbnQ6IEhhc0VsZW1lbnRSZWY8RWxlbWVudD4gfCBFbGVtZW50IHwgRWxlbWVudFJlZjxFbGVtZW50Pik6IHZvaWQge1xuICAgICAgICB0aGlzLl9hdHRyaWJ1dGVPYnNlcnZlci51bm9ic2VydmUoZWxlbWVudCk7XG4gICAgfVxufVxuIl19","import { DestroyRef, ElementRef, Inject, Injectable, NgZone, Optional, Self, SkipSelf, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, ReplaySubject, combineLatest, firstValueFrom } from 'rxjs';\nimport { distinctUntilChanged, startWith, tap } from 'rxjs/operators';\nimport { DefaultReadonlyViewModifier } from './default-readonly-view-modifier';\nimport { FDK_READONLY_DIRECTIVE } from './fdk-readonly.token';\nimport { ReadonlyObserver } from './readonly.observer';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./readonly.observer\";\nexport class FdkReadonlyProvider extends ReplaySubject {\n /** @hidden */\n constructor(ngZone, elementRef, readonlyObserver, selfReadonly$, parentReadonly$) {\n super(1);\n this.ngZone = ngZone;\n this.elementRef = elementRef;\n this.readonlyObserver = readonlyObserver;\n this.selfReadonly$ = selfReadonly$;\n this.parentReadonly$ = parentReadonly$;\n /** @Hidden */\n this.fdkReadonly = false;\n /** @hidden */\n this._viewModifiers$ = new BehaviorSubject(this._getInitialViewModifiers());\n /** @hidden */\n this._readonlyChange$ = this._getReadonlyChange$();\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n combineLatest([this._readonlyChange$, this._viewModifiers$])\n .pipe(tap(([isReadonly]) => this.setReadonlyState(isReadonly)), takeUntilDestroyed(this._destroyRef))\n .subscribe();\n this._readonlyChange$\n .pipe(tap((isDisabled) => (this.fdkReadonly = isDisabled)), tap((isDisabled) => this.next(isDisabled)), takeUntilDestroyed(this._destroyRef))\n .subscribe();\n }\n /** @hidden */\n addViewModifier(modifier) {\n const viewModifiers = [...new Set([...this._viewModifiers$.value, modifier]).values()];\n this._viewModifiers$.next(viewModifiers);\n }\n /** @hidden */\n setReadonlyState(isReadonly) {\n firstValueFrom(this.ngZone.onStable).then(() => {\n this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setReadonlyState(isReadonly));\n });\n }\n /** @hidden */\n ngOnDestroy() {\n this.complete();\n this.readonlyObserver.unobserve(this.elementRef);\n }\n /** @hidden */\n _getReadonlyChange$() {\n let selfReadonly = false;\n let parentReadonly = false;\n if (this.parentReadonly$) {\n this.parentReadonly$\n .pipe(startWith(this.parentReadonly$.fdkReadonly), tap((d) => (parentReadonly = d)), distinctUntilChanged(), tap(() => {\n if (parentReadonly) {\n this.setReadonlyState(true);\n }\n if (!selfReadonly && !parentReadonly) {\n this.setReadonlyState(false);\n }\n }), takeUntilDestroyed(this._destroyRef))\n .subscribe();\n }\n if (this.selfReadonly$) {\n this.selfReadonly$\n .pipe(startWith(this.selfReadonly$.fdkReadonly), tap((d) => (selfReadonly = d)), distinctUntilChanged(), tap((isReadonly) => {\n if (!parentReadonly) {\n this.setReadonlyState(isReadonly);\n }\n }), takeUntilDestroyed(this._destroyRef))\n .subscribe();\n }\n return this.readonlyObserver.observe(this.elementRef).pipe(distinctUntilChanged());\n }\n /** @hidden */\n _getInitialViewModifiers() {\n return !this.selfReadonly$ ? [new DefaultReadonlyViewModifier(this.elementRef)] : [this.selfReadonly$];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdkReadonlyProvider, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.ReadonlyObserver }, { token: FDK_READONLY_DIRECTIVE, optional: true, self: true }, { token: FDK_READONLY_DIRECTIVE, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdkReadonlyProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdkReadonlyProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.ReadonlyObserver }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [FDK_READONLY_DIRECTIVE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [FDK_READONLY_DIRECTIVE]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmRrLXJlYWRvbmx5LXByb3ZpZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL3JlYWRvbmx5L2Zkay1yZWFkb25seS1wcm92aWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUVOLFFBQVEsRUFDUixJQUFJLEVBQ0osUUFBUSxFQUNSLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUd2RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBc0I7SUFlM0QsY0FBYztJQUNkLFlBQ1ksTUFBYyxFQUNkLFVBQStCLEVBQy9CLGdCQUFrQyxFQUNrQixhQUErQixFQUMzQixlQUFpQztRQUVqRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFORCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFDL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNrQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDM0Isb0JBQWUsR0FB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MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUNqRCxRQUFROzswQkFBSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBTa2lwU2VsZixcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEZWZhdWx0UmVhZG9ubHlWaWV3TW9kaWZpZXIgfSBmcm9tICcuL2RlZmF1bHQtcmVhZG9ubHktdmlldy1tb2RpZmllcic7XG5pbXBvcnQgeyBGREtfUkVBRE9OTFlfRElSRUNUSVZFIH0gZnJvbSAnLi9mZGstcmVhZG9ubHkudG9rZW4nO1xuaW1wb3J0IHsgUmVhZG9ubHlCZWhhdmlvciB9IGZyb20gJy4vcmVhZG9ubHktYmVoYXZpb3IuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlYWRvbmx5Vmlld01vZGlmaWVyIH0gZnJvbSAnLi9yZWFkb25seS12aWV3LW1vZGlmaWVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZWFkb25seU9ic2VydmVyIH0gZnJvbSAnLi9yZWFkb25seS5vYnNlcnZlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGZGtSZWFkb25seVByb3ZpZGVyIGV4dGVuZHMgUmVwbGF5U3ViamVjdDxib29sZWFuPiBpbXBsZW1lbnRzIFJlYWRvbmx5QmVoYXZpb3IsIE9uRGVzdHJveSB7XG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBmZGtSZWFkb25seSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF92aWV3TW9kaWZpZXJzJDogQmVoYXZpb3JTdWJqZWN0PFJlYWRvbmx5Vmlld01vZGlmaWVyW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICAgICAgUmVhZG9ubHlWaWV3TW9kaWZpZXJbXVxuICAgID4odGhpcy5fZ2V0SW5pdGlhbFZpZXdNb2RpZmllcnMoKSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlYWRvbmx5Q2hhbmdlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2dldFJlYWRvbmx5Q2hhbmdlJCgpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5T2JzZXJ2ZXI6IFJlYWRvbmx5T2JzZXJ2ZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChGREtfUkVBRE9OTFlfRElSRUNUSVZFKSBwcml2YXRlIHNlbGZSZWFkb25seSQ6IFJlYWRvbmx5QmVoYXZpb3IsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBJbmplY3QoRkRLX1JFQURPTkxZX0RJUkVDVElWRSkgcHJpdmF0ZSBwYXJlbnRSZWFkb25seSQ6IFJlYWRvbmx5QmVoYXZpb3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoMSk7XG5cbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5fcmVhZG9ubHlDaGFuZ2UkLCB0aGlzLl92aWV3TW9kaWZpZXJzJF0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKFtpc1JlYWRvbmx5XSkgPT4gdGhpcy5zZXRSZWFkb25seVN0YXRlKGlzUmVhZG9ubHkpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fcmVhZG9ubHlDaGFuZ2UkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKGlzRGlzYWJsZWQpID0+ICh0aGlzLmZka1JlYWRvbmx5ID0gaXNEaXNhYmxlZCkpLFxuICAgICAgICAgICAgICAgIHRhcCgoaXNEaXNhYmxlZCkgPT4gdGhpcy5uZXh0KGlzRGlzYWJsZWQpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFkZFZpZXdNb2RpZmllcihtb2RpZmllcjogUmVhZG9ubHlWaWV3TW9kaWZpZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgdmlld01vZGlmaWVycyA9IFsuLi5uZXcgU2V0KFsuLi50aGlzLl92aWV3TW9kaWZpZXJzJC52YWx1ZSwgbW9kaWZpZXJdKS52YWx1ZXMoKV07XG4gICAgICAgIHRoaXMuX3ZpZXdNb2RpZmllcnMkLm5leHQodmlld01vZGlmaWVycyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRSZWFkb25seVN0YXRlKGlzUmVhZG9ubHk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgZmlyc3RWYWx1ZUZyb20odGhpcy5uZ1pvbmUub25TdGFibGUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdmlld01vZGlmaWVycyQudmFsdWUuZm9yRWFjaCgodmlld01vZGlmaWVyKSA9PiB2aWV3TW9kaWZpZXIuc2V0UmVhZG9ubHlTdGF0ZShpc1JlYWRvbmx5KSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5yZWFkb25seU9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0UmVhZG9ubHlDaGFuZ2UkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBsZXQgc2VsZlJlYWRvbmx5ID0gZmFsc2U7XG4gICAgICAgIGxldCBwYXJlbnRSZWFkb25seSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLnBhcmVudFJlYWRvbmx5JCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRSZWFkb25seSRcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMucGFyZW50UmVhZG9ubHkkLmZka1JlYWRvbmx5KSxcbiAgICAgICAgICAgICAgICAgICAgdGFwKChkKSA9PiAocGFyZW50UmVhZG9ubHkgPSBkKSksXG4gICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50UmVhZG9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlYWRvbmx5U3RhdGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNlbGZSZWFkb25seSAmJiAhcGFyZW50UmVhZG9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlYWRvbmx5U3RhdGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zZWxmUmVhZG9ubHkkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGZSZWFkb25seSRcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuc2VsZlJlYWRvbmx5JC5mZGtSZWFkb25seSksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoZCkgPT4gKHNlbGZSZWFkb25seSA9IGQpKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICAgICAgdGFwKChpc1JlYWRvbmx5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudFJlYWRvbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZWFkb25seVN0YXRlKGlzUmVhZG9ubHkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWFkb25seU9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50UmVmKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0SW5pdGlhbFZpZXdNb2RpZmllcnMoKTogUmVhZG9ubHlWaWV3TW9kaWZpZXJbXSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5zZWxmUmVhZG9ubHkkID8gW25ldyBEZWZhdWx0UmVhZG9ubHlWaWV3TW9kaWZpZXIodGhpcy5lbGVtZW50UmVmKV0gOiBbdGhpcy5zZWxmUmVhZG9ubHkkXTtcbiAgICB9XG59XG4iXX0=","import { DestroyRef, Directive, ElementRef, Input, booleanAttribute } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FDK_READONLY_DIRECTIVE } from './fdk-readonly.token';\nimport { setReadonlyState } from './set-readonly-state';\nimport * as i0 from \"@angular/core\";\nexport class ReadonlyBehaviorDirective extends ReplaySubject {\n /** @Hidden */\n set fdkReadonly(value) {\n this._readonlyInput$.next(value);\n }\n get fdkReadonly() {\n return this._readonly;\n }\n /** @hidden */\n constructor(_elementRef, _destroyRef) {\n super(1);\n this._elementRef = _elementRef;\n this._destroyRef = _destroyRef;\n /** @Hidden */\n this._readonly = false;\n /** @hidden */\n this._readonlyInput$ = new BehaviorSubject(false);\n /** @Hidden */\n this.setReadonlyState = (isReadonly) => {\n setReadonlyState(this._elementRef, isReadonly);\n };\n this._destroyRef.onDestroy(() => this.complete());\n }\n /** @hidden */\n ngAfterViewInit() {\n this._readonlyInput$\n .pipe(tap((isReadonly) => {\n if (isReadonly !== this._readonly) {\n this.setReadonlyState(isReadonly);\n this._readonly = isReadonly;\n this.next(isReadonly);\n }\n }), takeUntilDestroyed(this._destroyRef))\n .subscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ReadonlyBehaviorDirective, deps: [{ token: i0.ElementRef }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.1.4\", type: ReadonlyBehaviorDirective, isStandalone: true, selector: \"[fdkReadonly]\", inputs: { fdkReadonly: [\"fdkReadonly\", \"fdkReadonly\", booleanAttribute] }, providers: [\n {\n provide: FDK_READONLY_DIRECTIVE,\n useExisting: ReadonlyBehaviorDirective\n }\n ], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ReadonlyBehaviorDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkReadonly]',\n standalone: true,\n providers: [\n {\n provide: FDK_READONLY_DIRECTIVE,\n useExisting: ReadonlyBehaviorDirective\n }\n ]\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.DestroyRef }], propDecorators: { fdkReadonly: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHktYmVoYXZpb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9yZWFkb25seS9yZWFkb25seS1iZWhhdmlvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQVl4RCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsYUFBc0I7SUFDakUsY0FBYztJQUNkLElBQ0ksV0FBVyxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBT0QsY0FBYztJQUNkLFlBQ1ksV0FBb0MsRUFDcEMsV0FBdUI7UUFFL0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBSEQsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBUm5DLGNBQWM7UUFDZCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGNBQWM7UUFDRyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBVzlELGNBQWM7UUFDZCxxQkFBZ0IsR0FBRyxDQUFDLFVBQW1CLEVBQVEsRUFBRTtZQUM3QyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQztRQU5FLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFPRCxjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksQ0FBQyxlQUFlO2FBQ2YsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ2YsSUFBSSxVQUFVLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO2dCQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzFCLENBQUM7UUFDTCxDQUFDLENBQUMsRUFDRixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQ3ZDO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQzs4R0E1Q1EseUJBQXlCO2tHQUF6Qix5QkFBeUIsdUdBRWQsZ0JBQWdCLGdCQVR6QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxzQkFBc0I7Z0JBQy9CLFdBQVcsRUFBRSx5QkFBeUI7YUFDekM7U0FDSjs7MkZBRVEseUJBQXlCO2tCQVZyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxzQkFBc0I7NEJBQy9CLFdBQVcsMkJBQTJCO3lCQUN6QztxQkFDSjtpQkFDSjt3R0FJTyxXQUFXO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBib29sZWFuQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZES19SRUFET05MWV9ESVJFQ1RJVkUgfSBmcm9tICcuL2Zkay1yZWFkb25seS50b2tlbic7XG5pbXBvcnQgeyBSZWFkb25seUJlaGF2aW9yIH0gZnJvbSAnLi9yZWFkb25seS1iZWhhdmlvci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgc2V0UmVhZG9ubHlTdGF0ZSB9IGZyb20gJy4vc2V0LXJlYWRvbmx5LXN0YXRlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrUmVhZG9ubHldJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGREtfUkVBRE9OTFlfRElSRUNUSVZFLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFJlYWRvbmx5QmVoYXZpb3JEaXJlY3RpdmVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUmVhZG9ubHlCZWhhdmlvckRpcmVjdGl2ZSBleHRlbmRzIFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4gaW1wbGVtZW50cyBSZWFkb25seUJlaGF2aW9yLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHNldCBmZGtSZWFkb25seSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yZWFkb25seUlucHV0JC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgZmRrUmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkb25seTtcbiAgICB9XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIF9yZWFkb25seSA9IGZhbHNlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVhZG9ubHlJbnB1dCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIF9kZXN0cm95UmVmOiBEZXN0cm95UmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKDEpO1xuICAgICAgICB0aGlzLl9kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLmNvbXBsZXRlKCkpO1xuICAgIH1cblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgc2V0UmVhZG9ubHlTdGF0ZSA9IChpc1JlYWRvbmx5OiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIHNldFJlYWRvbmx5U3RhdGUodGhpcy5fZWxlbWVudFJlZiwgaXNSZWFkb25seSk7XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZWFkb25seUlucHV0JFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChpc1JlYWRvbmx5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1JlYWRvbmx5ICE9PSB0aGlzLl9yZWFkb25seSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZWFkb25seVN0YXRlKGlzUmVhZG9ubHkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVhZG9ubHkgPSBpc1JlYWRvbmx5O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0KGlzUmVhZG9ubHkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { ReadonlyBehaviorDirective } from './readonly-behavior.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class ReadonlyBehaviorModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ReadonlyBehaviorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: ReadonlyBehaviorModule, imports: [ReadonlyBehaviorDirective], exports: [ReadonlyBehaviorDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ReadonlyBehaviorModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ReadonlyBehaviorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ReadonlyBehaviorDirective],\n exports: [ReadonlyBehaviorDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHktYmVoYXZpb3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9yZWFkb25seS9yZWFkb25seS1iZWhhdmlvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFMUU7OztHQUdHO0FBS0gsTUFBTSxPQUFPLHNCQUFzQjs4R0FBdEIsc0JBQXNCOytHQUF0QixzQkFBc0IsWUFIckIseUJBQXlCLGFBQ3pCLHlCQUF5QjsrR0FFMUIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQUpsQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUNwQyxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztpQkFDdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhZG9ubHlCZWhhdmlvckRpcmVjdGl2ZSB9IGZyb20gJy4vcmVhZG9ubHktYmVoYXZpb3IuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIGRpcmVjdCBpbXBvcnRzIG9mIGNvbXBvbmVudHMgYW5kIGRpcmVjdGl2ZXMuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1JlYWRvbmx5QmVoYXZpb3JEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtSZWFkb25seUJlaGF2aW9yRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBSZWFkb25seUJlaGF2aW9yTW9kdWxlIHt9XG4iXX0=","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Directive to repeatably render template N times.\n */\nexport class RepeatDirective {\n /** @hidden */\n constructor(_templateRef, _viewContainerRef) {\n this._templateRef = _templateRef;\n this._viewContainerRef = _viewContainerRef;\n }\n /** @hidden */\n ngOnChanges(changes) {\n if ((changes['count'] || changes['deprecatedCount']) && Number.isInteger(this.count)) {\n this._viewContainerRef.clear();\n for (let index = 0; index < Math.max(0, this.count); index++) {\n this._viewContainerRef.createEmbeddedView(this._templateRef, { index });\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RepeatDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: RepeatDirective, isStandalone: true, selector: \"[fdkRepeat]\", inputs: { count: [\"fdkRepeat\", \"count\"] }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RepeatDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkRepeat]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { count: [{\n type: Input,\n args: ['fdkRepeat']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvcmVwZWF0L3JlcGVhdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFMUc7O0dBRUc7QUFLSCxNQUFNLE9BQU8sZUFBZTtJQUt4QixjQUFjO0lBQ2QsWUFDcUIsWUFBOEIsRUFDOUIsaUJBQW1DO1FBRG5DLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO0lBQ3JELENBQUM7SUFFSixjQUFjO0lBQ2QsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25GLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUUvQixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUM1RSxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7OEdBcEJRLGVBQWU7a0dBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFKM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7aUJBQ25COytHQUlHLEtBQUs7c0JBREosS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0byByZXBlYXRhYmx5IHJlbmRlciB0ZW1wbGF0ZSBOIHRpbWVzLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtSZXBlYXRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFJlcGVhdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgLyoqIE51bWJlciBvZiB0aW1lcyB0byByZW5kZXIgYSB0ZW1wbGF0ZS4gKi9cbiAgICBASW5wdXQoJ2Zka1JlcGVhdCcpXG4gICAgY291bnQ6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3RlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICgoY2hhbmdlc1snY291bnQnXSB8fCBjaGFuZ2VzWydkZXByZWNhdGVkQ291bnQnXSkgJiYgTnVtYmVyLmlzSW50ZWdlcih0aGlzLmNvdW50KSkge1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgTWF0aC5tYXgoMCwgdGhpcy5jb3VudCk7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZiwgeyBpbmRleCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { RepeatDirective } from './repeat.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class RepeatModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RepeatModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: RepeatModule, imports: [RepeatDirective], exports: [RepeatDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RepeatModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RepeatModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [RepeatDirective],\n exports: [RepeatDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvcmVwZWF0L3JlcGVhdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRXJEOzs7R0FHRztBQUtILE1BQU0sT0FBTyxZQUFZOzhHQUFaLFlBQVk7K0dBQVosWUFBWSxZQUhYLGVBQWUsYUFDZixlQUFlOytHQUVoQixZQUFZOzsyRkFBWixZQUFZO2tCQUp4QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDMUIsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDO2lCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlcGVhdERpcmVjdGl2ZSB9IGZyb20gJy4vcmVwZWF0LmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBkaXJlY3QgaW1wb3J0cyBvZiBjb21wb25lbnRzIGFuZCBkaXJlY3RpdmVzLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtSZXBlYXREaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtSZXBlYXREaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIFJlcGVhdE1vZHVsZSB7fVxuIl19","import { Directive, ElementRef, inject, Output } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ResizeObserverService } from '../../services/resize-observer.service';\nimport * as i0 from \"@angular/core\";\nexport class ResizeObserverDirective {\n /** @hidden */\n constructor() {\n /**\n * The reference to the Resize target element.\n **/\n this.elementRef = inject(ElementRef);\n /** @hidden */\n this._resizeObserverService = inject(ResizeObserverService);\n this.resized = this._resizeObserverService.observe(this.elementRef.nativeElement);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeObserverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: ResizeObserverDirective, isStandalone: true, selector: \"[fdkResizeObserver]\", outputs: { resized: \"resized\" }, exportAs: [\"fdkResizeObserver\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeObserverDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkResizeObserver]',\n exportAs: 'fdkResizeObserver',\n standalone: true\n }]\n }], ctorParameters: () => [], propDecorators: { resized: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvcmVzaXplLW9ic2VydmVyL3Jlc2l6ZS1vYnNlcnZlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOztBQU8vRSxNQUFNLE9BQU8sdUJBQXVCO0lBZWhDLGNBQWM7SUFDZDtRQVRBOztZQUVJO1FBQ0osZUFBVSxHQUE0QixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekQsY0FBYztRQUNOLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBSTNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7OEdBbEJRLHVCQUF1QjtrR0FBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjt3REFNRyxPQUFPO3NCQUROLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIYXNFbGVtZW50UmVmIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXNpemUtb2JzZXJ2ZXIuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka1Jlc2l6ZU9ic2VydmVyXScsXG4gICAgZXhwb3J0QXM6ICdmZGtSZXNpemVPYnNlcnZlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBSZXNpemVPYnNlcnZlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEhhc0VsZW1lbnRSZWYge1xuICAgIC8qKlxuICAgICAqIFdoZW4gdGhlIGVsZW1lbnQgaXMgcmVzaXplZCwgZW1pdHMgYW4gYXJyYXkgb2YgUmVzaXplT2JzZXJ2ZXJFbnRyeSBvYmplY3RzLlxuICAgICAqKi9cbiAgICBAT3V0cHV0KClcbiAgICByZXNpemVkOiBPYnNlcnZhYmxlPFJlc2l6ZU9ic2VydmVyRW50cnlbXT47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcmVmZXJlbmNlIHRvIHRoZSBSZXNpemUgdGFyZ2V0IGVsZW1lbnQuXG4gICAgICoqL1xuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNpemVPYnNlcnZlclNlcnZpY2UgPSBpbmplY3QoUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucmVzaXplZCA9IHRoaXMuX3Jlc2l6ZU9ic2VydmVyU2VydmljZS5vYnNlcnZlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG59XG4iXX0=","import { Directive, ElementRef } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ResizeHandleDirective {\n /** @hidden */\n constructor(elementRef) {\n this.elementRef = elementRef;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeHandleDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: ResizeHandleDirective, isStandalone: true, selector: \"[fdkResizeHandle]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeHandleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkResizeHandle]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWhhbmRsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL3Jlc2l6ZS9yZXNpemUtaGFuZGxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNdEQsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixjQUFjO0lBQ2QsWUFBbUIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFHLENBQUM7OEdBRnBDLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtSZXNpemVIYW5kbGVdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6ZUhhbmRsZURpcmVjdGl2ZSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cbn1cbiJdfQ==","import { ContentChild, Directive, ElementRef, EventEmitter, Input, Optional, Output, computed } from '@angular/core';\nimport { Subscription, fromEvent, merge } from 'rxjs';\nimport { filter, map, pairwise, takeUntil, tap } from 'rxjs/operators';\nimport { RtlService } from '../../services/rtl.service';\nimport { ResizeHandleDirective } from './resize-handle.directive';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../services/rtl.service\";\nexport class ResizeDirective {\n /** Resize handle reference - should be used if Resize handle is not a ContentChild of resizable container */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set setResizeHandleReference(value) {\n this.resizeHandleReference = value;\n }\n /** @hidden Reference to Resize handle */\n set resizeHandleReference(value) {\n this._resizeHandleReference = value;\n if (!value) {\n this._unsubscribe();\n }\n else {\n this._setResizeListeners();\n }\n }\n get resizeHandleReference() {\n return this._resizeHandleReference;\n }\n /** @hidden */\n constructor(_elementRef, _rtlService) {\n this._elementRef = _elementRef;\n this._rtlService = _rtlService;\n /** Element limiting resizable container growth */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n this.resizeBoundary = 'body';\n /** Whether resizable behaviour should be disabled */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n this.disabled = false;\n /** Localization of resize handle inside resizable container */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n this.resizeHandleLocation = 'bottom-right';\n /** Emits event when resizing has tarted */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onResizeStart = new EventEmitter();\n /** Emits event when resizing has ended */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n this.onResizeEnd = new EventEmitter();\n /** @hidden */\n this._subscriptions = new Subscription();\n /** @hidden */\n this._resizeSubscriptions = new Subscription();\n /** @hidden */\n this._direction$ = computed(() => (this._rtlService?.rtlSignal() ? -1 : 1), ...(ngDevMode ? [{ debugName: \"_direction$\" }] : []));\n }\n /** @hidden */\n ngOnChanges(changes) {\n if (changes['disabled']) {\n if (changes['disabled'].previousValue === false && changes['disabled'].currentValue === true) {\n this._unsubscribe();\n }\n else if (changes['disabled'].previousValue === true && changes['disabled'].currentValue === false) {\n this._setResizeListeners();\n }\n }\n }\n /** @hidden */\n ngAfterViewInit() {\n if (!this.disabled) {\n this._setResizeListeners();\n }\n }\n /** @hidden */\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n this._resizeSubscriptions.unsubscribe();\n }\n /** @hidden */\n _unsubscribe() {\n this._resizeSubscriptions.unsubscribe();\n this._resizeSubscriptions = new Subscription();\n }\n /** @hidden Sets Resize listeners */\n _setResizeListeners() {\n this._unsubscribe();\n const resize = this._getResizeFunction();\n let moveOffset = this._getMoveOffsetFunction();\n const resizeContainer = this._findResizeContainer();\n if (!resizeContainer || !this.resizeHandleReference) {\n return;\n }\n const isBoundaryOverflow = this._getBoundaryOverflowFunction(resizeContainer);\n const mouseUpEvent$ = fromEvent(window, 'mouseup');\n const mouseMoveEvent$ = fromEvent(resizeContainer, 'mousemove');\n const mouseDownEvent$ = fromEvent(this.resizeHandleReference.elementRef.nativeElement, 'mousedown');\n const resizeActive$ = merge(mouseDownEvent$.pipe(map(() => true), tap(() => {\n moveOffset = this._getMoveOffsetFunction();\n })), mouseUpEvent$.pipe(map(() => false)));\n const emitResizableEvents$ = this._getResizeEventsNotifiers(resizeActive$);\n const preventOtherPointerEvents$ = this._blockOtherPointerEvents(resizeActive$);\n const resizingCursorMovement$ = mouseMoveEvent$.pipe(pairwise(), map(([event1, event2]) => moveOffset(event1, event2)), filter((move) => isBoundaryOverflow(move)));\n const setupResizer = () => {\n resizingCursorMovement$.pipe(takeUntil(mouseUpEvent$)).subscribe((event) => resize(event));\n };\n const setupResize$ = resizeActive$.pipe(filter((isActive) => isActive), tap(() => setupResizer()));\n this._resizeSubscriptions.add(setupResize$.subscribe());\n this._resizeSubscriptions.add(emitResizableEvents$.subscribe());\n this._resizeSubscriptions.add(preventOtherPointerEvents$.subscribe());\n }\n /** @hidden Creates resize function*/\n _getResizeFunction() {\n return (move) => {\n this._elementRef.nativeElement.style.width = `${this._elementRef.nativeElement.offsetWidth + move.x}px`;\n this._elementRef.nativeElement.style.height = `${this._elementRef.nativeElement.offsetHeight + move.y}px`;\n };\n }\n /** @hidden Creates move function */\n _getMoveOffsetFunction() {\n let verticalModifier;\n let horizontalModifier;\n switch (this.resizeHandleLocation) {\n case 'top-left':\n horizontalModifier = -1;\n verticalModifier = -1;\n break;\n case 'top-right':\n horizontalModifier = -1;\n verticalModifier = 1;\n break;\n case 'bottom-left':\n horizontalModifier = 1;\n verticalModifier = -1;\n break;\n case 'bottom-right':\n horizontalModifier = 1;\n verticalModifier = 1;\n break;\n }\n return (event1, event2) => {\n const x = (event2.screenX - event1.screenX) * this._direction$();\n const y = event2.screenY - event1.screenY;\n return {\n x: x * verticalModifier,\n y: y * horizontalModifier\n };\n };\n }\n /** @hidden Return boundary container */\n _findResizeContainer() {\n let resizeContainer;\n if (typeof this.resizeBoundary === 'string') {\n if (this.resizeBoundary === 'body') {\n return document.body;\n }\n resizeContainer = this._elementRef.nativeElement.closest(this.resizeBoundary);\n }\n else {\n resizeContainer = this.resizeBoundary;\n }\n if (resizeContainer) {\n return resizeContainer;\n }\n else {\n console.warn(`fdResize - Cannot find \"${this.resizeBoundary}\", falling back to \"body\"`);\n return document.body;\n }\n }\n /** @hidden Check whether resizable container is overflowing boundary container */\n _getBoundaryOverflowFunction(resizeContainer) {\n return (move) => {\n const containerPosition = resizeContainer.getBoundingClientRect();\n const elementPosition = this._elementRef.nativeElement.getBoundingClientRect();\n switch (this.resizeHandleLocation) {\n case 'top-left':\n return (containerPosition.top < elementPosition.top + move.y &&\n containerPosition.left < elementPosition.left + move.x);\n case 'top-right':\n return (containerPosition.top < elementPosition.top + move.y &&\n containerPosition.right > elementPosition.right + move.x);\n case 'bottom-left':\n return (containerPosition.bottom > elementPosition.bottom + move.y &&\n containerPosition.left < elementPosition.left + move.x);\n case 'bottom-right':\n return (containerPosition.bottom > elementPosition.bottom + move.y &&\n containerPosition.right > elementPosition.right + move.x);\n }\n };\n }\n /** @hidden Create Observable notifying on resize actions */\n _getResizeEventsNotifiers(trigger$) {\n const emitResizableStart$ = trigger$.pipe(filter((isActive) => isActive), tap(() => this.onResizeStart.emit()));\n const emitResizableEnd$ = trigger$.pipe(filter((isActive) => !isActive), tap(() => this.onResizeEnd.emit()));\n return merge(emitResizableStart$, emitResizableEnd$);\n }\n /** @hidden Block resizable container pointer events when resizing */\n _blockOtherPointerEvents(trigger$) {\n return trigger$.pipe(tap((isActive) => {\n if (!this.fdkResizeClass) {\n return;\n }\n if (!isActive) {\n this._elementRef.nativeElement.classList.remove(this.fdkResizeClass);\n }\n else {\n this._elementRef.nativeElement.classList.add(this.fdkResizeClass);\n }\n }), map((isActive) => (isActive ? 'none' : 'auto')), tap((value) => {\n this._elementRef.nativeElement.style.pointerEvents = value;\n }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeDirective, deps: [{ token: i0.ElementRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: ResizeDirective, isStandalone: true, selector: \"[fdkResize]\", inputs: { resizeBoundary: [\"fdkResizeBoundary\", \"resizeBoundary\"], disabled: [\"fdkResizeDisabled\", \"disabled\"], fdkResizeClass: \"fdkResizeClass\", resizeHandleLocation: [\"fdkResizeHandleLocation\", \"resizeHandleLocation\"], setResizeHandleReference: [\"fdkResizeResizeHandleRef\", \"setResizeHandleReference\"] }, outputs: { onResizeStart: \"onResizeStart\", onResizeEnd: \"onResizeEnd\" }, queries: [{ propertyName: \"resizeHandleReference\", first: true, predicate: ResizeHandleDirective, descendants: true }], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkResize]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.RtlService, decorators: [{\n type: Optional\n }] }], propDecorators: { resizeBoundary: [{\n type: Input,\n args: ['fdkResizeBoundary']\n }], disabled: [{\n type: Input,\n args: ['fdkResizeDisabled']\n }], fdkResizeClass: [{\n type: Input\n }], resizeHandleLocation: [{\n type: Input,\n args: ['fdkResizeHandleLocation']\n }], setResizeHandleReference: [{\n type: Input,\n args: ['fdkResizeResizeHandleRef']\n }], onResizeStart: [{\n type: Output\n }], onResizeEnd: [{\n type: Output\n }], resizeHandleReference: [{\n type: ContentChild,\n args: [ResizeHandleDirective, { static: false }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvcmVzaXplL3Jlc2l6ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFFTixRQUFRLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFXbEUsTUFBTSxPQUFPLGVBQWU7SUFrQnhCLDZHQUE2RztJQUM3RywyREFBMkQ7SUFDM0QsSUFBdUMsd0JBQXdCLENBQUMsS0FBNEI7UUFDeEYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBVUQseUNBQXlDO0lBQ3pDLElBQ0kscUJBQXFCLENBQUMsS0FBc0M7UUFDNUQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMvQixDQUFDO0lBQ0wsQ0FBQztJQUNELElBQUkscUJBQXFCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixD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LENBQUMsY0FBYyxDQUFDLENBQUM7WUFDekUsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7UUFDTCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQy9DLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7OEdBM1FRLGVBQWU7a0dBQWYsZUFBZSxzZkFpQ1YscUJBQXFCOzsyRkFqQzFCLGVBQWU7a0JBSjNCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBOERRLFFBQVE7eUNBMURlLGNBQWM7c0JBQXpDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUlFLFFBQVE7c0JBQW5DLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUkxQixjQUFjO3NCQURiLEtBQUs7Z0JBSzRCLG9CQUFvQjtzQkFBckQsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBS08sd0JBQXdCO3NCQUE5RCxLQUFLO3VCQUFDLDBCQUEwQjtnQkFNdkIsYUFBYTtzQkFBdEIsTUFBTTtnQkFJRyxXQUFXO3NCQUFwQixNQUFNO2dCQUlILHFCQUFxQjtzQkFEeEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIGNvbXB1dGVkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgcGFpcndpc2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvbnVsbGFibGUnO1xuaW1wb3J0IHsgUnRsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3J0bC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc2l6ZUhhbmRsZURpcmVjdGl2ZSB9IGZyb20gJy4vcmVzaXplLWhhbmRsZS5kaXJlY3RpdmUnO1xuXG5pbnRlcmZhY2UgUmVzaXplTW92ZSB7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrUmVzaXplXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBSZXNpemVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIEVsZW1lbnQgbGltaXRpbmcgcmVzaXphYmxlIGNvbnRhaW5lciBncm93dGggKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIEBJbnB1dCgnZmRrUmVzaXplQm91bmRhcnknKSByZXNpemVCb3VuZGFyeTogc3RyaW5nIHwgSFRNTEVsZW1lbnQgPSAnYm9keSc7XG5cbiAgICAvKiogV2hldGhlciByZXNpemFibGUgYmVoYXZpb3VyIHNob3VsZCBiZSBkaXNhYmxlZCAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdmZGtSZXNpemVEaXNhYmxlZCcpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogQWRkaXRpb25hbCBjbGFzcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBFbGVtZW50IHJlZiBkdXJpbmcgcmVzaXplLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmRrUmVzaXplQ2xhc3M6IHN0cmluZztcblxuICAgIC8qKiBMb2NhbGl6YXRpb24gb2YgcmVzaXplIGhhbmRsZSBpbnNpZGUgcmVzaXphYmxlIGNvbnRhaW5lciAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdmZGtSZXNpemVIYW5kbGVMb2NhdGlvbicpIHJlc2l6ZUhhbmRsZUxvY2F0aW9uOiAndG9wLXJpZ2h0JyB8ICd0b3AtbGVmdCcgfCAnYm90dG9tLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgPVxuICAgICAgICAnYm90dG9tLXJpZ2h0JztcblxuICAgIC8qKiBSZXNpemUgaGFuZGxlIHJlZmVyZW5jZSAtIHNob3VsZCBiZSB1c2VkIGlmIFJlc2l6ZSBoYW5kbGUgaXMgbm90IGEgQ29udGVudENoaWxkIG9mIHJlc2l6YWJsZSBjb250YWluZXIgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIEBJbnB1dCgnZmRrUmVzaXplUmVzaXplSGFuZGxlUmVmJykgc2V0IHNldFJlc2l6ZUhhbmRsZVJlZmVyZW5jZSh2YWx1ZTogUmVzaXplSGFuZGxlRGlyZWN0aXZlKSB7XG4gICAgICAgIHRoaXMucmVzaXplSGFuZGxlUmVmZXJlbmNlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEVtaXRzIGV2ZW50IHdoZW4gcmVzaXppbmcgaGFzIHRhcnRlZCAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvblJlc2l6ZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEVtaXRzIGV2ZW50IHdoZW4gcmVzaXppbmcgaGFzIGVuZGVkICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uUmVzaXplRW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gUmVmZXJlbmNlIHRvIFJlc2l6ZSBoYW5kbGUgKi9cbiAgICBAQ29udGVudENoaWxkKFJlc2l6ZUhhbmRsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgc2V0IHJlc2l6ZUhhbmRsZVJlZmVyZW5jZSh2YWx1ZTogTnVsbGFibGU8UmVzaXplSGFuZGxlRGlyZWN0aXZlPikge1xuICAgICAgICB0aGlzLl9yZXNpemVIYW5kbGVSZWZlcmVuY2UgPSB2YWx1ZTtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJlc2l6ZUxpc3RlbmVycygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCByZXNpemVIYW5kbGVSZWZlcmVuY2UoKTogTnVsbGFibGU8UmVzaXplSGFuZGxlRGlyZWN0aXZlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNpemVIYW5kbGVSZWZlcmVuY2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNpemVIYW5kbGVSZWZlcmVuY2U6IE51bGxhYmxlPFJlc2l6ZUhhbmRsZURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2l6ZVN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpcmVjdGlvbiQgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5fcnRsU2VydmljZT8ucnRsU2lnbmFsKCkgPyAtMSA6IDEpKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzWydkaXNhYmxlZCddKSB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXS5wcmV2aW91c1ZhbHVlID09PSBmYWxzZSAmJiBjaGFuZ2VzWydkaXNhYmxlZCddLmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10ucHJldmlvdXNWYWx1ZSA9PT0gdHJ1ZSAmJiBjaGFuZ2VzWydkaXNhYmxlZCddLmN1cnJlbnRWYWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRSZXNpemVMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJlc2l6ZUxpc3RlbmVycygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9yZXNpemVTdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF91bnN1YnNjcmliZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzaXplU3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9yZXNpemVTdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNldHMgUmVzaXplIGxpc3RlbmVycyAqL1xuICAgIHByaXZhdGUgX3NldFJlc2l6ZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgY29uc3QgcmVzaXplID0gdGhpcy5fZ2V0UmVzaXplRnVuY3Rpb24oKTtcbiAgICAgICAgbGV0IG1vdmVPZmZzZXQgPSB0aGlzLl9nZXRNb3ZlT2Zmc2V0RnVuY3Rpb24oKTtcbiAgICAgICAgY29uc3QgcmVzaXplQ29udGFpbmVyID0gdGhpcy5fZmluZFJlc2l6ZUNvbnRhaW5lcigpO1xuICAgICAgICBpZiAoIXJlc2l6ZUNvbnRhaW5lciB8fCAhdGhpcy5yZXNpemVIYW5kbGVSZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0JvdW5kYXJ5T3ZlcmZsb3cgPSB0aGlzLl9nZXRCb3VuZGFyeU92ZXJmbG93RnVuY3Rpb24ocmVzaXplQ29udGFpbmVyKTtcblxuICAgICAgICBjb25zdCBtb3VzZVVwRXZlbnQkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHdpbmRvdywgJ21vdXNldXAnKTtcbiAgICAgICAgY29uc3QgbW91c2VNb3ZlRXZlbnQkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHJlc2l6ZUNvbnRhaW5lciwgJ21vdXNlbW92ZScpO1xuICAgICAgICBjb25zdCBtb3VzZURvd25FdmVudCQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5yZXNpemVIYW5kbGVSZWZlcmVuY2UuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJyk7XG5cbiAgICAgICAgY29uc3QgcmVzaXplQWN0aXZlJCA9IG1lcmdlKFxuICAgICAgICAgICAgbW91c2VEb3duRXZlbnQkLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG1vdmVPZmZzZXQgPSB0aGlzLl9nZXRNb3ZlT2Zmc2V0RnVuY3Rpb24oKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1vdXNlVXBFdmVudCQucGlwZShtYXAoKCkgPT4gZmFsc2UpKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBlbWl0UmVzaXphYmxlRXZlbnRzJCA9IHRoaXMuX2dldFJlc2l6ZUV2ZW50c05vdGlmaWVycyhyZXNpemVBY3RpdmUkKTtcbiAgICAgICAgY29uc3QgcHJldmVudE90aGVyUG9pbnRlckV2ZW50cyQgPSB0aGlzLl9ibG9ja090aGVyUG9pbnRlckV2ZW50cyhyZXNpemVBY3RpdmUkKTtcblxuICAgICAgICBjb25zdCByZXNpemluZ0N1cnNvck1vdmVtZW50JCA9IG1vdXNlTW92ZUV2ZW50JC5waXBlKFxuICAgICAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgICAgIG1hcCgoW2V2ZW50MSwgZXZlbnQyXTogW01vdXNlRXZlbnQsIE1vdXNlRXZlbnRdKSA9PiBtb3ZlT2Zmc2V0KGV2ZW50MSwgZXZlbnQyKSksXG4gICAgICAgICAgICBmaWx0ZXIoKG1vdmUpID0+IGlzQm91bmRhcnlPdmVyZmxvdyhtb3ZlKSlcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBzZXR1cFJlc2l6ZXIgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICByZXNpemluZ0N1cnNvck1vdmVtZW50JC5waXBlKHRha2VVbnRpbChtb3VzZVVwRXZlbnQkKSkuc3Vic2NyaWJlKChldmVudCkgPT4gcmVzaXplKGV2ZW50KSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHNldHVwUmVzaXplJCA9IHJlc2l6ZUFjdGl2ZSQucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoaXNBY3RpdmUpID0+IGlzQWN0aXZlKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiBzZXR1cFJlc2l6ZXIoKSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9yZXNpemVTdWJzY3JpcHRpb25zLmFkZChzZXR1cFJlc2l6ZSQuc3Vic2NyaWJlKCkpO1xuICAgICAgICB0aGlzLl9yZXNpemVTdWJzY3JpcHRpb25zLmFkZChlbWl0UmVzaXphYmxlRXZlbnRzJC5zdWJzY3JpYmUoKSk7XG4gICAgICAgIHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbnMuYWRkKHByZXZlbnRPdGhlclBvaW50ZXJFdmVudHMkLnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBDcmVhdGVzIHJlc2l6ZSBmdW5jdGlvbiovXG4gICAgcHJpdmF0ZSBfZ2V0UmVzaXplRnVuY3Rpb24oKTogKG1vdmU6IFJlc2l6ZU1vdmUpID0+IHZvaWQge1xuICAgICAgICByZXR1cm4gKG1vdmU6IFJlc2l6ZU1vdmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IGAke3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCArIG1vdmUueH1weGA7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCArIG1vdmUueX1weGA7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQ3JlYXRlcyBtb3ZlIGZ1bmN0aW9uICovXG4gICAgcHJpdmF0ZSBfZ2V0TW92ZU9mZnNldEZ1bmN0aW9uKCk6IChldmVudDE6IE1vdXNlRXZlbnQsIGV2ZW50MjogTW91c2VFdmVudCkgPT4gUmVzaXplTW92ZSB7XG4gICAgICAgIGxldCB2ZXJ0aWNhbE1vZGlmaWVyOiAxIHwgLTE7XG4gICAgICAgIGxldCBob3Jpem9udGFsTW9kaWZpZXI6IDEgfCAtMTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMucmVzaXplSGFuZGxlTG9jYXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ3RvcC1sZWZ0JzpcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsTW9kaWZpZXIgPSAtMTtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbE1vZGlmaWVyID0gLTE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0b3AtcmlnaHQnOlxuICAgICAgICAgICAgICAgIGhvcml6b250YWxNb2RpZmllciA9IC0xO1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsTW9kaWZpZXIgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYm90dG9tLWxlZnQnOlxuICAgICAgICAgICAgICAgIGhvcml6b250YWxNb2RpZmllciA9IDE7XG4gICAgICAgICAgICAgICAgdmVydGljYWxNb2RpZmllciA9IC0xO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYm90dG9tLXJpZ2h0JzpcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsTW9kaWZpZXIgPSAxO1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsTW9kaWZpZXIgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChldmVudDE6IE1vdXNlRXZlbnQsIGV2ZW50MjogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeCA9IChldmVudDIuc2NyZWVuWCAtIGV2ZW50MS5zY3JlZW5YKSAqIHRoaXMuX2RpcmVjdGlvbiQoKTtcbiAgICAgICAgICAgIGNvbnN0IHkgPSBldmVudDIuc2NyZWVuWSAtIGV2ZW50MS5zY3JlZW5ZO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHg6IHggKiB2ZXJ0aWNhbE1vZGlmaWVyLFxuICAgICAgICAgICAgICAgIHk6IHkgKiBob3Jpem9udGFsTW9kaWZpZXJcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJuIGJvdW5kYXJ5IGNvbnRhaW5lciAqL1xuICAgIHByaXZhdGUgX2ZpbmRSZXNpemVDb250YWluZXIoKTogRWxlbWVudCB8IG51bGwge1xuICAgICAgICBsZXQgcmVzaXplQ29udGFpbmVyOiBFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc2l6ZUJvdW5kYXJ5ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVzaXplQm91bmRhcnkgPT09ICdib2R5Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzaXplQ29udGFpbmVyID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QodGhpcy5yZXNpemVCb3VuZGFyeSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNpemVDb250YWluZXIgPSB0aGlzLnJlc2l6ZUJvdW5kYXJ5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc2l6ZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgcmV0dXJuIHJlc2l6ZUNvbnRhaW5lcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgZmRSZXNpemUgLSBDYW5ub3QgZmluZCBcIiR7dGhpcy5yZXNpemVCb3VuZGFyeX1cIiwgZmFsbGluZyBiYWNrIHRvIFwiYm9keVwiYCk7XG4gICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIENoZWNrIHdoZXRoZXIgcmVzaXphYmxlIGNvbnRhaW5lciBpcyBvdmVyZmxvd2luZyBib3VuZGFyeSBjb250YWluZXIgKi9cbiAgICBwcml2YXRlIF9nZXRCb3VuZGFyeU92ZXJmbG93RnVuY3Rpb24ocmVzaXplQ29udGFpbmVyOiBFbGVtZW50KTogKG1vdmU6IFJlc2l6ZU1vdmUpID0+IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKG1vdmU6IFJlc2l6ZU1vdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclBvc2l0aW9uID0gcmVzaXplQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvc2l0aW9uID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMucmVzaXplSGFuZGxlTG9jYXRpb24pIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0b3AtbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJQb3NpdGlvbi50b3AgPCBlbGVtZW50UG9zaXRpb24udG9wICsgbW92ZS55ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJQb3NpdGlvbi5sZWZ0IDwgZWxlbWVudFBvc2l0aW9uLmxlZnQgKyBtb3ZlLnhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjYXNlICd0b3AtcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUG9zaXRpb24udG9wIDwgZWxlbWVudFBvc2l0aW9uLnRvcCArIG1vdmUueSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUG9zaXRpb24ucmlnaHQgPiBlbGVtZW50UG9zaXRpb24ucmlnaHQgKyBtb3ZlLnhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjYXNlICdib3R0b20tbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJQb3NpdGlvbi5ib3R0b20gPiBlbGVtZW50UG9zaXRpb24uYm90dG9tICsgbW92ZS55ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJQb3NpdGlvbi5sZWZ0IDwgZWxlbWVudFBvc2l0aW9uLmxlZnQgKyBtb3ZlLnhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjYXNlICdib3R0b20tcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUG9zaXRpb24uYm90dG9tID4gZWxlbWVudFBvc2l0aW9uLmJvdHRvbSArIG1vdmUueSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUG9zaXRpb24ucmlnaHQgPiBlbGVtZW50UG9zaXRpb24ucmlnaHQgKyBtb3ZlLnhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBDcmVhdGUgT2JzZXJ2YWJsZSBub3RpZnlpbmcgb24gcmVzaXplIGFjdGlvbnMgKi9cbiAgICBwcml2YXRlIF9nZXRSZXNpemVFdmVudHNOb3RpZmllcnModHJpZ2dlciQ6IE9ic2VydmFibGU8Ym9vbGVhbj4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBjb25zdCBlbWl0UmVzaXphYmxlU3RhcnQkID0gdHJpZ2dlciQucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoaXNBY3RpdmUpID0+IGlzQWN0aXZlKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLm9uUmVzaXplU3RhcnQuZW1pdCgpKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGVtaXRSZXNpemFibGVFbmQkID0gdHJpZ2dlciQucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoaXNBY3RpdmUpID0+ICFpc0FjdGl2ZSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5vblJlc2l6ZUVuZC5lbWl0KCkpXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIG1lcmdlKGVtaXRSZXNpemFibGVTdGFydCQsIGVtaXRSZXNpemFibGVFbmQkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBCbG9jayByZXNpemFibGUgY29udGFpbmVyIHBvaW50ZXIgZXZlbnRzIHdoZW4gcmVzaXppbmcgICovXG4gICAgcHJpdmF0ZSBfYmxvY2tPdGhlclBvaW50ZXJFdmVudHModHJpZ2dlciQ6IE9ic2VydmFibGU8Ym9vbGVhbj4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdHJpZ2dlciQucGlwZShcbiAgICAgICAgICAgIHRhcCgoaXNBY3RpdmUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmRrUmVzaXplQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuZmRrUmVzaXplQ2xhc3MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuZmRrUmVzaXplQ2xhc3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKChpc0FjdGl2ZSkgPT4gKGlzQWN0aXZlID8gJ25vbmUnIDogJ2F1dG8nKSksXG4gICAgICAgICAgICB0YXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { ResizeHandleDirective } from './resize-handle.directive';\nimport { ResizeDirective } from './resize.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class ResizeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeModule, imports: [ResizeDirective, ResizeHandleDirective], exports: [ResizeDirective, ResizeHandleDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ResizeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ResizeDirective, ResizeHandleDirective],\n exports: [ResizeDirective, ResizeHandleDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvcmVzaXplL3Jlc2l6ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRXJEOzs7R0FHRztBQUtILE1BQU0sT0FBTyxZQUFZOzhHQUFaLFlBQVk7K0dBQVosWUFBWSxZQUhYLGVBQWUsRUFBRSxxQkFBcUIsYUFDdEMsZUFBZSxFQUFFLHFCQUFxQjsrR0FFdkMsWUFBWTs7MkZBQVosWUFBWTtrQkFKeEIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxlQUFlLEVBQUUscUJBQXFCLENBQUM7b0JBQ2pELE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxxQkFBcUIsQ0FBQztpQkFDcEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzaXplSGFuZGxlRGlyZWN0aXZlIH0gZnJvbSAnLi9yZXNpemUtaGFuZGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZXNpemVEaXJlY3RpdmUgfSBmcm9tICcuL3Jlc2l6ZS5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgZGlyZWN0IGltcG9ydHMgb2YgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbUmVzaXplRGlyZWN0aXZlLCBSZXNpemVIYW5kbGVEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtSZXNpemVEaXJlY3RpdmUsIFJlc2l6ZUhhbmRsZURpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgUmVzaXplTW9kdWxlIHt9XG4iXX0=","export class SelectComponentRootToken {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWNvbXBvbmVudC1yb290LnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLWxpc3Qvc2VsZWN0LWNvbXBvbmVudC1yb290LnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBZ0Isd0JBQXdCO0NBTTdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8VD4gPSBUIGV4dGVuZHMgYW55W10gPyBBcnJheTxhbnk+IDogYW55O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2VsZWN0Q29tcG9uZW50Um9vdFRva2VuPFQgPSBhbnk+IHtcbiAgICBhYnN0cmFjdCBzZWxlY3RlZD86IFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPFQ+O1xuICAgIGFic3RyYWN0IHNlbGVjdGVkQ2hhbmdlOiBPYnNlcnZhYmxlPFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPFQ+PjtcbiAgICBhYnN0cmFjdCBtdWx0aXBsZT86IEJvb2xlYW5JbnB1dDtcbiAgICBhYnN0cmFjdCB0b2dnbGU/OiBCb29sZWFuSW5wdXQ7XG4gICAgYWJzdHJhY3Qgb25DaGFuZ2U6ICh2YWx1ZTogU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8VD4pID0+IHZvaWQ7XG59XG4iXX0=","export class SelectableItemToken {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1pdGVtLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLWxpc3Qvc2VsZWN0YWJsZS1pdGVtLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBZ0IsbUJBQW1CO0NBYXhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSGFzRWxlbWVudFJlZiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaGFzLWVsZW1lbnQtcmVmLmludGVyZmFjZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlIGV4dGVuZHMgRWxlbWVudCA9IEhUTUxFbGVtZW50LCBUVmFsdWUgPSBFbGVtZW50VHlwZT5cbiAgICBpbXBsZW1lbnRzIEhhc0VsZW1lbnRSZWY8RWxlbWVudFR5cGU+XG57XG4gICAgYWJzdHJhY3QgdmFsdWU6IFRWYWx1ZTtcbiAgICBhYnN0cmFjdCBmZGtTZWxlY3RhYmxlSXRlbT86IGJvb2xlYW47XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEVsZW1lbnRUeXBlPjtcblxuICAgIGFic3RyYWN0IGNsaWNrZWQ6IE9ic2VydmFibGU8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+O1xuXG4gICAgYWJzdHJhY3Qgc2V0U2VsZWN0ZWQoaXNTZWxlY3RlZDogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICBhYnN0cmFjdCBnZXRTZWxlY3RlZCgpOiBib29sZWFuO1xufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const FDK_SELECTABLE_ITEM_PROVIDER = new InjectionToken('Token for providing custom behaviors to the SelectableListItem');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1saXN0LnRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvc2VsZWN0YWJsZS1saXN0L3NlbGVjdGFibGUtbGlzdC50b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FDMUQsZ0VBQWdFLENBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgRkRLX1NFTEVDVEFCTEVfSVRFTV9QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbihcbiAgICAnVG9rZW4gZm9yIHByb3ZpZGluZyBjdXN0b20gYmVoYXZpb3JzIHRvIHRoZSBTZWxlY3RhYmxlTGlzdEl0ZW0nXG4pO1xuIl19","import { coerceArray } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, DestroyRef, Injectable, QueryList, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport equal from 'fast-deep-equal';\nimport { ReplaySubject, Subject, combineLatest, isObservable, merge, of, switchMap } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { destroyObservable } from '../../helpers/destroy-observable';\nimport * as i0 from \"@angular/core\";\nexport class SelectionService {\n /** @hidden */\n constructor(_cd) {\n this._cd = _cd;\n /** @hidden */\n this._value$ = new ReplaySubject(1);\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._clear$ = new Subject();\n /** @hidden */\n this._value = [];\n this._normalizedValue$ = this._value$.pipe(distinctUntilChanged(equal), map((v) => coerceArray(v)), map((value) => (this._isMultipleMode ? value : [value[0]])), map((coerced) => coerced.filter(Boolean)));\n this._normalizedValue$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((val) => (this._value = val));\n this.value$ = this._normalizedValue$.pipe(map((v) => this._getProperValues(v)), shareReplay(1));\n }\n /**\n * Register main select component, which holds config\n * */\n registerRootComponent(rootComponent) {\n this._rootComponent = rootComponent;\n }\n /**\n * Clear listeners\n */\n clear() {\n this._clear$.next();\n }\n /**\n * Initialize watcher for selection changes and user interactions\n * */\n initialize(list) {\n if (list instanceof QueryList) {\n this._items$ = list.changes.pipe(startWith(list), map((items) => items.toArray()), shareReplay(1));\n }\n else {\n this._items$ = isObservable(list) ? list : of(list);\n }\n this.listenToItemInteractions();\n }\n /**\n * Sets Value, on which service looks at and updates UI accordingly\n * */\n setValue(v) {\n this._value$.next(v);\n }\n /** @hidden */\n getValue() {\n return this._getProperValues(this._value);\n }\n /**\n * Start listening for item interactions. Will destroy() first.\n * Will silently continue if service was not initialized first.\n * */\n listenToItemInteractions() {\n this.clear();\n const unsubscribe$ = merge(destroyObservable(this._destroyRef), this._clear$);\n if (this._items$) {\n this._items$\n .pipe(map((items) => items.filter((itm) => itm.fdkSelectableItem !== false)), switchMap((items) => {\n const clickedEvents$ = items.map((item) => item.clicked.pipe(map(() => item)));\n return merge(...clickedEvents$);\n }), tap((clickedItem) => this._itemClicked(clickedItem)), takeUntil(unsubscribe$))\n .subscribe();\n combineLatest([this._normalizedValue$, this._items$])\n .pipe(tap(([value, items]) => {\n if (value.length === 0 &&\n items.some((itm) => itm.getSelected()) &&\n !this._rootComponent.toggle) {\n const selectedValues = this._getSelectedValues(items);\n this._rootComponent.onChange(selectedValues);\n return this._value$.next(selectedValues);\n }\n items.forEach((item) => {\n item.setSelected(value.includes(item.value));\n });\n this._cd.detectChanges();\n }), takeUntil(unsubscribe$))\n .subscribe();\n }\n }\n /** @hidden */\n selectItem(item) {\n if (item.fdkSelectableItem !== false) {\n const val = [item.value, ...this._value];\n const properValues = this._getProperValues(val);\n this._value$.next(properValues);\n this._rootComponent.onChange(properValues);\n }\n }\n /** @hidden */\n deselectItem(item) {\n const canBeDeselected = this._rootComponent.toggle || (this._isMultipleMode && this._value.length > 1);\n if (canBeDeselected) {\n const val = this._value.filter((v) => v !== item.value);\n const properValues = this._getProperValues(val);\n this._value$.next(properValues);\n this._rootComponent.onChange(properValues);\n }\n }\n /** @hidden */\n get _isMultipleMode() {\n return this._rootComponent.multiple === true;\n }\n /** @hidden */\n _itemClicked(item) {\n const wasSelected = this._value.includes(item.value);\n if (wasSelected) {\n this.deselectItem(item);\n }\n else {\n this.selectItem(item);\n }\n }\n /** @hidden */\n _getSelectedValues(items) {\n const selectedValues = items.filter((itm) => itm.getSelected()).map((itm) => itm.value);\n return this._getProperValues(selectedValues);\n }\n /** @hidden */\n _getProperValues(values) {\n return this._isMultipleMode ? values : values[0];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectionService, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectionService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectionService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kaXJlY3RpdmVzL3NlbGVjdGFibGUtbGlzdC9zZWxlY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEVBQWMsYUFBYSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBVXJFLE1BQU0sT0FBTyxnQkFBZ0I7SUFtQnpCLGNBQWM7SUFDZCxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWQxQyxjQUFjO1FBQ04sWUFBTyxHQUFHLElBQUksYUFBYSxDQUFxQyxDQUFDLENBQUMsQ0FBQztRQUszRSxjQUFjO1FBQ04sZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsY0FBYztRQUNOLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3RDLGNBQWM7UUFDTixXQUFNLEdBQWdCLEVBQUUsQ0FBQztRQUk3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O2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERlc3Ryb3lSZWYsIEluamVjdGFibGUsIFF1ZXJ5TGlzdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGlzT2JzZXJ2YWJsZSwgbWVyZ2UsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZGVzdHJveU9ic2VydmFibGUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2Rlc3Ryb3ktb2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBTZWxlY3RDb21wb25lbnRSb290VG9rZW4sIFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlIH0gZnJvbSAnLi9zZWxlY3QtY29tcG9uZW50LXJvb3QudG9rZW4nO1xuaW1wb3J0IHsgU2VsZWN0YWJsZUl0ZW1Ub2tlbiB9IGZyb20gJy4vc2VsZWN0YWJsZS1pdGVtLnRva2VuJztcblxuZXhwb3J0IHR5cGUgU2VsZWN0aW9uSXRlbXNMaXN0PEVsZW1lbnRUeXBlIGV4dGVuZHMgRWxlbWVudCwgVmFsdWVUeXBlID0gRWxlbWVudFR5cGU+ID1cbiAgICB8IFF1ZXJ5TGlzdDxTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+PlxuICAgIHwgT2JzZXJ2YWJsZTxTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+W10+XG4gICAgfCBTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+W107XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25TZXJ2aWNlPEVsZW1lbnRUeXBlIGV4dGVuZHMgRWxlbWVudCwgVmFsdWVUeXBlID0gRWxlbWVudFR5cGU+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZhbHVlJDogT2JzZXJ2YWJsZTxTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxWYWx1ZVR5cGU+PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXRlbXMkITogT2JzZXJ2YWJsZTxTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+W10+O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmFsdWUkID0gbmV3IFJlcGxheVN1YmplY3Q8U2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8VmFsdWVUeXBlPj4oMSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9ub3JtYWxpemVkVmFsdWUkOiBPYnNlcnZhYmxlPFZhbHVlVHlwZVtdPjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jvb3RDb21wb25lbnQhOiBTZWxlY3RDb21wb25lbnRSb290VG9rZW48RWxlbWVudFR5cGU+O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NsZWFyJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92YWx1ZTogVmFsdWVUeXBlW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHRoaXMuX25vcm1hbGl6ZWRWYWx1ZSQgPSB0aGlzLl92YWx1ZSQucGlwZShcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGVxdWFsKSxcbiAgICAgICAgICAgIG1hcCgodikgPT4gY29lcmNlQXJyYXk8VmFsdWVUeXBlPih2KSksXG4gICAgICAgICAgICBtYXAoKHZhbHVlKSA9PiAodGhpcy5faXNNdWx0aXBsZU1vZGUgPyB2YWx1ZSA6IFt2YWx1ZVswXV0pKSxcbiAgICAgICAgICAgIG1hcCgoY29lcmNlZDogVmFsdWVUeXBlW10pID0+IGNvZXJjZWQuZmlsdGVyKEJvb2xlYW4pKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9ub3JtYWxpemVkVmFsdWUkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHZhbCkgPT4gKHRoaXMuX3ZhbHVlID0gdmFsKSk7XG4gICAgICAgIHRoaXMudmFsdWUkID0gdGhpcy5fbm9ybWFsaXplZFZhbHVlJC5waXBlKFxuICAgICAgICAgICAgbWFwKCh2KSA9PiB0aGlzLl9nZXRQcm9wZXJWYWx1ZXModiBhcyBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT4pKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgbWFpbiBzZWxlY3QgY29tcG9uZW50LCB3aGljaCBob2xkcyBjb25maWdcbiAgICAgKiAqL1xuICAgIHJlZ2lzdGVyUm9vdENvbXBvbmVudChyb290Q29tcG9uZW50OiBTZWxlY3RDb21wb25lbnRSb290VG9rZW48RWxlbWVudFR5cGU+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jvb3RDb21wb25lbnQgPSByb290Q29tcG9uZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFyIGxpc3RlbmVyc1xuICAgICAqL1xuICAgIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jbGVhciQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgd2F0Y2hlciBmb3Igc2VsZWN0aW9uIGNoYW5nZXMgYW5kIHVzZXIgaW50ZXJhY3Rpb25zXG4gICAgICogKi9cbiAgICBpbml0aWFsaXplKGxpc3Q6IFNlbGVjdGlvbkl0ZW1zTGlzdDxFbGVtZW50VHlwZSwgVmFsdWVUeXBlPik6IHZvaWQge1xuICAgICAgICBpZiAobGlzdCBpbnN0YW5jZW9mIFF1ZXJ5TGlzdCkge1xuICAgICAgICAgICAgdGhpcy5faXRlbXMkID0gbGlzdC5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKGxpc3QpLFxuICAgICAgICAgICAgICAgIG1hcCgoaXRlbXM6IFF1ZXJ5TGlzdDxTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+PikgPT4gaXRlbXMudG9BcnJheSgpKSxcbiAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zJCA9IGlzT2JzZXJ2YWJsZShsaXN0KSA/IGxpc3QgOiBvZihsaXN0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxpc3RlblRvSXRlbUludGVyYWN0aW9ucygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgVmFsdWUsIG9uIHdoaWNoIHNlcnZpY2UgbG9va3MgYXQgYW5kIHVwZGF0ZXMgVUkgYWNjb3JkaW5nbHlcbiAgICAgKiAqL1xuICAgIHNldFZhbHVlKHY6IFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPEVsZW1lbnRUeXBlPik6IHZvaWQge1xuICAgICAgICB0aGlzLl92YWx1ZSQubmV4dCh2KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldFZhbHVlKCk6IFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPEVsZW1lbnRUeXBlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJWYWx1ZXModGhpcy5fdmFsdWUgYXMgU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8RWxlbWVudFR5cGU+KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdGFydCBsaXN0ZW5pbmcgZm9yIGl0ZW0gaW50ZXJhY3Rpb25zLiBXaWxsIGRlc3Ryb3koKSBmaXJzdC5cbiAgICAgKiBXaWxsIHNpbGVudGx5IGNvbnRpbnVlIGlmIHNlcnZpY2Ugd2FzIG5vdCBpbml0aWFsaXplZCBmaXJzdC5cbiAgICAgKiAqL1xuICAgIGxpc3RlblRvSXRlbUludGVyYWN0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICBjb25zdCB1bnN1YnNjcmliZSQgPSBtZXJnZShkZXN0cm95T2JzZXJ2YWJsZSh0aGlzLl9kZXN0cm95UmVmKSwgdGhpcy5fY2xlYXIkKTtcbiAgICAgICAgaWYgKHRoaXMuX2l0ZW1zJCkge1xuICAgICAgICAgICAgdGhpcy5faXRlbXMkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoaXRlbXMpID0+IGl0ZW1zLmZpbHRlcigoaXRtKSA9PiBpdG0uZmRrU2VsZWN0YWJsZUl0ZW0gIT09IGZhbHNlKSksXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoaXRlbXM6IFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT5bXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xpY2tlZEV2ZW50cyQgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uY2xpY2tlZC5waXBlKG1hcCgoKSA9PiBpdGVtKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlKC4uLmNsaWNrZWRFdmVudHMkKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoY2xpY2tlZEl0ZW0pID0+IHRoaXMuX2l0ZW1DbGlja2VkKGNsaWNrZWRJdGVtKSksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh1bnN1YnNjcmliZSQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX25vcm1hbGl6ZWRWYWx1ZSQsIHRoaXMuX2l0ZW1zJF0pXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoW3ZhbHVlLCBpdGVtc10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5zb21lKChpdG0pID0+IGl0bS5nZXRTZWxlY3RlZCgpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLl9yb290Q29tcG9uZW50LnRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLl9nZXRTZWxlY3RlZFZhbHVlcyhpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm9vdENvbXBvbmVudC5vbkNoYW5nZShzZWxlY3RlZFZhbHVlcyBhcyBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZSQubmV4dChzZWxlY3RlZFZhbHVlcyBhcyBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0U2VsZWN0ZWQodmFsdWUuaW5jbHVkZXMoaXRlbS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodW5zdWJzY3JpYmUkKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNlbGVjdEl0ZW0oaXRlbTogU2VsZWN0YWJsZUl0ZW1Ub2tlbjxFbGVtZW50VHlwZSwgVmFsdWVUeXBlPik6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbS5mZGtTZWxlY3RhYmxlSXRlbSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbDogVmFsdWVUeXBlW10gPSBbaXRlbS52YWx1ZSwgLi4udGhpcy5fdmFsdWVdO1xuICAgICAgICAgICAgY29uc3QgcHJvcGVyVmFsdWVzID0gdGhpcy5fZ2V0UHJvcGVyVmFsdWVzKHZhbCBhcyBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT4pO1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUkLm5leHQocHJvcGVyVmFsdWVzKTtcbiAgICAgICAgICAgIHRoaXMuX3Jvb3RDb21wb25lbnQub25DaGFuZ2UocHJvcGVyVmFsdWVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZGVzZWxlY3RJdGVtKGl0ZW06IFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2FuQmVEZXNlbGVjdGVkID0gdGhpcy5fcm9vdENvbXBvbmVudC50b2dnbGUgfHwgKHRoaXMuX2lzTXVsdGlwbGVNb2RlICYmIHRoaXMuX3ZhbHVlLmxlbmd0aCA+IDEpO1xuICAgICAgICBpZiAoY2FuQmVEZXNlbGVjdGVkKSB7XG4gICAgICAgICAgICBjb25zdCB2YWw6IFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPEVsZW1lbnRUeXBlPiA9IHRoaXMuX3ZhbHVlLmZpbHRlcihcbiAgICAgICAgICAgICAgICAodikgPT4gdiAhPT0gaXRlbS52YWx1ZVxuICAgICAgICAgICAgKSBhcyBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxFbGVtZW50VHlwZT47XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJWYWx1ZXMgPSB0aGlzLl9nZXRQcm9wZXJWYWx1ZXModmFsKTtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlJC5uZXh0KHByb3BlclZhbHVlcyk7XG4gICAgICAgICAgICB0aGlzLl9yb290Q29tcG9uZW50Lm9uQ2hhbmdlKHByb3BlclZhbHVlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9pc011bHRpcGxlTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3RDb21wb25lbnQubXVsdGlwbGUgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pdGVtQ2xpY2tlZChpdGVtOiBTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdhc1NlbGVjdGVkID0gdGhpcy5fdmFsdWUuaW5jbHVkZXMoaXRlbS52YWx1ZSk7XG4gICAgICAgIGlmICh3YXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5kZXNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFNlbGVjdGVkVmFsdWVzKGl0ZW1zOiBTZWxlY3RhYmxlSXRlbVRva2VuPEVsZW1lbnRUeXBlLCBWYWx1ZVR5cGU+W10pOiBFbGVtZW50VHlwZSB8IEVsZW1lbnRUeXBlW10ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IGl0ZW1zLmZpbHRlcigoaXRtKSA9PiBpdG0uZ2V0U2VsZWN0ZWQoKSkubWFwKChpdG0pID0+IGl0bS52YWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJWYWx1ZXMoc2VsZWN0ZWRWYWx1ZXMgYXMgU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8RWxlbWVudFR5cGU+KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFByb3BlclZhbHVlcyh2YWx1ZXM6IFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPEVsZW1lbnRUeXBlPik6IFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPEVsZW1lbnRUeXBlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc011bHRpcGxlTW9kZSA/IHZhbHVlcyA6IHZhbHVlc1swXTtcbiAgICB9XG59XG4iXX0=","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { Observable, merge } from 'rxjs';\nimport { FdkClickedProvider } from '../clicked';\nimport { FdkDisabledProvider } from '../disabled';\nimport { FdkReadonlyProvider } from '../readonly';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { FDK_SELECTABLE_ITEM_PROVIDER } from './selectable-list.tokens';\nimport { SelectionService } from './selection.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../disabled\";\nimport * as i2 from \"../readonly\";\nimport * as i3 from \"./selection.service\";\nimport * as i4 from \"../clicked\";\nexport class SelectableItemDirective {\n /** @hidden */\n set value(val) {\n this._value = val;\n }\n get value() {\n if (this.provider && this.provider.value) {\n return this.provider.value;\n }\n return this._value;\n }\n /** @hidden */\n set fdkSelectableItem(value) {\n const isSelectable = coerceBooleanProperty(value);\n if (isSelectable !== this._selectable) {\n this._selectable = isSelectable;\n }\n }\n get fdkSelectableItem() {\n let selectable = this._selectable;\n if (typeof this.provider?.fdkSelectableItem !== 'undefined') {\n selectable = this.provider.fdkSelectableItem;\n }\n return (selectable &&\n (!this.disabled$ || !this.disabled$?.fdkDisabled) &&\n (!this.readonly$ || !this.readonly$?.fdkReadonly));\n }\n /** @hidden */\n constructor(provider, disabled$, readonly$, selectionService, elementRef, _clicked) {\n this.provider = provider;\n this.disabled$ = disabled$;\n this.readonly$ = readonly$;\n this.selectionService = selectionService;\n this.elementRef = elementRef;\n /** Event emitted when selection state being changed for selectable item. */\n this.selected = new EventEmitter();\n /** @hidden */\n this._selected = false;\n /** @hidden */\n this._selectable = true;\n this.clicked = this.provider?.clicked || _clicked.asObservable();\n this._listenToDisablingEvents();\n }\n /** @hidden */\n getSelected() {\n if (this.provider?.getSelected) {\n return this.provider.getSelected();\n }\n return this._selected;\n }\n /** @hidden */\n setSelected(isSelected) {\n if (this.provider?.setSelected) {\n this.provider.setSelected(isSelected);\n }\n else {\n this._selected = isSelected;\n const htmlElement = this.elementRef.nativeElement;\n const { classList } = htmlElement;\n if (isSelected) {\n classList.add('is-selected');\n }\n else {\n classList.remove('is-selected');\n }\n htmlElement.setAttribute('aria-selected', `${isSelected}`);\n }\n this.selected.emit(isSelected);\n }\n /** @hidden */\n _listenToDisablingEvents() {\n const disablingEvents$ = [];\n if (this.disabled$) {\n disablingEvents$.push(this.disabled$);\n }\n if (this.readonly$) {\n disablingEvents$.push(this.readonly$);\n }\n merge(...disablingEvents$).subscribe(() => this._updateSelectionAndSelectableWatcher());\n }\n /** @hidden */\n _updateSelectionAndSelectableWatcher() {\n if (this.disabled$?.fdkDisabled) {\n this.selectionService.deselectItem(this);\n }\n this._updateSelectableWatcher();\n }\n /** @hidden */\n _updateSelectableWatcher() {\n this.selectionService.listenToItemInteractions();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectableItemDirective, deps: [{ token: FDK_SELECTABLE_ITEM_PROVIDER, optional: true }, { token: i1.FdkDisabledProvider }, { token: i2.FdkReadonlyProvider }, { token: i3.SelectionService }, { token: i0.ElementRef }, { token: i4.FdkClickedProvider }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: SelectableItemDirective, isStandalone: true, selector: \"[fdkSelectableItem]\", inputs: { value: \"value\", fdkSelectableItem: \"fdkSelectableItem\" }, outputs: { clicked: \"clicked\", selected: \"selected\" }, providers: [\n {\n provide: SelectableItemToken,\n useExisting: SelectableItemDirective\n },\n FdkReadonlyProvider,\n FdkDisabledProvider,\n FdkClickedProvider\n ], exportAs: [\"fdkSelectableItem\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectableItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkSelectableItem]',\n exportAs: 'fdkSelectableItem',\n standalone: true,\n providers: [\n {\n provide: SelectableItemToken,\n useExisting: SelectableItemDirective\n },\n FdkReadonlyProvider,\n FdkDisabledProvider,\n FdkClickedProvider\n ]\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FDK_SELECTABLE_ITEM_PROVIDER]\n }] }, { type: i1.FdkDisabledProvider }, { type: i2.FdkReadonlyProvider }, { type: i3.SelectionService }, { type: i0.ElementRef }, { type: i4.FdkClickedProvider }], propDecorators: { value: [{\n type: Input\n }], fdkSelectableItem: [{\n type: Input\n }], clicked: [{\n type: Output\n }], selected: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvc2VsZWN0YWJsZS1saXN0L3NlbGVjdGFibGUtaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQWdCdkQsTUFBTSxPQUFPLHVCQUF1QjtJQUdoQyxjQUFjO0lBQ2QsSUFDSSxLQUFLLENBQUMsR0FBYztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ0wsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUMvQixDQUFD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LFdBQVcseUJBQXlCO3lCQUN2Qzt3QkFDRCxtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3FCQUNyQjtpQkFDSjs7MEJBc0RRLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsNEJBQTRCO3NNQWpEcEMsS0FBSztzQkFEUixLQUFLO2dCQWFGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFzQk4sT0FBTztzQkFETixNQUFNO2dCQUtQLFFBQVE7c0JBRFAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmRrQ2xpY2tlZFByb3ZpZGVyIH0gZnJvbSAnLi4vY2xpY2tlZCc7XG5pbXBvcnQgeyBGZGtEaXNhYmxlZFByb3ZpZGVyIH0gZnJvbSAnLi4vZGlzYWJsZWQnO1xuaW1wb3J0IHsgRmRrUmVhZG9ubHlQcm92aWRlciB9IGZyb20gJy4uL3JlYWRvbmx5JztcbmltcG9ydCB7IFNlbGVjdGFibGVJdGVtVG9rZW4gfSBmcm9tICcuL3NlbGVjdGFibGUtaXRlbS50b2tlbic7XG5pbXBvcnQgeyBGREtfU0VMRUNUQUJMRV9JVEVNX1BST1ZJREVSIH0gZnJvbSAnLi9zZWxlY3RhYmxlLWxpc3QudG9rZW5zJztcbmltcG9ydCB7IFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlbGVjdGlvbi5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrU2VsZWN0YWJsZUl0ZW1dJyxcbiAgICBleHBvcnRBczogJ2Zka1NlbGVjdGFibGVJdGVtJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBTZWxlY3RhYmxlSXRlbVRva2VuLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFNlbGVjdGFibGVJdGVtRGlyZWN0aXZlXG4gICAgICAgIH0sXG4gICAgICAgIEZka1JlYWRvbmx5UHJvdmlkZXIsXG4gICAgICAgIEZka0Rpc2FibGVkUHJvdmlkZXIsXG4gICAgICAgIEZka0NsaWNrZWRQcm92aWRlclxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZUl0ZW1EaXJlY3RpdmU8RWxlbWVudFR5cGUgZXh0ZW5kcyBFbGVtZW50ID0gSFRNTEVsZW1lbnQsIFZhbHVlVHlwZSA9IGFueT5cbiAgICBpbXBsZW1lbnRzIFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT5cbntcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbDogVmFsdWVUeXBlKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogVmFsdWVUeXBlIHtcbiAgICAgICAgaWYgKHRoaXMucHJvdmlkZXIgJiYgdGhpcy5wcm92aWRlci52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmRrU2VsZWN0YWJsZUl0ZW0odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICBjb25zdCBpc1NlbGVjdGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAoaXNTZWxlY3RhYmxlICE9PSB0aGlzLl9zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RhYmxlID0gaXNTZWxlY3RhYmxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGZka1NlbGVjdGFibGVJdGVtKCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgc2VsZWN0YWJsZSA9IHRoaXMuX3NlbGVjdGFibGU7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm92aWRlcj8uZmRrU2VsZWN0YWJsZUl0ZW0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZWxlY3RhYmxlID0gdGhpcy5wcm92aWRlci5mZGtTZWxlY3RhYmxlSXRlbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgc2VsZWN0YWJsZSAmJlxuICAgICAgICAgICAgKCF0aGlzLmRpc2FibGVkJCB8fCAhdGhpcy5kaXNhYmxlZCQ/LmZka0Rpc2FibGVkKSAmJlxuICAgICAgICAgICAgKCF0aGlzLnJlYWRvbmx5JCB8fCAhdGhpcy5yZWFkb25seSQ/LmZka1JlYWRvbmx5KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQE91dHB1dCgpXG4gICAgY2xpY2tlZDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD47XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHNlbGVjdGlvbiBzdGF0ZSBiZWluZyBjaGFuZ2VkIGZvciBzZWxlY3RhYmxlIGl0ZW0uICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZhbHVlITogVmFsdWVUeXBlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdGFibGUgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChGREtfU0VMRUNUQUJMRV9JVEVNX1BST1ZJREVSKVxuICAgICAgICBwcml2YXRlIHByb3ZpZGVyOiBQYXJ0aWFsPFNlbGVjdGFibGVJdGVtVG9rZW48RWxlbWVudFR5cGUsIFZhbHVlVHlwZT4+LFxuICAgICAgICBwcml2YXRlIGRpc2FibGVkJDogRmRrRGlzYWJsZWRQcm92aWRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSQ6IEZka1JlYWRvbmx5UHJvdmlkZXIsXG4gICAgICAgIHByaXZhdGUgc2VsZWN0aW9uU2VydmljZTogU2VsZWN0aW9uU2VydmljZTxFbGVtZW50VHlwZSwgVmFsdWVUeXBlPixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8RWxlbWVudFR5cGU+LFxuICAgICAgICBfY2xpY2tlZDogRmRrQ2xpY2tlZFByb3ZpZGVyXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY2xpY2tlZCA9IHRoaXMucHJvdmlkZXI/LmNsaWNrZWQgfHwgX2NsaWNrZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvRGlzYWJsaW5nRXZlbnRzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXRTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMucHJvdmlkZXI/LmdldFNlbGVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5nZXRTZWxlY3RlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldFNlbGVjdGVkKGlzU2VsZWN0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucHJvdmlkZXI/LnNldFNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnByb3ZpZGVyLnNldFNlbGVjdGVkKGlzU2VsZWN0ZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBpc1NlbGVjdGVkO1xuICAgICAgICAgICAgY29uc3QgaHRtbEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHsgY2xhc3NMaXN0IH0gPSBodG1sRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgY2xhc3NMaXN0LmFkZCgnaXMtc2VsZWN0ZWQnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2xhc3NMaXN0LnJlbW92ZSgnaXMtc2VsZWN0ZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGh0bWxFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsIGAke2lzU2VsZWN0ZWR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoaXNTZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0Rpc2FibGluZ0V2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlzYWJsaW5nRXZlbnRzJDogT2JzZXJ2YWJsZTxib29sZWFuPltdID0gW107XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkJCkge1xuICAgICAgICAgICAgZGlzYWJsaW5nRXZlbnRzJC5wdXNoKHRoaXMuZGlzYWJsZWQkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZWFkb25seSQpIHtcbiAgICAgICAgICAgIGRpc2FibGluZ0V2ZW50cyQucHVzaCh0aGlzLnJlYWRvbmx5JCk7XG4gICAgICAgIH1cbiAgICAgICAgbWVyZ2UoLi4uZGlzYWJsaW5nRXZlbnRzJCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3VwZGF0ZVNlbGVjdGlvbkFuZFNlbGVjdGFibGVXYXRjaGVyKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlU2VsZWN0aW9uQW5kU2VsZWN0YWJsZVdhdGNoZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkJD8uZmRrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5kZXNlbGVjdEl0ZW0odGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0YWJsZVdhdGNoZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZVNlbGVjdGFibGVXYXRjaGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2UubGlzdGVuVG9JdGVtSW50ZXJhY3Rpb25zKCk7XG4gICAgfVxufVxuIl19","import { ContentChildren, Directive, EventEmitter, Input, Output, QueryList, booleanAttribute } from '@angular/core';\nimport { SelectComponentRootToken } from './select-component-root.token';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { SelectionService } from './selection.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./selection.service\";\nexport class SelectableListDirective {\n /** @hidden */\n set selected(value) {\n this._selectionService.setValue(value);\n }\n /** @hidden */\n constructor(_selectionService) {\n this._selectionService = _selectionService;\n /** @hidden */\n this.selectedChange = new EventEmitter();\n /** @hidden */\n this.toggle = false;\n /** @hidden */\n this.multiple = false;\n this._selectionService.registerRootComponent(this);\n }\n /** @hidden */\n select(item) {\n this._selectionService.selectItem(item);\n }\n /** @hidden */\n deselect(item) {\n this._selectionService.deselectItem(item);\n }\n /** @hidden */\n toggleSelect(item) {\n if (item.getSelected()) {\n this.deselect(item);\n }\n else {\n this.select(item);\n }\n }\n /** @hidden */\n onChange(value) {\n this.selectedChange.emit(value);\n }\n /** @hidden */\n ngAfterViewInit() {\n this._selectionService.initialize(this.selectableItems);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectableListDirective, deps: [{ token: i1.SelectionService }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.1.4\", type: SelectableListDirective, isStandalone: true, selector: \"[fdkSelectableList]\", inputs: { toggle: [\"toggle\", \"toggle\", booleanAttribute], multiple: [\"multiple\", \"multiple\", booleanAttribute], selected: \"selected\" }, outputs: { selectedChange: \"selectedChange\" }, providers: [\n {\n provide: SelectComponentRootToken,\n useExisting: SelectableListDirective\n },\n SelectionService\n ], queries: [{ propertyName: \"selectableItems\", predicate: SelectableItemToken }], exportAs: [\"fdkSelectableList\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectableListDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkSelectableList]',\n exportAs: 'fdkSelectableList',\n standalone: true,\n providers: [\n {\n provide: SelectComponentRootToken,\n useExisting: SelectableListDirective\n },\n SelectionService\n ]\n }]\n }], ctorParameters: () => [{ type: i1.SelectionService }], propDecorators: { selectedChange: [{\n type: Output\n }], toggle: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], multiple: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], selected: [{\n type: Input\n }], selectableItems: [{\n type: ContentChildren,\n args: [SelectableItemToken]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1saXN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvc2VsZWN0YWJsZS1saXN0L3NlbGVjdGFibGUtbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGVBQWUsRUFDZixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQTJCLE1BQU0sK0JBQStCLENBQUM7QUFDbEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQWN2RCxNQUFNLE9BQU8sdUJBQXVCO0lBZWhDLGNBQWM7SUFDZCxJQUNJLFFBQVEsQ0FBQyxLQUFpQztRQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFLRCxjQUFjO0lBQ2QsWUFBb0IsaUJBQXlDO1FBQXpDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBd0I7UUF0QjdELGNBQWM7UUFFZCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO1FBRWhFLGNBQWM7UUFFZCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsY0FBYztRQUVkLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFhYixJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGNBQWM7SUFDZCxNQUFNLENBQUMsSUFBK0I7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVEsQ0FBQyxJQUErQjtRQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFBWSxDQUFDLElBQStCO1FBQ3hDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsUUFBUSxDQUFDLEtBQWlDO1FBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzVELENBQUM7OEdBeERRLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDhGQVFaLGdCQUFnQixzQ0FJaEIsZ0JBQWdCLHFGQXBCekI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsd0JBQXdCO2dCQUNqQyxXQUFXLEVBQUUsdUJBQXVCO2FBQ3ZDO1lBQ0QsZ0JBQWdCO1NBQ25CLDBEQXdCZ0IsbUJBQW1COzsyRkF0QjNCLHVCQUF1QjtrQkFabkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSx3QkFBd0I7NEJBQ2pDLFdBQVcseUJBQXlCO3lCQUN2Qzt3QkFDRCxnQkFBZ0I7cUJBQ25CO2lCQUNKO3FGQU1HLGNBQWM7c0JBRGIsTUFBTTtnQkFLUCxNQUFNO3NCQURMLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBS3RDLFFBQVE7c0JBRFAsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFLbEMsUUFBUTtzQkFEWCxLQUFLO2dCQU1nQyxlQUFlO3NCQUFwRCxlQUFlO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3RDb21wb25lbnRSb290VG9rZW4sIFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlIH0gZnJvbSAnLi9zZWxlY3QtY29tcG9uZW50LXJvb3QudG9rZW4nO1xuaW1wb3J0IHsgU2VsZWN0YWJsZUl0ZW1Ub2tlbiB9IGZyb20gJy4vc2VsZWN0YWJsZS1pdGVtLnRva2VuJztcbmltcG9ydCB7IFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlbGVjdGlvbi5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrU2VsZWN0YWJsZUxpc3RdJyxcbiAgICBleHBvcnRBczogJ2Zka1NlbGVjdGFibGVMaXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBTZWxlY3RDb21wb25lbnRSb290VG9rZW4sXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogU2VsZWN0YWJsZUxpc3REaXJlY3RpdmVcbiAgICAgICAgfSxcbiAgICAgICAgU2VsZWN0aW9uU2VydmljZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZUxpc3REaXJlY3RpdmU8VCBleHRlbmRzIEVsZW1lbnQgPSBIVE1MRWxlbWVudCwgViA9IGFueT5cbiAgICBpbXBsZW1lbnRzIFNlbGVjdENvbXBvbmVudFJvb3RUb2tlbjxUPiwgQWZ0ZXJWaWV3SW5pdFxue1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPFQ+PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICB0b2dnbGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgbXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2VsZWN0ZWQodmFsdWU6IFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlPFQ+KSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvblNlcnZpY2Uuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihTZWxlY3RhYmxlSXRlbVRva2VuKSBzZWxlY3RhYmxlSXRlbXMhOiBRdWVyeUxpc3Q8U2VsZWN0YWJsZUl0ZW1Ub2tlbjxULCBWPj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NlbGVjdGlvblNlcnZpY2U6IFNlbGVjdGlvblNlcnZpY2U8VCwgVj4pIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uU2VydmljZS5yZWdpc3RlclJvb3RDb21wb25lbnQodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZWxlY3QoaXRlbTogU2VsZWN0YWJsZUl0ZW1Ub2tlbjxULCBWPik6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBkZXNlbGVjdChpdGVtOiBTZWxlY3RhYmxlSXRlbVRva2VuPFQsIFY+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvblNlcnZpY2UuZGVzZWxlY3RJdGVtKGl0ZW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdG9nZ2xlU2VsZWN0KGl0ZW06IFNlbGVjdGFibGVJdGVtVG9rZW48VCwgVj4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGl0ZW0uZ2V0U2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5kZXNlbGVjdChpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNoYW5nZSh2YWx1ZTogU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8VD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uU2VydmljZS5pbml0aWFsaXplKHRoaXMuc2VsZWN0YWJsZUl0ZW1zKTtcbiAgICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport { SelectableItemDirective } from './selectable-item.directive';\nimport { SelectableListDirective } from './selectable-list.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class SelectableListModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectableListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectableListModule, imports: [SelectableListDirective, SelectableItemDirective], exports: [SelectableListDirective, SelectableItemDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectableListModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectableListModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [SelectableListDirective, SelectableItemDirective],\n exports: [SelectableListDirective, SelectableItemDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1saXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RpcmVjdGl2ZXMvc2VsZWN0YWJsZS1saXN0L3NlbGVjdGFibGUtbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFdEU7OztHQUdHO0FBS0gsTUFBTSxPQUFPLG9CQUFvQjs4R0FBcEIsb0JBQW9COytHQUFwQixvQkFBb0IsWUFIbkIsdUJBQXVCLEVBQUUsdUJBQXVCLGFBQ2hELHVCQUF1QixFQUFFLHVCQUF1QjsrR0FFakQsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQUpoQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixFQUFFLHVCQUF1QixDQUFDO29CQUMzRCxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSx1QkFBdUIsQ0FBQztpQkFDOUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VsZWN0YWJsZUl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL3NlbGVjdGFibGUtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2VsZWN0YWJsZUxpc3REaXJlY3RpdmUgfSBmcm9tICcuL3NlbGVjdGFibGUtbGlzdC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgZGlyZWN0IGltcG9ydHMgb2YgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbU2VsZWN0YWJsZUxpc3REaXJlY3RpdmUsIFNlbGVjdGFibGVJdGVtRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbU2VsZWN0YWJsZUxpc3REaXJlY3RpdmUsIFNlbGVjdGFibGVJdGVtRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RhYmxlTGlzdE1vZHVsZSB7fVxuIl19","import { Directive, Input, TemplateRef } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class TemplateDirective {\n /** @hidden */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n /** @hidden */\n getName() {\n return this.name;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TemplateDirective, isStandalone: true, selector: \"[fdkTemplate]\", inputs: { name: [\"fdkTemplate\", \"name\"] }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkTemplate]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { name: [{\n type: Input,\n args: ['fdkTemplate']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy90ZW1wbGF0ZS90ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU05RCxNQUFNLE9BQU8saUJBQWlCO0lBSzFCLGNBQWM7SUFDZCxZQUFtQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFBRyxDQUFDO0lBRXBELGNBQWM7SUFDZCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7OEdBWFEsaUJBQWlCO2tHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjtnRkFJRyxJQUFJO3NCQURILEtBQUs7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka1RlbXBsYXRlXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZURpcmVjdGl2ZSB7XG4gICAgLyoqIE5hbWUgb2YgdGhlIHRlbXBsYXRlICovXG4gICAgQElucHV0KCdmZGtUZW1wbGF0ZScpXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport { TemplateDirective } from './template.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class TemplateModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TemplateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TemplateModule, imports: [TemplateDirective], exports: [TemplateDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TemplateModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TemplateModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [TemplateDirective],\n exports: [TemplateDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy90ZW1wbGF0ZS90ZW1wbGF0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFekQ7OztHQUdHO0FBS0gsTUFBTSxPQUFPLGNBQWM7OEdBQWQsY0FBYzsrR0FBZCxjQUFjLFlBSGIsaUJBQWlCLGFBQ2pCLGlCQUFpQjsrR0FFbEIsY0FBYzs7MkZBQWQsY0FBYztrQkFKMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDNUIsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgZGlyZWN0IGltcG9ydHMgb2YgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbVGVtcGxhdGVEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtUZW1wbGF0ZURpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVNb2R1bGUge31cbiJdfQ==","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, Input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class TruncateDirective {\n /**\n * Width in pixel for truncation of an element , by default\n */\n set fdkTruncateWidth(value) {\n this._customWidthCount = coerceNumberProperty(value);\n }\n /** @hidden */\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n /**\n * Truncating state\n */\n this.fdkTruncateState = false;\n /** @hidden */\n this._customWidthCount = 200;\n /** @hidden */\n this.takeDefaultStyleOnce = true;\n }\n /**\n * Root native element\n */\n get rootElement() {\n return this._elementRef.nativeElement;\n }\n /**\n * Method saves default style of target element before first truncate.\n */\n setDefaultStyle() {\n if (this.takeDefaultStyleOnce) {\n this._defaultStyle = this._truncateTarget.style.cssText;\n this.takeDefaultStyleOnce = false;\n }\n }\n /** @hidden */\n ngAfterViewInit() {\n if (this.rootElement) {\n this._truncate();\n }\n }\n /** @hidden */\n ngOnChanges() {\n this._truncate();\n }\n /** @hidden */\n _truncate() {\n this._truncateTarget = this.rootElement;\n if (!this._truncateTarget) {\n return;\n }\n this.setDefaultStyle();\n this._truncationStyle = `${this._defaultStyle} max-width: ${this._customWidthCount}px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`;\n this._truncateTarget.style.cssText = this.fdkTruncateState ? this._truncationStyle : this._defaultStyle;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TruncateDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TruncateDirective, isStandalone: true, selector: \"[fdkTruncate]\", inputs: { fdkTruncateWidth: \"fdkTruncateWidth\", fdkTruncateState: \"fdkTruncateState\" }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TruncateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkTruncate]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { fdkTruncateWidth: [{\n type: Input\n }], fdkTruncateState: [{\n type: Input\n }] } });\nexport class TruncatedTitleDirective {\n /** @hidden */\n constructor(_elRef) {\n this._elRef = _elRef;\n }\n /** @hidden */\n ngAfterContentChecked() {\n const el = this._elRef.nativeElement;\n if (el.scrollWidth > el.offsetWidth) {\n el.title = el.innerText;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TruncatedTitleDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TruncatedTitleDirective, isStandalone: true, selector: \"[fdkTruncatedTitle], [fdTruncatedTitle], [fd-truncate-title]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TruncatedTitleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkTruncatedTitle], [fdTruncatedTitle], [fd-truncate-title]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy90cnVuY2F0ZS90cnVuY2F0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFzQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQzs7QUFPNUcsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQjs7T0FFRztJQUNILElBQ0ksZ0JBQWdCLENBQUMsS0FBdUI7UUFDeEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUEyQkQsY0FBYztJQUNkLFlBQTZCLFdBQXVCO1FBQXZCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBMUJwRDs7V0FFRztRQUVILHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV6QixjQUFjO1FBQ04sc0JBQWlCLEdBQUcsR0FBRyxDQUFDO1FBVWhDLGNBQWM7UUFDTix5QkFBb0IsR0FBRyxJQUFJLENBQUM7SUFRbUIsQ0FBQztJQUV4RDs7T0FFRztJQUNILElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDeEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUN0QyxDQUFDO0lBQ0wsQ0FBQztJQUNELGNBQWM7SUFDZCxlQUFlO1FBQ1gsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JCLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWM7SUFDTixTQUFTO1FBQ2IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRXhDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsZUFBZSxJQUFJLENBQUMsaUJBQWlCLHFFQUFxRSxDQUFDO1FBQ3hKLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1RyxDQUFDOzhHQTNFUSxpQkFBaUI7a0dBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7aUJBQ25COytFQU1PLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFTTixnQkFBZ0I7c0JBRGYsS0FBSzs7QUFzRVYsTUFBTSxPQUFPLHVCQUF1QjtJQUNoQyxjQUFjO0lBQ2QsWUFBb0IsTUFBa0I7UUFBbEIsV0FBTSxHQUFOLE1BQU0sQ0FBWTtJQUFHLENBQUM7SUFFMUMsY0FBYztJQUNkLHFCQUFxQjtRQUNqQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUNyQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQzs4R0FWUSx1QkFBdUI7a0dBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsOERBQThEO29CQUN4RSxVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL251bGxhYmxlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrVHJ1bmNhdGVdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRydW5jYXRlRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBXaWR0aCBpbiBwaXhlbCBmb3IgdHJ1bmNhdGlvbiBvZiBhbiBlbGVtZW50ICwgYnkgZGVmYXVsdFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZka1RydW5jYXRlV2lkdGgodmFsdWU6IE51bGxhYmxlPG51bWJlcj4pIHtcbiAgICAgICAgdGhpcy5fY3VzdG9tV2lkdGhDb3VudCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcnVuY2F0aW5nIHN0YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmZGtUcnVuY2F0ZVN0YXRlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2N1c3RvbVdpZHRoQ291bnQgPSAyMDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RydW5jYXRlVGFyZ2V0OiBIVE1MRWxlbWVudDtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogc2F2ZXMgZGVmYXVsdCBzdHlsZSBvZiBlbGVtZW50IGJlZm9yZSB0cnVuY2F0aW5nXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZGVmYXVsdFN0eWxlOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgdGFrZURlZmF1bHRTdHlsZU9uY2UgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiB0cnVuY2F0aW9uIHN0eWxlIGZvciB0cnVuY2F0aW5nIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF90cnVuY2F0aW9uU3R5bGU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICAgIC8qKlxuICAgICAqIFJvb3QgbmF0aXZlIGVsZW1lbnRcbiAgICAgKi9cbiAgICBnZXQgcm9vdEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBzYXZlcyBkZWZhdWx0IHN0eWxlIG9mIHRhcmdldCBlbGVtZW50IGJlZm9yZSBmaXJzdCB0cnVuY2F0ZS5cbiAgICAgKi9cbiAgICBzZXREZWZhdWx0U3R5bGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRha2VEZWZhdWx0U3R5bGVPbmNlKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0U3R5bGUgPSB0aGlzLl90cnVuY2F0ZVRhcmdldC5zdHlsZS5jc3NUZXh0O1xuICAgICAgICAgICAgdGhpcy50YWtlRGVmYXVsdFN0eWxlT25jZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yb290RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5fdHJ1bmNhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RydW5jYXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cnVuY2F0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHJ1bmNhdGVUYXJnZXQgPSB0aGlzLnJvb3RFbGVtZW50O1xuXG4gICAgICAgIGlmICghdGhpcy5fdHJ1bmNhdGVUYXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldERlZmF1bHRTdHlsZSgpO1xuICAgICAgICB0aGlzLl90cnVuY2F0aW9uU3R5bGUgPSBgJHt0aGlzLl9kZWZhdWx0U3R5bGV9IG1heC13aWR0aDogJHt0aGlzLl9jdXN0b21XaWR0aENvdW50fXB4OyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgd2hpdGUtc3BhY2U6IG5vd3JhcDtgO1xuICAgICAgICB0aGlzLl90cnVuY2F0ZVRhcmdldC5zdHlsZS5jc3NUZXh0ID0gdGhpcy5mZGtUcnVuY2F0ZVN0YXRlID8gdGhpcy5fdHJ1bmNhdGlvblN0eWxlIDogdGhpcy5fZGVmYXVsdFN0eWxlO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrVHJ1bmNhdGVkVGl0bGVdLCBbZmRUcnVuY2F0ZWRUaXRsZV0sIFtmZC10cnVuY2F0ZS10aXRsZV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVHJ1bmNhdGVkVGl0bGVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGVsLnNjcm9sbFdpZHRoID4gZWwub2Zmc2V0V2lkdGgpIHtcbiAgICAgICAgICAgIGVsLnRpdGxlID0gZWwuaW5uZXJUZXh0O1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { TruncateDirective, TruncatedTitleDirective } from './truncate.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class TruncateModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TruncateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TruncateModule, imports: [TruncateDirective, TruncatedTitleDirective], exports: [TruncateDirective, TruncatedTitleDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TruncateModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TruncateModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [TruncateDirective, TruncatedTitleDirective],\n exports: [TruncateDirective, TruncatedTitleDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZGlyZWN0aXZlcy90cnVuY2F0ZS90cnVuY2F0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFbEY7OztHQUdHO0FBS0gsTUFBTSxPQUFPLGNBQWM7OEdBQWQsY0FBYzsrR0FBZCxjQUFjLFlBSGIsaUJBQWlCLEVBQUUsdUJBQXVCLGFBQzFDLGlCQUFpQixFQUFFLHVCQUF1QjsrR0FFM0MsY0FBYzs7MkZBQWQsY0FBYztrQkFKMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSx1QkFBdUIsQ0FBQztvQkFDckQsT0FBTyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsdUJBQXVCLENBQUM7aUJBQ3hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVHJ1bmNhdGVEaXJlY3RpdmUsIFRydW5jYXRlZFRpdGxlRGlyZWN0aXZlIH0gZnJvbSAnLi90cnVuY2F0ZS5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgZGlyZWN0IGltcG9ydHMgb2YgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbVHJ1bmNhdGVEaXJlY3RpdmUsIFRydW5jYXRlZFRpdGxlRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbVHJ1bmNhdGVEaXJlY3RpdmUsIFRydW5jYXRlZFRpdGxlRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBUcnVuY2F0ZU1vZHVsZSB7fVxuIl19","import { InjectionToken } from '@angular/core';\nexport const DND_ITEM = new InjectionToken('Drag and drop Item');\nexport const DND_LIST = new InjectionToken('Drag and drop List');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZHJhZy1hbmQtZHJvcC90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBETkRfSVRFTSA9IG5ldyBJbmplY3Rpb25Ub2tlbignRHJhZyBhbmQgZHJvcCBJdGVtJyk7XG5leHBvcnQgY29uc3QgRE5EX0xJU1QgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0RyYWcgYW5kIGRyb3AgTGlzdCcpO1xuIl19","import { DragDrop } from '@angular/cdk/drag-drop';\nimport { Directive, ElementRef, EventEmitter, HostBinding, Input, Output, Renderer2, forwardRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { DND_ITEM } from '../tokens';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/cdk/drag-drop\";\nexport class DndItemDirective {\n /** Defines if element is draggable */\n set draggable(draggable) {\n this._draggable = draggable;\n this.changeCDKDragState();\n }\n /** @hidden */\n constructor(elementRef, _dragDrop, _renderer) {\n this.elementRef = elementRef;\n this._dragDrop = _dragDrop;\n this._renderer = _renderer;\n /**\n * Whether to apply \"fd-dnd-item\" class.\n * @default true\n */\n this.applyDragItemClass = true;\n /** Event thrown when the element is moved by 1px */\n this.moved = new EventEmitter();\n /** Event thrown when the element is released */\n this.released = new EventEmitter();\n /** Event thrown when the element is started to be dragged */\n this.started = new EventEmitter();\n /**\n * Defines if the item is prevented from being moved by other elements.\n * So nothing can be placed just before and just after it\n */\n this.stickInPlace = false;\n /** Class added to element, when it's dragged. */\n this.classWhenElementDragged = 'fd-dnd-on-drag';\n /** Defines if every element in list is draggable */\n this.listDraggable = true;\n /** @hidden */\n this._draggable = true;\n /** @hidden */\n this._subscriptions = new Subscription();\n /** @hidden */\n this._placeholderElement = null;\n /** @hidden */\n this._lineElement = null;\n /** @hidden */\n this._replaceIndicator = null;\n }\n /** @hidden */\n getElementCoordinates(isBefore) {\n /** Takes distance from the beginning of window page */\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const position = isBefore ? 'before' : 'after';\n /** Vertically distance is counted by distance from top of the side + half of the element height */\n return {\n x: rect.left,\n position,\n y: rect.top,\n stickToPosition: this.stickInPlace,\n width: rect.width,\n height: rect.height\n };\n }\n /** @hidden */\n ngAfterContentInit() {\n this._setCDKDrag();\n this._listenElementEvents();\n }\n /** @hidden */\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n this._dragRef.dispose();\n }\n /** @hidden */\n onCdkMove(position) {\n this.moved.emit(position);\n }\n /** @hidden */\n onCdkDragReleased() {\n /** Remove class which is added, when element is dragged */\n this.elementRef.nativeElement.classList.remove(this.classWhenElementDragged);\n this.released.emit();\n /** Resets the position of element. */\n this._dragRef.reset();\n /** Removes placeholder element */\n this.removePlaceholder();\n }\n /** @hidden */\n onCdkDragStart() {\n /** Adds class */\n this.elementRef.nativeElement.classList.add(this.classWhenElementDragged);\n if (!this._placeholderElement) {\n this.createPlaceholder();\n }\n this.started.emit();\n }\n /** @hidden */\n removePlaceholder() {\n if (this._placeholderElement && this._placeholderElement.parentNode) {\n // IE11 workaround\n this._placeholderElement.parentNode.removeChild(this._placeholderElement);\n this._placeholderElement = null;\n }\n }\n /** @hidden */\n removeLine() {\n if (this._lineElement && this._lineElement.parentNode) {\n // IE11 workaround\n this._lineElement.parentNode.removeChild(this._lineElement);\n this._lineElement = null;\n }\n }\n /** @hidden */\n removeReplaceIndicator() {\n if (this._replaceIndicator && this._replaceIndicator.parentNode) {\n // IE11 workaround\n this._replaceIndicator.parentNode.removeChild(this._replaceIndicator);\n this._replaceIndicator = null;\n }\n }\n /** @hidden */\n createReplaceIndicator() {\n this._replaceIndicator = document.createElement('DIV');\n this._replaceIndicator.classList.add('fd-replace-indicator');\n let container = this.elementRef.nativeElement;\n if (this.containerSelector) {\n const newContainer = this.elementRef.nativeElement.querySelector(this.containerSelector);\n if (newContainer) {\n container = newContainer;\n }\n }\n container.appendChild(this._replaceIndicator);\n }\n /** @hidden */\n createLine(position, gridMode) {\n /** Creating of line element */\n this._lineElement = document.createElement('div');\n this._lineElement.classList.add('drop-area__line');\n if (gridMode) {\n this._lineElement.classList.add('drop-area__line--vertical');\n }\n else {\n this._lineElement.classList.add('drop-area__line--horizontal');\n }\n if (position === 'after') {\n this._lineElement.classList.add('after');\n }\n if (position === 'before') {\n this._lineElement.classList.add('before');\n }\n /** Putting element to the container */\n let container = this.elementRef.nativeElement;\n if (this.containerSelector) {\n const newContainer = this.elementRef.nativeElement.querySelector(this.containerSelector);\n if (newContainer) {\n container = newContainer;\n }\n }\n container.appendChild(this._lineElement);\n }\n /** @hidden */\n changeCDKDragState() {\n if (this._dragRef) {\n this._dragRef.disabled = !(this._draggable && this.listDraggable);\n }\n }\n /**\n * Sets the disabled state of the dnd item.\n * @param state\n */\n setDisabledState(state) {\n if (state) {\n this._renderer.addClass(this.elementRef.nativeElement, 'fd-dnd-item--disabled');\n }\n else {\n this._renderer.removeClass(this.elementRef.nativeElement, 'fd-dnd-item--disabled');\n }\n }\n /** @hidden */\n createPlaceholder() {\n const placeholder = this.elementRef.nativeElement.cloneNode(true);\n /** Cloning container element */\n this._placeholderElement = placeholder;\n placeholder.classList.add('fd-dnd-placeholder');\n this._setPlaceholderStyles();\n /** Including element to the container\n * IE11 equivalent to `this.element.nativeElement.after(clone);`\n */\n this._placeAfter(this.elementRef.nativeElement, placeholder);\n }\n /** @hidden */\n _setPlaceholderStyles() {\n const offset = this._getOffsetToParent(this.elementRef.nativeElement);\n if (!offset || !this._placeholderElement) {\n return;\n }\n this._placeholderElement.style.top = offset.y + 'px';\n this._placeholderElement.style.left = offset.x + 'px';\n this._placeholderElement.style.position = 'absolute';\n this._placeholderElement.style.zIndex = '0';\n this._placeholderElement.style.opacity = '0.3';\n this._placeholderElement.style.width = this.elementRef.nativeElement.offsetWidth + 'px';\n this._placeholderElement.style.height = this.elementRef.nativeElement.offsetHeight + 'px';\n }\n /** @hidden */\n _getOffsetToParent(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n return;\n }\n const parentElmRect = parentElement.getBoundingClientRect();\n const elmRect = element.getBoundingClientRect();\n const parentTop = parentElmRect.top;\n const parentLeft = parentElmRect.left;\n return {\n x: Math.abs(elmRect.left - parentLeft),\n y: Math.abs(elmRect.top - parentTop)\n };\n }\n /** @hidden */\n _setCDKDrag() {\n this._dragRef = this._dragDrop.createDrag(this.elementRef);\n this._dragRef.disabled = !this._draggable;\n this._subscriptions.add(this._dragRef.moved.subscribe((event) => this.onCdkMove(event.pointerPosition)));\n this._subscriptions.add(this._dragRef.released.subscribe(() => this.onCdkDragReleased()));\n this._subscriptions.add(this._dragRef.started.subscribe(() => this.onCdkDragStart()));\n }\n /** IE11 equivalent of Node.after() Method */\n _placeAfter(element, cloneNode) {\n const docFrag = document.createDocumentFragment();\n docFrag.appendChild(cloneNode);\n element.parentNode?.insertBefore(docFrag, element.nextSibling);\n }\n /** @hidden */\n _listenElementEvents() {\n this._subscriptions.add(this.released\n .pipe(\n // postpone blur\n delay(0))\n .subscribe(() => {\n if (this.containerSelector) {\n this.elementRef.nativeElement.children[0].blur();\n }\n this.elementRef.nativeElement.blur();\n }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DndItemDirective, deps: [{ token: i0.ElementRef }, { token: i1.DragDrop }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: DndItemDirective, isStandalone: true, selector: \"[fdkDndItem], [fd-dnd-item]\", inputs: { item: [\"fdkDndItem\", \"item\"], applyDragItemClass: \"applyDragItemClass\", containerSelector: \"containerSelector\", stickInPlace: \"stickInPlace\", draggable: \"draggable\", classWhenElementDragged: \"classWhenElementDragged\" }, outputs: { moved: \"moved\", released: \"released\", started: \"started\" }, host: { properties: { \"class.fd-dnd-item\": \"this.applyDragItemClass\" } }, providers: [DragDrop, { provide: DND_ITEM, useExisting: forwardRef(() => DndItemDirective) }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DndItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkDndItem], [fd-dnd-item]',\n providers: [DragDrop, { provide: DND_ITEM, useExisting: forwardRef(() => DndItemDirective) }],\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.DragDrop }, { type: i0.Renderer2 }], propDecorators: { item: [{\n type: Input,\n args: ['fdkDndItem']\n }], applyDragItemClass: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.fd-dnd-item']\n }], containerSelector: [{\n type: Input\n }], moved: [{\n type: Output\n }], released: [{\n type: Output\n }], started: [{\n type: Output\n }], stickInPlace: [{\n type: Input\n }], draggable: [{\n type: Input\n }], classWhenElementDragged: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZHJhZy1hbmQtZHJvcC9kbmQtaXRlbS9kbmQtaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBVyxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFFSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQU9yQyxNQUFNLE9BQU8sZ0JBQWdCO0lBbUN6QixzQ0FBc0M7SUFDdEMsSUFDSSxTQUFTLENBQUMsU0FBa0I7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQTZCRCxjQUFjO0lBQ2QsWUFDb0IsVUFBc0IsRUFDckIsU0FBbUIsRUFDbkIsU0FBb0I7UUFGckIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFyRXpDOzs7V0FHRztRQUdILHVCQUFrQixHQUFHLElBQUksQ0FBQztRQU0xQixvREFBb0Q7UUFFM0MsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBRXJELGdEQUFnRDtRQUV2QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU3Qyw2REFBNkQ7UUFFcEQsWUFBTyxHQUFH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UUFBUTtzQkFEaEIsTUFBTTtnQkFLRSxPQUFPO3NCQURmLE1BQU07Z0JBUVAsWUFBWTtzQkFEWCxLQUFLO2dCQUtGLFNBQVM7c0JBRFosS0FBSztnQkFRTix1QkFBdUI7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcmFnRHJvcCwgRHJhZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL251bGxhYmxlJztcbmltcG9ydCB7IERuZEl0ZW0sIEVsZW1lbnRDaG9yZCwgRWxlbWVudFBvc2l0aW9uLCBMaW5rUG9zaXRpb24gfSBmcm9tICcuLi9kbmQuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBETkRfSVRFTSB9IGZyb20gJy4uL3Rva2Vucyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0RuZEl0ZW1dLCBbZmQtZG5kLWl0ZW1dJyxcbiAgICBwcm92aWRlcnM6IFtEcmFnRHJvcCwgeyBwcm92aWRlOiBETkRfSVRFTSwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRG5kSXRlbURpcmVjdGl2ZSkgfV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEbmRJdGVtRGlyZWN0aXZlPFQgPSBhbnk+IGltcGxlbWVudHMgRG5kSXRlbSwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogSXRlbSByZWZlcmVuY2UuIFVzZWQgZm9yIGNhc2VzIHdoZW4gYFtpdGVtc11gIGFycmF5IG9mIGRuZCBsaXN0IGlzIGRpZmZlcmVudCB0aGFuIGBkbmRJdGVtc2AgY29udGVudCBjaGlsZHJlbi4gKi9cbiAgICBASW5wdXQoJ2Zka0RuZEl0ZW0nKVxuICAgIGl0ZW06IE51bGxhYmxlPFQ+O1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYXBwbHkgXCJmZC1kbmQtaXRlbVwiIGNsYXNzLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtZG5kLWl0ZW0nKVxuICAgIGFwcGx5RHJhZ0l0ZW1DbGFzcyA9IHRydWU7XG5cbiAgICAvKiogQ29udGFpbmVyIHNlbGVjdG9yICovXG4gICAgQElucHV0KClcbiAgICBjb250YWluZXJTZWxlY3Rvcj86IHN0cmluZztcblxuICAgIC8qKiBFdmVudCB0aHJvd24gd2hlbiB0aGUgZWxlbWVudCBpcyBtb3ZlZCBieSAxcHggKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RWxlbWVudFBvc2l0aW9uPigpO1xuXG4gICAgLyoqIEV2ZW50IHRocm93biB3aGVuIHRoZSBlbGVtZW50IGlzIHJlbGVhc2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgcmVsZWFzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgdGhyb3duIHdoZW4gdGhlIGVsZW1lbnQgaXMgc3RhcnRlZCB0byBiZSBkcmFnZ2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgc3RhcnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqICBEZWZpbmVzIGlmIHRoZSBpdGVtIGlzIHByZXZlbnRlZCBmcm9tIGJlaW5nIG1vdmVkIGJ5IG90aGVyIGVsZW1lbnRzLlxuICAgICAqIFNvIG5vdGhpbmcgY2FuIGJlIHBsYWNlZCBqdXN0IGJlZm9yZSBhbmQganVzdCBhZnRlciBpdFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RpY2tJblBsYWNlID0gZmFsc2U7XG5cbiAgICAvKiogRGVmaW5lcyBpZiBlbGVtZW50IGlzIGRyYWdnYWJsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRyYWdnYWJsZShkcmFnZ2FibGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZHJhZ2dhYmxlID0gZHJhZ2dhYmxlO1xuICAgICAgICB0aGlzLmNoYW5nZUNES0RyYWdTdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBDbGFzcyBhZGRlZCB0byBlbGVtZW50LCB3aGVuIGl0J3MgZHJhZ2dlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzV2hlbkVsZW1lbnREcmFnZ2VkID0gJ2ZkLWRuZC1vbi1kcmFnJztcblxuICAgIC8qKiBEZWZpbmVzIGlmIGV2ZXJ5IGVsZW1lbnQgaW4gbGlzdCBpcyBkcmFnZ2FibGUgKi9cbiAgICBsaXN0RHJhZ2dhYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogRHJhZyByZWZlcmVuY2UsIG9iamVjdCBjcmVhdGVkIGZyb20gRE5EIENESyBTZXJ2aWNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZHJhZ1JlZjogRHJhZ1JlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZHJhZ2dhYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcGxhY2Vob2xkZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saW5lRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVwbGFjZUluZGljYXRvcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kcmFnRHJvcDogRHJhZ0Ryb3AsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldEVsZW1lbnRDb29yZGluYXRlcyhpc0JlZm9yZTogYm9vbGVhbik6IEVsZW1lbnRDaG9yZCB7XG4gICAgICAgIC8qKiBUYWtlcyBkaXN0YW5jZSBmcm9tIHRoZSBiZWdpbm5pbmcgb2Ygd2luZG93IHBhZ2UgKi9cbiAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uOiBMaW5rUG9zaXRpb24gPSBpc0JlZm9yZSA/ICdiZWZvcmUnIDogJ2FmdGVyJztcblxuICAgICAgICAvKiogVmVydGljYWxseSBkaXN0YW5jZSBpcyBjb3VudGVkIGJ5IGRpc3RhbmNlIGZyb20gdG9wIG9mIHRoZSBzaWRlICsgaGFsZiBvZiB0aGUgZWxlbWVudCBoZWlnaHQgKi9cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHJlY3QubGVmdCxcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgeTogcmVjdC50b3AsXG4gICAgICAgICAgICBzdGlja1RvUG9zaXRpb246IHRoaXMuc3RpY2tJblBsYWNlLFxuICAgICAgICAgICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldENES0RyYWcoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuRWxlbWVudEV2ZW50cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZHJhZ1JlZi5kaXNwb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNka01vdmUocG9zaXRpb246IEVsZW1lbnRQb3NpdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm1vdmVkLmVtaXQocG9zaXRpb24pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DZGtEcmFnUmVsZWFzZWQoKTogdm9pZCB7XG4gICAgICAgIC8qKiBSZW1vdmUgY2xhc3Mgd2hpY2ggaXMgYWRkZWQsIHdoZW4gZWxlbWVudCBpcyBkcmFnZ2VkICovXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jbGFzc1doZW5FbGVtZW50RHJhZ2dlZCk7XG4gICAgICAgIHRoaXMucmVsZWFzZWQuZW1pdCgpO1xuXG4gICAgICAgIC8qKiBSZXNldHMgdGhlIHBvc2l0aW9uIG9mIGVsZW1lbnQuICovXG4gICAgICAgIHRoaXMuX2RyYWdSZWYucmVzZXQoKTtcblxuICAgICAgICAvKiogUmVtb3ZlcyBwbGFjZWhvbGRlciBlbGVtZW50ICovXG4gICAgICAgIHRoaXMucmVtb3ZlUGxhY2Vob2xkZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2RrRHJhZ1N0YXJ0KCk6IHZvaWQge1xuICAgICAgICAvKiogQWRkcyBjbGFzcyAqL1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NXaGVuRWxlbWVudERyYWdnZWQpO1xuXG4gICAgICAgIGlmICghdGhpcy5fcGxhY2Vob2xkZXJFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVBsYWNlaG9sZGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGFydGVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlbW92ZVBsYWNlaG9sZGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fcGxhY2Vob2xkZXJFbGVtZW50ICYmIHRoaXMuX3BsYWNlaG9sZGVyRWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAvLyBJRTExIHdvcmthcm91bmRcbiAgICAgICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX3BsYWNlaG9sZGVyRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLl9wbGFjZWhvbGRlckVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZW1vdmVMaW5lKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fbGluZUVsZW1lbnQgJiYgdGhpcy5fbGluZUVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgLy8gSUUxMSB3b3JrYXJvdW5kXG4gICAgICAgICAgICB0aGlzLl9saW5lRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2xpbmVFbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2xpbmVFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVtb3ZlUmVwbGFjZUluZGljYXRvcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3JlcGxhY2VJbmRpY2F0b3IgJiYgdGhpcy5fcmVwbGFjZUluZGljYXRvci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAvLyBJRTExIHdvcmthcm91bmRcbiAgICAgICAgICAgIHRoaXMuX3JlcGxhY2VJbmRpY2F0b3IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9yZXBsYWNlSW5kaWNhdG9yKTtcbiAgICAgICAgICAgIHRoaXMuX3JlcGxhY2VJbmRpY2F0b3IgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjcmVhdGVSZXBsYWNlSW5kaWNhdG9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZXBsYWNlSW5kaWNhdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnRElWJyk7XG4gICAgICAgIHRoaXMuX3JlcGxhY2VJbmRpY2F0b3IuY2xhc3NMaXN0LmFkZCgnZmQtcmVwbGFjZS1pbmRpY2F0b3InKTtcblxuICAgICAgICBsZXQgY29udGFpbmVyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lclNlbGVjdG9yKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdDb250YWluZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuY29udGFpbmVyU2VsZWN0b3IpO1xuICAgICAgICAgICAgaWYgKG5ld0NvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9IG5ld0NvbnRhaW5lcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9yZXBsYWNlSW5kaWNhdG9yKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNyZWF0ZUxpbmUocG9zaXRpb246IExpbmtQb3NpdGlvbiwgZ3JpZE1vZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgLyoqIENyZWF0aW5nIG9mIGxpbmUgZWxlbWVudCAqL1xuICAgICAgICB0aGlzLl9saW5lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLl9saW5lRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdkcm9wLWFyZWFfX2xpbmUnKTtcblxuICAgICAgICBpZiAoZ3JpZE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2xpbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Ryb3AtYXJlYV9fbGluZS0tdmVydGljYWwnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2xpbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Ryb3AtYXJlYV9fbGluZS0taG9yaXpvbnRhbCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gJ2FmdGVyJykge1xuICAgICAgICAgICAgdGhpcy5fbGluZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYWZ0ZXInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zaXRpb24gPT09ICdiZWZvcmUnKSB7XG4gICAgICAgICAgICB0aGlzLl9saW5lRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdiZWZvcmUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKiBQdXR0aW5nIGVsZW1lbnQgdG8gdGhlIGNvbnRhaW5lciAqL1xuICAgICAgICBsZXQgY29udGFpbmVyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5lclNlbGVjdG9yKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdDb250YWluZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuY29udGFpbmVyU2VsZWN0b3IpO1xuICAgICAgICAgICAgaWYgKG5ld0NvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9IG5ld0NvbnRhaW5lcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9saW5lRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjaGFuZ2VDREtEcmFnU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9kcmFnUmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9kcmFnUmVmLmRpc2FibGVkID0gISh0aGlzLl9kcmFnZ2FibGUgJiYgdGhpcy5saXN0RHJhZ2dhYmxlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBkbmQgaXRlbS5cbiAgICAgKiBAcGFyYW0gc3RhdGVcbiAgICAgKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdmZC1kbmQtaXRlbS0tZGlzYWJsZWQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZmQtZG5kLWl0ZW0tLWRpc2FibGVkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgY3JlYXRlUGxhY2Vob2xkZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAvKiogQ2xvbmluZyBjb250YWluZXIgZWxlbWVudCAqL1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlckVsZW1lbnQgPSBwbGFjZWhvbGRlcjtcblxuICAgICAgICBwbGFjZWhvbGRlci5jbGFzc0xpc3QuYWRkKCdmZC1kbmQtcGxhY2Vob2xkZXInKTtcbiAgICAgICAgdGhpcy5fc2V0UGxhY2Vob2xkZXJTdHlsZXMoKTtcblxuICAgICAgICAvKiogSW5jbHVkaW5nIGVsZW1lbnQgdG8gdGhlIGNvbnRhaW5lclxuICAgICAgICAgKiAgSUUxMSBlcXVpdmFsZW50IHRvIGB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5hZnRlcihjbG9uZSk7YFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fcGxhY2VBZnRlcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgcGxhY2Vob2xkZXIpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0UGxhY2Vob2xkZXJTdHlsZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuX2dldE9mZnNldFRvUGFyZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICBpZiAoIW9mZnNldCB8fCAhdGhpcy5fcGxhY2Vob2xkZXJFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlckVsZW1lbnQuc3R5bGUudG9wID0gb2Zmc2V0LnkgKyAncHgnO1xuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlckVsZW1lbnQuc3R5bGUubGVmdCA9IG9mZnNldC54ICsgJ3B4JztcbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJFbGVtZW50LnN0eWxlLnpJbmRleCA9ICcwJztcbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXJFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAnMC4zJztcblxuICAgICAgICB0aGlzLl9wbGFjZWhvbGRlckVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCArICdweCc7XG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgKyAncHgnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0T2Zmc2V0VG9QYXJlbnQoZWxlbWVudDogRWxlbWVudCk6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGlmICghcGFyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyZW50RWxtUmVjdCA9IHBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGVsbVJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IHBhcmVudFRvcCA9IHBhcmVudEVsbVJlY3QudG9wO1xuICAgICAgICBjb25zdCBwYXJlbnRMZWZ0ID0gcGFyZW50RWxtUmVjdC5sZWZ0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBNYXRoLmFicyhlbG1SZWN0LmxlZnQgLSBwYXJlbnRMZWZ0KSxcbiAgICAgICAgICAgIHk6IE1hdGguYWJzKGVsbVJlY3QudG9wIC0gcGFyZW50VG9wKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0Q0RLRHJhZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZHJhZ1JlZiA9IHRoaXMuX2RyYWdEcm9wLmNyZWF0ZURyYWcodGhpcy5lbGVtZW50UmVmKTtcbiAgICAgICAgdGhpcy5fZHJhZ1JlZi5kaXNhYmxlZCA9ICF0aGlzLl9kcmFnZ2FibGU7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKHRoaXMuX2RyYWdSZWYubW92ZWQuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vbkNka01vdmUoZXZlbnQucG9pbnRlclBvc2l0aW9uKSkpO1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZCh0aGlzLl9kcmFnUmVmLnJlbGVhc2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ2RrRHJhZ1JlbGVhc2VkKCkpKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5fZHJhZ1JlZi5zdGFydGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ2RrRHJhZ1N0YXJ0KCkpKTtcbiAgICB9XG5cbiAgICAvKiogSUUxMSBlcXVpdmFsZW50IG9mIE5vZGUuYWZ0ZXIoKSBNZXRob2QgKi9cbiAgICBwcml2YXRlIF9wbGFjZUFmdGVyKGVsZW1lbnQ6IEVsZW1lbnQsIGNsb25lTm9kZTogTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBkb2NGcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgICBkb2NGcmFnLmFwcGVuZENoaWxkKGNsb25lTm9kZSk7XG4gICAgICAgIGVsZW1lbnQucGFyZW50Tm9kZT8uaW5zZXJ0QmVmb3JlKGRvY0ZyYWcsIGVsZW1lbnQubmV4dFNpYmxpbmcpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuRWxlbWVudEV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICB0aGlzLnJlbGVhc2VkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIC8vIHBvc3Rwb25lIGJsdXJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXkoMClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRhaW5lclNlbGVjdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5ibHVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19","import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ChangeDetectorRef, Directive, Input, Optional } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { RtlService } from '../../services/rtl.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../services/rtl.service\";\n/**\n * This directive is used to provide drag & drop with keyboard support.\n * It should be used together with directive fdDndKeyboardItem.\n */\nexport class DndKeyboardGroupDirective {\n /** @hidden */\n constructor(_cdr, _rtlService) {\n this._cdr = _cdr;\n this._rtlService = _rtlService;\n /** Whether to disable drag & drop */\n this.disableKeyboardDragDrop = false;\n /** Used to apply indexes when moving between groups */\n this.orientation = 'vertical';\n /** @hidden */\n this._onDndItemFocus$ = new Subject();\n /** Custom function to call when moving item inside the group */\n this.customMoveFn = (group, fromIndex, toIndex) => moveItemInArray(group, fromIndex, toIndex);\n /** Custom function to call when moving item between groups */\n this.customTransferFn = (group, nextGroup, fromIndex, toIndex) => transferArrayItem(group, nextGroup, fromIndex, toIndex);\n }\n /** Process drag & drop */\n processDragDrop(event, itemIndex, groupIndex) {\n if (this.disableKeyboardDragDrop || !event.altKey) {\n return;\n }\n const isRtl = this._rtlService.rtl.value;\n const group = this.groups[groupIndex];\n const indexInNextGroup = this.orientation === 'vertical' ? 0 : itemIndex;\n const nextGroupExists = this.groups.length > groupIndex + 1;\n const prevGroupExists = !!groupIndex;\n if (KeyUtil.isKeyCode(event, RIGHT_ARROW) && (isRtl ? prevGroupExists : nextGroupExists)) {\n event.preventDefault();\n const nextGroupIndex = groupIndex + (isRtl ? -1 : 1);\n const nextGroup = this.groups[nextGroupIndex];\n this.customTransferFn(group, nextGroup, itemIndex, indexInNextGroup);\n this._focusDndItem(nextGroupIndex, indexInNextGroup);\n }\n else if (KeyUtil.isKeyCode(event, LEFT_ARROW) && (isRtl ? nextGroupExists : prevGroupExists)) {\n event.preventDefault();\n const nextGroupIndex = groupIndex + (isRtl ? 1 : -1);\n const nextGroup = this.groups[nextGroupIndex];\n this.customTransferFn(group, nextGroup, itemIndex, indexInNextGroup);\n this._focusDndItem(nextGroupIndex, indexInNextGroup);\n }\n else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n event.preventDefault();\n this.customMoveFn(group, itemIndex, itemIndex + 1);\n this._focusDndItem(groupIndex, itemIndex + 1);\n }\n else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n event.preventDefault();\n this.customMoveFn(group, itemIndex, itemIndex - 1);\n this._focusDndItem(groupIndex, itemIndex - 1);\n }\n }\n /** @hidden Focus after moving elements with keyboard */\n _focusDndItem(groupIndex, itemIndex) {\n this._cdr.detectChanges();\n this._onDndItemFocus$.next([groupIndex, itemIndex]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DndKeyboardGroupDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: DndKeyboardGroupDirective, isStandalone: true, selector: \"[fdkDndKeyboardGroup], [fdDndKeyboardGroup]\", inputs: { groups: \"groups\", disableKeyboardDragDrop: \"disableKeyboardDragDrop\", orientation: \"orientation\", customMoveFn: \"customMoveFn\", customTransferFn: \"customTransferFn\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DndKeyboardGroupDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkDndKeyboardGroup], [fdDndKeyboardGroup]'\n }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.RtlService, decorators: [{\n type: Optional\n }] }], propDecorators: { groups: [{\n type: Input\n }], disableKeyboardDragDrop: [{\n type: Input\n }], orientation: [{\n type: Input\n }], customMoveFn: [{\n type: Input\n }], customTransferFn: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWtleWJvYXJkLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RyYWctYW5kLWRyb3AvZG5kLWtleWJvYXJkLWdyb3VwL2RuZC1rZXlib2FyZC1ncm91cC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFFeEQ7OztHQUdHO0FBSUgsTUFBTSxPQUFPLHlCQUF5QjtJQWdCbEMsY0FBYztJQUNkLFlBQ3FCLElBQXVCLEVBQ1gsV0FBdUI7UUFEbkMsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDWCxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQWR4RCxxQ0FBcUM7UUFFckMsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBRWhDLHVEQUF1RDtRQUV2RCxnQkFBVyxHQUE4QixVQUFVLENBQUM7UUFFcEQsY0FBYztRQUNkLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFvQixDQUFDO1FBUW5ELGdFQUFnRTtRQUVoRSxpQkFBWSxHQUFHLENBQUMsS0FBWSxFQUFFLFNBQWlCLEVBQUUsT0FBZSxFQUFRLEVBQUUsQ0FDdEUsZUFBZSxDQUFDLEtBQUssRUFBRSxTQUFTLEVB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Q0FBQyxFQUFFLENBQUM7WUFDNUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBRXZCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDTCxDQUFDO0lBRUQsd0RBQXdEO0lBQ2hELGFBQWEsQ0FBQyxVQUFrQixFQUFFLFNBQWlCO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7OEdBaEZRLHlCQUF5QjtrR0FBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2Q0FBNkM7aUJBQzFEOzswQkFvQlEsUUFBUTt5Q0FoQmIsTUFBTTtzQkFETCxLQUFLO2dCQUtOLHVCQUF1QjtzQkFEdEIsS0FBSztnQkFLTixXQUFXO3NCQURWLEtBQUs7Z0JBY04sWUFBWTtzQkFEWCxLQUFLO2dCQU1OLGdCQUFnQjtzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgS2V5VXRpbCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBSdGxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcnRsLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoaXMgZGlyZWN0aXZlIGlzIHVzZWQgdG8gcHJvdmlkZSBkcmFnICYgZHJvcCB3aXRoIGtleWJvYXJkIHN1cHBvcnQuXG4gKiBJdCBzaG91bGQgYmUgdXNlZCB0b2dldGhlciB3aXRoIGRpcmVjdGl2ZSBmZERuZEtleWJvYXJkSXRlbS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrRG5kS2V5Ym9hcmRHcm91cF0sIFtmZERuZEtleWJvYXJkR3JvdXBdJ1xufSlcbmV4cG9ydCBjbGFzcyBEbmRLZXlib2FyZEdyb3VwRGlyZWN0aXZlIHtcbiAgICAvKiogR3JvdXAgb2YgaXRlbXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGdyb3VwczogYW55W11bXTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGRpc2FibGUgZHJhZyAmIGRyb3AgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVLZXlib2FyZERyYWdEcm9wID0gZmFsc2U7XG5cbiAgICAvKiogVXNlZCB0byBhcHBseSBpbmRleGVzIHdoZW4gbW92aW5nIGJldHdlZW4gZ3JvdXBzICovXG4gICAgQElucHV0KClcbiAgICBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICd2ZXJ0aWNhbCc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRuZEl0ZW1Gb2N1cyQgPSBuZXcgU3ViamVjdDxbbnVtYmVyLCBudW1iZXJdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge31cblxuICAgIC8qKiBDdXN0b20gZnVuY3Rpb24gdG8gY2FsbCB3aGVuIG1vdmluZyBpdGVtIGluc2lkZSB0aGUgZ3JvdXAgKi9cbiAgICBASW5wdXQoKVxuICAgIGN1c3RvbU1vdmVGbiA9IChncm91cDogYW55W10sIGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpOiB2b2lkID0+XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheShncm91cCwgZnJvbUluZGV4LCB0b0luZGV4KTtcblxuICAgIC8qKiBDdXN0b20gZnVuY3Rpb24gdG8gY2FsbCB3aGVuIG1vdmluZyBpdGVtIGJldHdlZW4gZ3JvdXBzICovXG4gICAgQElucHV0KClcbiAgICBjdXN0b21UcmFuc2ZlckZuID0gKGdyb3VwOiBhbnlbXSwgbmV4dEdyb3VwOiBhbnlbXSwgZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcik6IHZvaWQgPT5cbiAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZ3JvdXAsIG5leHRHcm91cCwgZnJvbUluZGV4LCB0b0luZGV4KTtcblxuICAgIC8qKiBQcm9jZXNzIGRyYWcgJiBkcm9wICovXG4gICAgcHJvY2Vzc0RyYWdEcm9wKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpdGVtSW5kZXg6IG51bWJlciwgZ3JvdXBJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVLZXlib2FyZERyYWdEcm9wIHx8ICFldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzUnRsID0gdGhpcy5fcnRsU2VydmljZS5ydGwudmFsdWU7XG5cbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3Vwc1tncm91cEluZGV4XTtcbiAgICAgICAgY29uc3QgaW5kZXhJbk5leHRHcm91cCA9IHRoaXMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgPyAwIDogaXRlbUluZGV4O1xuXG4gICAgICAgIGNvbnN0IG5leHRHcm91cEV4aXN0cyA9IHRoaXMuZ3JvdXBzLmxlbmd0aCA+IGdyb3VwSW5kZXggKyAxO1xuICAgICAgICBjb25zdCBwcmV2R3JvdXBFeGlzdHMgPSAhIWdyb3VwSW5kZXg7XG5cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBSSUdIVF9BUlJPVykgJiYgKGlzUnRsID8gcHJldkdyb3VwRXhpc3RzIDogbmV4dEdyb3VwRXhpc3RzKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgY29uc3QgbmV4dEdyb3VwSW5kZXggPSBncm91cEluZGV4ICsgKGlzUnRsID8gLTEgOiAxKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRHcm91cCA9IHRoaXMuZ3JvdXBzW25leHRHcm91cEluZGV4XTtcblxuICAgICAgICAgICAgdGhpcy5jdXN0b21UcmFuc2ZlckZuKGdyb3VwLCBuZXh0R3JvdXAsIGl0ZW1JbmRleCwgaW5kZXhJbk5leHRHcm91cCk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0RuZEl0ZW0obmV4dEdyb3VwSW5kZXgsIGluZGV4SW5OZXh0R3JvdXApO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBMRUZUX0FSUk9XKSAmJiAoaXNSdGwgPyBuZXh0R3JvdXBFeGlzdHMgOiBwcmV2R3JvdXBFeGlzdHMpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICBjb25zdCBuZXh0R3JvdXBJbmRleCA9IGdyb3VwSW5kZXggKyAoaXNSdGwgPyAxIDogLTEpO1xuICAgICAgICAgICAgY29uc3QgbmV4dEdyb3VwID0gdGhpcy5ncm91cHNbbmV4dEdyb3VwSW5kZXhdO1xuXG4gICAgICAgICAgICB0aGlzLmN1c3RvbVRyYW5zZmVyRm4oZ3JvdXAsIG5leHRHcm91cCwgaXRlbUluZGV4LCBpbmRleEluTmV4dEdyb3VwKTtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzRG5kSXRlbShuZXh0R3JvdXBJbmRleCwgaW5kZXhJbk5leHRHcm91cCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICB0aGlzLmN1c3RvbU1vdmVGbihncm91cCwgaXRlbUluZGV4LCBpdGVtSW5kZXggKyAxKTtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzRG5kSXRlbShncm91cEluZGV4LCBpdGVtSW5kZXggKyAxKTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICB0aGlzLmN1c3RvbU1vdmVGbihncm91cCwgaXRlbUluZGV4LCBpdGVtSW5kZXggLSAxKTtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzRG5kSXRlbShncm91cEluZGV4LCBpdGVtSW5kZXggLSAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEZvY3VzIGFmdGVyIG1vdmluZyBlbGVtZW50cyB3aXRoIGtleWJvYXJkICovXG4gICAgcHJpdmF0ZSBfZm9jdXNEbmRJdGVtKGdyb3VwSW5kZXg6IG51bWJlciwgaXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICB0aGlzLl9vbkRuZEl0ZW1Gb2N1cyQubmV4dChbZ3JvdXBJbmRleCwgaXRlbUluZGV4XSk7XG4gICAgfVxufVxuIl19","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { DndKeyboardGroupDirective } from '../dnd-keyboard-group/dnd-keyboard-group.directive';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../dnd-keyboard-group/dnd-keyboard-group.directive\";\n/**\n * This directive is used to provide drag & drop with keyboard support.\n * It should be used together with directive fdDndKeyboardGroup.\n * We are using _groups from fdDndKeyboardGroup and adding a possibility to move cards.\n * Please see example below:\n * @Component({\n * selector: 'cdk-drag-drop-example',\n * template: `<div\n * cdkDragListGroup\n * fdDndKeyboardGroup\n * [groups]=\"groups\"\n * >\n * <div\n * *ngFor=\"let group of groups; let groupIndex = index\"\n * cdkDragList\n * >\n * Group #{{ groupIndex }}\n * <div\n * *ngFor=\"let item of group; let index = index\"\n * cdkDrag\n * fdDndKeyboardItem\n * [itemIndex]=\"index\"\n * [groupIndex]=\"groupIndex\"\n * [dndKeyboardDisabled]=\"flag for disable/enable keyboard navigation if needed\"\n * tabindex=\"0\"\n * >\n * Item #{{ item }}\n * </div>\n * </div>\n * </div>`,\n * })\n * export class CdkDragDropExample {\n * groups = [\n * [1, 2, 3],\n * [4, 5, 6],\n * ];\n * }\n */\nexport class DndKeyboardItemDirective {\n /** @hidden */\n constructor(_dndGroup, _elementRef) {\n this._dndGroup = _dndGroup;\n this._elementRef = _elementRef;\n /** @hidden */\n this._onDestroy$ = new Subject();\n }\n /** @hidden */\n _onKeyDown(event) {\n this._dndGroup.processDragDrop(event, this.itemIndex, this.groupIndex);\n }\n /** @hidden */\n ngOnInit() {\n this._dndGroup._onDndItemFocus$.subscribe(([groupIndex, itemIndex]) => {\n if (this.groupIndex === groupIndex && this.itemIndex === itemIndex) {\n this._elementRef.nativeElement.focus();\n }\n });\n }\n /** @hidden */\n ngOnDestroy() {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DndKeyboardItemDirective, deps: [{ token: i1.DndKeyboardGroupDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: DndKeyboardItemDirective, isStandalone: true, selector: \"[fdkDndKeyboardItem], [fdDndKeyboardItem]\", inputs: { itemIndex: \"itemIndex\", groupIndex: \"groupIndex\" }, host: { listeners: { \"keydown\": \"_onKeyDown($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DndKeyboardItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkDndKeyboardItem], [fdDndKeyboardItem]'\n }]\n }], ctorParameters: () => [{ type: i1.DndKeyboardGroupDirective }, { type: i0.ElementRef }], propDecorators: { itemIndex: [{\n type: Input\n }], groupIndex: [{\n type: Input\n }], _onKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWtleWJvYXJkLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZHJhZy1hbmQtZHJvcC9kbmQta2V5Ym9hcmQtaXRlbS9kbmQta2V5Ym9hcmQtaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7O0FBRS9GOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBSUgsTUFBTSxPQUFPLHdCQUF3QjtJQVlqQyxjQUFjO0lBQ2QsWUFDcUIsU0FBb0MsRUFDcEMsV0FBdUI7UUFEdkIsY0FBUyxHQUFULFNBQVMsQ0FBMkI7UUFDcEMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFONUMsY0FBYztRQUNHLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU1oRCxDQUFDO0lBRUosY0FBYztJQUVkLFVBQVUsQ0FBQyxLQUFvQjtRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELGNBQWM7SUFDZCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFO1lBQ2xFLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0MsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7OEdBckNRLHdCQUF3QjtrR0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwyQ0FBMkM7aUJBQ3hEO3VIQUlHLFNBQVM7c0JBRFIsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBY04sVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRG5kS2V5Ym9hcmRHcm91cERpcmVjdGl2ZSB9IGZyb20gJy4uL2RuZC1rZXlib2FyZC1ncm91cC9kbmQta2V5Ym9hcmQtZ3JvdXAuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBUaGlzIGRpcmVjdGl2ZSBpcyB1c2VkIHRvIHByb3ZpZGUgZHJhZyAmIGRyb3Agd2l0aCBrZXlib2FyZCBzdXBwb3J0LlxuICogSXQgc2hvdWxkIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBkaXJlY3RpdmUgZmREbmRLZXlib2FyZEdyb3VwLlxuICogV2UgYXJlIHVzaW5nIF9ncm91cHMgZnJvbSBmZERuZEtleWJvYXJkR3JvdXAgYW5kIGFkZGluZyBhIHBvc3NpYmlsaXR5IHRvIG1vdmUgY2FyZHMuXG4gKiBQbGVhc2Ugc2VlIGV4YW1wbGUgYmVsb3c6XG4gKiBAQ29tcG9uZW50KHtcbiAqIHNlbGVjdG9yOiAnY2RrLWRyYWctZHJvcC1leGFtcGxlJyxcbiAqIHRlbXBsYXRlOiBgPGRpdlxuICogICAgICAgICAgICAgICBjZGtEcmFnTGlzdEdyb3VwXG4gKiAgICAgICAgICAgICAgIGZkRG5kS2V5Ym9hcmRHcm91cFxuICogICAgICAgICAgICAgICBbZ3JvdXBzXT1cImdyb3Vwc1wiXG4gKiAgICAgICAgICAgPlxuICogICAgICAgICAgICAgICA8ZGl2XG4gKiAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZ3JvdXBzOyBsZXQgZ3JvdXBJbmRleCA9IGluZGV4XCJcbiAqICAgICAgICAgICAgICAgICAgIGNka0RyYWdMaXN0XG4gKiAgICAgICAgICAgICAgID5cbiAqICAgICAgICAgICAgICAgICAgIEdyb3VwICN7eyBncm91cEluZGV4IH19XG4gKiAgICAgICAgICAgICAgICAgICA8ZGl2XG4gKiAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXA7IGxldCBpbmRleCA9IGluZGV4XCJcbiAqICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnXG4gKiAgICAgICAgICAgICAgICAgICAgICAgZmREbmRLZXlib2FyZEl0ZW1cbiAqICAgICAgICAgICAgICAgICAgICAgICBbaXRlbUluZGV4XT1cImluZGV4XCJcbiAqICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBJbmRleF09XCJncm91cEluZGV4XCJcbiAqICAgICAgICAgICAgICAgICAgICAgICBbZG5kS2V5Ym9hcmREaXNhYmxlZF09XCJmbGFnIGZvciBkaXNhYmxlL2VuYWJsZSBrZXlib2FyZCBuYXZpZ2F0aW9uIGlmIG5lZWRlZFwiXG4gKiAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAqICAgICAgICAgICAgICAgICAgID5cbiAqICAgICAgICAgICAgICAgICAgICAgICBJdGVtICN7eyBpdGVtIH19XG4gKiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAqICAgICAgICAgICAgICAgPC9kaXY+XG4gKiAgICAgICAgICAgPC9kaXY+YCxcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQ2RrRHJhZ0Ryb3BFeGFtcGxlIHtcbiAqICAgZ3JvdXBzID0gW1xuICogICAgICAgIFsxLCAyLCAzXSxcbiAqICAgICAgICBbNCwgNSwgNl0sXG4gKiAgICAgIF07XG4gKiAgIH1cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrRG5kS2V5Ym9hcmRJdGVtXSwgW2ZkRG5kS2V5Ym9hcmRJdGVtXSdcbn0pXG5leHBvcnQgY2xhc3MgRG5kS2V5Ym9hcmRJdGVtRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBpdGVtIGluZGV4IGluIGdyb3VwKGNvbHVtbikgKi9cbiAgICBASW5wdXQoKVxuICAgIGl0ZW1JbmRleDogbnVtYmVyO1xuXG4gICAgLyoqIGdyb3VwKGNvbHVtbikgaW5kZXggKi9cbiAgICBASW5wdXQoKVxuICAgIGdyb3VwSW5kZXg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kbmRHcm91cDogRG5kS2V5Ym9hcmRHcm91cERpcmVjdGl2ZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgX29uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kbmRHcm91cC5wcm9jZXNzRHJhZ0Ryb3AoZXZlbnQsIHRoaXMuaXRlbUluZGV4LCB0aGlzLmdyb3VwSW5kZXgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RuZEdyb3VwLl9vbkRuZEl0ZW1Gb2N1cyQuc3Vic2NyaWJlKChbZ3JvdXBJbmRleCwgaXRlbUluZGV4XSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXBJbmRleCA9PT0gZ3JvdXBJbmRleCAmJiB0aGlzLml0ZW1JbmRleCA9PT0gaXRlbUluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19","import { isFunction } from '../typecheck';\n/**\n * @description Executes function and passes returned value into callback function.\n */\nexport class FunctionStrategy {\n /** @hidden */\n createSubscription(fn, updateLatestValue) {\n const result = isFunction(fn) ? fn() : fn;\n return Promise.resolve(result).then(updateLatestValue);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tc3RyYXRlZ3kuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9hc3luYy1zdHJhdGVneS9mdW5jdGlvbi1zdHJhdGVneS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzFDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixjQUFjO0lBQ2Qsa0JBQWtCLENBQUMsRUFBVyxFQUFFLGlCQUFnQztRQUM1RCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBUSxFQUFTLENBQUM7UUFDeEQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICcuLi90eXBlY2hlY2snO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1zdHJhdGVneS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFeGVjdXRlcyBmdW5jdGlvbiBhbmQgcGFzc2VzIHJldHVybmVkIHZhbHVlIGludG8gY2FsbGJhY2sgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBGdW5jdGlvblN0cmF0ZWd5PFQ+IGltcGxlbWVudHMgU3Vic2NyaXB0aW9uU3RyYXRlZ3k8VD4ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY3JlYXRlU3Vic2NyaXB0aW9uKGZuOiAoKSA9PiBULCB1cGRhdGVMYXRlc3RWYWx1ZTogKHY6IFQpID0+IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBpc0Z1bmN0aW9uKGZuKSA/IGZuKCkgOiAoKDxhbnk+Zm4pIGFzIFQpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbih1cGRhdGVMYXRlc3RWYWx1ZSk7XG4gICAgfVxufVxuIl19","import { firstValueFrom } from 'rxjs';\n/**\n * @description Converts observable into Promise and passes returned value into callback function.\n */\nexport class ObservableStrategy {\n /** @hidden */\n createSubscription(async, updateLatestValue) {\n return firstValueFrom(async).then(updateLatestValue, (e) => {\n console.error(e);\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS1zdHJhdGVneS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2FzeW5jLXN0cmF0ZWd5L29ic2VydmFibGUtc3RyYXRlZ3kuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdsRDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsY0FBYztJQUNkLGtCQUFrQixDQUFDLEtBQW9CLEVBQUUsaUJBQXNCO1FBQzNELE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3ZELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL3N1YnNjcmlwdGlvbi1zdHJhdGVneS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBvYnNlcnZhYmxlIGludG8gUHJvbWlzZSBhbmQgcGFzc2VzIHJldHVybmVkIHZhbHVlIGludG8gY2FsbGJhY2sgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBPYnNlcnZhYmxlU3RyYXRlZ3k8VD4gaW1wbGVtZW50cyBTdWJzY3JpcHRpb25TdHJhdGVneTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjcmVhdGVTdWJzY3JpcHRpb24oYXN5bmM6IE9ic2VydmFibGU8VD4sIHVwZGF0ZUxhdGVzdFZhbHVlOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKGFzeW5jKS50aGVuKHVwZGF0ZUxhdGVzdFZhbHVlLCAoZSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19","/**\n * @description awaits for promise to resolve it's value and passes returned value into callback function.\n */\nexport class PromiseStrategy {\n /** @hidden */\n createSubscription(async, updateLatestValue) {\n return async.then(updateLatestValue, (e) => {\n console.error(e);\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZS1zdHJhdGVneS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2FzeW5jLXN0cmF0ZWd5L3Byb21pc2Utc3RyYXRlZ3kuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUN4QixjQUFjO0lBQ2Qsa0JBQWtCLENBQUMsS0FBaUIsRUFBRSxpQkFBZ0M7UUFDbEUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdkMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YnNjcmlwdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tc3RyYXRlZ3kuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gYXdhaXRzIGZvciBwcm9taXNlIHRvIHJlc29sdmUgaXQncyB2YWx1ZSBhbmQgcGFzc2VzIHJldHVybmVkIHZhbHVlIGludG8gY2FsbGJhY2sgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9taXNlU3RyYXRlZ3k8VD4gaW1wbGVtZW50cyBTdWJzY3JpcHRpb25TdHJhdGVneTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjcmVhdGVTdWJzY3JpcHRpb24oYXN5bmM6IFByb21pc2U8VD4sIHVwZGF0ZUxhdGVzdFZhbHVlOiAodjogVCkgPT4gYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhc3luYy50aGVuKHVwZGF0ZUxhdGVzdFZhbHVlLCAoZSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19","/**\n * @description Passes value object into callback function.\n */\nexport class ValueStrategy {\n /** @hidden */\n createSubscription(value, updateLatestValue) {\n return Promise.resolve(value).then(updateLatestValue);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtc3RyYXRlZ3kuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9hc3luYy1zdHJhdGVneS92YWx1ZS1zdHJhdGVneS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBQ3RCLGNBQWM7SUFDZCxrQkFBa0IsQ0FBQyxLQUFRLEVBQUUsaUJBQWdDO1FBQ3pELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJzY3JpcHRpb25TdHJhdGVneSB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLXN0cmF0ZWd5LmludGVyZmFjZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBhc3NlcyB2YWx1ZSBvYmplY3QgaW50byBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbHVlU3RyYXRlZ3k8VD4gaW1wbGVtZW50cyBTdWJzY3JpcHRpb25TdHJhdGVneTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjcmVhdGVTdWJzY3JpcHRpb24odmFsdWU6IFQsIHVwZGF0ZUxhdGVzdFZhbHVlOiAodjogVCkgPT4gYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4odXBkYXRlTGF0ZXN0VmFsdWUpO1xuICAgIH1cbn1cbiJdfQ==","import { isFunction, isPromise, isSubscribable } from '../typecheck';\nimport { FunctionStrategy } from './function-strategy.class';\nimport { ObservableStrategy } from './observable-strategy.class';\nimport { PromiseStrategy } from './promise-strategy.class';\nimport { ValueStrategy } from './value-strategy.class';\n/**\n * @description Selects appropriate strategy on how to resolve function value\n * @param obj object to get value from\n * @returns appropriate strategy to retrieve value from the object\n */\nexport function selectStrategy(obj) {\n if (isPromise(obj)) {\n return new PromiseStrategy();\n }\n if (isSubscribable(obj)) {\n return new ObservableStrategy();\n }\n if (isFunction(obj)) {\n return new FunctionStrategy();\n }\n return new ValueStrategy();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXN0cmF0ZWd5LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvYXN5bmMtc3RyYXRlZ3kvc2VsZWN0LXN0cmF0ZWd5LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFVLEdBQWtEO0lBQ3RGLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDakIsT0FBTyxJQUFJLGVBQWUsRUFBSyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxrQkFBa0IsRUFBSyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxnQkFBZ0IsRUFBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxPQUFPLElBQUksYUFBYSxFQUFLLENBQUM7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzUHJvbWlzZSwgaXNTdWJzY3JpYmFibGUgfSBmcm9tICcuLi90eXBlY2hlY2snO1xuXG5pbXBvcnQgeyBGdW5jdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9mdW5jdGlvbi1zdHJhdGVneS5jbGFzcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlU3RyYXRlZ3kgfSBmcm9tICcuL29ic2VydmFibGUtc3RyYXRlZ3kuY2xhc3MnO1xuaW1wb3J0IHsgUHJvbWlzZVN0cmF0ZWd5IH0gZnJvbSAnLi9wcm9taXNlLXN0cmF0ZWd5LmNsYXNzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9zdWJzY3JpcHRpb24tc3RyYXRlZ3kuaW50ZXJmYWNlJztcbmltcG9ydCB7IFZhbHVlU3RyYXRlZ3kgfSBmcm9tICcuL3ZhbHVlLXN0cmF0ZWd5LmNsYXNzJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU2VsZWN0cyBhcHByb3ByaWF0ZSBzdHJhdGVneSBvbiBob3cgdG8gcmVzb2x2ZSBmdW5jdGlvbiB2YWx1ZVxuICogQHBhcmFtIG9iaiBvYmplY3QgdG8gZ2V0IHZhbHVlIGZyb21cbiAqIEByZXR1cm5zIGFwcHJvcHJpYXRlIHN0cmF0ZWd5IHRvIHJldHJpZXZlIHZhbHVlIGZyb20gdGhlIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0U3RyYXRlZ3k8VCA9IGFueT4ob2JqOiBPYnNlcnZhYmxlPFQ+IHwgUHJvbWlzZTxUPiB8ICgoKSA9PiB2b2lkKSB8IFQpOiBTdWJzY3JpcHRpb25TdHJhdGVneTxUPiB7XG4gICAgaWYgKGlzUHJvbWlzZShvYmopKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZVN0cmF0ZWd5PFQ+KCk7XG4gICAgfVxuXG4gICAgaWYgKGlzU3Vic2NyaWJhYmxlKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlU3RyYXRlZ3k8VD4oKTtcbiAgICB9XG5cbiAgICBpZiAoaXNGdW5jdGlvbihvYmopKSB7XG4gICAgICAgIHJldHVybiBuZXcgRnVuY3Rpb25TdHJhdGVneTxUPigpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmFsdWVTdHJhdGVneTxUPigpO1xufVxuIl19","import { ContentChildren, DestroyRef, Directive, EventEmitter, forwardRef, HostBinding, inject, Input, Output, QueryList } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge, Subject } from 'rxjs';\nimport { startWith, take, takeUntil } from 'rxjs/operators';\nimport { selectStrategy } from '../../async-strategy';\nimport { destroyObservable } from '../../helpers';\nimport { DND_ITEM, DND_LIST } from '../tokens';\nimport * as i0 from \"@angular/core\";\nexport class DndListDirective {\n constructor() {\n /**\n * Defines if the element is allowed to be dragged in 2 dimensions,\n * When true - replace indicator will be displayed vertically\n */\n this.gridMode = false;\n /**\n * Defines drop strategy:\n * * `shift` mode will create line after the closest drop element.\n * * `group` mode will create replace indicator on a whole closest drop element.\n * * `auto` mode will create a line after the closest drop element\n * if dragged element coordinates are shifted for 30% from the center of the closest drop element.\n * Otherwise, it will create replace indicator on a whole closest drop element.\n *\n * `shift` mode is the default.\n */\n this.dropMode = 'shift';\n /**\n * Threshold of dragged item over another item to define which type of `dropMode` should be used.\n */\n this.threshold = 0.3;\n /** Array of items, that will be sorted */\n this.items = [];\n /**\n * Event emitted when `dropPredicate` function evaluation changes.\n * Emits `true` when evaluation started, and `false` when completed.\n */\n this.dropPredicateCalculating = new EventEmitter();\n /** Event that is thrown when items are reordered */\n this.itemsChange = new EventEmitter();\n /** Event that is thrown when the item is dropped */\n this.itemDropped = new EventEmitter();\n /** Event that is thrown when predicate function returned false. */\n this.dropCancelled = new EventEmitter();\n /** @hidden */\n this._initialClass = 'fd-dnd-list';\n /** @hidden */\n this._closestItemIndex = null;\n /** @hidden */\n this._closestItemPosition = null;\n /** An RxJS Subject that will kill the current data stream (for unsubscribing) */\n this._refresh$ = new Subject();\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._draggable = true;\n /** @hidden */\n this._linesRemoved = true;\n /** @hidden */\n this._indicatorsRemoved = true;\n /** @hidden */\n this._ignoreDrop = false;\n }\n /** Defines if drag and drop feature should be enabled for list items */\n set draggable(draggable) {\n this._draggable = draggable;\n this._changeDraggableState(draggable);\n }\n /** @hidden */\n ngAfterContentInit() {\n this._changeDraggableState(this._draggable);\n this.dndItems.changes\n .pipe(startWith(null), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this.refreshQueryList());\n }\n /** @hidden */\n ngOnDestroy() {\n this._refresh$.next();\n this._refresh$.complete();\n }\n /**\n * Refreshes the indexes of the items.\n */\n refreshQueryList() {\n const refresh$ = merge(this._refresh$, destroyObservable(this._destroyRef));\n this._refresh$.next();\n this._dndItemReference = this.dndItems.toArray();\n this._changeDraggableState(this._draggable);\n this.dndItems.forEach((item, index) => {\n item.moved.pipe(takeUntil(refresh$)).subscribe((position) => this.onMove(position, index));\n item.started.pipe(takeUntil(refresh$)).subscribe(() => this.dragStart(index));\n item.released.pipe(takeUntil(refresh$)).subscribe(async () => await this.dragEnd(index));\n });\n }\n /** Method called when the item is being moved by 1 px */\n onMove(mousePosition, draggedItemIndex) {\n /** Temporary object, to store lowest distance values */\n let closestItemIndex = null;\n const closestDndItem = this._elementsCoordinates.find((element, index) => {\n /** Check if an element can be replaced */\n if (!element.stickToPosition && closestItemIndex !== index) {\n const isMouseOnElement = _isMouseOnElement(element, mousePosition);\n if (isMouseOnElement) {\n closestItemIndex = index;\n return true;\n }\n }\n return false;\n });\n if (!closestDndItem) {\n closestItemIndex = null;\n }\n /** If the closest element is different from the old one, the new one is picked. It prevents from performance issues */\n if ((closestItemIndex || closestItemIndex === 0) &&\n (closestItemIndex !== this._closestItemIndex || this.dropMode === 'auto')) {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n this._closestItemIndex = closestItemIndex;\n this._closestItemPosition = this._elementsCoordinates[closestItemIndex].position;\n const closestItem = this.items[this._closestItemIndex];\n // If closest item index is same as dragged item, just remove indicators\n if (closestItemIndex === draggedItemIndex) {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n return;\n }\n if (this.dragoverPredicate &&\n this._draggedItem &&\n !this.dragoverPredicate(this._draggedItem, closestItem, draggedItemIndex, this._closestItemIndex)) {\n this._ignoreDrop = true;\n this._setDisabledItem(this._closestItemIndex);\n return;\n }\n this._setDisabledItem(-1);\n /** Generating line, that shows where the element will be placed, on a drop */\n if (this.dropMode === 'group') {\n this._createReplaceIndicator(this._closestItemIndex);\n }\n else if (this.dropMode === 'shift') {\n this._createLine(this._closestItemIndex, this._closestItemPosition);\n }\n else {\n this._selectDropModeIndicator(draggedItemIndex, closestDndItem, closestItemIndex);\n }\n }\n }\n /** Method called when an element is started to be dragged */\n dragStart(index) {\n const draggedItemElement = this._dndItemReference[index].elementRef;\n this._draggedItem = this.items[index];\n /** Counting all the element's chords */\n this._elementsCoordinates = this._dndItemReference.map((item) => item.getElementCoordinates(this._isBefore(draggedItemElement, item.elementRef), this.gridMode));\n }\n /** Method called when an element is released */\n async dragEnd(draggedItemIndex) {\n this._draggedItem = undefined;\n const items = this.items.slice();\n const replacedItemIndex = this._closestItemIndex;\n this._setDisabledItem(-1);\n if (this._ignoreDrop) {\n this._ignoreDrop = false;\n return;\n }\n if (replacedItemIndex === null || replacedItemIndex === -1) {\n return;\n }\n const draggedDndItem = this.dndItems.get(draggedItemIndex)?.item ?? items[draggedItemIndex];\n const replacedDndItem = this.dndItems.get(replacedItemIndex)?.item ?? items[replacedItemIndex];\n const predicateSubj = new Subject();\n const evt = {\n replacedItemIndex,\n draggedItemIndex,\n items,\n insertAt: this._closestItemPosition,\n mode: this.dropMode !== 'auto' ? this.dropMode : this._detectedDropMode\n };\n predicateSubj.pipe(take(1)).subscribe((result) => {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n /** Reset */\n this._elementsCoordinates = [];\n this._closestItemIndex = null;\n this._closestItemPosition = null;\n if (!result) {\n this.dropCancelled.emit();\n return;\n }\n if (draggedItemIndex !== replacedItemIndex) {\n if (draggedItemIndex < replacedItemIndex) {\n for (let i = draggedItemIndex; i < replacedItemIndex; i++) {\n items[i] = items[i + 1];\n }\n }\n else {\n for (let i = draggedItemIndex; i > replacedItemIndex; i--) {\n items[i] = items[i - 1];\n }\n }\n /** Replacing items */\n items[replacedItemIndex] = draggedDndItem;\n this.itemsChange.emit(items);\n }\n this.itemDropped.emit(evt);\n });\n if (this.dropPredicate !== undefined) {\n this.dropPredicateCalculating.emit(true);\n const obj = this.dropPredicate(draggedDndItem, replacedDndItem, evt);\n const strategy = selectStrategy(obj);\n await strategy.createSubscription(obj, (result) => {\n predicateSubj.next(result);\n this.dropPredicateCalculating.emit(false);\n });\n }\n else {\n predicateSubj.next(true);\n }\n }\n /** @hidden */\n _setDisabledItem(itemIndex) {\n this.dndItems.forEach((item, index) => {\n item.setDisabledState(index === itemIndex);\n });\n }\n /** @hidden */\n _selectDropModeIndicator(draggedItemIndex, closestItem, closestItemIndex) {\n if (!closestItem || !this._dndItemReference[draggedItemIndex]) {\n return;\n }\n let newDetectedDropMode;\n const draggedElmCoords = this._dndItemReference[draggedItemIndex].elementRef.nativeElement.getBoundingClientRect();\n const closestItemBoundaries = getElementBoundaries(closestItem, this.threshold);\n const draggedItemStartCoords = getElementStartCoords(draggedElmCoords, closestItem.position);\n if (_between(draggedItemStartCoords.x, closestItemBoundaries.x.start, closestItemBoundaries.x.end) &&\n _between(draggedItemStartCoords.y, closestItemBoundaries.y.start, closestItemBoundaries.y.end)) {\n newDetectedDropMode = 'group';\n }\n else {\n newDetectedDropMode = 'shift';\n }\n if (newDetectedDropMode === this._detectedDropMode && (!this._linesRemoved || !this._indicatorsRemoved)) {\n return;\n }\n this._detectedDropMode = newDetectedDropMode;\n if (this._detectedDropMode === 'shift') {\n this._createLine(closestItemIndex, this._elementsCoordinates[closestItemIndex].position);\n }\n else {\n this._createReplaceIndicator(closestItemIndex);\n }\n }\n /** @hidden */\n _removeAllLines() {\n this._linesRemoved = true;\n this.dndItems.forEach((item) => item.removeLine());\n }\n /** @hidden */\n _removeAllReplaceIndicators() {\n this._indicatorsRemoved = true;\n this.dndItems.forEach((item) => item.removeReplaceIndicator());\n }\n /** @hidden */\n _createLine(closestItemIndex, linkPosition) {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n this._linesRemoved = false;\n this._dndItemReference[closestItemIndex].createLine(linkPosition, this.gridMode);\n }\n /** @hidden */\n _createReplaceIndicator(closestItemIndex) {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n this._indicatorsRemoved = false;\n this._dndItemReference[closestItemIndex].createReplaceIndicator();\n }\n /**\n * @hidden\n * Return information if an element is placed before the dragged element\n */\n _isBefore(draggedElement, targetElement) {\n /** Sometimes the elements are not straight in one column, that's why offset is needed */\n const VERTICAL_OFFSET = 20;\n /** Distances from the top of the screen */\n const draggedElementBound = draggedElement.nativeElement.getBoundingClientRect();\n const targetElementBound = targetElement.nativeElement.getBoundingClientRect();\n if (draggedElementBound.top - targetElementBound.top > VERTICAL_OFFSET) {\n /** If an element is higher than the dragged element, it's for sure before */\n return true;\n }\n else if (targetElementBound.top - draggedElementBound.top > VERTICAL_OFFSET) {\n /** If an element is lower than the dragged element, it's for sure after */\n return false;\n }\n else {\n /** If elements are in same level, the horizontal position decides if it's before/after */\n return draggedElementBound.left - targetElementBound.left > 0;\n }\n }\n /** @hidden */\n _changeDraggableState(draggable) {\n if (this.dndItems) {\n this.dndItems.forEach((item) => {\n item.listDraggable = draggable;\n item.changeCDKDragState();\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DndListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: DndListDirective, isStandalone: true, selector: \"[fdkDndList], [fd-dnd-list]\", inputs: { gridMode: \"gridMode\", dropMode: \"dropMode\", threshold: \"threshold\", items: \"items\", draggable: \"draggable\", dropPredicate: \"dropPredicate\", dragoverPredicate: \"dragoverPredicate\" }, outputs: { dropPredicateCalculating: \"dropPredicateCalculating\", itemsChange: \"itemsChange\", itemDropped: \"itemDropped\", dropCancelled: \"dropCancelled\" }, host: { properties: { \"class\": \"this._initialClass\" } }, providers: [{ provide: DND_LIST, useExisting: forwardRef(() => DndListDirective) }], queries: [{ propertyName: \"dndItems\", predicate: DND_ITEM }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DndListDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdkDndList], [fd-dnd-list]',\n providers: [{ provide: DND_LIST, useExisting: forwardRef(() => DndListDirective) }],\n standalone: true\n }]\n }], propDecorators: { gridMode: [{\n type: Input\n }], dropMode: [{\n type: Input\n }], threshold: [{\n type: Input\n }], items: [{\n type: Input\n }], draggable: [{\n type: Input\n }], dropPredicate: [{\n type: Input\n }], dragoverPredicate: [{\n type: Input\n }], dropPredicateCalculating: [{\n type: Output\n }], itemsChange: [{\n type: Output\n }], itemDropped: [{\n type: Output\n }], dropCancelled: [{\n type: Output\n }], dndItems: [{\n type: ContentChildren,\n args: [DND_ITEM]\n }], _initialClass: [{\n type: HostBinding,\n args: ['class']\n }] } });\nfunction _isMouseOnElement(element, mousePosition) {\n const startX = element.x;\n const endX = element.x + element.width;\n const startY = element.y;\n const endY = element.y + element.height;\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n}\nfunction _between(x, min, max) {\n return x >= min && x <= max;\n}\nfunction getElementStartCoords(rect, position) {\n return {\n x: position === 'after' ? rect.x + rect.width : rect.x,\n y: position === 'after' ? rect.y + rect.height : rect.y\n };\n}\nfunction getElementBoundaries(coordinates, threshold) {\n const widthOffset = coordinates.width * (coordinates.position === 'after' ? 1 : -1);\n const heightOffset = coordinates.height * (coordinates.position === 'after' ? 1 : -1);\n const xStart = coordinates.position === 'after' ? coordinates.x : coordinates.x + coordinates.width;\n const xEnd = xStart + widthOffset + (widthOffset / 2) * threshold;\n const yStart = coordinates.position === 'after' ? coordinates.y : coordinates.y + coordinates.height;\n const yEnd = yStart + heightOffset + (heightOffset / 2) * threshold;\n return {\n x: {\n start: xStart > xEnd ? xEnd : xStart,\n end: xStart > xEnd ? xStart : xEnd\n },\n y: {\n start: yStart > yEnd ? yEnd : yStart,\n end: yStart > yEnd ? yStart : yEnd\n }\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZHJhZy1hbmQtZHJvcC9kbmQtbGlzdC9kbmQtbGlzdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGVBQWUsRUFDZixVQUFVLEVBQ1YsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQW1CL0MsTUFBTSxPQUFPLGdCQUFnQjtJQUw3QjtRQU1JOzs7V0FHRztRQUVILGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakI7Ozs7Ozs7OztXQVNHO1FBRUgsYUFBUSxHQUFrQixPQUFPLENBQUM7UUFFbEM7O1dBRUc7UUFFSCxjQUFTLEdBQUcsR0FBRyxDQUFDO1FBRWhCLDBDQUEwQztRQUUxQyxVQUFLLEdBQWEsRUFBRSxDQUFDO1FBb0JyQjs7O1dBR0c7UUFFSCw2QkFBd0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRXZELG9EQUFvRDtRQUUzQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFFcEQs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Q0FBQztJQUN0RixNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ3BHLE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxXQUFXLEdBQUcsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDckcsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLFlBQVksR0FBRyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDcEUsT0FBTztRQUNILENBQUMsRUFBRTtZQUNDLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFDcEMsR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUNyQztRQUNELENBQUMsRUFBRTtZQUNDLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFDcEMsR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUNyQztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHNlbGVjdFN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vYXN5bmMtc3RyYXRlZ3knO1xuaW1wb3J0IHsgZGVzdHJveU9ic2VydmFibGUgfSBmcm9tICcuLi8uLi9oZWxwZXJzJztcbmltcG9ydCB7IERuZEl0ZW0sIEVsZW1lbnRDaG9yZCwgRWxlbWVudFBvc2l0aW9uLCBGZERuZERyb3BUeXBlLCBGZERyb3BFdmVudCwgTGlua1Bvc2l0aW9uIH0gZnJvbSAnLi4vZG5kLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRE5EX0lURU0sIERORF9MSVNUIH0gZnJvbSAnLi4vdG9rZW5zJztcblxuZXhwb3J0IHR5cGUgRHJvcFByZWRpY2F0ZTxUPiA9IChcbiAgICBkcmFnSXRlbTogVCxcbiAgICBkcm9wSXRlbTogVCxcbiAgICBldmVudDogRmREcm9wRXZlbnQ8VD5cbikgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuZXhwb3J0IHR5cGUgRHJhZ292ZXJQcmVkaWNhdGU8VD4gPSAoXG4gICAgZHJhZ0l0ZW06IFQsXG4gICAgZHJhZ092ZXJJdGVtOiBULFxuICAgIGRyYWdJdGVtSW5kZXg6IG51bWJlcixcbiAgICBkcmFnT3Zlckl0ZW1JbmRleDogbnVtYmVyXG4pID0+IGJvb2xlYW47XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0RuZExpc3RdLCBbZmQtZG5kLWxpc3RdJyxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IERORF9MSVNULCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEbmRMaXN0RGlyZWN0aXZlKSB9XSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERuZExpc3REaXJlY3RpdmU8VD4gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgaWYgdGhlIGVsZW1lbnQgaXMgYWxsb3dlZCB0byBiZSBkcmFnZ2VkIGluIDIgZGltZW5zaW9ucyxcbiAgICAgKiBXaGVuIHRydWUgLSByZXBsYWNlIGluZGljYXRvciB3aWxsIGJlIGRpc3BsYXllZCB2ZXJ0aWNhbGx5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBncmlkTW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBkcm9wIHN0cmF0ZWd5OlxuICAgICAqICogYHNoaWZ0YCBtb2RlIHdpbGwgY3JlYXRlIGxpbmUgYWZ0ZXIgdGhlIGNsb3Nlc3QgZHJvcCBlbGVtZW50LlxuICAgICAqICogYGdyb3VwYCBtb2RlIHdpbGwgY3JlYXRlIHJlcGxhY2UgaW5kaWNhdG9yIG9uIGEgd2hvbGUgY2xvc2VzdCBkcm9wIGVsZW1lbnQuXG4gICAgICogKiBgYXV0b2AgbW9kZSB3aWxsIGNyZWF0ZSBhIGxpbmUgYWZ0ZXIgdGhlIGNsb3Nlc3QgZHJvcCBlbGVtZW50XG4gICAgICogaWYgZHJhZ2dlZCBlbGVtZW50IGNvb3JkaW5hdGVzIGFyZSBzaGlmdGVkIGZvciAzMCUgZnJvbSB0aGUgY2VudGVyIG9mIHRoZSBjbG9zZXN0IGRyb3AgZWxlbWVudC5cbiAgICAgKiBPdGhlcndpc2UsIGl0IHdpbGwgY3JlYXRlIHJlcGxhY2UgaW5kaWNhdG9yIG9uIGEgd2hvbGUgY2xvc2VzdCBkcm9wIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBgc2hpZnRgIG1vZGUgaXMgdGhlIGRlZmF1bHQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkcm9wTW9kZTogRmREbmREcm9wVHlwZSA9ICdzaGlmdCc7XG5cbiAgICAvKipcbiAgICAgKiBUaHJlc2hvbGQgb2YgZHJhZ2dlZCBpdGVtIG92ZXIgYW5vdGhlciBpdGVtIHRvIGRlZmluZSB3aGljaCB0eXBlIG9mIGBkcm9wTW9kZWAgc2hvdWxkIGJlIHVzZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0aHJlc2hvbGQgPSAwLjM7XG5cbiAgICAvKiogQXJyYXkgb2YgaXRlbXMsIHRoYXQgd2lsbCBiZSBzb3J0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGl0ZW1zOiBBcnJheTxUPiA9IFtdO1xuXG4gICAgLyoqIERlZmluZXMgaWYgZHJhZyBhbmQgZHJvcCBmZWF0dXJlIHNob3VsZCBiZSBlbmFibGVkIGZvciBsaXN0IGl0ZW1zICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZHJhZ2dhYmxlKGRyYWdnYWJsZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kcmFnZ2FibGUgPSBkcmFnZ2FibGU7XG4gICAgICAgIHRoaXMuX2NoYW5nZURyYWdnYWJsZVN0YXRlKGRyYWdnYWJsZSk7XG4gICAgfVxuXG4gICAgLyoqIFByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IGNoZWNrcyB3aGV0aGVyIHRoZSBpdGVtIGNhbiBiZSBkcm9wcGVkIG92ZXIgYW5vdGhlciBpdGVtLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHJvcFByZWRpY2F0ZTogRHJvcFByZWRpY2F0ZTxUPiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIFByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IGNoZWNrcyB3aGV0aGVyIHRoZSBpdGVtIGNhbiBiZSBkcmFnZ2VkIG92ZXIgYW5vdGhlciBpdGVtLlxuICAgICAqIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGBmYWxzZWAsIGRyYWdnZWQgb3ZlciBpdGVtIHdpbGwgbm90IGJlIGhpZ2hsaWdodGVkLCBhbmQgZHJvcCBldmVudCB3aWxsIGJlIGNhbmNlbGVkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHJhZ292ZXJQcmVkaWNhdGU6IERyYWdvdmVyUHJlZGljYXRlPFQ+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGBkcm9wUHJlZGljYXRlYCBmdW5jdGlvbiBldmFsdWF0aW9uIGNoYW5nZXMuXG4gICAgICogRW1pdHMgYHRydWVgIHdoZW4gZXZhbHVhdGlvbiBzdGFydGVkLCBhbmQgYGZhbHNlYCB3aGVuIGNvbXBsZXRlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBkcm9wUHJlZGljYXRlQ2FsY3VsYXRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRXZlbnQgdGhhdCBpcyB0aHJvd24gd2hlbiBpdGVtcyBhcmUgcmVvcmRlcmVkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgaXRlbXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PFQ+PigpO1xuXG4gICAgLyoqIEV2ZW50IHRoYXQgaXMgdGhyb3duIHdoZW4gdGhlIGl0ZW0gaXMgZHJvcHBlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGl0ZW1Ecm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGZERyb3BFdmVudDxUPj4oKTtcblxuICAgIC8qKiBFdmVudCB0aGF0IGlzIHRocm93biB3aGVuIHByZWRpY2F0ZSBmdW5jdGlvbiByZXR1cm5lZCBmYWxzZS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBkcm9wQ2FuY2VsbGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKERORF9JVEVNKVxuICAgIGRuZEl0ZW1zOiBRdWVyeUxpc3Q8RG5kSXRlbTxUPj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIHByb3RlY3RlZCByZWFkb25seSBfaW5pdGlhbENsYXNzID0gJ2ZkLWRuZC1saXN0JztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZWxlbWVudHNDb29yZGluYXRlczogRWxlbWVudENob3JkW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Nsb3Nlc3RJdGVtSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jbG9zZXN0SXRlbVBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGN1cnJlbnQgZGF0YSBzdHJlYW0gKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZWZyZXNoJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAgKi9cbiAgICBwcml2YXRlIF9kbmRJdGVtUmVmZXJlbmNlOiBEbmRJdGVtW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RyYWdnYWJsZSA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RldGVjdGVkRHJvcE1vZGU6ICdzaGlmdCcgfCAnZ3JvdXAnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saW5lc1JlbW92ZWQgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbmRpY2F0b3JzUmVtb3ZlZCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RyYWdnZWRJdGVtOiBUIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pZ25vcmVEcm9wID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRHJhZ2dhYmxlU3RhdGUodGhpcy5fZHJhZ2dhYmxlKTtcbiAgICAgICAgdGhpcy5kbmRJdGVtcy5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShzdGFydFdpdGgobnVsbCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoUXVlcnlMaXN0KCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2gkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWZyZXNoZXMgdGhlIGluZGV4ZXMgb2YgdGhlIGl0ZW1zLlxuICAgICAqL1xuICAgIHJlZnJlc2hRdWVyeUxpc3QoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZnJlc2gkID0gbWVyZ2UodGhpcy5fcmVmcmVzaCQsIGRlc3Ryb3lPYnNlcnZhYmxlKHRoaXMuX2Rlc3Ryb3lSZWYpKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaCQubmV4dCgpO1xuXG4gICAgICAgIHRoaXMuX2RuZEl0ZW1SZWZlcmVuY2UgPSB0aGlzLmRuZEl0ZW1zLnRvQXJyYXkoKTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEcmFnZ2FibGVTdGF0ZSh0aGlzLl9kcmFnZ2FibGUpO1xuXG4gICAgICAgIHRoaXMuZG5kSXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGl0ZW0ubW92ZWQucGlwZSh0YWtlVW50aWwocmVmcmVzaCQpKS5zdWJzY3JpYmUoKHBvc2l0aW9uOiBFbGVtZW50UG9zaXRpb24pID0+IHRoaXMub25Nb3ZlKHBvc2l0aW9uLCBpbmRleCkpO1xuICAgICAgICAgICAgaXRlbS5zdGFydGVkLnBpcGUodGFrZVVudGlsKHJlZnJlc2gkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHJhZ1N0YXJ0KGluZGV4KSk7XG4gICAgICAgICAgICBpdGVtLnJlbGVhc2VkLnBpcGUodGFrZVVudGlsKHJlZnJlc2gkKSkuc3Vic2NyaWJlKGFzeW5jICgpID0+IGF3YWl0IHRoaXMuZHJhZ0VuZChpbmRleCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGNhbGxlZCB3aGVuIHRoZSBpdGVtIGlzIGJlaW5nIG1vdmVkIGJ5IDEgcHggKi9cbiAgICBvbk1vdmUobW91c2VQb3NpdGlvbjogRWxlbWVudFBvc2l0aW9uLCBkcmFnZ2VkSXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLyoqIFRlbXBvcmFyeSBvYmplY3QsIHRvIHN0b3JlIGxvd2VzdCBkaXN0YW5jZSB2YWx1ZXMgKi9cbiAgICAgICAgbGV0IGNsb3Nlc3RJdGVtSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGNvbnN0IGNsb3Nlc3REbmRJdGVtID0gdGhpcy5fZWxlbWVudHNDb29yZGluYXRlcy5maW5kKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgLyoqIENoZWNrIGlmIGFuIGVsZW1lbnQgY2FuIGJlIHJlcGxhY2VkICovXG4gICAgICAgICAgICBpZiAoIWVsZW1lbnQuc3RpY2tUb1Bvc2l0aW9uICYmIGNsb3Nlc3RJdGVtSW5kZXggIT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNNb3VzZU9uRWxlbWVudCA9IF9pc01vdXNlT25FbGVtZW50KGVsZW1lbnQsIG1vdXNlUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIGlmIChpc01vdXNlT25FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RJdGVtSW5kZXggPSBpbmRleDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghY2xvc2VzdERuZEl0ZW0pIHtcbiAgICAgICAgICAgIGNsb3Nlc3RJdGVtSW5kZXggPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqIElmIHRoZSBjbG9zZXN0IGVsZW1lbnQgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9sZCBvbmUsIHRoZSBuZXcgb25lIGlzIHBpY2tlZC4gSXQgcHJldmVudHMgZnJvbSBwZXJmb3JtYW5jZSBpc3N1ZXMgKi9cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGNsb3Nlc3RJdGVtSW5kZXggfHwgY2xvc2VzdEl0ZW1JbmRleCA9PT0gMCkgJiZcbiAgICAgICAgICAgIChjbG9zZXN0SXRlbUluZGV4ICE9PSB0aGlzLl9jbG9zZXN0SXRlbUluZGV4IHx8IHRoaXMuZHJvcE1vZGUgPT09ICdhdXRvJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxMaW5lcygpO1xuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQWxsUmVwbGFjZUluZGljYXRvcnMoKTtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXggPSBjbG9zZXN0SXRlbUluZGV4O1xuICAgICAgICAgICAgdGhpcy5fY2xvc2VzdEl0ZW1Qb3NpdGlvbiA9IHRoaXMuX2VsZW1lbnRzQ29vcmRpbmF0ZXNbY2xvc2VzdEl0ZW1JbmRleF0ucG9zaXRpb247XG4gICAgICAgICAgICBjb25zdCBjbG9zZXN0SXRlbSA9IHRoaXMuaXRlbXNbdGhpcy5fY2xvc2VzdEl0ZW1JbmRleF07XG4gICAgICAgICAgICAvLyBJZiBjbG9zZXN0IGl0ZW0gaW5kZXggaXMgc2FtZSBhcyBkcmFnZ2VkIGl0ZW0sIGp1c3QgcmVtb3ZlIGluZGljYXRvcnNcbiAgICAgICAgICAgIGlmIChjbG9zZXN0SXRlbUluZGV4ID09PSBkcmFnZ2VkSXRlbUluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQWxsTGluZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxSZXBsYWNlSW5kaWNhdG9ycygpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdvdmVyUHJlZGljYXRlICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fZHJhZ2dlZEl0ZW0gJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5kcmFnb3ZlclByZWRpY2F0ZSh0aGlzLl9kcmFnZ2VkSXRlbSwgY2xvc2VzdEl0ZW0sIGRyYWdnZWRJdGVtSW5kZXgsIHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXgpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pZ25vcmVEcm9wID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXREaXNhYmxlZEl0ZW0odGhpcy5fY2xvc2VzdEl0ZW1JbmRleCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fc2V0RGlzYWJsZWRJdGVtKC0xKTtcbiAgICAgICAgICAgIC8qKiBHZW5lcmF0aW5nIGxpbmUsIHRoYXQgc2hvd3Mgd2hlcmUgdGhlIGVsZW1lbnQgd2lsbCBiZSBwbGFjZWQsIG9uIGEgZHJvcCAqL1xuICAgICAgICAgICAgaWYgKHRoaXMuZHJvcE1vZGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVSZXBsYWNlSW5kaWNhdG9yKHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyb3BNb2RlID09PSAnc2hpZnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlTGluZSh0aGlzLl9jbG9zZXN0SXRlbUluZGV4LCB0aGlzLl9jbG9zZXN0SXRlbVBvc2l0aW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0RHJvcE1vZGVJbmRpY2F0b3IoZHJhZ2dlZEl0ZW1JbmRleCwgY2xvc2VzdERuZEl0ZW0sIGNsb3Nlc3RJdGVtSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBjYWxsZWQgd2hlbiBhbiBlbGVtZW50IGlzIHN0YXJ0ZWQgdG8gYmUgZHJhZ2dlZCAqL1xuICAgIGRyYWdTdGFydChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRyYWdnZWRJdGVtRWxlbWVudCA9IHRoaXMuX2RuZEl0ZW1SZWZlcmVuY2VbaW5kZXhdLmVsZW1lbnRSZWY7XG4gICAgICAgIHRoaXMuX2RyYWdnZWRJdGVtID0gdGhpcy5pdGVtc1tpbmRleF07XG4gICAgICAgIC8qKiBDb3VudGluZyBhbGwgdGhlIGVsZW1lbnQncyBjaG9yZHMgKi9cbiAgICAgICAgdGhpcy5fZWxlbWVudHNDb29yZGluYXRlcyA9IHRoaXMuX2RuZEl0ZW1SZWZlcmVuY2UubWFwKChpdGVtOiBEbmRJdGVtKSA9PlxuICAgICAgICAgICAgaXRlbS5nZXRFbGVtZW50Q29vcmRpbmF0ZXModGhpcy5faXNCZWZvcmUoZHJhZ2dlZEl0ZW1FbGVtZW50LCBpdGVtLmVsZW1lbnRSZWYpLCB0aGlzLmdyaWRNb2RlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkIHdoZW4gYW4gZWxlbWVudCBpcyByZWxlYXNlZCAqL1xuICAgIGFzeW5jIGRyYWdFbmQoZHJhZ2dlZEl0ZW1JbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuX2RyYWdnZWRJdGVtID0gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXMuc2xpY2UoKTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWRJdGVtSW5kZXggPSB0aGlzLl9jbG9zZXN0SXRlbUluZGV4O1xuICAgICAgICB0aGlzLl9zZXREaXNhYmxlZEl0ZW0oLTEpO1xuXG4gICAgICAgIGlmICh0aGlzLl9pZ25vcmVEcm9wKSB7XG4gICAgICAgICAgICB0aGlzLl9pZ25vcmVEcm9wID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVwbGFjZWRJdGVtSW5kZXggPT09IG51bGwgfHwgcmVwbGFjZWRJdGVtSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkcmFnZ2VkRG5kSXRlbSA9IHRoaXMuZG5kSXRlbXMuZ2V0KGRyYWdnZWRJdGVtSW5kZXgpPy5pdGVtID8/IGl0ZW1zW2RyYWdnZWRJdGVtSW5kZXhdO1xuICAgICAgICBjb25zdCByZXBsYWNlZERuZEl0ZW0gPSB0aGlzLmRuZEl0ZW1zLmdldChyZXBsYWNlZEl0ZW1JbmRleCk/Lml0ZW0gPz8gaXRlbXNbcmVwbGFjZWRJdGVtSW5kZXhdO1xuXG4gICAgICAgIGNvbnN0IHByZWRpY2F0ZVN1YmogPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgICAgIGNvbnN0IGV2dDogRmREcm9wRXZlbnQ8VD4gPSB7XG4gICAgICAgICAgICByZXBsYWNlZEl0ZW1JbmRleCxcbiAgICAgICAgICAgIGRyYWdnZWRJdGVtSW5kZXgsXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIGluc2VydEF0OiB0aGlzLl9jbG9zZXN0SXRlbVBvc2l0aW9uLFxuICAgICAgICAgICAgbW9kZTogdGhpcy5kcm9wTW9kZSAhPT0gJ2F1dG8nID8gdGhpcy5kcm9wTW9kZSA6IHRoaXMuX2RldGVjdGVkRHJvcE1vZGVcbiAgICAgICAgfTtcblxuICAgICAgICBwcmVkaWNhdGVTdWJqLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFsbExpbmVzKCk7XG4gICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxSZXBsYWNlSW5kaWNhdG9ycygpO1xuXG4gICAgICAgICAgICAvKiogUmVzZXQgKi9cbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRzQ29vcmRpbmF0ZXMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fY2xvc2VzdEl0ZW1Qb3NpdGlvbiA9IG51bGw7XG5cbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wQ2FuY2VsbGVkLmVtaXQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkcmFnZ2VkSXRlbUluZGV4ICE9PSByZXBsYWNlZEl0ZW1JbmRleCkge1xuICAgICAgICAgICAgICAgIGlmIChkcmFnZ2VkSXRlbUluZGV4IDwgcmVwbGFjZWRJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGRyYWdnZWRJdGVtSW5kZXg7IGkgPCByZXBsYWNlZEl0ZW1JbmRleDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtc1tpXSA9IGl0ZW1zW2kgKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBkcmFnZ2VkSXRlbUluZGV4OyBpID4gcmVwbGFjZWRJdGVtSW5kZXg7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBpdGVtc1tpIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvKiogUmVwbGFjaW5nIGl0ZW1zICovXG4gICAgICAgICAgICAgICAgaXRlbXNbcmVwbGFjZWRJdGVtSW5kZXhdID0gZHJhZ2dlZERuZEl0ZW07XG5cbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoaXRlbXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLml0ZW1Ecm9wcGVkLmVtaXQoZXZ0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZHJvcFByZWRpY2F0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3BQcmVkaWNhdGVDYWxjdWxhdGluZy5lbWl0KHRydWUpO1xuICAgICAgICAgICAgY29uc3Qgb2JqID0gdGhpcy5kcm9wUHJlZGljYXRlKGRyYWdnZWREbmRJdGVtLCByZXBsYWNlZERuZEl0ZW0sIGV2dCk7XG4gICAgICAgICAgICBjb25zdCBzdHJhdGVneSA9IHNlbGVjdFN0cmF0ZWd5KG9iaik7XG5cbiAgICAgICAgICAgIGF3YWl0IHN0cmF0ZWd5LmNyZWF0ZVN1YnNjcmlwdGlvbihvYmosIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVTdWJqLm5leHQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3BQcmVkaWNhdGVDYWxjdWxhdGluZy5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJlZGljYXRlU3Viai5uZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXREaXNhYmxlZEl0ZW0oaXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kbmRJdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaXRlbS5zZXREaXNhYmxlZFN0YXRlKGluZGV4ID09PSBpdGVtSW5kZXgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdERyb3BNb2RlSW5kaWNhdG9yKFxuICAgICAgICBkcmFnZ2VkSXRlbUluZGV4OiBudW1iZXIsXG4gICAgICAgIGNsb3Nlc3RJdGVtOiBFbGVtZW50Q2hvcmQgfCB1bmRlZmluZWQsXG4gICAgICAgIGNsb3Nlc3RJdGVtSW5kZXg6IG51bWJlclxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIWNsb3Nlc3RJdGVtIHx8ICF0aGlzLl9kbmRJdGVtUmVmZXJlbmNlW2RyYWdnZWRJdGVtSW5kZXhdKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbmV3RGV0ZWN0ZWREcm9wTW9kZTogJ3NoaWZ0JyB8ICdncm91cCc7XG4gICAgICAgIGNvbnN0IGRyYWdnZWRFbG1Db29yZHMgPVxuICAgICAgICAgICAgdGhpcy5fZG5kSXRlbVJlZmVyZW5jZVtkcmFnZ2VkSXRlbUluZGV4XS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgY29uc3QgY2xvc2VzdEl0ZW1Cb3VuZGFyaWVzID0gZ2V0RWxlbWVudEJvdW5kYXJpZXMoY2xvc2VzdEl0ZW0sIHRoaXMudGhyZXNob2xkKTtcbiAgICAgICAgY29uc3QgZHJhZ2dlZEl0ZW1TdGFydENvb3JkcyA9IGdldEVsZW1lbnRTdGFydENvb3JkcyhkcmFnZ2VkRWxtQ29vcmRzLCBjbG9zZXN0SXRlbS5wb3NpdGlvbik7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgX2JldHdlZW4oZHJhZ2dlZEl0ZW1TdGFydENvb3Jkcy54LCBjbG9zZXN0SXRlbUJvdW5kYXJpZXMueC5zdGFydCwgY2xvc2VzdEl0ZW1Cb3VuZGFyaWVzLnguZW5kKSAmJlxuICAgICAgICAgICAgX2JldHdlZW4oZHJhZ2dlZEl0ZW1TdGFydENvb3Jkcy55LCBjbG9zZXN0SXRlbUJvdW5kYXJpZXMueS5zdGFydCwgY2xvc2VzdEl0ZW1Cb3VuZGFyaWVzLnkuZW5kKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIG5ld0RldGVjdGVkRHJvcE1vZGUgPSAnZ3JvdXAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3RGV0ZWN0ZWREcm9wTW9kZSA9ICdzaGlmdCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3RGV0ZWN0ZWREcm9wTW9kZSA9PT0gdGhpcy5fZGV0ZWN0ZWREcm9wTW9kZSAmJiAoIXRoaXMuX2xpbmVzUmVtb3ZlZCB8fCAhdGhpcy5faW5kaWNhdG9yc1JlbW92ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kZXRlY3RlZERyb3BNb2RlID0gbmV3RGV0ZWN0ZWREcm9wTW9kZTtcblxuICAgICAgICBpZiAodGhpcy5fZGV0ZWN0ZWREcm9wTW9kZSA9PT0gJ3NoaWZ0Jykge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlTGluZShjbG9zZXN0SXRlbUluZGV4LCB0aGlzLl9lbGVtZW50c0Nvb3JkaW5hdGVzW2Nsb3Nlc3RJdGVtSW5kZXhdLnBvc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVJlcGxhY2VJbmRpY2F0b3IoY2xvc2VzdEl0ZW1JbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlbW92ZUFsbExpbmVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saW5lc1JlbW92ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmRuZEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0ucmVtb3ZlTGluZSgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlbW92ZUFsbFJlcGxhY2VJbmRpY2F0b3JzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbmRpY2F0b3JzUmVtb3ZlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZG5kSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5yZW1vdmVSZXBsYWNlSW5kaWNhdG9yKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlTGluZShjbG9zZXN0SXRlbUluZGV4OiBudW1iZXIsIGxpbmtQb3NpdGlvbjogTGlua1Bvc2l0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZUFsbExpbmVzKCk7XG4gICAgICAgIHRoaXMuX3JlbW92ZUFsbFJlcGxhY2VJbmRpY2F0b3JzKCk7XG4gICAgICAgIHRoaXMuX2xpbmVzUmVtb3ZlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9kbmRJdGVtUmVmZXJlbmNlW2Nsb3Nlc3RJdGVtSW5kZXhdLmNyZWF0ZUxpbmUobGlua1Bvc2l0aW9uLCB0aGlzLmdyaWRNb2RlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZVJlcGxhY2VJbmRpY2F0b3IoY2xvc2VzdEl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZUFsbExpbmVzKCk7XG4gICAgICAgIHRoaXMuX3JlbW92ZUFsbFJlcGxhY2VJbmRpY2F0b3JzKCk7XG4gICAgICAgIHRoaXMuX2luZGljYXRvcnNSZW1vdmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2RuZEl0ZW1SZWZlcmVuY2VbY2xvc2VzdEl0ZW1JbmRleF0uY3JlYXRlUmVwbGFjZUluZGljYXRvcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBAaGlkZGVuXG4gICAgICogUmV0dXJuIGluZm9ybWF0aW9uIGlmIGFuIGVsZW1lbnQgaXMgcGxhY2VkIGJlZm9yZSB0aGUgZHJhZ2dlZCBlbGVtZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNCZWZvcmUoZHJhZ2dlZEVsZW1lbnQ6IEVsZW1lbnRSZWYsIHRhcmdldEVsZW1lbnQ6IEVsZW1lbnRSZWYpOiBib29sZWFuIHtcbiAgICAgICAgLyoqIFNvbWV0aW1lcyB0aGUgZWxlbWVudHMgYXJlIG5vdCBzdHJhaWdodCBpbiBvbmUgY29sdW1uLCB0aGF0J3Mgd2h5IG9mZnNldCBpcyBuZWVkZWQgKi9cbiAgICAgICAgY29uc3QgVkVSVElDQUxfT0ZGU0VUID0gMjA7XG5cbiAgICAgICAgLyoqIERpc3RhbmNlcyBmcm9tIHRoZSB0b3Agb2YgdGhlIHNjcmVlbiAqL1xuICAgICAgICBjb25zdCBkcmFnZ2VkRWxlbWVudEJvdW5kID0gZHJhZ2dlZEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudEJvdW5kID0gdGFyZ2V0RWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGlmIChkcmFnZ2VkRWxlbWVudEJvdW5kLnRvcCAtIHRhcmdldEVsZW1lbnRCb3VuZC50b3AgPiBWRVJUSUNBTF9PRkZTRVQpIHtcbiAgICAgICAgICAgIC8qKiBJZiBhbiBlbGVtZW50IGlzIGhpZ2hlciB0aGFuIHRoZSBkcmFnZ2VkIGVsZW1lbnQsIGl0J3MgZm9yIHN1cmUgYmVmb3JlICovXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0YXJnZXRFbGVtZW50Qm91bmQudG9wIC0gZHJhZ2dlZEVsZW1lbnRCb3VuZC50b3AgPiBWRVJUSUNBTF9PRkZTRVQpIHtcbiAgICAgICAgICAgIC8qKiBJZiBhbiBlbGVtZW50IGlzIGxvd2VyIHRoYW4gdGhlIGRyYWdnZWQgZWxlbWVudCwgaXQncyBmb3Igc3VyZSBhZnRlciAqL1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyoqIElmIGVsZW1lbnRzIGFyZSBpbiBzYW1lIGxldmVsLCB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBkZWNpZGVzIGlmIGl0J3MgYmVmb3JlL2FmdGVyICovXG4gICAgICAgICAgICByZXR1cm4gZHJhZ2dlZEVsZW1lbnRCb3VuZC5sZWZ0IC0gdGFyZ2V0RWxlbWVudEJvdW5kLmxlZnQgPiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGFuZ2VEcmFnZ2FibGVTdGF0ZShkcmFnZ2FibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZG5kSXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMuZG5kSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0ubGlzdERyYWdnYWJsZSA9IGRyYWdnYWJsZTtcbiAgICAgICAgICAgICAgICBpdGVtLmNoYW5nZUNES0RyYWdTdGF0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIF9pc01vdXNlT25FbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnRDaG9yZCwgbW91c2VQb3NpdGlvbjogRWxlbWVudFBvc2l0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RhcnRYID0gZWxlbWVudC54O1xuICAgIGNvbnN0IGVuZFggPSBlbGVtZW50LnggKyBlbGVtZW50LndpZHRoO1xuXG4gICAgY29uc3Qgc3RhcnRZID0gZWxlbWVudC55O1xuICAgIGNvbnN0IGVuZFkgPSBlbGVtZW50LnkgKyBlbGVtZW50LmhlaWdodDtcblxuICAgIHJldHVybiBfYmV0d2Vlbihtb3VzZVBvc2l0aW9uLngsIHN0YXJ0WCwgZW5kWCkgJiYgX2JldHdlZW4obW91c2VQb3NpdGlvbi55LCBzdGFydFksIGVuZFkpO1xufVxuXG5mdW5jdGlvbiBfYmV0d2Vlbih4OiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB4ID49IG1pbiAmJiB4IDw9IG1heDtcbn1cblxuaW50ZXJmYWNlIEVsZW1lbnRCb3VuZGFyaWVzIHtcbiAgICB4OiB7XG4gICAgICAgIHN0YXJ0OiBudW1iZXI7XG4gICAgICAgIGVuZDogbnVtYmVyO1xuICAgIH07XG4gICAgeToge1xuICAgICAgICBzdGFydDogbnVtYmVyO1xuICAgICAgICBlbmQ6IG51bWJlcjtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBnZXRFbGVtZW50U3RhcnRDb29yZHMocmVjdDogRE9NUmVjdCwgcG9zaXRpb246IEVsZW1lbnRDaG9yZFsncG9zaXRpb24nXSk6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogcG9zaXRpb24gPT09ICdhZnRlcicgPyByZWN0LnggKyByZWN0LndpZHRoIDogcmVjdC54LFxuICAgICAgICB5OiBwb3NpdGlvbiA9PT0gJ2FmdGVyJyA/IHJlY3QueSArIHJlY3QuaGVpZ2h0IDogcmVjdC55XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RWxlbWVudEJvdW5kYXJpZXMoY29vcmRpbmF0ZXM6IEVsZW1lbnRDaG9yZCwgdGhyZXNob2xkOiBudW1iZXIpOiBFbGVtZW50Qm91bmRhcmllcyB7XG4gICAgY29uc3Qgd2lkdGhPZmZzZXQgPSBjb29yZGluYXRlcy53aWR0aCAqIChjb29yZGluYXRlcy5wb3NpdGlvbiA9PT0gJ2FmdGVyJyA/IDEgOiAtMSk7XG4gICAgY29uc3QgaGVpZ2h0T2Zmc2V0ID0gY29vcmRpbmF0ZXMuaGVpZ2h0ICogKGNvb3JkaW5hdGVzLnBvc2l0aW9uID09PSAnYWZ0ZXInID8gMSA6IC0xKTtcbiAgICBjb25zdCB4U3RhcnQgPSBjb29yZGluYXRlcy5wb3NpdGlvbiA9PT0gJ2FmdGVyJyA/IGNvb3JkaW5hdGVzLnggOiBjb29yZGluYXRlcy54ICsgY29vcmRpbmF0ZXMud2lkdGg7XG4gICAgY29uc3QgeEVuZCA9IHhTdGFydCArIHdpZHRoT2Zmc2V0ICsgKHdpZHRoT2Zmc2V0IC8gMikgKiB0aHJlc2hvbGQ7XG4gICAgY29uc3QgeVN0YXJ0ID0gY29vcmRpbmF0ZXMucG9zaXRpb24gPT09ICdhZnRlcicgPyBjb29yZGluYXRlcy55IDogY29vcmRpbmF0ZXMueSArIGNvb3JkaW5hdGVzLmhlaWdodDtcbiAgICBjb25zdCB5RW5kID0geVN0YXJ0ICsgaGVpZ2h0T2Zmc2V0ICsgKGhlaWdodE9mZnNldCAvIDIpICogdGhyZXNob2xkO1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHtcbiAgICAgICAgICAgIHN0YXJ0OiB4U3RhcnQgPiB4RW5kID8geEVuZCA6IHhTdGFydCxcbiAgICAgICAgICAgIGVuZDogeFN0YXJ0ID4geEVuZCA/IHhTdGFydCA6IHhFbmRcbiAgICAgICAgfSxcbiAgICAgICAgeToge1xuICAgICAgICAgICAgc3RhcnQ6IHlTdGFydCA+IHlFbmQgPyB5RW5kIDogeVN0YXJ0LFxuICAgICAgICAgICAgZW5kOiB5U3RhcnQgPiB5RW5kID8geVN0YXJ0IDogeUVuZFxuICAgICAgICB9XG4gICAgfTtcbn1cbiJdfQ==","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { DndItemDirective } from './dnd-item/dnd-item.directive';\nimport { DndKeyboardGroupDirective } from './dnd-keyboard-group/dnd-keyboard-group.directive';\nimport { DndKeyboardItemDirective } from './dnd-keyboard-item/dnd-keyboard-item.directive';\nimport { DndListDirective } from './dnd-list/dnd-list.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class DragAndDropModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DragAndDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DragAndDropModule, imports: [DragDropModule, DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective], exports: [DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DragAndDropModule, imports: [DragDropModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DragAndDropModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [DragDropModule, DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective],\n exports: [DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1hbmQtZHJvcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kcmFnLWFuZC1kcm9wL2RyYWctYW5kLWRyb3AubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUVqRTs7O0dBR0c7QUFLSCxNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixZQUhoQixjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLGFBQ3ZHLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLHlCQUF5QixFQUFFLHdCQUF3QjsrR0FFeEYsaUJBQWlCLFlBSGhCLGNBQWM7OzJGQUdmLGlCQUFpQjtrQkFKN0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLENBQUM7b0JBQ2xILE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixDQUFDO2lCQUNyRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG5kSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vZG5kLWl0ZW0vZG5kLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IERuZEtleWJvYXJkR3JvdXBEaXJlY3RpdmUgfSBmcm9tICcuL2RuZC1rZXlib2FyZC1ncm91cC9kbmQta2V5Ym9hcmQtZ3JvdXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IERuZEtleWJvYXJkSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vZG5kLWtleWJvYXJkLWl0ZW0vZG5kLWtleWJvYXJkLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IERuZExpc3REaXJlY3RpdmUgfSBmcm9tICcuL2RuZC1saXN0L2RuZC1saXN0LmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVzZSBkaXJlY3QgaW1wb3J0cyBvZiBjb21wb25lbnRzIGFuZCBkaXJlY3RpdmVzLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtEcmFnRHJvcE1vZHVsZSwgRG5kSXRlbURpcmVjdGl2ZSwgRG5kTGlzdERpcmVjdGl2ZSwgRG5kS2V5Ym9hcmRHcm91cERpcmVjdGl2ZSwgRG5kS2V5Ym9hcmRJdGVtRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbRG5kSXRlbURpcmVjdGl2ZSwgRG5kTGlzdERpcmVjdGl2ZSwgRG5kS2V5Ym9hcmRHcm91cERpcmVjdGl2ZSwgRG5kS2V5Ym9hcmRJdGVtRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBEcmFnQW5kRHJvcE1vZHVsZSB7fVxuIl19","import { NgModule } from '@angular/core';\nimport { AutoCompleteModule, BreakpointModule, ClickedDirective, DisabledBehaviorModule, FocusableGridModule, FocusableItemModule, FocusableListModule, InitialFocusModule, IntersectionSpyDirective, LineClampModule, OnlyDigitsModule, OverflowListModule, ReadonlyBehaviorModule, RepeatModule, ResizeModule, SelectableListModule, TemplateModule, TruncateModule } from './directives';\nimport { DragAndDropModule } from './drag-and-drop/drag-and-drop.module';\nimport { RtlService } from './services/rtl.service';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class UtilsModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: UtilsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: UtilsModule, imports: [FocusableItemModule,\n FocusableListModule,\n FocusableGridModule,\n DragAndDropModule,\n OnlyDigitsModule,\n TruncateModule,\n LineClampModule,\n OverflowListModule,\n RepeatModule,\n ResizeModule,\n TemplateModule,\n AutoCompleteModule,\n DisabledBehaviorModule,\n SelectableListModule,\n ReadonlyBehaviorModule,\n ClickedDirective,\n InitialFocusModule,\n BreakpointModule,\n IntersectionSpyDirective], exports: [FocusableItemModule,\n FocusableListModule,\n FocusableGridModule,\n DragAndDropModule,\n OnlyDigitsModule,\n TruncateModule,\n LineClampModule,\n OverflowListModule,\n RepeatModule,\n ResizeModule,\n TemplateModule,\n AutoCompleteModule,\n DisabledBehaviorModule,\n SelectableListModule,\n ReadonlyBehaviorModule,\n ClickedDirective,\n InitialFocusModule,\n BreakpointModule,\n IntersectionSpyDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: UtilsModule, providers: [RtlService], imports: [FocusableItemModule,\n FocusableListModule,\n FocusableGridModule,\n DragAndDropModule,\n OnlyDigitsModule,\n TruncateModule,\n LineClampModule,\n OverflowListModule,\n RepeatModule,\n ResizeModule,\n TemplateModule,\n AutoCompleteModule,\n DisabledBehaviorModule,\n SelectableListModule,\n ReadonlyBehaviorModule,\n InitialFocusModule,\n BreakpointModule, FocusableItemModule,\n FocusableListModule,\n FocusableGridModule,\n DragAndDropModule,\n OnlyDigitsModule,\n TruncateModule,\n LineClampModule,\n OverflowListModule,\n RepeatModule,\n ResizeModule,\n TemplateModule,\n AutoCompleteModule,\n DisabledBehaviorModule,\n SelectableListModule,\n ReadonlyBehaviorModule,\n InitialFocusModule,\n BreakpointModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: UtilsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n FocusableItemModule,\n FocusableListModule,\n FocusableGridModule,\n DragAndDropModule,\n OnlyDigitsModule,\n TruncateModule,\n LineClampModule,\n OverflowListModule,\n RepeatModule,\n ResizeModule,\n TemplateModule,\n AutoCompleteModule,\n DisabledBehaviorModule,\n SelectableListModule,\n ReadonlyBehaviorModule,\n ClickedDirective,\n InitialFocusModule,\n BreakpointModule,\n IntersectionSpyDirective\n ],\n exports: [\n FocusableItemModule,\n FocusableListModule,\n FocusableGridModule,\n DragAndDropModule,\n OnlyDigitsModule,\n TruncateModule,\n LineClampModule,\n OverflowListModule,\n RepeatModule,\n ResizeModule,\n TemplateModule,\n AutoCompleteModule,\n DisabledBehaviorModule,\n SelectableListModule,\n ReadonlyBehaviorModule,\n ClickedDirective,\n InitialFocusModule,\n BreakpointModule,\n IntersectionSpyDirective\n ],\n providers: [RtlService]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvdXRpbHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNILGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixZQUFZLEVBQ1osWUFBWSxFQUNaLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsY0FBYyxFQUNqQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRXBEOzs7R0FHRztBQThDSCxNQUFNLE9BQU8sV0FBVzs4R0FBWCxXQUFXOytHQUFYLFdBQVcsWUEzQ2hCLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsY0FBYztZQUNkLGVBQWU7WUFDZixrQkFBa0I7WUFDbEIsWUFBWTtZQUNaLFlBQVk7WUFDWixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLHNCQUFzQjtZQUN0QixvQkFBb0I7WUFDcEIsc0JBQXNCO1lBQ3RCLGdCQUFnQjtZQUNoQixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLHdCQUF3QixhQUd4QixtQkFBbUI7WUFDbkIsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLFlBQVk7WUFDWixZQUFZO1lBQ1osY0FBYztZQUNkLGtCQUFrQjtZQUNsQixzQkFBc0I7WUFDdEIsb0JBQW9CO1lBQ3BCLHNCQUFzQjtZQUN0QixnQkFBZ0I7WUFDaEIsa0JBQWtCO1lBQ2xCLGdCQUFnQjtZQUNoQix3QkFBd0I7K0dBSW5CLFdBQVcsYUFGVCxDQUFDLFVBQVUsQ0FBQyxZQXpDbkIsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixZQUFZO1lBQ1osWUFBWTtZQUNaLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsc0JBQXNCO1lBQ3RCLG9CQUFvQjtZQUNwQixzQkFBc0I7WUFFdEIsa0JBQWtCO1lBQ2xCLGdCQUFnQixFQUloQixtQkFBbUI7WUFDbkIsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLFlBQVk7WUFDWixZQUFZO1lBQ1osY0FBYztZQUNkLGtCQUFrQjtZQUNsQixzQkFBc0I7WUFDdEIsb0JBQW9CO1lBQ3BCLHNCQUFzQjtZQUV0QixrQkFBa0I7WUFDbEIsZ0JBQWdCOzsyRkFLWCxXQUFXO2tCQTdDdkIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsd0JBQXdCO3FCQUMzQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsd0JBQXdCO3FCQUMzQjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQXV0b0NvbXBsZXRlTW9kdWxlLFxuICAgIEJyZWFrcG9pbnRNb2R1bGUsXG4gICAgQ2xpY2tlZERpcmVjdGl2ZSxcbiAgICBEaXNhYmxlZEJlaGF2aW9yTW9kdWxlLFxuICAgIEZvY3VzYWJsZUdyaWRNb2R1bGUsXG4gICAgRm9jdXNhYmxlSXRlbU1vZHVsZSxcbiAgICBGb2N1c2FibGVMaXN0TW9kdWxlLFxuICAgIEluaXRpYWxGb2N1c01vZHVsZSxcbiAgICBJbnRlcnNlY3Rpb25TcHlEaXJlY3RpdmUsXG4gICAgTGluZUNsYW1wTW9kdWxlLFxuICAgIE9ubHlEaWdpdHNNb2R1bGUsXG4gICAgT3ZlcmZsb3dMaXN0TW9kdWxlLFxuICAgIFJlYWRvbmx5QmVoYXZpb3JNb2R1bGUsXG4gICAgUmVwZWF0TW9kdWxlLFxuICAgIFJlc2l6ZU1vZHVsZSxcbiAgICBTZWxlY3RhYmxlTGlzdE1vZHVsZSxcbiAgICBUZW1wbGF0ZU1vZHVsZSxcbiAgICBUcnVuY2F0ZU1vZHVsZVxufSBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRHJhZ0FuZERyb3BNb2R1bGUgfSBmcm9tICcuL2RyYWctYW5kLWRyb3AvZHJhZy1hbmQtZHJvcC5tb2R1bGUnO1xuaW1wb3J0IHsgUnRsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcnRsLnNlcnZpY2UnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgZGlyZWN0IGltcG9ydHMgb2YgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEZvY3VzYWJsZUl0ZW1Nb2R1bGUsXG4gICAgICAgIEZvY3VzYWJsZUxpc3RNb2R1bGUsXG4gICAgICAgIEZvY3VzYWJsZUdyaWRNb2R1bGUsXG4gICAgICAgIERyYWdBbmREcm9wTW9kdWxlLFxuICAgICAgICBPbmx5RGlnaXRzTW9kdWxlLFxuICAgICAgICBUcnVuY2F0ZU1vZHVsZSxcbiAgICAgICAgTGluZUNsYW1wTW9kdWxlLFxuICAgICAgICBPdmVyZmxvd0xpc3RNb2R1bGUsXG4gICAgICAgIFJlcGVhdE1vZHVsZSxcbiAgICAgICAgUmVzaXplTW9kdWxlLFxuICAgICAgICBUZW1wbGF0ZU1vZHVsZSxcbiAgICAgICAgQXV0b0NvbXBsZXRlTW9kdWxlLFxuICAgICAgICBEaXNhYmxlZEJlaGF2aW9yTW9kdWxlLFxuICAgICAgICBTZWxlY3RhYmxlTGlzdE1vZHVsZSxcbiAgICAgICAgUmVhZG9ubHlCZWhhdmlvck1vZHVsZSxcbiAgICAgICAgQ2xpY2tlZERpcmVjdGl2ZSxcbiAgICAgICAgSW5pdGlhbEZvY3VzTW9kdWxlLFxuICAgICAgICBCcmVha3BvaW50TW9kdWxlLFxuICAgICAgICBJbnRlcnNlY3Rpb25TcHlEaXJlY3RpdmVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgRm9jdXNhYmxlSXRlbU1vZHVsZSxcbiAgICAgICAgRm9jdXNhYmxlTGlzdE1vZHVsZSxcbiAgICAgICAgRm9jdXNhYmxlR3JpZE1vZHVsZSxcbiAgICAgICAgRHJhZ0FuZERyb3BNb2R1bGUsXG4gICAgICAgIE9ubHlEaWdpdHNNb2R1bGUsXG4gICAgICAgIFRydW5jYXRlTW9kdWxlLFxuICAgICAgICBMaW5lQ2xhbXBNb2R1bGUsXG4gICAgICAgIE92ZXJmbG93TGlzdE1vZHVsZSxcbiAgICAgICAgUmVwZWF0TW9kdWxlLFxuICAgICAgICBSZXNpemVNb2R1bGUsXG4gICAgICAgIFRlbXBsYXRlTW9kdWxlLFxuICAgICAgICBBdXRvQ29tcGxldGVNb2R1bGUsXG4gICAgICAgIERpc2FibGVkQmVoYXZpb3JNb2R1bGUsXG4gICAgICAgIFNlbGVjdGFibGVMaXN0TW9kdWxlLFxuICAgICAgICBSZWFkb25seUJlaGF2aW9yTW9kdWxlLFxuICAgICAgICBDbGlja2VkRGlyZWN0aXZlLFxuICAgICAgICBJbml0aWFsRm9jdXNNb2R1bGUsXG4gICAgICAgIEJyZWFrcG9pbnRNb2R1bGUsXG4gICAgICAgIEludGVyc2VjdGlvblNweURpcmVjdGl2ZVxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbUnRsU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgVXRpbHNNb2R1bGUge31cbiJdfQ==","import { Directive, ElementRef, Input, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/*\n This abstract class allows the user to set their own custom styles on a Fundamental Library for Angular directive, in addition to the\n styles the library needs to add itself.\n When library styles were added through the directive's host: {'[class]'} property, any styles the user added would be\n overwritten. By extending this class, we instead add library styles to the user's classList rather than replace them.\n */\n/** @hidden */\nexport class AbstractFdNgxClass {\n /** @hidden */\n constructor() {\n /** @hidden */\n this.elementRef = inject(ElementRef);\n this._setProperties();\n }\n /*\n each directive that extends this class will implement this function and populate it with one or more calls to\n the '_addClassToElement' function, passing the style names to be added with each call\n */\n /** @hidden */\n _setClassToElement(className) {\n this.elementRef.nativeElement.classList.value = `${className} ${this.class}`;\n }\n /** @hidden */\n _clearElementClass() {\n this.elementRef.nativeElement.classList.value = '';\n }\n /** @hidden */\n _addClassToElement(className) {\n this.elementRef.nativeElement.classList.add(...className.split(' '));\n }\n /** @hidden */\n _addStyleToElement(attribute, value) {\n this.elementRef.nativeElement.style[attribute] = value;\n }\n /** @hidden */\n ngOnChanges() {\n const classList = this.elementRef.nativeElement.classList;\n while (classList.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n classList.remove(classList.item(0));\n }\n if (this.class) {\n this._addClassToElement(this.class);\n }\n this._setProperties();\n }\n /** @hidden */\n ngOnInit() {\n this._setProperties();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AbstractFdNgxClass, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: AbstractFdNgxClass, isStandalone: true, inputs: { class: \"class\" }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AbstractFdNgxClass, decorators: [{\n type: Directive\n }], ctorParameters: () => [], propDecorators: { class: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmQtbmd4LWNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvYWJzdHJhY3QtZmQtbmd4LWNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd4Rjs7Ozs7R0FLRztBQUVILGNBQWM7QUFFZCxNQUFNLE9BQWdCLGtCQUFrQjtJQVNwQyxjQUFjO0lBQ2Q7UUFIQSxjQUFjO1FBQ0wsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUdyQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUVILGNBQWM7SUFDZCxrQkFBa0IsQ0FBQyxTQUFpQjtRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQTZCLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEcsQ0FBQztJQUVELGNBQWM7SUFDZCxrQkFBa0I7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQTZCLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDeEUsQ0FBQztJQUVELGNBQWM7SUFDZCxrQkFBa0IsQ0FBQyxTQUFpQjtRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQTZCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQsY0FBYztJQUNkLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxLQUFLO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBNkIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzVFLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLE1BQU0sU0FBUyxHQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBNkIsQ0FBQyxTQUFTLENBQUM7UUFDM0UsT0FBTyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFCLG9FQUFvRTtZQUNwRSxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7SUFDZCxRQUFRO1FBQ0osSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7OEdBdkRpQixrQkFBa0I7a0dBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEdkMsU0FBUzt3REFNRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIYXNFbGVtZW50UmVmIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2hhcy1lbGVtZW50LXJlZi5pbnRlcmZhY2UnO1xuXG4vKlxuIFRoaXMgYWJzdHJhY3QgY2xhc3MgYWxsb3dzIHRoZSB1c2VyIHRvIHNldCB0aGVpciBvd24gY3VzdG9tIHN0eWxlcyBvbiBhIEZ1bmRhbWVudGFsIExpYnJhcnkgZm9yIEFuZ3VsYXIgZGlyZWN0aXZlLCBpbiBhZGRpdGlvbiB0byB0aGVcbiBzdHlsZXMgdGhlIGxpYnJhcnkgbmVlZHMgdG8gYWRkIGl0c2VsZi5cbiBXaGVuIGxpYnJhcnkgc3R5bGVzIHdlcmUgYWRkZWQgdGhyb3VnaCB0aGUgZGlyZWN0aXZlJ3MgaG9zdDogeydbY2xhc3NdJ30gcHJvcGVydHksIGFueSBzdHlsZXMgdGhlIHVzZXIgYWRkZWQgd291bGQgYmVcbiBvdmVyd3JpdHRlbi4gIEJ5IGV4dGVuZGluZyB0aGlzIGNsYXNzLCB3ZSBpbnN0ZWFkIGFkZCBsaWJyYXJ5IHN0eWxlcyB0byB0aGUgdXNlcidzIGNsYXNzTGlzdCByYXRoZXIgdGhhbiByZXBsYWNlIHRoZW0uXG4gKi9cblxuLyoqIEBoaWRkZW4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RmROZ3hDbGFzcyBpbXBsZW1lbnRzIEhhc0VsZW1lbnRSZWYsIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFic3RyYWN0IF9zZXRQcm9wZXJ0aWVzKCk6IHZvaWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmc7IC8vIHVzZXIncyBjdXN0b20gY2xhc3Nlc1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuX3NldFByb3BlcnRpZXMoKTtcbiAgICB9XG5cbiAgICAvKlxuICAgICBlYWNoIGRpcmVjdGl2ZSB0aGF0IGV4dGVuZHMgdGhpcyBjbGFzcyB3aWxsIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIGFuZCBwb3B1bGF0ZSBpdCB3aXRoIG9uZSBvciBtb3JlIGNhbGxzIHRvXG4gICAgIHRoZSAnX2FkZENsYXNzVG9FbGVtZW50JyBmdW5jdGlvbiwgcGFzc2luZyB0aGUgc3R5bGUgbmFtZXMgdG8gYmUgYWRkZWQgd2l0aCBlYWNoIGNhbGxcbiAgICAgKi9cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldENsYXNzVG9FbGVtZW50KGNsYXNzTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LnZhbHVlID0gYCR7Y2xhc3NOYW1lfSAke3RoaXMuY2xhc3N9YDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jbGVhckVsZW1lbnRDbGFzcygpOiB2b2lkIHtcbiAgICAgICAgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hZGRDbGFzc1RvRWxlbWVudChjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3NOYW1lLnNwbGl0KCcgJykpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FkZFN0eWxlVG9FbGVtZW50KGF0dHJpYnV0ZSwgdmFsdWUpOiB2b2lkIHtcbiAgICAgICAgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZVthdHRyaWJ1dGVdID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2xhc3NMaXN0ID0gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3Q7XG4gICAgICAgIHdoaWxlIChjbGFzc0xpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgIGNsYXNzTGlzdC5yZW1vdmUoY2xhc3NMaXN0Lml0ZW0oMCkhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jbGFzcykge1xuICAgICAgICAgICAgdGhpcy5fYWRkQ2xhc3NUb0VsZW1lbnQodGhpcy5jbGFzcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0UHJvcGVydGllcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldFByb3BlcnRpZXMoKTtcbiAgICB9XG59XG4iXX0=","import { coerceArray } from '@angular/cdk/coercion';\nimport { isBlank } from '../typecheck';\n/** @hidden */\nexport function coerceArraySafe(value) {\n return isBlank(value) ? [] : coerceArray(value);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9jb2VyY2lvbi9hcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV2QyxjQUFjO0FBQ2QsTUFBTSxVQUFVLGVBQWUsQ0FBSSxLQUFjO0lBQzdDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgaXNCbGFuayB9IGZyb20gJy4uL3R5cGVjaGVjayc7XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlQXJyYXlTYWZlPFQ+KHZhbHVlOiBUIHwgVFtdKTogVFtdIHtcbiAgICByZXR1cm4gaXNCbGFuayh2YWx1ZSkgPyBbXSA6IGNvZXJjZUFycmF5KHZhbHVlKTtcbn1cbiJdfQ==","import { coerceElement } from '@angular/cdk/coercion';\nimport { CdkPortalOutlet, ComponentPortal, DomPortal, PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { Component, DestroyRef, ElementRef, EventEmitter, Input, Output, Renderer2, TemplateRef, ViewChild, ViewContainerRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, filter, map, tap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/cdk/portal\";\n/**\n * A component that can be used to attach a portal to a DOM element, without explicitly creating portal instances on place.\n * This is useful when you have a list of the components or templates, or HTMLElmets, and you want to attach them to the DOM\n * dynamically in a loop.\n */\nexport class DynamicPortalComponent {\n constructor() {\n /** Emits when the portal is attached */\n this.attached = new EventEmitter();\n /** @hidden */\n this.portalContent$ = new BehaviorSubject(undefined);\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this.viewContainerRef = inject(ViewContainerRef);\n /** @hidden */\n this.renderer = inject(Renderer2);\n /** @hidden */\n this.elementRef = inject(ElementRef);\n }\n /** The DOM element to attach */\n set domElement(value) {\n this.portalContent$.next(value);\n }\n /** The component to attach */\n set component(value) {\n this.portalContent$.next(value);\n }\n /** The template to attach */\n set template(value) {\n this.portalContent$.next(value);\n }\n /** The Content which should be attached and can be any of the items */\n set auto(value) {\n this.portalContent$.next(value);\n }\n /** @hidden */\n ngAfterViewInit() {\n const portalOutlet = this.portalOutlet;\n this.portalContent$\n .pipe(tap(() => portalOutlet.detach()), filter(Boolean), map((content) => {\n if (typeof content === 'string') {\n const textElement = this.renderer.createText(content);\n this.renderer.appendChild(this.elementRef.nativeElement, textElement);\n return new DomPortal(textElement);\n }\n else if (content instanceof HTMLElement || content instanceof ElementRef) {\n return new DomPortal(coerceElement(content));\n }\n else if (content instanceof TemplateRef) {\n return new TemplatePortal(content, this.viewContainerRef);\n }\n return new ComponentPortal(content);\n }), filter(Boolean), takeUntilDestroyed(this._destroyRef))\n .subscribe((portal) => {\n const ref = portalOutlet.attach(portal);\n if (portal instanceof DomPortal) {\n // DomPortal Attachment does not refer return Ref, like other portals\n this.attached.emit(portal.element);\n }\n else {\n this.attached.emit(ref);\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DynamicPortalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.4\", type: DynamicPortalComponent, isStandalone: true, selector: \"fdk-dynamic-portal\", inputs: { domElement: \"domElement\", component: \"component\", template: \"template\", auto: \"auto\" }, outputs: { attached: \"attached\" }, viewQueries: [{ propertyName: \"portalOutlet\", first: true, predicate: CdkPortalOutlet, descendants: true }], ngImport: i0, template: ` <ng-template cdkPortalOutlet></ng-template>`, isInline: true, dependencies: [{ kind: \"ngmodule\", type: PortalModule }, { kind: \"directive\", type: i1.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DynamicPortalComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'fdk-dynamic-portal',\n imports: [PortalModule],\n template: ` <ng-template cdkPortalOutlet></ng-template>`\n }]\n }], propDecorators: { domElement: [{\n type: Input\n }], component: [{\n type: Input\n }], template: [{\n type: Input\n }], auto: [{\n type: Input\n }], attached: [{\n type: Output\n }], portalOutlet: [{\n type: ViewChild,\n args: [CdkPortalOutlet]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1wb3J0YWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvY29tcG9uZW50cy9keW5hbWljLXBvcnRhbC9keW5hbWljLXBvcnRhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFDSCxlQUFlLEVBQ2YsZUFBZSxFQUVmLFNBQVMsRUFDVCxZQUFZLEVBQ1osY0FBYyxFQUNqQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFFSCxTQUFTLEVBRVQsVUFBVSxFQUNWLFVBQVUsRUFFVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUV6RDs7OztHQUlHO0FBTUgsTUFBTSxPQUFPLHNCQUFzQjtJQUxuQztRQThCSSx3Q0FBd0M7UUFFeEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFzRCxDQUFDO1FBTWxGLGNBQWM7UUFDTixtQkFBYyxHQUFHLElBQUksZUFBZSxDQUUxQyxTQUFTLENBQUMsQ0FBQztRQUViLGNBQWM7UUFDRyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsRCxjQUFjO1FBQ04scUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFcEQsY0FBYztRQUNOLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFckMsY0FBYztR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QURaLEtBQUs7Z0JBT0YsUUFBUTtzQkFEWCxLQUFLO2dCQU9GLElBQUk7c0JBRFAsS0FBSztnQkFPTixRQUFRO3NCQURQLE1BQU07Z0JBS1AsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgQ2RrUG9ydGFsT3V0bGV0LFxuICAgIENvbXBvbmVudFBvcnRhbCxcbiAgICBDb21wb25lbnRUeXBlLFxuICAgIERvbVBvcnRhbCxcbiAgICBQb3J0YWxNb2R1bGUsXG4gICAgVGVtcGxhdGVQb3J0YWxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW1iZWRkZWRWaWV3UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8gYXR0YWNoIGEgcG9ydGFsIHRvIGEgRE9NIGVsZW1lbnQsIHdpdGhvdXQgZXhwbGljaXRseSBjcmVhdGluZyBwb3J0YWwgaW5zdGFuY2VzIG9uIHBsYWNlLlxuICogVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3UgaGF2ZSBhIGxpc3Qgb2YgdGhlIGNvbXBvbmVudHMgb3IgdGVtcGxhdGVzLCBvciBIVE1MRWxtZXRzLCBhbmQgeW91IHdhbnQgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIERPTVxuICogZHluYW1pY2FsbHkgaW4gYSBsb29wLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2Zkay1keW5hbWljLXBvcnRhbCcsXG4gICAgaW1wb3J0czogW1BvcnRhbE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbE91dGxldD48L25nLXRlbXBsYXRlPmBcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY1BvcnRhbENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBUaGUgRE9NIGVsZW1lbnQgdG8gYXR0YWNoICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZG9tRWxlbWVudCh2YWx1ZTogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IHN0cmluZykge1xuICAgICAgICB0aGlzLnBvcnRhbENvbnRlbnQkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgY29tcG9uZW50IHRvIGF0dGFjaCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNvbXBvbmVudCh2YWx1ZTogQ29tcG9uZW50VHlwZTxhbnk+KSB7XG4gICAgICAgIHRoaXMucG9ydGFsQ29udGVudCQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSB0ZW1wbGF0ZSB0byBhdHRhY2ggKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0ZW1wbGF0ZSh2YWx1ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLnBvcnRhbENvbnRlbnQkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgQ29udGVudCB3aGljaCBzaG91bGQgYmUgYXR0YWNoZWQgYW5kIGNhbiBiZSBhbnkgb2YgdGhlIGl0ZW1zICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYXV0byh2YWx1ZTogRHluYW1pY1BvcnRhbENvbXBvbmVudFsnZG9tRWxlbWVudCcgfCAnY29tcG9uZW50JyB8ICd0ZW1wbGF0ZSddKSB7XG4gICAgICAgIHRoaXMucG9ydGFsQ29udGVudCQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEVtaXRzIHdoZW4gdGhlIHBvcnRhbCBpcyBhdHRhY2hlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGF0dGFjaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxDb21wb25lbnRSZWY8YW55PiB8IEVtYmVkZGVkVmlld1JlZjxhbnk+IHwgRWxlbWVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChDZGtQb3J0YWxPdXRsZXQpXG4gICAgcG9ydGFsT3V0bGV0PzogQ2RrUG9ydGFsT3V0bGV0O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHBvcnRhbENvbnRlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICAgICAgRHluYW1pY1BvcnRhbENvbXBvbmVudFsnZG9tRWxlbWVudCcgfCAnY29tcG9uZW50JyB8ICd0ZW1wbGF0ZSddIHwgdW5kZWZpbmVkXG4gICAgPih1bmRlZmluZWQpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvcnRhbE91dGxldCA9IHRoaXMucG9ydGFsT3V0bGV0IGFzIENka1BvcnRhbE91dGxldDtcbiAgICAgICAgdGhpcy5wb3J0YWxDb250ZW50JFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHBvcnRhbE91dGxldC5kZXRhY2goKSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICAgICAgICAgIG1hcCgoY29udGVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXh0RWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRleHRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRG9tUG9ydGFsKHRleHRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgY29udGVudCBpbnN0YW5jZW9mIEVsZW1lbnRSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRG9tUG9ydGFsKGNvZXJjZUVsZW1lbnQoY29udGVudCBhcyBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFRlbXBsYXRlUG9ydGFsKGNvbnRlbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21wb25lbnRQb3J0YWwoY29udGVudCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocG9ydGFsKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVmID0gcG9ydGFsT3V0bGV0LmF0dGFjaChwb3J0YWwpO1xuICAgICAgICAgICAgICAgIGlmIChwb3J0YWwgaW5zdGFuY2VvZiBEb21Qb3J0YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRG9tUG9ydGFsIEF0dGFjaG1lbnQgZG9lcyBub3QgcmVmZXIgcmV0dXJuIFJlZiwgbGlrZSBvdGhlciBwb3J0YWxzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0YWNoZWQuZW1pdChwb3J0YWwuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRhY2hlZC5lbWl0KHJlZik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19","export const MOBILE_CONFIG_ERROR = `Missing configuration object for mobile version of the component.\n Consult the documentation on how to provide MobileModeConfiguration object for this component.\n`;\nexport const THEME_SWITCHER_ROUTER_MISSING_ERROR = `You need to import RouterModule to enable theme settings via the url.`;\nexport const INVALID_DATE_ERROR = 'Invalid Date';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9jb25zdHMvZXJyb3ItbWVzc2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7O0NBRWxDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyx1RUFBdUUsQ0FBQztBQUUzSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTU9CSUxFX0NPTkZJR19FUlJPUiA9IGBNaXNzaW5nIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBtb2JpbGUgdmVyc2lvbiBvZiB0aGUgY29tcG9uZW50LlxuICAgIENvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gb24gaG93IHRvIHByb3ZpZGUgTW9iaWxlTW9kZUNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciB0aGlzIGNvbXBvbmVudC5cbmA7XG5cbmV4cG9ydCBjb25zdCBUSEVNRV9TV0lUQ0hFUl9ST1VURVJfTUlTU0lOR19FUlJPUiA9IGBZb3UgbmVlZCB0byBpbXBvcnQgUm91dGVyTW9kdWxlIHRvIGVuYWJsZSB0aGVtZSBzZXR0aW5ncyB2aWEgdGhlIHVybC5gO1xuXG5leHBvcnQgY29uc3QgSU5WQUxJRF9EQVRFX0VSUk9SID0gJ0ludmFsaWQgRGF0ZSc7XG4iXX0=","export const OVERFLOW_PRIORITY_SCORE = new Map([\n ['always', 0],\n ['disappear', 1],\n ['low', 2],\n ['high', 3],\n ['never', 4]\n]);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctcHJpb3JpdHktc2NvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9jb25zdHMvb3ZlcmZsb3ctcHJpb3JpdHktc2NvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQWtDLElBQUksR0FBRyxDQUFDO0lBQzFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNiLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNoQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDVixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Q0FDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBPdmVyZmxvd1ByaW9yaXR5ID0gJ2Fsd2F5cycgfCAnbmV2ZXInIHwgJ2xvdycgfCAnaGlnaCcgfCAnZGlzYXBwZWFyJztcblxuZXhwb3J0IGNvbnN0IE9WRVJGTE9XX1BSSU9SSVRZX1NDT1JFOiBNYXA8T3ZlcmZsb3dQcmlvcml0eSwgbnVtYmVyPiA9IG5ldyBNYXAoW1xuICAgIFsnYWx3YXlzJywgMF0sXG4gICAgWydkaXNhcHBlYXInLCAxXSxcbiAgICBbJ2xvdycsIDJdLFxuICAgIFsnaGlnaCcsIDNdLFxuICAgIFsnbmV2ZXInLCA0XVxuXSk7XG4iXX0=","/**\n * Instead of `/\\p{L}/u` because of it's not working in IE11 and Edge\n * - https://github.com/Microsoft/ChakraCore/issues/2969\n * */\n// eslint-disable-next-line max-len\nexport const LETTERS_UNICODE_RANGE = `[A-Za-z\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]`;\n// eslint-disable-next-line max-len\nexport const ANY_LANGUAGE_LETTERS_REGEX = new RegExp(LETTERS_UNICODE_RANGE, 'g');\n// eslint-disable-next-line max-len\nexport const ANY_LANGUAGE_LETTERS_GROUP_REGEX = new RegExp(`(${LETTERS_UNICODE_RANGE})+`, 'g');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pY29kZS1sZXR0ZXJzLnJlZ2V4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvY29uc3RzL3VuaWNvZGUtbGV0dGVycy5yZWdleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0tBR0s7QUFDTCxtQ0FBbUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsbXFJQUFtcUksQ0FBQztBQUN6c0ksbUNBQW1DO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksTUFBTSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2pGLG1DQUFtQztBQUNuQyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLHFCQUFxQixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEluc3RlYWQgb2YgYC9cXHB7TH0vdWAgYmVjYXVzZSBvZiBpdCdzIG5vdCB3b3JraW5nIGluIElFMTEgYW5kIEVkZ2VcbiAqIC0gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9DaGFrcmFDb3JlL2lzc3Vlcy8yOTY5XG4gKiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbmV4cG9ydCBjb25zdCBMRVRURVJTX1VOSUNPREVfUkFOR0UgPSBgW0EtWmEtelxcdTAwQUFcXHUwMEI1XFx1MDBCQVxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3MC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MS1cXHUwNTg3XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYyMC1cXHUwNjRBXFx1MDY2RVxcdTA2NkZcXHUwNjcxLVxcdTA2RDNcXHUwNkQ1XFx1MDZFNVxcdTA2RTZcXHUwNkVFXFx1MDZFRlxcdTA2RkEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwXFx1MDcxMi1cXHUwNzJGXFx1MDc0RC1cXHUwN0E1XFx1MDdCMVxcdTA3Q0EtXFx1MDdFQVxcdTA3RjRcXHUwN0Y1XFx1MDdGQVxcdTA4MDAtXFx1MDgxNVxcdTA4MUFcXHUwODI0XFx1MDgyOFxcdTA4NDAtXFx1MDg1OFxcdTA4QTAtXFx1MDhCNFxcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3MS1cXHUwOTgwXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFMVxcdTA5RjBcXHUwOUYxXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEFGOVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNEXFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNjBcXHUwQzYxXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRjFcXHUwQ0YyXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDVGLVxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDZcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y1XFx1MTNGOC1cXHUxM0ZEXFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZGMS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YxXFx1MUNGNVxcdTFDRjZcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE4M1xcdTIxODRcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJFMkZcXHUzMDA1XFx1MzAwNlxcdTMwMzEtXFx1MzAzNVxcdTMwM0JcXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5RC1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkQ1XFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjFGXFx1QTYyQVxcdUE2MkJcXHVBNjQwLVxcdUE2NkVcXHVBNjdGLVxcdUE2OURcXHVBNkEwLVxcdUE2RTVcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3QURcXHVBN0IwLVxcdUE3QjdcXHVBN0Y3LVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QThGRFxcdUE5MEEtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5NjAtXFx1QTk3Q1xcdUE5ODQtXFx1QTlCMlxcdUE5Q0ZcXHVBOUUwLVxcdUE5RTRcXHVBOUU2LVxcdUE5RUZcXHVBOUZBLVxcdUE5RkVcXHVBQTAwLVxcdUFBMjhcXHVBQTQwLVxcdUFBNDJcXHVBQTQ0LVxcdUFBNEJcXHVBQTYwLVxcdUFBNzZcXHVBQTdBXFx1QUE3RS1cXHVBQUFGXFx1QUFCMVxcdUFBQjVcXHVBQUI2XFx1QUFCOS1cXHVBQUJEXFx1QUFDMFxcdUFBQzJcXHVBQURCLVxcdUFBRERcXHVBQUUwLVxcdUFBRUFcXHVBQUYyLVxcdUFBRjRcXHVBQjAxLVxcdUFCMDZcXHVBQjA5LVxcdUFCMEVcXHVBQjExLVxcdUFCMTZcXHVBQjIwLVxcdUFCMjZcXHVBQjI4LVxcdUFCMkVcXHVBQjMwLVxcdUFCNUFcXHVBQjVDLVxcdUFCNjVcXHVBQjcwLVxcdUFCRTJcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFEXFx1RkIxRi1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjIxLVxcdUZGM0FcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGRENdYDtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG5leHBvcnQgY29uc3QgQU5ZX0xBTkdVQUdFX0xFVFRFUlNfUkVHRVggPSBuZXcgUmVnRXhwKExFVFRFUlNfVU5JQ09ERV9SQU5HRSwgJ2cnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG5leHBvcnQgY29uc3QgQU5ZX0xBTkdVQUdFX0xFVFRFUlNfR1JPVVBfUkVHRVggPSBuZXcgUmVnRXhwKGAoJHtMRVRURVJTX1VOSUNPREVfUkFOR0V9KStgLCAnZycpO1xuIl19","/**\n * Polyfill for `/\\p{Nd}/u` to work in IE11 and Edge\n */\n// eslint-disable-next-line max-len\nexport const DECIMAL_NUMBER_UNICODE_RANGE = `[0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]`;\nexport const DECIMAL_NUMBER_UNICODE_REGEX = new RegExp(DECIMAL_NUMBER_UNICODE_RANGE, 'g');\nexport const DECIMAL_NUMBER_UNICODE_GROUP_REGEX = new RegExp(`(${DECIMAL_NUMBER_UNICODE_RANGE})+`, 'g');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pY29kZS1udW1iZXJzLnJlZ2V4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvY29uc3RzL3VuaWNvZGUtbnVtYmVycy5yZWdleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILG1DQUFtQztBQUNuQyxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRywyZEFBMmQsQ0FBQztBQUN4Z0IsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxNQUFNLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUYsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSw0QkFBNEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQb2x5ZmlsbCBmb3IgYC9cXHB7TmR9L3VgIHRvIHdvcmsgaW4gSUUxMSBhbmQgRWRnZVxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuZXhwb3J0IGNvbnN0IERFQ0lNQUxfTlVNQkVSX1VOSUNPREVfUkFOR0UgPSBgWzAtOVxcdTA2NjAtXFx1MDY2OVxcdTA2RjAtXFx1MDZGOVxcdTA3QzAtXFx1MDdDOVxcdTA5NjYtXFx1MDk2RlxcdTA5RTYtXFx1MDlFRlxcdTBBNjYtXFx1MEE2RlxcdTBBRTYtXFx1MEFFRlxcdTBCNjYtXFx1MEI2RlxcdTBCRTYtXFx1MEJFRlxcdTBDNjYtXFx1MEM2RlxcdTBDRTYtXFx1MENFRlxcdTBENjYtXFx1MEQ2RlxcdTBERTYtXFx1MERFRlxcdTBFNTAtXFx1MEU1OVxcdTBFRDAtXFx1MEVEOVxcdTBGMjAtXFx1MEYyOVxcdTEwNDAtXFx1MTA0OVxcdTEwOTAtXFx1MTA5OVxcdTE3RTAtXFx1MTdFOVxcdTE4MTAtXFx1MTgxOVxcdTE5NDYtXFx1MTk0RlxcdTE5RDAtXFx1MTlEOVxcdTFBODAtXFx1MUE4OVxcdTFBOTAtXFx1MUE5OVxcdTFCNTAtXFx1MUI1OVxcdTFCQjAtXFx1MUJCOVxcdTFDNDAtXFx1MUM0OVxcdTFDNTAtXFx1MUM1OVxcdUE2MjAtXFx1QTYyOVxcdUE4RDAtXFx1QThEOVxcdUE5MDAtXFx1QTkwOVxcdUE5RDAtXFx1QTlEOVxcdUE5RjAtXFx1QTlGOVxcdUFBNTAtXFx1QUE1OVxcdUFCRjAtXFx1QUJGOVxcdUZGMTAtXFx1RkYxOV1gO1xuZXhwb3J0IGNvbnN0IERFQ0lNQUxfTlVNQkVSX1VOSUNPREVfUkVHRVggPSBuZXcgUmVnRXhwKERFQ0lNQUxfTlVNQkVSX1VOSUNPREVfUkFOR0UsICdnJyk7XG5leHBvcnQgY29uc3QgREVDSU1BTF9OVU1CRVJfVU5JQ09ERV9HUk9VUF9SRUdFWCA9IG5ldyBSZWdFeHAoYCgke0RFQ0lNQUxfTlVNQkVSX1VOSUNPREVfUkFOR0V9KStgLCAnZycpO1xuIl19","export const ELEMENT_REF_EXCEPTION = 'HasElementRef interface has to be implemented';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLWVsZW1lbnQtcmVmLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2ludGVyZmFjZXMvaGFzLWVsZW1lbnQtcmVmLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRywrQ0FBK0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBIYXNFbGVtZW50UmVmPEVsZW1lbnRUeXBlIGV4dGVuZHMgRWxlbWVudCA9IEhUTUxFbGVtZW50PiB7XG4gICAgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxFbGVtZW50VHlwZT47XG59XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX1JFRl9FWENFUFRJT04gPSAnSGFzRWxlbWVudFJlZiBpbnRlcmZhY2UgaGFzIHRvIGJlIGltcGxlbWVudGVkJztcbiJdfQ==","import { uuidv4 } from '../functions/uuidv4-generator';\nimport { ELEMENT_REF_EXCEPTION } from '../interfaces/has-element-ref.interface';\n/**\n * Method decorator to apply css class to a component through native element\n * decorator will store original method in variable and wrap it with custom one\n * component has to implement CssClassBuilder interface\n * more info abour method decorator: https://www.typescriptlang.org/docs/handbook/decorators.html#method-decorators\n * @param target a component\n * @param propertyKey name of the method\n * @param descriptor method\n */\nexport function applyCssClass(target, propertyKey, descriptor) {\n const originalMethod = descriptor.value;\n descriptor.value = function () {\n const self = this;\n if (!('elementRef' in self)) {\n throw ELEMENT_REF_EXCEPTION;\n }\n const classListToApply = sanitize(originalMethod.apply(this));\n const elementRef = self.elementRef;\n const nativeElement = elementRef?.nativeElement;\n if (!nativeElement) {\n return classListToApply;\n }\n if (!nativeElement._classMap) {\n nativeElement._classMap = {};\n }\n if (!self._uuidv4) {\n self._uuidv4 = uuidv4();\n }\n const currentClassList = Array.from(nativeElement.classList);\n const previousClassListToApply = nativeElement._classMap[self._uuidv4] || [];\n const newClassList = createComponentClassList(currentClassList, previousClassListToApply, classListToApply);\n nativeElement.className = newClassList.join(' ');\n nativeElement._classMap[self._uuidv4] = classListToApply;\n return classListToApply;\n };\n}\n/** Filter list to unique items */\nfunction unique(value, index, list) {\n return list.indexOf(value) === index;\n}\n/** Splits merged classes, removes falsy elements and leaves only unique items */\nfunction sanitize(array) {\n return array\n .filter(Boolean)\n .reduce((classList, cssClass) => [...classList, ...cssClass.split(/\\s+/)], [])\n .filter(unique);\n}\nfunction firstCommonElementIndex(array1, array2) {\n return array1.findIndex((element) => array2.indexOf(element) !== -1);\n}\n/** Create set of component classes based on previous set and new set */\nfunction createComponentClassList(allClasses, previousComponentClassList, newComponentClassList) {\n allClasses = allClasses.slice();\n let index = firstCommonElementIndex(allClasses, previousComponentClassList);\n index = index === -1 ? 0 : index;\n allClasses.splice(index, previousComponentClassList.length, ...newComponentClassList);\n return allClasses;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktY3NzLWNsYXNzLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RlY29yYXRvcnMvYXBwbHktY3NzLWNsYXNzLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFaEY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQVcsRUFBRSxXQUFtQixFQUFFLFVBQThCO0lBQzFGLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDeEMsVUFBVSxDQUFDLEtBQUssR0FBRztRQUNmLE1BQU0sSUFBSSxHQUFHLElBQXlELENBQUM7UUFDdkUsSUFBSSxDQUFDLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDMUIsTUFBTSxxQkFBcUIsQ0FBQztRQUNoQyxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBYSxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXhFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFFbkMsTUFBTSxhQUFhLEdBQXNDLFVBQVUsRUFBRSxhQUFhLENBQUM7UUFFbkYsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sZ0JBQWdCLENBQUM7UUFDNUIsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDM0IsYUFBYSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDakMsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3RCxNQUFNLHdCQUF3QixHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU3RSxNQUFNLFlBQVksR0FBRyx3QkFBd0IsQ0FBQyxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTVHLGFBQWEsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVqRCxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztRQUV6RCxPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxrQ0FBa0M7QUFDbEMsU0FBUyxNQUFNLENBQUMsS0FBYyxFQUFFLEtBQWEsRUFBRSxJQUFlO0lBQzFELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUM7QUFDekMsQ0FBQztBQUVELGlGQUFpRjtBQUNqRixTQUFTLFFBQVEsQ0FBQyxLQUFlO0lBQzdCLE9BQU8sS0FBSztTQUNQLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDZixNQUFNLENBQUMsQ0FBQyxTQUFtQixFQUFFLFFBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQy9GLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsU0FBUyx1QkFBdUIsQ0FBQyxNQUFnQixFQUFFLE1BQWdCO0lBQy9ELE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRCx3RUFBd0U7QUFDeEUsU0FBUyx3QkFBd0IsQ0FDN0IsVUFBb0IsRUFDcEIsMEJBQW9DLEVBQ3BDLHFCQUErQjtJQUUvQixVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2hDLElBQUksS0FBSyxHQUFHLHVCQUF1QixDQUFDLFVBQVUsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0lBQzVFLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2pDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxHQUFHLHFCQUFxQixDQUFDLENBQUM7SUFFdEYsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHV1aWR2NCB9IGZyb20gJy4uL2Z1bmN0aW9ucy91dWlkdjQtZ2VuZXJhdG9yJztcbmltcG9ydCB7IENzc0NsYXNzQnVpbGRlciB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3NzLWNsYXNzLWJ1aWxkZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVMRU1FTlRfUkVGX0VYQ0VQVElPTiB9IGZyb20gJy4uL2ludGVyZmFjZXMvaGFzLWVsZW1lbnQtcmVmLmludGVyZmFjZSc7XG5cbi8qKlxuICogTWV0aG9kIGRlY29yYXRvciB0byBhcHBseSBjc3MgY2xhc3MgdG8gYSBjb21wb25lbnQgdGhyb3VnaCBuYXRpdmUgZWxlbWVudFxuICogZGVjb3JhdG9yIHdpbGwgc3RvcmUgb3JpZ2luYWwgbWV0aG9kIGluIHZhcmlhYmxlIGFuZCB3cmFwIGl0IHdpdGggY3VzdG9tIG9uZVxuICogY29tcG9uZW50IGhhcyB0byBpbXBsZW1lbnQgQ3NzQ2xhc3NCdWlsZGVyIGludGVyZmFjZVxuICogbW9yZSBpbmZvIGFib3VyIG1ldGhvZCBkZWNvcmF0b3I6IGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL2RlY29yYXRvcnMuaHRtbCNtZXRob2QtZGVjb3JhdG9yc1xuICogQHBhcmFtIHRhcmdldCBhIGNvbXBvbmVudFxuICogQHBhcmFtIHByb3BlcnR5S2V5IG5hbWUgb2YgdGhlIG1ldGhvZFxuICogQHBhcmFtIGRlc2NyaXB0b3IgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUNzc0NsYXNzKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpOiB2b2lkIHtcbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICgpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzIGFzIHVua25vd24gYXMgQ3NzQ2xhc3NCdWlsZGVyICYgeyBfdXVpZHY0Pzogc3RyaW5nIH07XG4gICAgICAgIGlmICghKCdlbGVtZW50UmVmJyBpbiBzZWxmKSkge1xuICAgICAgICAgICAgdGhyb3cgRUxFTUVOVF9SRUZfRVhDRVBUSU9OO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2xhc3NMaXN0VG9BcHBseTogc3RyaW5nW10gPSBzYW5pdGl6ZShvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzKSk7XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFJlZiA9IHNlbGYuZWxlbWVudFJlZjtcblxuICAgICAgICBjb25zdCBuYXRpdmVFbGVtZW50OiBIVE1MRWxlbWVudCAmIHsgX2NsYXNzTWFwPzogYW55IH0gPSBlbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmICghbmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGNsYXNzTGlzdFRvQXBwbHk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW5hdGl2ZUVsZW1lbnQuX2NsYXNzTWFwKSB7XG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50Ll9jbGFzc01hcCA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzZWxmLl91dWlkdjQpIHtcbiAgICAgICAgICAgIHNlbGYuX3V1aWR2NCA9IHV1aWR2NCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudENsYXNzTGlzdCA9IEFycmF5LmZyb20obmF0aXZlRWxlbWVudC5jbGFzc0xpc3QpO1xuXG4gICAgICAgIGNvbnN0IHByZXZpb3VzQ2xhc3NMaXN0VG9BcHBseSA9IG5hdGl2ZUVsZW1lbnQuX2NsYXNzTWFwW3NlbGYuX3V1aWR2NF0gfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3Q2xhc3NMaXN0ID0gY3JlYXRlQ29tcG9uZW50Q2xhc3NMaXN0KGN1cnJlbnRDbGFzc0xpc3QsIHByZXZpb3VzQ2xhc3NMaXN0VG9BcHBseSwgY2xhc3NMaXN0VG9BcHBseSk7XG5cbiAgICAgICAgbmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSBuZXdDbGFzc0xpc3Quam9pbignICcpO1xuXG4gICAgICAgIG5hdGl2ZUVsZW1lbnQuX2NsYXNzTWFwW3NlbGYuX3V1aWR2NF0gPSBjbGFzc0xpc3RUb0FwcGx5O1xuXG4gICAgICAgIHJldHVybiBjbGFzc0xpc3RUb0FwcGx5O1xuICAgIH07XG59XG5cbi8qKiBGaWx0ZXIgbGlzdCB0byB1bmlxdWUgaXRlbXMgKi9cbmZ1bmN0aW9uIHVuaXF1ZSh2YWx1ZTogdW5rbm93biwgaW5kZXg6IG51bWJlciwgbGlzdDogdW5rbm93bltdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGxpc3QuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4O1xufVxuXG4vKiogU3BsaXRzIG1lcmdlZCBjbGFzc2VzLCByZW1vdmVzIGZhbHN5IGVsZW1lbnRzIGFuZCBsZWF2ZXMgb25seSB1bmlxdWUgaXRlbXMgKi9cbmZ1bmN0aW9uIHNhbml0aXplKGFycmF5OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gYXJyYXlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAucmVkdWNlKChjbGFzc0xpc3Q6IHN0cmluZ1tdLCBjc3NDbGFzczogc3RyaW5nKSA9PiBbLi4uY2xhc3NMaXN0LCAuLi5jc3NDbGFzcy5zcGxpdCgvXFxzKy8pXSwgW10pXG4gICAgICAgIC5maWx0ZXIodW5pcXVlKTtcbn1cblxuZnVuY3Rpb24gZmlyc3RDb21tb25FbGVtZW50SW5kZXgoYXJyYXkxOiBzdHJpbmdbXSwgYXJyYXkyOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGFycmF5MS5maW5kSW5kZXgoKGVsZW1lbnQpID0+IGFycmF5Mi5pbmRleE9mKGVsZW1lbnQpICE9PSAtMSk7XG59XG5cbi8qKiBDcmVhdGUgc2V0IG9mIGNvbXBvbmVudCBjbGFzc2VzIGJhc2VkIG9uIHByZXZpb3VzIHNldCBhbmQgbmV3IHNldCAqL1xuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50Q2xhc3NMaXN0KFxuICAgIGFsbENsYXNzZXM6IHN0cmluZ1tdLFxuICAgIHByZXZpb3VzQ29tcG9uZW50Q2xhc3NMaXN0OiBzdHJpbmdbXSxcbiAgICBuZXdDb21wb25lbnRDbGFzc0xpc3Q6IHN0cmluZ1tdXG4pOiBzdHJpbmdbXSB7XG4gICAgYWxsQ2xhc3NlcyA9IGFsbENsYXNzZXMuc2xpY2UoKTtcbiAgICBsZXQgaW5kZXggPSBmaXJzdENvbW1vbkVsZW1lbnRJbmRleChhbGxDbGFzc2VzLCBwcmV2aW91c0NvbXBvbmVudENsYXNzTGlzdCk7XG4gICAgaW5kZXggPSBpbmRleCA9PT0gLTEgPyAwIDogaW5kZXg7XG4gICAgYWxsQ2xhc3Nlcy5zcGxpY2UoaW5kZXgsIHByZXZpb3VzQ29tcG9uZW50Q2xhc3NMaXN0Lmxlbmd0aCwgLi4ubmV3Q29tcG9uZW50Q2xhc3NMaXN0KTtcblxuICAgIHJldHVybiBhbGxDbGFzc2VzO1xufVxuIl19","import { ELEMENT_REF_EXCEPTION } from '../interfaces/has-element-ref.interface';\n/**\n * Method decorator to apply css styles to a component through native element\n * decorator will store original method in variable and wrap it with custom one\n * component has to implement HasElementRef or CssStyleBuilder interface\n * more info abour method decorator: https://www.typescriptlang.org/docs/handbook/decorators.html#method-decorators\n * @param target a component\n * @param propertyKey name of the method\n * @param descriptor method\n */\nexport function applyCssStyle(target, propertyKey, descriptor) {\n const originalMethod = descriptor.value;\n descriptor.value = function () {\n const self = this;\n if (!self.elementRef) {\n throw ELEMENT_REF_EXCEPTION;\n }\n const _styles = originalMethod.apply(this);\n const htmlElement = self.elementRef.nativeElement;\n Object.keys(_styles).forEach((key) => {\n htmlElement.style[key] = _styles[key];\n });\n return _styles;\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktY3NzLXN0eWxlLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RlY29yYXRvcnMvYXBwbHktY3NzLXN0eWxlLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQWlCLE1BQU0seUNBQXlDLENBQUM7QUFFL0Y7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQVcsRUFBRSxXQUFtQixFQUFFLFVBQThCO0lBQzFGLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDeEMsVUFBVSxDQUFDLEtBQUssR0FBRztRQUNmLE1BQU0sSUFBSSxHQUFHLElBQWdDLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNuQixNQUFNLHFCQUFxQixDQUFDO1FBQ2hDLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBMEIsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQTRCLENBQUM7UUFDakUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXNoIH0gZnJvbSAnLi4vZGF0YXR5cGVzL2hhc2guZGF0YXR5cGUnO1xuaW1wb3J0IHsgRUxFTUVOVF9SRUZfRVhDRVBUSU9OLCBIYXNFbGVtZW50UmVmIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9oYXMtZWxlbWVudC1yZWYuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBNZXRob2QgZGVjb3JhdG9yIHRvIGFwcGx5IGNzcyBzdHlsZXMgdG8gYSBjb21wb25lbnQgdGhyb3VnaCBuYXRpdmUgZWxlbWVudFxuICogZGVjb3JhdG9yIHdpbGwgc3RvcmUgb3JpZ2luYWwgbWV0aG9kIGluIHZhcmlhYmxlIGFuZCB3cmFwIGl0IHdpdGggY3VzdG9tIG9uZVxuICogY29tcG9uZW50IGhhcyB0byBpbXBsZW1lbnQgSGFzRWxlbWVudFJlZiBvciBDc3NTdHlsZUJ1aWxkZXIgaW50ZXJmYWNlXG4gKiBtb3JlIGluZm8gYWJvdXIgbWV0aG9kIGRlY29yYXRvcjogaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svZGVjb3JhdG9ycy5odG1sI21ldGhvZC1kZWNvcmF0b3JzXG4gKiBAcGFyYW0gdGFyZ2V0IGEgY29tcG9uZW50XG4gKiBAcGFyYW0gcHJvcGVydHlLZXkgbmFtZSBvZiB0aGUgbWV0aG9kXG4gKiBAcGFyYW0gZGVzY3JpcHRvciBtZXRob2RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5Q3NzU3R5bGUodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcik6IHZvaWQge1xuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKCk6IEhhc2g8bnVtYmVyIHwgc3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzIGFzIHVua25vd24gYXMgSGFzRWxlbWVudFJlZjtcbiAgICAgICAgaWYgKCFzZWxmLmVsZW1lbnRSZWYpIHtcbiAgICAgICAgICAgIHRocm93IEVMRU1FTlRfUkVGX0VYQ0VQVElPTjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9zdHlsZXM6IEhhc2g8bnVtYmVyIHwgc3RyaW5nPiA9IG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMpO1xuICAgICAgICBjb25zdCBodG1sRWxlbWVudCA9IHNlbGYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBPYmplY3Qua2V5cyhfc3R5bGVzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGh0bWxFbGVtZW50LnN0eWxlW2tleV0gPSBfc3R5bGVzW2tleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBfc3R5bGVzO1xuICAgIH07XG59XG4iXX0=","/**\n * Function, which generates decorator. Passed mutator will be called during value set\n */\nexport function alternateSetter(mutator) {\n return function (targetObj, propertyKey) {\n const _key = Symbol();\n targetObj[_key] = targetObj[propertyKey];\n Object.defineProperty(targetObj, propertyKey, {\n get() {\n return this[_key];\n },\n set(v) {\n this[_key] = mutator.call(this, v, this);\n }\n });\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGVyLWFsdGVybmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kZWNvcmF0b3JzL3NldHRlci1hbHRlcm5hdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxPQUFnRTtJQUM1RixPQUFPLFVBQVUsU0FBdUMsRUFBRSxXQUE0QjtRQUNsRixNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUN0QixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRTtZQUMxQyxHQUFHO2dCQUNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RCLENBQUM7WUFDRCxHQUFHLENBQUMsQ0FBTTtnQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdDLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGdW5jdGlvbiwgd2hpY2ggZ2VuZXJhdGVzIGRlY29yYXRvci4gUGFzc2VkIG11dGF0b3Igd2lsbCBiZSBjYWxsZWQgZHVyaW5nIHZhbHVlIHNldFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWx0ZXJuYXRlU2V0dGVyKG11dGF0b3I6ICh2YWx1ZTogYW55LCBzZWxmOiBSZWNvcmQ8c3RyaW5nIHwgc3ltYm9sLCBhbnk+KSA9PiBhbnkpOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXRPYmo6IFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIGFueT4sIHByb3BlcnR5S2V5OiBzdHJpbmcgfCBzeW1ib2wpIHtcbiAgICAgICAgY29uc3QgX2tleSA9IFN5bWJvbCgpO1xuICAgICAgICB0YXJnZXRPYmpbX2tleV0gPSB0YXJnZXRPYmpbcHJvcGVydHlLZXldO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0T2JqLCBwcm9wZXJ0eUtleSwge1xuICAgICAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW19rZXldO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCh2OiBhbnkpIHtcbiAgICAgICAgICAgICAgICB0aGlzW19rZXldID0gbXV0YXRvci5jYWxsKHRoaXMsIHYsIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xufVxuIl19","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { alternateSetter } from './setter-alternator';\n/**\n * Decorator for coercing passed value to boolean, using @angular/cdk coerceBooleanProperty\n */\nexport const coerceBoolean = alternateSetter(coerceBooleanProperty);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNlLWJvb2xlYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9kZWNvcmF0b3JzL2NvZXJjZS1ib29sZWFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMscUJBQXFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBhbHRlcm5hdGVTZXR0ZXIgfSBmcm9tICcuL3NldHRlci1hbHRlcm5hdG9yJztcblxuLyoqXG4gKiBEZWNvcmF0b3IgZm9yIGNvZXJjaW5nIHBhc3NlZCB2YWx1ZSB0byBib29sZWFuLCB1c2luZyBAYW5ndWxhci9jZGsgY29lcmNlQm9vbGVhblByb3BlcnR5XG4gKi9cbmV4cG9ydCBjb25zdCBjb2VyY2VCb29sZWFuID0gYWx0ZXJuYXRlU2V0dGVyKGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSk7XG4iXX0=","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { alternateSetter } from './setter-alternator';\nexport const coerceCssPixel = alternateSetter(coerceCssPixelValue);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNlLWNzcy1waXhlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RlY29yYXRvcnMvY29lcmNlLWNzcy1waXhlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQ3NzUGl4ZWxWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBhbHRlcm5hdGVTZXR0ZXIgfSBmcm9tICcuL3NldHRlci1hbHRlcm5hdG9yJztcblxuZXhwb3J0IGNvbnN0IGNvZXJjZUNzc1BpeGVsID0gYWx0ZXJuYXRlU2V0dGVyKGNvZXJjZUNzc1BpeGVsVmFsdWUpO1xuIl19","import { inject, InjectionToken, isDevMode } from '@angular/core';\n/** @hidden */\nexport function getDeprecatedModel(current, deprecated) {\n return {\n current,\n deprecated\n };\n}\n/** @hidden */\nexport function deprecatedModelProvider(current, deprecated) {\n return {\n provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,\n useValue: getDeprecatedModel(current, deprecated)\n };\n}\nexport const FD_DEPRECATED_DIRECTIVE_SELECTOR = new InjectionToken('FdDeprecatedDirectiveSelector');\nexport class DeprecatedSelector {\n /** @hidden */\n constructor() {\n /** @hidden */\n this._selectors = inject(FD_DEPRECATED_DIRECTIVE_SELECTOR, { optional: true });\n if (isDevMode() && this._selectors) {\n console.warn(this._messageGenerator(this._selectors.deprecated, this._selectors.current));\n }\n }\n /** @hidden */\n _messageGenerator(deprecated, current) {\n const segments = [`${deprecated} selector(s) are deprecated and may affect input properties`];\n if (current) {\n segments.push(`Use ${current} instead.`);\n }\n return segments.join('. ');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZC1zZWxlY3Rvci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2RlcHJlY2F0ZWQtc2VsZWN0b3IuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQU9qRixjQUFjO0FBQ2QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQWUsRUFBRSxVQUFrQjtJQUNsRSxPQUFPO1FBQ0gsT0FBTztRQUNQLFVBQVU7S0FDYixDQUFDO0FBQ04sQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsT0FBZSxFQUFFLFVBQWtCO0lBQ3ZFLE9BQU87UUFDSCxPQUFPLEVBQUUsZ0NBQWdDO1FBQ3pDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDO0tBQ3BELENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsSUFBSSxjQUFjLENBQzlELCtCQUErQixDQUNsQyxDQUFDO0FBRUYsTUFBTSxPQUFnQixrQkFBa0I7SUFJcEMsY0FBYztJQUNkO1FBSkEsY0FBYztRQUNKLGVBQVUsR0FBbUMsTUFBTSxDQUFDLGdDQUFnQyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFJaEgsSUFBSSxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzlGLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNKLGlCQUFpQixDQUFDLFVBQWtCLEVBQUUsT0FBZTtRQUMzRCxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsVUFBVSw2REFBNkQsQ0FBQyxDQUFDO1FBQzlGLElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sT0FBTyxXQUFXLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIGlzRGV2TW9kZSwgVmFsdWVQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlcHJlY2F0ZWRTZWxlY3Rvck1vZGVsIHtcbiAgICBkZXByZWNhdGVkOiBzdHJpbmc7XG4gICAgY3VycmVudDogc3RyaW5nO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlcHJlY2F0ZWRNb2RlbChjdXJyZW50OiBzdHJpbmcsIGRlcHJlY2F0ZWQ6IHN0cmluZyk6IERlcHJlY2F0ZWRTZWxlY3Rvck1vZGVsIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBjdXJyZW50LFxuICAgICAgICBkZXByZWNhdGVkXG4gICAgfTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXByZWNhdGVkTW9kZWxQcm92aWRlcihjdXJyZW50OiBzdHJpbmcsIGRlcHJlY2F0ZWQ6IHN0cmluZyk6IFZhbHVlUHJvdmlkZXIge1xuICAgIHJldHVybiB7XG4gICAgICAgIHByb3ZpZGU6IEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgICAgICB1c2VWYWx1ZTogZ2V0RGVwcmVjYXRlZE1vZGVsKGN1cnJlbnQsIGRlcHJlY2F0ZWQpXG4gICAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SID0gbmV3IEluamVjdGlvblRva2VuPERlcHJlY2F0ZWRTZWxlY3Rvck1vZGVsPihcbiAgICAnRmREZXByZWNhdGVkRGlyZWN0aXZlU2VsZWN0b3InXG4pO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVwcmVjYXRlZFNlbGVjdG9yIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfc2VsZWN0b3JzOiBEZXByZWNhdGVkU2VsZWN0b3JNb2RlbCB8IG51bGwgPSBpbmplY3QoRkRfREVQUkVDQVRFRF9ESVJFQ1RJVkVfU0VMRUNUT1IsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkgJiYgdGhpcy5fc2VsZWN0b3JzKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4odGhpcy5fbWVzc2FnZUdlbmVyYXRvcih0aGlzLl9zZWxlY3RvcnMuZGVwcmVjYXRlZCwgdGhpcy5fc2VsZWN0b3JzLmN1cnJlbnQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9tZXNzYWdlR2VuZXJhdG9yKGRlcHJlY2F0ZWQ6IHN0cmluZywgY3VycmVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgc2VnbWVudHMgPSBbYCR7ZGVwcmVjYXRlZH0gc2VsZWN0b3IocykgYXJlIGRlcHJlY2F0ZWQgYW5kIG1heSBhZmZlY3QgaW5wdXQgcHJvcGVydGllc2BdO1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgc2VnbWVudHMucHVzaChgVXNlICR7Y3VycmVudH0gaW5zdGVhZC5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VnbWVudHMuam9pbignLiAnKTtcbiAgICB9XG59XG4iXX0=","import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { Injector } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nexport class DynamicComponentContainer {\n /** @hidden */\n constructor(elementRef, _injector) {\n this.elementRef = elementRef;\n this._injector = _injector;\n /** @hidden */\n this.childContent = undefined;\n /** @hidden */\n this._contentLoaded$ = new BehaviorSubject(false);\n }\n /** @hidden Load received content as component */\n _createFromComponent(content) {\n this.portalOutlet?.attachedRef?.destroy();\n const injector = Injector.create({\n parent: this._injector,\n providers: []\n });\n this._componentRef = this.portalOutlet.attach(new ComponentPortal(content, null, injector));\n }\n /** @hidden Load received content as embedded view */\n _createFromTemplate(content, context) {\n this.portalOutlet?.attachedRef?.destroy();\n if (this.portalOutlet.hasAttached()) {\n this.portalOutlet.detach();\n }\n this._componentRef = this.portalOutlet.attach(new TemplatePortal(content, null, context));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQtY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZGLE9BQU8sRUFJSCxRQUFRLEVBSVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2QyxNQUFNLE9BQWdCLHlCQUF5QjtJQWdCM0MsY0FBYztJQUNkLFlBQ1csVUFBc0IsRUFDbkIsU0FBbUI7UUFEdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBWmpDLGNBQWM7UUFDZCxpQkFBWSxHQUFnQixTQUFTLENBQUM7UUFLdEMsY0FBYztRQUNKLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFNN0QsQ0FBQztJQUVKLGlEQUFpRDtJQUN2QyxvQkFBb0IsQ0FBQyxPQUFrQjtRQUM3QyxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUztZQUN0QixTQUFTLEVBQUUsRUFBRTtTQUNoQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQscURBQXFEO0lBQzNDLG1CQUFtQixDQUFDLE9BQXlCLEVBQUUsT0FBWTtRQUNqRSxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMxQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUN6QyxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUUsSUFBbUMsRUFBRSxPQUFPLENBQUMsQ0FDNUUsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka1BvcnRhbE91dGxldCwgQ29tcG9uZW50UG9ydGFsLCBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbWJlZGRlZFZpZXdSZWYsXG4gICAgSW5qZWN0b3IsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVHlwZSxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uL21vZGVscy9udWxsYWJsZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEeW5hbWljQ29tcG9uZW50Q29udGFpbmVyPFQgPSBUZW1wbGF0ZVJlZjxhbnk+IHwgVHlwZTxhbnk+PiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhYnN0cmFjdCBwb3J0YWxPdXRsZXQ6IENka1BvcnRhbE91dGxldDtcblxuICAgIC8qKiBAaGlkZGVuIExvYWQgcmVjZWl2ZWQgY29udGVudCAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfbG9hZENvbnRlbnQoKTogdm9pZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2hpbGRDb250ZW50OiBOdWxsYWJsZTxUPiA9IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9jb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+IHwgRW1iZWRkZWRWaWV3UmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfY29udGVudExvYWRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiBMb2FkIHJlY2VpdmVkIGNvbnRlbnQgYXMgY29tcG9uZW50ICovXG4gICAgcHJvdGVjdGVkIF9jcmVhdGVGcm9tQ29tcG9uZW50KGNvbnRlbnQ6IFR5cGU8YW55Pik6IHZvaWQge1xuICAgICAgICB0aGlzLnBvcnRhbE91dGxldD8uYXR0YWNoZWRSZWY/LmRlc3Ryb3koKTtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcGFyZW50OiB0aGlzLl9pbmplY3RvcixcbiAgICAgICAgICAgIHByb3ZpZGVyczogW11cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IHRoaXMucG9ydGFsT3V0bGV0LmF0dGFjaChuZXcgQ29tcG9uZW50UG9ydGFsKGNvbnRlbnQsIG51bGwsIGluamVjdG9yKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTG9hZCByZWNlaXZlZCBjb250ZW50IGFzIGVtYmVkZGVkIHZpZXcgKi9cbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUZyb21UZW1wbGF0ZShjb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+LCBjb250ZXh0OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wb3J0YWxPdXRsZXQ/LmF0dGFjaGVkUmVmPy5kZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLnBvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcnRhbE91dGxldC5kZXRhY2goKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYgPSB0aGlzLnBvcnRhbE91dGxldC5hdHRhY2goXG4gICAgICAgICAgICBuZXcgVGVtcGxhdGVQb3J0YWwoY29udGVudCwgbnVsbCBhcyB1bmtub3duIGFzIFZpZXdDb250YWluZXJSZWYsIGNvbnRleHQpXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19","export class DynamicComponentInjector {\n /** @hidden */\n constructor(_parentInjector, _additionalTokens) {\n this._parentInjector = _parentInjector;\n this._additionalTokens = _additionalTokens;\n }\n /**\n *\n * @param token\n * @param notFoundValue\n */\n get(token, notFoundValue) {\n const value = this._additionalTokens.get(token);\n if (value) {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQtaW5qZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9keW5hbWljLWNvbXBvbmVudC9keW5hbWljLWNvbXBvbmVudC1pbmplY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sd0JBQXdCO0lBQ2pDLGNBQWM7SUFDZCxZQUNZLGVBQXlCLEVBQ3pCLGlCQUFvQztRQURwQyxvQkFBZSxHQUFmLGVBQWUsQ0FBVTtRQUN6QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQzdDLENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLEtBQVUsRUFBRSxhQUFtQjtRQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBTSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDL0QsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNsYXNzIER5bmFtaWNDb21wb25lbnRJbmplY3RvciBpbXBsZW1lbnRzIEluamVjdG9yIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9wYXJlbnRJbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgX2FkZGl0aW9uYWxUb2tlbnM6IFdlYWtNYXA8YW55LCBhbnk+XG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdG9rZW5cbiAgICAgKiBAcGFyYW0gbm90Rm91bmRWYWx1ZVxuICAgICAqL1xuICAgIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fYWRkaXRpb25hbFRva2Vucy5nZXQodG9rZW4pO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudEluamVjdG9yLmdldDxhbnk+KHRva2VuLCBub3RGb3VuZFZhbHVlKTtcbiAgICB9XG59XG4iXX0=","import { ApplicationRef, Compiler, ComponentFactoryResolver, Injectable, Injector, NgModuleFactory } from '@angular/core';\nimport { DynamicComponentInjector } from './dynamic-component-injector';\nimport * as i0 from \"@angular/core\";\n/**\n * Service used to dynamically generate components like dialogs/alerts/notifications\n */\nexport class DynamicComponentService {\n /** @hidden */\n constructor(_componentFactoryResolver, _applicationRef, _injector, _compiler) {\n this._componentFactoryResolver = _componentFactoryResolver;\n this._applicationRef = _applicationRef;\n this._injector = _injector;\n this._compiler = _compiler;\n }\n /**\n * Function that creates dynamic component and injects services to allow communication between component and outside\n * @param content Type of the component content\n * @param componentType Type of component that should be rendered.\n * @param config Configuration that will be passed to the component.\n * @param inject enables to provide preconfigured component injector and dependencies\n */\n createDynamicComponent(content, componentType, config, inject = {}) {\n const { injector, services } = inject;\n const dependenciesMap = this._createDependencyMap(services);\n const componentRef = this._createComponent(componentType, dependenciesMap, injector);\n this._passExternalContent(componentRef, content);\n this._attachToContainer(componentRef, config);\n return componentRef;\n }\n /**\n * Function that creates dynamic component and injects services to allow communication between component and outside\n * @param content Type of the component content\n * @param moduleType Type of module that should be compiled.\n * @param componentType Type of component that should be rendered.\n * @param containerRef The container that the dynamic component is appended to.\n * @param injector enables to provide preconfigured component injector\n */\n async createDynamicModule(content, moduleType, componentType, containerRef, injector) {\n const moduleFactory = moduleType instanceof NgModuleFactory ? moduleType : await this._compiler.compileModuleAsync(moduleType);\n const moduleRef = moduleFactory.create(injector || this._injector);\n const componentFactory = moduleRef.componentFactoryResolver.resolveComponentFactory(componentType);\n containerRef.clear();\n const componentRef = containerRef.createComponent(componentFactory);\n this._passExternalContent(componentRef, content);\n return componentRef;\n }\n /** Function that destroys dynamic component */\n destroyComponent(componentRef) {\n this._applicationRef.detachView(componentRef.hostView);\n componentRef.hostView.detach();\n componentRef.destroy();\n }\n /** @hidden */\n _createDependencyMap(services = []) {\n const dependencyMap = new WeakMap();\n services.filter((service) => !!service).forEach((service) => dependencyMap.set(service.constructor, service));\n return dependencyMap;\n }\n /** @hidden */\n _attachToContainer(componentRef, config) {\n const configObj = Object.assign({}, config);\n if (config.containerRef) {\n componentRef.hostView.detach();\n config.containerRef.insert(componentRef.hostView);\n return;\n }\n this._applicationRef.attachView(componentRef.hostView);\n const componentEl = componentRef.hostView.rootNodes[0];\n if (configObj.container !== 'body') {\n configObj.container?.appendChild(componentEl);\n }\n else {\n document.body.appendChild(componentEl);\n }\n }\n /** @hidden */\n _createComponent(componentType, dependenciesMap, injector) {\n const dynamicComponentInjector = new DynamicComponentInjector(injector || this._injector, dependenciesMap);\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(componentType);\n const componentRef = componentFactory.create(dynamicComponentInjector);\n // this._applicationRef.attachView(componentRef.hostView);\n return componentRef;\n }\n /** @hidden */\n _passExternalContent(componentRef, content) {\n // TODO: this approach should be revisited, it can cause issues, that is really hard to debug\n if (Object.prototype.hasOwnProperty.call(componentRef.instance, 'childContent')) {\n componentRef.instance.childContent = content;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DynamicComponentService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i0.Compiler }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DynamicComponentService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DynamicComponentService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }, { type: i0.Compiler }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2R5bmFtaWMtY29tcG9uZW50L2R5bmFtaWMtY29tcG9uZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGNBQWMsRUFDZCxRQUFRLEVBQ1Isd0JBQXdCLEVBR3hCLFVBQVUsRUFDVixRQUFRLEVBQ1IsZUFBZSxFQUlsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFeEU7O0dBRUc7QUFJSCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2hDLGNBQWM7SUFDZCxZQUNxQix5QkFBbUQsRUFDbkQsZUFBK0IsRUFDL0IsU0FBbUIsRUFDbkIsU0FBbUI7UUFIbkIsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEwQjtRQUNuRCxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFVO0lBQ3JDLENBQUM7SUFFSjs7Ozs7O09BTUc7SUFDSSxzQkFBc0IsQ0FDekIsT0FBb0UsRUFDcEUsYUFBc0IsRUFDdEIsTUFBOEIsRUFDOUIsU0FBb0QsRUFBRTtRQUV0RCxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUN0QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFJLGFBQWEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLG9CQUFvQixDQUFJLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsa0JBQWtCLENBQUksWUFBWSxF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QWdCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9GLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3ZFLDBEQUEwRDtRQUMxRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYztJQUNOLG9CQUFvQixDQUN4QixZQUE2QixFQUM3QixPQUFvRTtRQUVwRSw2RkFBNkY7UUFDN0YsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQzdFLFlBQVksQ0FBQyxRQUFnQixDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7UUFDMUQsQ0FBQztJQUNMLENBQUM7OEdBakhRLHVCQUF1QjtrSEFBdkIsdUJBQXVCLGNBRnBCLE1BQU07OzJGQUVULHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFwcGxpY2F0aW9uUmVmLFxuICAgIENvbXBpbGVyLFxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRW1iZWRkZWRWaWV3UmVmLFxuICAgIEluamVjdGFibGUsXG4gICAgSW5qZWN0b3IsXG4gICAgTmdNb2R1bGVGYWN0b3J5LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFR5cGUsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRDb25maWcgfSBmcm9tICcuL2R5bmFtaWMtY29tcG9uZW50LWNvbmZpZyc7XG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50SW5qZWN0b3IgfSBmcm9tICcuL2R5bmFtaWMtY29tcG9uZW50LWluamVjdG9yJztcblxuLyoqXG4gKiBTZXJ2aWNlIHVzZWQgdG8gZHluYW1pY2FsbHkgZ2VuZXJhdGUgY29tcG9uZW50cyBsaWtlIGRpYWxvZ3MvYWxlcnRzL25vdGlmaWNhdGlvbnNcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljQ29tcG9uZW50U2VydmljZSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jb21waWxlcjogQ29tcGlsZXJcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0aGF0IGNyZWF0ZXMgZHluYW1pYyBjb21wb25lbnQgYW5kIGluamVjdHMgc2VydmljZXMgdG8gYWxsb3cgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGNvbXBvbmVudCBhbmQgb3V0c2lkZVxuICAgICAqIEBwYXJhbSBjb250ZW50IFR5cGUgb2YgdGhlIGNvbXBvbmVudCBjb250ZW50XG4gICAgICogQHBhcmFtIGNvbXBvbmVudFR5cGUgVHlwZSBvZiBjb21wb25lbnQgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQuXG4gICAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAcGFyYW0gaW5qZWN0ICBlbmFibGVzIHRvIHByb3ZpZGUgcHJlY29uZmlndXJlZCBjb21wb25lbnQgaW5qZWN0b3IgYW5kIGRlcGVuZGVuY2llc1xuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVEeW5hbWljQ29tcG9uZW50PFQ+KFxuICAgICAgICBjb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+IHwgVHlwZTxhbnk+IHwgc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgICAgY29tcG9uZW50VHlwZTogVHlwZTxUPixcbiAgICAgICAgY29uZmlnOiBEeW5hbWljQ29tcG9uZW50Q29uZmlnLFxuICAgICAgICBpbmplY3Q6IHsgaW5qZWN0b3I/OiBJbmplY3Rvcjsgc2VydmljZXM/OiBhbnlbXSB9ID0ge31cbiAgICApOiBDb21wb25lbnRSZWY8VD4ge1xuICAgICAgICBjb25zdCB7IGluamVjdG9yLCBzZXJ2aWNlcyB9ID0gaW5qZWN0O1xuICAgICAgICBjb25zdCBkZXBlbmRlbmNpZXNNYXAgPSB0aGlzLl9jcmVhdGVEZXBlbmRlbmN5TWFwKHNlcnZpY2VzKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5fY3JlYXRlQ29tcG9uZW50PFQ+KGNvbXBvbmVudFR5cGUsIGRlcGVuZGVuY2llc01hcCwgaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLl9wYXNzRXh0ZXJuYWxDb250ZW50PFQ+KGNvbXBvbmVudFJlZiwgY29udGVudCk7XG4gICAgICAgIHRoaXMuX2F0dGFjaFRvQ29udGFpbmVyPFQ+KGNvbXBvbmVudFJlZiwgY29uZmlnKTtcblxuICAgICAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBkeW5hbWljIGNvbXBvbmVudCBhbmQgaW5qZWN0cyBzZXJ2aWNlcyB0byBhbGxvdyBjb21tdW5pY2F0aW9uIGJldHdlZW4gY29tcG9uZW50IGFuZCBvdXRzaWRlXG4gICAgICogQHBhcmFtIGNvbnRlbnQgVHlwZSBvZiB0aGUgY29tcG9uZW50IGNvbnRlbnRcbiAgICAgKiBAcGFyYW0gbW9kdWxlVHlwZSBUeXBlIG9mIG1vZHVsZSB0aGF0IHNob3VsZCBiZSBjb21waWxlZC5cbiAgICAgKiBAcGFyYW0gY29tcG9uZW50VHlwZSBUeXBlIG9mIGNvbXBvbmVudCB0aGF0IHNob3VsZCBiZSByZW5kZXJlZC5cbiAgICAgKiBAcGFyYW0gY29udGFpbmVyUmVmIFRoZSBjb250YWluZXIgdGhhdCB0aGUgZHluYW1pYyBjb21wb25lbnQgaXMgYXBwZW5kZWQgdG8uXG4gICAgICogQHBhcmFtIGluamVjdG9yIGVuYWJsZXMgdG8gcHJvdmlkZSBwcmVjb25maWd1cmVkIGNvbXBvbmVudCBpbmplY3RvclxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZUR5bmFtaWNNb2R1bGU8TSwgQz4oXG4gICAgICAgIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4gfCBUeXBlPGFueT4gfCBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgICAgICBtb2R1bGVUeXBlOiBUeXBlPE0+IHwgTmdNb2R1bGVGYWN0b3J5PE0+LFxuICAgICAgICBjb21wb25lbnRUeXBlOiBUeXBlPEM+LFxuICAgICAgICBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIGluamVjdG9yPzogSW5qZWN0b3JcbiAgICApOiBQcm9taXNlPENvbXBvbmVudFJlZjxDPj4ge1xuICAgICAgICBjb25zdCBtb2R1bGVGYWN0b3J5ID1cbiAgICAgICAgICAgIG1vZHVsZVR5cGUgaW5zdGFuY2VvZiBOZ01vZHVsZUZhY3RvcnkgPyBtb2R1bGVUeXBlIDogYXdhaXQgdGhpcy5fY29tcGlsZXIuY29tcGlsZU1vZHVsZUFzeW5jPE0+KG1vZHVsZVR5cGUpO1xuICAgICAgICBjb25zdCBtb2R1bGVSZWYgPSBtb2R1bGVGYWN0b3J5LmNyZWF0ZShpbmplY3RvciB8fCB0aGlzLl9pbmplY3Rvcik7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSBtb2R1bGVSZWYuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudFR5cGUpO1xuXG4gICAgICAgIGNvbnRhaW5lclJlZi5jbGVhcigpO1xuXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEM+ID0gY29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5KTtcblxuICAgICAgICB0aGlzLl9wYXNzRXh0ZXJuYWxDb250ZW50PEM+KGNvbXBvbmVudFJlZiwgY29udGVudCk7XG5cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdGhhdCBkZXN0cm95cyBkeW5hbWljIGNvbXBvbmVudCAqL1xuICAgIHB1YmxpYyBkZXN0cm95Q29tcG9uZW50KGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYXBwbGljYXRpb25SZWYuZGV0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICBjb21wb25lbnRSZWYuaG9zdFZpZXcuZGV0YWNoKCk7XG4gICAgICAgIGNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jcmVhdGVEZXBlbmRlbmN5TWFwKHNlcnZpY2VzOiBhbnlbXSA9IFtdKTogV2Vha01hcDxhbnksIGFueT4ge1xuICAgICAgICBjb25zdCBkZXBlbmRlbmN5TWFwID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgc2VydmljZXMuZmlsdGVyKChzZXJ2aWNlKSA9PiAhIXNlcnZpY2UpLmZvckVhY2goKHNlcnZpY2UpID0+IGRlcGVuZGVuY3lNYXAuc2V0KHNlcnZpY2UuY29uc3RydWN0b3IsIHNlcnZpY2UpKTtcbiAgICAgICAgcmV0dXJuIGRlcGVuZGVuY3lNYXA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hdHRhY2hUb0NvbnRhaW5lcjxWPihjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxWPiwgY29uZmlnOiBEeW5hbWljQ29tcG9uZW50Q29uZmlnKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ09iaiA9IE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZyk7XG4gICAgICAgIGlmIChjb25maWcuY29udGFpbmVyUmVmKSB7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaG9zdFZpZXcuZGV0YWNoKCk7XG4gICAgICAgICAgICBjb25maWcuY29udGFpbmVyUmVmLmluc2VydChjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50RWwgPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmIChjb25maWdPYmouY29udGFpbmVyICE9PSAnYm9keScpIHtcbiAgICAgICAgICAgIGNvbmZpZ09iai5jb250YWluZXI/LmFwcGVuZENoaWxkKGNvbXBvbmVudEVsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29tcG9uZW50RWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jcmVhdGVDb21wb25lbnQ8Vj4oXG4gICAgICAgIGNvbXBvbmVudFR5cGU6IFR5cGU8Vj4sXG4gICAgICAgIGRlcGVuZGVuY2llc01hcDogV2Vha01hcDxhbnksIGFueT4sXG4gICAgICAgIGluamVjdG9yPzogSW5qZWN0b3JcbiAgICApOiBDb21wb25lbnRSZWY8Vj4ge1xuICAgICAgICBjb25zdCBkeW5hbWljQ29tcG9uZW50SW5qZWN0b3IgPSBuZXcgRHluYW1pY0NvbXBvbmVudEluamVjdG9yKGluamVjdG9yIHx8IHRoaXMuX2luamVjdG9yLCBkZXBlbmRlbmNpZXNNYXApO1xuICAgICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudFR5cGUpO1xuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZShkeW5hbWljQ29tcG9uZW50SW5qZWN0b3IpO1xuICAgICAgICAvLyB0aGlzLl9hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wYXNzRXh0ZXJuYWxDb250ZW50PFY+KFxuICAgICAgICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxWPixcbiAgICAgICAgY29udGVudDogVGVtcGxhdGVSZWY8YW55PiB8IFR5cGU8YW55PiB8IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgLy8gVE9ETzogdGhpcyBhcHByb2FjaCBzaG91bGQgYmUgcmV2aXNpdGVkLCBpdCBjYW4gY2F1c2UgaXNzdWVzLCB0aGF0IGlzIHJlYWxseSBoYXJkIHRvIGRlYnVnXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY29tcG9uZW50UmVmLmluc3RhbmNlLCAnY2hpbGRDb250ZW50JykpIHtcbiAgICAgICAgICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgYW55KS5jaGlsZENvbnRlbnQgPSBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const LIST_ITEM_COMPONENT = new InjectionToken('ListItemComponent');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvbGlzdC1pdGVtL2xpc3QtaXRlbS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFXLG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgTElTVF9JVEVNX0NPTVBPTkVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmdbXT4oJ0xpc3RJdGVtQ29tcG9uZW50Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEl0ZW1JbnRlcmZhY2Uge1xuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuXG4gICAgbGluazogYm9vbGVhbjtcblxuICAgIGZvY3VzKCk6IHZvaWQ7XG59XG4iXX0=","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, Pipe } from '@angular/core';\nimport { isPromise, isSubscribable } from '../typecheck';\nimport * as i0 from \"@angular/core\";\nexport class AsyncOrSyncPipe {\n /** @hidden */\n constructor(ref) {\n this._cdr = ref;\n this._asyncPipe = new AsyncPipe(this._cdr);\n }\n /**\n * Transforms raw async-like value into static one.\n * @param value raw value. Can be either a static value, or Promise-like, or Observable-like.\n */\n transform(value) {\n if (isPromise(value) || isSubscribable(value)) {\n return this._asyncPipe.transform(value);\n }\n return value;\n }\n /** @Hidden */\n ngOnDestroy() {\n this._asyncPipe.ngOnDestroy();\n this._cdr = null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AsyncOrSyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: AsyncOrSyncPipe, isStandalone: true, name: \"fdkAsyncOrSync\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: AsyncOrSyncPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'fdkAsyncOrSync',\n standalone: true,\n pure: false\n }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtb3Itc3luYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvcGlwZXMvYXN5bmMtb3Itc3luYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQWEsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVsRixPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFTekQsTUFBTSxPQUFPLGVBQWU7SUFNeEIsY0FBYztJQUNkLFlBQVksR0FBc0I7UUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBSSxLQUEwQjtRQUNuQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7OEdBM0JRLGVBQWU7NEdBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFMM0IsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLEtBQUs7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uRGVzdHJveSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaXNQcm9taXNlLCBpc1N1YnNjcmliYWJsZSB9IGZyb20gJy4uL3R5cGVjaGVjayc7XG5cbmV4cG9ydCB0eXBlIEZka0FzeW5jUHJvcGVydHk8VD4gPSBUIHwgT2JzZXJ2YWJsZTxUPiB8IFByb21pc2U8VD47XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZmRrQXN5bmNPclN5bmMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHVyZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgQXN5bmNPclN5bmNQaXBlIGltcGxlbWVudHMgT25EZXN0cm95LCBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYgfCBudWxsO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXN5bmNQaXBlOiBBc3luY1BpcGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5fY2RyID0gcmVmO1xuICAgICAgICB0aGlzLl9hc3luY1BpcGUgPSBuZXcgQXN5bmNQaXBlKHRoaXMuX2Nkcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtcyByYXcgYXN5bmMtbGlrZSB2YWx1ZSBpbnRvIHN0YXRpYyBvbmUuXG4gICAgICogQHBhcmFtIHZhbHVlIHJhdyB2YWx1ZS4gQ2FuIGJlIGVpdGhlciBhIHN0YXRpYyB2YWx1ZSwgb3IgUHJvbWlzZS1saWtlLCBvciBPYnNlcnZhYmxlLWxpa2UuXG4gICAgICovXG4gICAgdHJhbnNmb3JtPFQ+KHZhbHVlOiBGZGtBc3luY1Byb3BlcnR5PFQ+KTogVCB8IG51bGwge1xuICAgICAgICBpZiAoaXNQcm9taXNlKHZhbHVlKSB8fCBpc1N1YnNjcmliYWJsZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hc3luY1BpcGUudHJhbnNmb3JtKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYXN5bmNQaXBlLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX2NkciA9IG51bGw7XG4gICAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class DisplayFnPipe {\n /** Transform value with display function. */\n transform(value, displayFn, ...args) {\n return displayFn(value, ...args);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DisplayFnPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: DisplayFnPipe, isStandalone: true, name: \"displayFnPipe\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: DisplayFnPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'displayFnPipe',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheUZuLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9waXBlcy9kaXNwbGF5Rm4ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLGFBQWE7SUFDdEIsNkNBQTZDO0lBQzdDLFNBQVMsQ0FBQyxLQUFVLEVBQUUsU0FBYyxFQUFFLEdBQUcsSUFBUztRQUM5QyxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDOzhHQUpRLGFBQWE7NEdBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFKekIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsZUFBZTtvQkFDckIsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2Rpc3BsYXlGblBpcGUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGlzcGxheUZuUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIC8qKiBUcmFuc2Zvcm0gdmFsdWUgd2l0aCBkaXNwbGF5IGZ1bmN0aW9uLiAqL1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBkaXNwbGF5Rm46IGFueSwgLi4uYXJnczogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGRpc3BsYXlGbih2YWx1ZSwgLi4uYXJncyk7XG4gICAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class FilterStringsPipe {\n /**\n * Performs filtering.\n * @param values Array of items.\n * @param params Search parameters.\n */\n transform(values = [], params) {\n if (!params.searchTerm) {\n return values;\n }\n if (params.key) {\n values = values.filter((item) => item[params.key].toLocaleLowerCase().includes(params.searchTerm?.toLocaleLowerCase()));\n }\n else {\n values = values.filter((item) => item.toLocaleLowerCase().includes(params.searchTerm?.toLocaleLowerCase()));\n }\n return values;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FilterStringsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: FilterStringsPipe, isStandalone: true, name: \"fdFilterStrings\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FilterStringsPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'fdFilterStrings',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXN0cmluZ3MucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL3BpcGVzL2ZpbHRlci1zdHJpbmdzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBT3BELE1BQU0sT0FBTyxpQkFBaUI7SUFDMUI7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxTQUFnQixFQUFFLEVBQUUsTUFBcUQ7UUFDL0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQ3hGLENBQUM7UUFDTixDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQzs4R0FsQlEsaUJBQWlCOzRHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBSjdCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi9tb2RlbHMvbnVsbGFibGUnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2ZkRmlsdGVyU3RyaW5ncycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJTdHJpbmdzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGZpbHRlcmluZy5cbiAgICAgKiBAcGFyYW0gdmFsdWVzIEFycmF5IG9mIGl0ZW1zLlxuICAgICAqIEBwYXJhbSBwYXJhbXMgU2VhcmNoIHBhcmFtZXRlcnMuXG4gICAgICovXG4gICAgdHJhbnNmb3JtKHZhbHVlczogYW55W10gPSBbXSwgcGFyYW1zOiB7IHNlYXJjaFRlcm06IE51bGxhYmxlPHN0cmluZz47IGtleTogc3RyaW5nIH0pOiBhbnlbXSB7XG4gICAgICAgIGlmICghcGFyYW1zLnNlYXJjaFRlcm0pIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtcy5rZXkpIHtcbiAgICAgICAgICAgIHZhbHVlcyA9IHZhbHVlcy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgaXRlbVtwYXJhbXMua2V5XS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHBhcmFtcy5zZWFyY2hUZXJtPy50b0xvY2FsZUxvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlcyA9IHZhbHVlcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhwYXJhbXMuc2VhcmNoVGVybT8udG9Mb2NhbGVMb3dlckNhc2UoKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport { isCompactDensity } from '../functions/is-compact-density';\nimport * as i0 from \"@angular/core\";\nexport class IsCompactDensityPipe {\n /** Check if the content density is compact. */\n transform(size) {\n return isCompactDensity(size);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IsCompactDensityPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: IsCompactDensityPipe, isStandalone: true, name: \"isCompactDensity\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: IsCompactDensityPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'isCompactDensity', standalone: true }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtY29tcGFjdC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvcGlwZXMvaXMtY29tcGFjdC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQUluRSxNQUFNLE9BQU8sb0JBQW9CO0lBQzdCLCtDQUErQztJQUMvQyxTQUFTLENBQUMsSUFBb0I7UUFDMUIsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDOzhHQUpRLG9CQUFvQjs0R0FBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQURoQyxJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0NvbXBhY3REZW5zaXR5IH0gZnJvbSAnLi4vZnVuY3Rpb25zL2lzLWNvbXBhY3QtZGVuc2l0eSc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29udGVudC1kZW5zaXR5JztcblxuQFBpcGUoeyBuYW1lOiAnaXNDb21wYWN0RGVuc2l0eScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBJc0NvbXBhY3REZW5zaXR5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIC8qKiBDaGVjayBpZiB0aGUgY29udGVudCBkZW5zaXR5IGlzIGNvbXBhY3QuICovXG4gICAgdHJhbnNmb3JtKHNpemU6IENvbnRlbnREZW5zaXR5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc0NvbXBhY3REZW5zaXR5KHNpemUpO1xuICAgIH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport { of } from 'rxjs';\nimport { isPromise, isSubscribable } from '../typecheck';\nimport * as i0 from \"@angular/core\";\nexport class MakeAsyncPipe {\n /**\n * Transforms raw value into observable.\n * @param value raw value. Can be either a static value, or Promise-like, or Observable-like.\n */\n transform(value) {\n return isPromise(value) || isSubscribable(value) ? value : of(value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: MakeAsyncPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: MakeAsyncPipe, isStandalone: true, name: \"fdkMakeAsync\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: MakeAsyncPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'fdkMakeAsync',\n pure: true,\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1hc3luYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvcGlwZXMvbWFrZS1hc3luYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBT3pELE1BQU0sT0FBTyxhQUFhO0lBQ3RCOzs7T0FHRztJQUNILFNBQVMsQ0FBSSxLQUFxQztRQUM5QyxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OEdBUFEsYUFBYTs0R0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUx6QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsSUFBSTtvQkFDVixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaXNQcm9taXNlLCBpc1N1YnNjcmliYWJsZSB9IGZyb20gJy4uL3R5cGVjaGVjayc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZmRrTWFrZUFzeW5jJyxcbiAgICBwdXJlOiB0cnVlLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWFrZUFzeW5jUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybXMgcmF3IHZhbHVlIGludG8gb2JzZXJ2YWJsZS5cbiAgICAgKiBAcGFyYW0gdmFsdWUgcmF3IHZhbHVlLiBDYW4gYmUgZWl0aGVyIGEgc3RhdGljIHZhbHVlLCBvciBQcm9taXNlLWxpa2UsIG9yIE9ic2VydmFibGUtbGlrZS5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm08VD4odmFsdWU6IFQgfCBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4gfCBQcm9taXNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIGlzUHJvbWlzZSh2YWx1ZSkgfHwgaXNTdWJzY3JpYmFibGUodmFsdWUpID8gdmFsdWUgOiBvZih2YWx1ZSk7XG4gICAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/platform-browser\";\nexport class SafePipe {\n /** @hidden */\n constructor(sanitizer) {\n this.sanitizer = sanitizer;\n }\n /** Sanitize HTML string. */\n transform(value, type) {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SafePipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: SafePipe, isStandalone: true, name: \"safe\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SafePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'safe',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.DomSanitizer }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvcGlwZXMvc2FmZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQTZELE1BQU0sMkJBQTJCLENBQUM7OztBQU1wSCxNQUFNLE9BQU8sUUFBUTtJQUNqQixjQUFjO0lBQ2QsWUFBc0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztJQUFHLENBQUM7SUFFakQsNEJBQTRCO0lBQ3JCLFNBQVMsQ0FBQyxLQUFVLEVBQUUsSUFBWTtRQUNyQyxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ1gsS0FBSyxNQUFNO2dCQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV6RCxLQUFLLE9BQU87Z0JBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTFELEtBQUssUUFBUTtnQkFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0QsS0FBSyxLQUFLO2dCQUNOLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV4RCxLQUFLLGFBQWE7Z0JBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWhFO2dCQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNMLENBQUM7OEdBekJRLFFBQVE7NEdBQVIsUUFBUTs7MkZBQVIsUUFBUTtrQkFKcEIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsTUFBTTtvQkFDWixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sLCBTYWZlUmVzb3VyY2VVcmwsIFNhZmVTY3JpcHQsIFNhZmVTdHlsZSwgU2FmZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3NhZmUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgU2FmZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cblxuICAgIC8qKiBTYW5pdGl6ZSBIVE1MIHN0cmluZy4gKi9cbiAgICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBhbnksIHR5cGU6IHN0cmluZyk6IFNhZmVIdG1sIHwgU2FmZVN0eWxlIHwgU2FmZVNjcmlwdCB8IFNhZmVVcmwgfCBTYWZlUmVzb3VyY2VVcmwge1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh2YWx1ZSk7XG5cbiAgICAgICAgICAgIGNhc2UgJ3N0eWxlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHZhbHVlKTtcblxuICAgICAgICAgICAgY2FzZSAnc2NyaXB0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFNjcmlwdCh2YWx1ZSk7XG5cbiAgICAgICAgICAgIGNhc2UgJ3VybCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodmFsdWUpO1xuXG4gICAgICAgICAgICBjYXNlICdyZXNvdXJjZVVybCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh2YWx1ZSk7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNhZmUgdHlwZSBzcGVjaWZpZWQ6ICR7dHlwZX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport { escape } from '../functions/lodash-utils';\nimport * as i0 from \"@angular/core\";\nexport class SearchHighlightPipe {\n /** Highlight search term in string. */\n transform(value, matches, active = true, includeSpans = false) {\n value = escape(value);\n let result = value;\n if (value && active && matches) {\n if (Array.isArray(matches)) {\n matches.forEach((match) => {\n const matchingString = value.substring(match[0], match[1] + 1);\n result = result.replace(matchingString, '<strong>' + matchingString + '</strong>');\n });\n }\n else if (typeof matches === 'string') {\n const testStr = escape(matches.trim().toLowerCase());\n const startIndex = value.toLowerCase().indexOf(testStr);\n if (startIndex !== -1) {\n const matchingString = value.substring(startIndex, startIndex + testStr.length);\n result = value.replace(matchingString, '<strong>' + matchingString + '</strong>');\n }\n }\n }\n if (includeSpans) {\n result = '<span>' + result + '</span>';\n }\n return result;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SearchHighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: SearchHighlightPipe, isStandalone: true, name: \"highlight\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SearchHighlightPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'highlight',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWhpZ2hsaWdodC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvcGlwZXMvc2VhcmNoLWhpZ2hsaWdodC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFNbkQsTUFBTSxPQUFPLG1CQUFtQjtJQUM1Qix1Q0FBdUM7SUFDdkMsU0FBUyxDQUNMLEtBQWEsRUFDYixPQUF5QyxFQUN6QyxTQUFrQixJQUFJLEVBQ3RCLGVBQXdCLEtBQUs7UUFFN0IsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixJQUFJLE1BQU0sR0FBVyxLQUFLLENBQUM7UUFDM0IsSUFBSSxLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzdCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUN6QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ3RCLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDL0QsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFVBQVUsR0FBRyxjQUFjLEdBQUcsV0FBVyxDQUFDLENBQUM7Z0JBQ3ZGLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztpQkFBTSxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLE9BQU8sR0FBVyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBQzdELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hELElBQUksVUFBVSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2hGLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxVQUFVLEdBQUcsY0FBYyxHQUFHLFdBQVcsQ0FBQyxDQUFDO2dCQUN0RixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2YsTUFBTSxHQUFHLFFBQVEsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQzNDLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDOzhHQTdCUSxtQkFBbUI7NEdBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFKL0IsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsV0FBVztvQkFDakIsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXNjYXBlIH0gZnJvbSAnLi4vZnVuY3Rpb25zL2xvZGFzaC11dGlscyc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnaGlnaGxpZ2h0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEhpZ2hsaWdodFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogSGlnaGxpZ2h0IHNlYXJjaCB0ZXJtIGluIHN0cmluZy4gKi9cbiAgICB0cmFuc2Zvcm0oXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICAgIG1hdGNoZXM6IHN0cmluZyB8IEFycmF5PFtudW1iZXIsIG51bWJlcl0+LFxuICAgICAgICBhY3RpdmU6IGJvb2xlYW4gPSB0cnVlLFxuICAgICAgICBpbmNsdWRlU3BhbnM6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIHZhbHVlID0gZXNjYXBlKHZhbHVlKTtcbiAgICAgICAgbGV0IHJlc3VsdDogc3RyaW5nID0gdmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJiBhY3RpdmUgJiYgbWF0Y2hlcykge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWF0Y2hlcykpIHtcbiAgICAgICAgICAgICAgICBtYXRjaGVzLmZvckVhY2goKG1hdGNoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nU3RyaW5nID0gdmFsdWUuc3Vic3RyaW5nKG1hdGNoWzBdLCBtYXRjaFsxXSArIDEpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShtYXRjaGluZ1N0cmluZywgJzxzdHJvbmc+JyArIG1hdGNoaW5nU3RyaW5nICsgJzwvc3Ryb25nPicpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbWF0Y2hlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXN0U3RyOiBzdHJpbmcgPSBlc2NhcGUobWF0Y2hlcy50cmltKCkudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IHZhbHVlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0ZXN0U3RyKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdTdHJpbmcgPSB2YWx1ZS5zdWJzdHJpbmcoc3RhcnRJbmRleCwgc3RhcnRJbmRleCArIHRlc3RTdHIubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWUucmVwbGFjZShtYXRjaGluZ1N0cmluZywgJzxzdHJvbmc+JyArIG1hdGNoaW5nU3RyaW5nICsgJzwvc3Ryb25nPicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5jbHVkZVNwYW5zKSB7XG4gICAgICAgICAgICByZXN1bHQgPSAnPHNwYW4+JyArIHJlc3VsdCArICc8L3NwYW4+JztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class TruncatePipe {\n /** Truncate string to given length. */\n transform(value, limit = 500) {\n return value && value.length > limit ? value.substring(0, limit) + '...' : value;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TruncatePipe, isStandalone: true, name: \"truncate\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TruncatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'truncate',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL3BpcGVzL3RydW5jYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxZQUFZO0lBQ3JCLHVDQUF1QztJQUN2QyxTQUFTLENBQUMsS0FBYSxFQUFFLFFBQWdCLEdBQUc7UUFDeEMsT0FBTyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JGLENBQUM7OEdBSlEsWUFBWTs0R0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQUp4QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxVQUFVO29CQUNoQixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAndHJ1bmNhdGUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVHJ1bmNhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIFRydW5jYXRlIHN0cmluZyB0byBnaXZlbiBsZW5ndGguICovXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIGxpbWl0OiBudW1iZXIgPSA1MDApOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUubGVuZ3RoID4gbGltaXQgPyB2YWx1ZS5zdWJzdHJpbmcoMCwgbGltaXQpICsgJy4uLicgOiB2YWx1ZTtcbiAgICB9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class TwoDigitsPipe {\n /** Transform number to two digits. */\n transform(value, enable = true) {\n if ((value || value === 0) && enable) {\n return value < 10 ? '0' + value : value.toString();\n }\n else {\n return String(value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TwoDigitsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TwoDigitsPipe, isStandalone: true, name: \"twoDigits\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TwoDigitsPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'twoDigits',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdvLWRpZ2l0cy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvcGlwZXMvdHdvLWRpZ2l0cy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sYUFBYTtJQUN0QixzQ0FBc0M7SUFDdEMsU0FBUyxDQUFDLEtBQWEsRUFBRSxTQUFrQixJQUFJO1FBQzNDLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ25DLE9BQU8sS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZELENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7OEdBUlEsYUFBYTs0R0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUp6QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxXQUFXO29CQUNqQixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAndHdvRGlnaXRzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFR3b0RpZ2l0c1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogVHJhbnNmb3JtIG51bWJlciB0byB0d28gZGlnaXRzLiAqL1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogbnVtYmVyLCBlbmFibGU6IGJvb2xlYW4gPSB0cnVlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkgJiYgZW5hYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgPCAxMCA/ICcwJyArIHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport { get } from '../functions/lodash-utils';\nimport * as i0 from \"@angular/core\";\nexport class ValueByPathPipe {\n /** Get value by path. */\n transform(value, key) {\n return get(value, key);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ValueByPathPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: ValueByPathPipe, isStandalone: true, name: \"valueByPath\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ValueByPathPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'valueByPath', standalone: true }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYnktcGF0aC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvcGlwZXMvdmFsdWUtYnktcGF0aC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFHaEQsTUFBTSxPQUFPLGVBQWU7SUFDeEIseUJBQXlCO0lBQ3pCLFNBQVMsQ0FBQyxLQUFVLEVBQUUsR0FBVztRQUM3QixPQUFPLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs4R0FKUSxlQUFlOzRHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICcuLi9mdW5jdGlvbnMvbG9kYXNoLXV0aWxzJztcblxuQFBpcGUoeyBuYW1lOiAndmFsdWVCeVBhdGgnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgVmFsdWVCeVBhdGhQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEdldCB2YWx1ZSBieSBwYXRoLiAqL1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIHJldHVybiBnZXQodmFsdWUsIGtleSk7XG4gICAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { AsyncOrSyncPipe } from './async-or-sync.pipe';\nimport { DisplayFnPipe } from './displayFn.pipe';\nimport { FilterStringsPipe } from './filter-strings.pipe';\nimport { IsCompactDensityPipe } from './is-compact.pipe';\nimport { MakeAsyncPipe } from './make-async.pipe';\nimport { SafePipe } from './safe.pipe';\nimport { SearchHighlightPipe } from './search-highlight.pipe';\nimport { TruncatePipe } from './truncate.pipe';\nimport { TwoDigitsPipe } from './two-digits.pipe';\nimport { ValueByPathPipe } from './value-by-path.pipe';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\nexport class PipeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: PipeModule, imports: [DisplayFnPipe,\n SearchHighlightPipe,\n TwoDigitsPipe,\n SafePipe,\n ValueByPathPipe,\n IsCompactDensityPipe,\n TruncatePipe,\n FilterStringsPipe,\n MakeAsyncPipe,\n AsyncOrSyncPipe], exports: [DisplayFnPipe,\n SearchHighlightPipe,\n TwoDigitsPipe,\n SafePipe,\n ValueByPathPipe,\n IsCompactDensityPipe,\n TruncatePipe,\n FilterStringsPipe,\n MakeAsyncPipe,\n AsyncOrSyncPipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PipeModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PipeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n DisplayFnPipe,\n SearchHighlightPipe,\n TwoDigitsPipe,\n SafePipe,\n ValueByPathPipe,\n IsCompactDensityPipe,\n TruncatePipe,\n FilterStringsPipe,\n MakeAsyncPipe,\n AsyncOrSyncPipe\n ],\n exports: [\n DisplayFnPipe,\n SearchHighlightPipe,\n TwoDigitsPipe,\n SafePipe,\n ValueByPathPipe,\n IsCompactDensityPipe,\n TruncatePipe,\n FilterStringsPipe,\n MakeAsyncPipe,\n AsyncOrSyncPipe\n ]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy9waXBlcy9waXBlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRXZEOzs7R0FHRztBQTJCSCxNQUFNLE9BQU8sVUFBVTs4R0FBVixVQUFVOytHQUFWLFVBQVUsWUF4QmYsYUFBYTtZQUNiLG1CQUFtQjtZQUNuQixhQUFhO1lBQ2IsUUFBUTtZQUNSLGVBQWU7WUFDZixvQkFBb0I7WUFDcEIsWUFBWTtZQUNaLGlCQUFpQjtZQUNqQixhQUFhO1lBQ2IsZUFBZSxhQUdmLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLFFBQVE7WUFDUixlQUFlO1lBQ2Ysb0JBQW9CO1lBQ3BCLFlBQVk7WUFDWixpQkFBaUI7WUFDakIsYUFBYTtZQUNiLGVBQWU7K0dBR1YsVUFBVTs7MkZBQVYsVUFBVTtrQkExQnRCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFO3dCQUNMLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLFFBQVE7d0JBQ1IsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLGVBQWU7cUJBQ2xCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixRQUFRO3dCQUNSLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixlQUFlO3FCQUNsQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY09yU3luY1BpcGUgfSBmcm9tICcuL2FzeW5jLW9yLXN5bmMucGlwZSc7XG5cbmltcG9ydCB7IERpc3BsYXlGblBpcGUgfSBmcm9tICcuL2Rpc3BsYXlGbi5waXBlJztcbmltcG9ydCB7IEZpbHRlclN0cmluZ3NQaXBlIH0gZnJvbSAnLi9maWx0ZXItc3RyaW5ncy5waXBlJztcbmltcG9ydCB7IElzQ29tcGFjdERlbnNpdHlQaXBlIH0gZnJvbSAnLi9pcy1jb21wYWN0LnBpcGUnO1xuaW1wb3J0IHsgTWFrZUFzeW5jUGlwZSB9IGZyb20gJy4vbWFrZS1hc3luYy5waXBlJztcbmltcG9ydCB7IFNhZmVQaXBlIH0gZnJvbSAnLi9zYWZlLnBpcGUnO1xuaW1wb3J0IHsgU2VhcmNoSGlnaGxpZ2h0UGlwZSB9IGZyb20gJy4vc2VhcmNoLWhpZ2hsaWdodC5waXBlJztcbmltcG9ydCB7IFRydW5jYXRlUGlwZSB9IGZyb20gJy4vdHJ1bmNhdGUucGlwZSc7XG5pbXBvcnQgeyBUd29EaWdpdHNQaXBlIH0gZnJvbSAnLi90d28tZGlnaXRzLnBpcGUnO1xuaW1wb3J0IHsgVmFsdWVCeVBhdGhQaXBlIH0gZnJvbSAnLi92YWx1ZS1ieS1wYXRoLnBpcGUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVc2UgZGlyZWN0IGltcG9ydHMgb2YgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIERpc3BsYXlGblBpcGUsXG4gICAgICAgIFNlYXJjaEhpZ2hsaWdodFBpcGUsXG4gICAgICAgIFR3b0RpZ2l0c1BpcGUsXG4gICAgICAgIFNhZmVQaXBlLFxuICAgICAgICBWYWx1ZUJ5UGF0aFBpcGUsXG4gICAgICAgIElzQ29tcGFjdERlbnNpdHlQaXBlLFxuICAgICAgICBUcnVuY2F0ZVBpcGUsXG4gICAgICAgIEZpbHRlclN0cmluZ3NQaXBlLFxuICAgICAgICBNYWtlQXN5bmNQaXBlLFxuICAgICAgICBBc3luY09yU3luY1BpcGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgRGlzcGxheUZuUGlwZSxcbiAgICAgICAgU2VhcmNoSGlnaGxpZ2h0UGlwZSxcbiAgICAgICAgVHdvRGlnaXRzUGlwZSxcbiAgICAgICAgU2FmZVBpcGUsXG4gICAgICAgIFZhbHVlQnlQYXRoUGlwZSxcbiAgICAgICAgSXNDb21wYWN0RGVuc2l0eVBpcGUsXG4gICAgICAgIFRydW5jYXRlUGlwZSxcbiAgICAgICAgRmlsdGVyU3RyaW5nc1BpcGUsXG4gICAgICAgIE1ha2VBc3luY1BpcGUsXG4gICAgICAgIEFzeW5jT3JTeW5jUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGlwZU1vZHVsZSB7fVxuIl19","import { animate, state, style, transition, trigger } from '@angular/animations';\n/**\n * Animations used by the Toast components.\n */\nexport const baseToastAnimations = {\n /** Animation that shows and hides Toast. */\n toastState: trigger('state', [\n state('void, hidden', style({\n transform: 'translateY(1rem)',\n opacity: 0\n })),\n state('visible', style({\n transform: 'translateY(0)',\n opacity: 1\n })),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition('* => void, * => hidden', animate('75ms cubic-bezier(0.4, 0.0, 1, 1)', style({\n opacity: 0\n })))\n ])\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC1hbmltYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvdG9hc3QvYmFzZS10b2FzdC1hbmltYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNEIsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNHOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBRTVCO0lBQ0EsNENBQTRDO0lBQzVDLFVBQVUsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFO1FBQ3pCLEtBQUssQ0FDRCxjQUFjLEVBQ2QsS0FBSyxDQUFDO1lBQ0YsU0FBUyxFQUFFLGtCQUFrQjtZQUM3QixPQUFPLEVBQUUsQ0FBQztTQUNiLENBQUMsQ0FDTDtRQUNELEtBQUssQ0FDRCxTQUFTLEVBQ1QsS0FBSyxDQUFDO1lBQ0YsU0FBUyxFQUFFLGVBQWU7WUFDMUIsT0FBTyxFQUFFLENBQUM7U0FDYixDQUFDLENBQ0w7UUFDRCxVQUFVLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3ZFLFVBQVUsQ0FDTix3QkFBd0IsRUFDeEIsT0FBTyxDQUNILG1DQUFtQyxFQUNuQyxLQUFLLENBQUM7WUFDRixPQUFPLEVBQUUsQ0FBQztTQUNiLENBQUMsQ0FDTCxDQUNKO0tBQ0osQ0FBQztDQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmltYXRpb25UcmlnZ2VyTWV0YWRhdGEsIGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG4vKipcbiAqIEFuaW1hdGlvbnMgdXNlZCBieSB0aGUgVG9hc3QgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGNvbnN0IGJhc2VUb2FzdEFuaW1hdGlvbnM6IHtcbiAgICByZWFkb25seSB0b2FzdFN0YXRlOiBBbmltYXRpb25UcmlnZ2VyTWV0YWRhdGE7XG59ID0ge1xuICAgIC8qKiBBbmltYXRpb24gdGhhdCBzaG93cyBhbmQgaGlkZXMgVG9hc3QuICovXG4gICAgdG9hc3RTdGF0ZTogdHJpZ2dlcignc3RhdGUnLCBbXG4gICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgJ3ZvaWQsIGhpZGRlbicsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxcmVtKScsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAndmlzaWJsZScsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgICAgdHJhbnNpdGlvbignKiA9PiB2aXNpYmxlJywgYW5pbWF0ZSgnMTUwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknKSksXG4gICAgICAgIHRyYW5zaXRpb24oXG4gICAgICAgICAgICAnKiA9PiB2b2lkLCAqID0+IGhpZGRlbicsXG4gICAgICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgICAgICc3NW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMSwgMSknLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICBdKVxufTtcbiJdfQ==","export const toastConnectedTopPosition = {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 16\n};\nexport const toastConnectedTopLeftPosition = {\n ...toastConnectedTopPosition,\n ...{ overlayX: 'start', originX: 'start' }\n};\nexport const toastConnectedTopRightPosition = {\n ...toastConnectedTopPosition,\n ...{ overlayX: 'end', originX: 'end' }\n};\nexport const toastConnectedBottomPosition = {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -16\n};\nexport const toastConnectedBottomLeftPosition = {\n ...toastConnectedBottomPosition,\n ...{ overlayX: 'start', originX: 'start' }\n};\nexport const toastConnectedBottomRightPosition = {\n ...toastConnectedBottomPosition,\n ...{ overlayX: 'end', originX: 'end' }\n};\n/**\n * Base Toast Position class.\n */\nexport class BaseToastPosition {\n}\n/**\n * Toast Position class.\n * The first item will pop from the top-center of the screen.\n * New items will stack after the first item.\n */\nexport class ToastTopCenterPosition extends BaseToastPosition {\n /** @hidden */\n static { this.global = {\n top: '1rem',\n center: true\n }; }\n /** @hidden */\n static { this.connected = toastConnectedTopPosition; }\n}\n/**\n * Toast Position class.\n * The first item will pop from the bottom-center of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomCenterPosition extends BaseToastPosition {\n /** @hidden */\n static { this.global = {\n bottom: '1rem',\n center: true\n }; }\n /** @hidden */\n static { this.connected = toastConnectedBottomPosition; }\n}\n/**\n * Toast Position class.\n * The first item will pop from the top-left of the screen.\n * New items will stack after first item.\n */\nexport class ToastTopLeftPosition extends ToastTopCenterPosition {\n /** @hidden */\n static { this.global = { ...ToastTopCenterPosition.global, ...{ left: '1rem', center: false } }; }\n /** @hidden */\n static { this.connected = toastConnectedTopLeftPosition; }\n}\n/**\n * Toast Position class.\n * The first item will pop from the top-right of the screen.\n * New items will stack after first item.\n */\nexport class ToastTopRightPosition extends ToastTopCenterPosition {\n /** @hidden */\n static { this.global = { ...ToastTopCenterPosition.global, ...{ right: '1rem', center: false } }; }\n /** @hidden */\n static { this.connected = toastConnectedTopRightPosition; }\n}\n/**\n * Toast Position class.\n * The first item will pop from the bottom-left of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomLeftPosition extends ToastBottomCenterPosition {\n /** @hidden */\n static { this.global = { ...ToastBottomCenterPosition.global, ...{ left: '1rem', center: false } }; }\n /** @hidden */\n static { this.connected = toastConnectedBottomLeftPosition; }\n}\n/**\n * Toast Position class.\n * The first item will pop from the bottom-right of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomRightPosition extends ToastBottomCenterPosition {\n /** @hidden */\n static { this.global = { ...ToastBottomCenterPosition.global, ...{ right: '1rem', center: false } }; }\n /** @hidden */\n static { this.connected = toastConnectedBottomRightPosition; }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC1wb3NpdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy90b2FzdC9iYXNlLXRvYXN0LXBvc2l0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBc0I7SUFDeEQsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLFFBQVE7SUFDakIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLEtBQUs7SUFDZixPQUFPLEVBQUUsRUFBRTtDQUNkLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBc0I7SUFDNUQsR0FBRyx5QkFBeUI7SUFDNUIsR0FBRyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtDQUM3QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQXNCO0lBQzdELEdBQUcseUJBQXlCO0lBQzVCLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7Q0FDekMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFzQjtJQUMzRCxPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsS0FBSztJQUNkLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE9BQU8sRUFBRSxDQUFDLEVBQUU7Q0FDZixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQXNCO0lBQy9ELEdBQUcsNEJBQTRCO0lBQy9CLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7Q0FDN0MsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFzQjtJQUNoRSxHQUFHLDRCQUE0QjtJQUMvQixHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO0NBQ3pDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sT0FBZ0IsaUJBQWlCO0NBY3RDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxpQkFBaUI7SUFDekQsY0FBYzthQUNQLFdBQU0sR0FBd0I7UUFDakMsR0FBRyxFQUFFLE1BQU07UUFDWCxNQUFNLEVBQUUsSUFBSTtLQUNmLENBQUM7SUFDRixjQUFjO2FBQ1AsY0FBUyxHQUFzQix5QkFBeUIsQ0FBQzs7QUFHcEU7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxpQkFBaUI7SUFDNUQsY0FBYzthQUNQLFdBQU0sR0FBd0I7UUFDakMsTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNLEVBQUUsSUFBSTtLQUNmLENBQUM7SUFDRixjQUFjO2FBQ1AsY0FBUyxHQUFzQiw0QkFBNEIsQ0FBQzs7QUFHdkU7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxzQkFBc0I7SUFDNUQsY0FBYzthQUNFLFdBQU0sR0FBRyxFQUFFLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ2xHLGNBQWM7YUFDRSxjQUFTLEdBQXNCLDZCQUE2QixDQUFDOztBQUdqRjs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLHFCQUFzQixTQUFRLHNCQUFzQjtJQUM3RCxjQUFjO2FBQ0UsV0FBTSxHQUFHLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7SUFDbkcsY0FBYzthQUNFLGNBQVMsR0FBc0IsOEJBQThCLENBQUM7O0FBR2xGOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEseUJBQXlCO0lBQ2xFLGNBQWM7YUFDRSxXQUFNLEdBQUcsRUFBRSxHQUFHLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUNyRyxjQUFjO2FBQ0UsY0FBUyxHQUFHLGdDQUFnQyxDQUFDOztBQUdqRTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLHlCQUF5QjtJQUNuRSxjQUFjO2FBQ0UsV0FBTSxHQUFHLEVBQUUsR0FBRyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7SUFDdEcsY0FBYzthQUNFLGNBQVMsR0FBRyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBTY3JvbGxTdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcblxuZXhwb3J0IGludGVyZmFjZSBUb2FzdEdsb2JhbFBvc2l0aW9uIHtcbiAgICBsZWZ0Pzogc3RyaW5nO1xuICAgIHJpZ2h0Pzogc3RyaW5nO1xuICAgIGJvdHRvbT86IHN0cmluZztcbiAgICB0b3A/OiBzdHJpbmc7XG4gICAgY2VudGVyOiBib29sZWFuO1xuICAgIGNlbnRlclZlcnRpY2FsbHk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvYXN0R2xvYmFsQ29ubmVjdGVkUG9zaXRpb24gZXh0ZW5kcyBDb25uZWN0ZWRQb3NpdGlvbiB7XG4gICAgYm91bmRUbzogSFRNTEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBjb25zdCB0b2FzdENvbm5lY3RlZFRvcFBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICBvcmlnaW5YOiAnY2VudGVyJyxcbiAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICBvdmVybGF5WDogJ2NlbnRlcicsXG4gICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgIG9mZnNldFk6IDE2XG59O1xuXG5leHBvcnQgY29uc3QgdG9hc3RDb25uZWN0ZWRUb3BMZWZ0UG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgIC4uLnRvYXN0Q29ubmVjdGVkVG9wUG9zaXRpb24sXG4gICAgLi4ueyBvdmVybGF5WDogJ3N0YXJ0Jywgb3JpZ2luWDogJ3N0YXJ0JyB9XG59O1xuXG5leHBvcnQgY29uc3QgdG9hc3RDb25uZWN0ZWRUb3BSaWdodFBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAuLi50b2FzdENvbm5lY3RlZFRvcFBvc2l0aW9uLFxuICAgIC4uLnsgb3ZlcmxheVg6ICdlbmQnLCBvcmlnaW5YOiAnZW5kJyB9XG59O1xuXG5leHBvcnQgY29uc3QgdG9hc3RDb25uZWN0ZWRCb3R0b21Qb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICBvZmZzZXRZOiAtMTZcbn07XG5cbmV4cG9ydCBjb25zdCB0b2FzdENvbm5lY3RlZEJvdHRvbUxlZnRQb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gICAgLi4udG9hc3RDb25uZWN0ZWRCb3R0b21Qb3NpdGlvbixcbiAgICAuLi57IG92ZXJsYXlYOiAnc3RhcnQnLCBvcmlnaW5YOiAnc3RhcnQnIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0b2FzdENvbm5lY3RlZEJvdHRvbVJpZ2h0UG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgIC4uLnRvYXN0Q29ubmVjdGVkQm90dG9tUG9zaXRpb24sXG4gICAgLi4ueyBvdmVybGF5WDogJ2VuZCcsIG9yaWdpblg6ICdlbmQnIH1cbn07XG5cbi8qKlxuICogQmFzZSBUb2FzdCBQb3NpdGlvbiBjbGFzcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VUb2FzdFBvc2l0aW9uIHtcbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBzdHJhdGVneSBvZiB0aGUgZmlyc3QgaXRlbS5cbiAgICAgKi9cbiAgICBnbG9iYWwhOiBUb2FzdEdsb2JhbFBvc2l0aW9uIHwgVG9hc3RHbG9iYWxDb25uZWN0ZWRQb3NpdGlvbjtcbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBzdHJhdGVneSBvZiB0aGUgbmV3bHkgYWRkZWQgaXRlbXMuXG4gICAgICovXG4gICAgY29ubmVjdGVkITogQ29ubmVjdGVkUG9zaXRpb247XG5cbiAgICAvKipcbiAgICAgKiBTY3JvbGwgc3RyYXRlZ3kuIFVzZWQgd2hlbiBnbG9iYWwgcG9zaXRpb24gaXMgYm91bmQgdG8gc29tZSBIVE1MIGVsZW1lbnQgb24gdGhlIHBhZ2UuXG4gICAgICovXG4gICAgc2Nyb2xsUG9zaXRpb24/OiBTY3JvbGxTdHJhdGVneTtcbn1cblxuLyoqXG4gKiBUb2FzdCBQb3NpdGlvbiBjbGFzcy5cbiAqIFRoZSBmaXJzdCBpdGVtIHdpbGwgcG9wIGZyb20gdGhlIHRvcC1jZW50ZXIgb2YgdGhlIHNjcmVlbi5cbiAqIE5ldyBpdGVtcyB3aWxsIHN0YWNrIGFmdGVyIHRoZSBmaXJzdCBpdGVtLlxuICovXG5leHBvcnQgY2xhc3MgVG9hc3RUb3BDZW50ZXJQb3NpdGlvbiBleHRlbmRzIEJhc2VUb2FzdFBvc2l0aW9uIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YXRpYyBnbG9iYWw6IFRvYXN0R2xvYmFsUG9zaXRpb24gPSB7XG4gICAgICAgIHRvcDogJzFyZW0nLFxuICAgICAgICBjZW50ZXI6IHRydWVcbiAgICB9O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhdGljIGNvbm5lY3RlZDogQ29ubmVjdGVkUG9zaXRpb24gPSB0b2FzdENvbm5lY3RlZFRvcFBvc2l0aW9uO1xufVxuXG4vKipcbiAqIFRvYXN0IFBvc2l0aW9uIGNsYXNzLlxuICogVGhlIGZpcnN0IGl0ZW0gd2lsbCBwb3AgZnJvbSB0aGUgYm90dG9tLWNlbnRlciBvZiB0aGUgc2NyZWVuLlxuICogTmV3IGl0ZW1zIHdpbGwgc3RhY2sgYmVmb3JlIGZpcnN0IGl0ZW0uXG4gKi9cbmV4cG9ydCBjbGFzcyBUb2FzdEJvdHRvbUNlbnRlclBvc2l0aW9uIGV4dGVuZHMgQmFzZVRvYXN0UG9zaXRpb24ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhdGljIGdsb2JhbDogVG9hc3RHbG9iYWxQb3NpdGlvbiA9IHtcbiAgICAgICAgYm90dG9tOiAnMXJlbScsXG4gICAgICAgIGNlbnRlcjogdHJ1ZVxuICAgIH07XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGF0aWMgY29ubmVjdGVkOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHRvYXN0Q29ubmVjdGVkQm90dG9tUG9zaXRpb247XG59XG5cbi8qKlxuICogVG9hc3QgUG9zaXRpb24gY2xhc3MuXG4gKiBUaGUgZmlyc3QgaXRlbSB3aWxsIHBvcCBmcm9tIHRoZSB0b3AtbGVmdCBvZiB0aGUgc2NyZWVuLlxuICogTmV3IGl0ZW1zIHdpbGwgc3RhY2sgYWZ0ZXIgZmlyc3QgaXRlbS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRvYXN0VG9wTGVmdFBvc2l0aW9uIGV4dGVuZHMgVG9hc3RUb3BDZW50ZXJQb3NpdGlvbiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGF0aWMgb3ZlcnJpZGUgZ2xvYmFsID0geyAuLi5Ub2FzdFRvcENlbnRlclBvc2l0aW9uLmdsb2JhbCwgLi4ueyBsZWZ0OiAnMXJlbScsIGNlbnRlcjogZmFsc2UgfSB9O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhdGljIG92ZXJyaWRlIGNvbm5lY3RlZDogQ29ubmVjdGVkUG9zaXRpb24gPSB0b2FzdENvbm5lY3RlZFRvcExlZnRQb3NpdGlvbjtcbn1cblxuLyoqXG4gKiBUb2FzdCBQb3NpdGlvbiBjbGFzcy5cbiAqIFRoZSBmaXJzdCBpdGVtIHdpbGwgcG9wIGZyb20gdGhlIHRvcC1yaWdodCBvZiB0aGUgc2NyZWVuLlxuICogTmV3IGl0ZW1zIHdpbGwgc3RhY2sgYWZ0ZXIgZmlyc3QgaXRlbS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRvYXN0VG9wUmlnaHRQb3NpdGlvbiBleHRlbmRzIFRvYXN0VG9wQ2VudGVyUG9zaXRpb24ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhdGljIG92ZXJyaWRlIGdsb2JhbCA9IHsgLi4uVG9hc3RUb3BDZW50ZXJQb3NpdGlvbi5nbG9iYWwsIC4uLnsgcmlnaHQ6ICcxcmVtJywgY2VudGVyOiBmYWxzZSB9IH07XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGF0aWMgb3ZlcnJpZGUgY29ubmVjdGVkOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHRvYXN0Q29ubmVjdGVkVG9wUmlnaHRQb3NpdGlvbjtcbn1cblxuLyoqXG4gKiBUb2FzdCBQb3NpdGlvbiBjbGFzcy5cbiAqIFRoZSBmaXJzdCBpdGVtIHdpbGwgcG9wIGZyb20gdGhlIGJvdHRvbS1sZWZ0IG9mIHRoZSBzY3JlZW4uXG4gKiBOZXcgaXRlbXMgd2lsbCBzdGFjayBiZWZvcmUgZmlyc3QgaXRlbS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRvYXN0Qm90dG9tTGVmdFBvc2l0aW9uIGV4dGVuZHMgVG9hc3RCb3R0b21DZW50ZXJQb3NpdGlvbiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGF0aWMgb3ZlcnJpZGUgZ2xvYmFsID0geyAuLi5Ub2FzdEJvdHRvbUNlbnRlclBvc2l0aW9uLmdsb2JhbCwgLi4ueyBsZWZ0OiAnMXJlbScsIGNlbnRlcjogZmFsc2UgfSB9O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhdGljIG92ZXJyaWRlIGNvbm5lY3RlZCA9IHRvYXN0Q29ubmVjdGVkQm90dG9tTGVmdFBvc2l0aW9uO1xufVxuXG4vKipcbiAqIFRvYXN0IFBvc2l0aW9uIGNsYXNzLlxuICogVGhlIGZpcnN0IGl0ZW0gd2lsbCBwb3AgZnJvbSB0aGUgYm90dG9tLXJpZ2h0IG9mIHRoZSBzY3JlZW4uXG4gKiBOZXcgaXRlbXMgd2lsbCBzdGFjayBiZWZvcmUgZmlyc3QgaXRlbS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRvYXN0Qm90dG9tUmlnaHRQb3NpdGlvbiBleHRlbmRzIFRvYXN0Qm90dG9tQ2VudGVyUG9zaXRpb24ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhdGljIG92ZXJyaWRlIGdsb2JhbCA9IHsgLi4uVG9hc3RCb3R0b21DZW50ZXJQb3NpdGlvbi5nbG9iYWwsIC4uLnsgcmlnaHQ6ICcxcmVtJywgY2VudGVyOiBmYWxzZSB9IH07XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGF0aWMgb3ZlcnJpZGUgY29ubmVjdGVkID0gdG9hc3RDb25uZWN0ZWRCb3R0b21SaWdodFBvc2l0aW9uO1xufVxuIl19","import { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { DestroyRef, Injectable, Injector, TemplateRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/cdk/overlay\";\nexport class BaseToastService {\n /** @hidden */\n constructor(overlay, injector) {\n this.overlay = overlay;\n this.injector = injector;\n /**\n * @hidden\n * Array of all current toasts.\n */\n this._toasts = [];\n /**\n * @hidden\n */\n this._toastsMap = new Map();\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n }\n /**\n * Dismisses all Toasts.\n */\n hideAll() {\n this._toasts.forEach((t) => t.dismiss());\n }\n /**\n * Returns `true` if there are some message toasts currently open. `False` otherwise.\n */\n hasOpenMessageToasts() {\n return this._toasts.length > 0;\n }\n /**\n * Sets new position strategy for all Toast items.\n * @param newStrategy New Position Strategy\n */\n setNewPositionStrategy(newStrategy) {\n if (newStrategy === this.toastPositionStrategy) {\n return;\n }\n this.toastPositionStrategy = newStrategy;\n this._refreshOverlayPositions();\n }\n /**\n * @hidden\n * Places a new component or a template as the content of the Toast container.\n */\n _attach(content, userConfig) {\n const config = { ...this.defaultConfig, ...userConfig };\n const positionStrategy = config.positionStrategy || this.toastPositionStrategy;\n const { overlay, isAnchor } = this._createOverlay(positionStrategy);\n const containerRef = this.attachToastContainerComponent(overlay, config);\n const toastRef = this.getToastRef(containerRef, overlay, positionStrategy);\n toastRef._defaultPositionStrategy = !config.positionStrategy;\n toastRef._isAnchor = isAnchor;\n if (content instanceof TemplateRef) {\n // TemplatePortal requires viewContainer ref\n const viewRef = null;\n const portal = new TemplatePortal(content, viewRef, { $implicit: config, toastRef });\n toastRef.instance = containerRef.attachTemplatePortal(portal);\n }\n else {\n const injector = this.createContentComponentInjector(config, toastRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = containerRef.attachComponentPortal(portal);\n // We can't pass this via the injector, because the injector is created earlier.\n toastRef.instance = contentRef.instance;\n contentRef.changeDetectorRef.detectChanges();\n }\n const allToasts = this._toastsMap.get(positionStrategy) || [];\n allToasts.push(toastRef);\n this._toasts.push(toastRef);\n this._toastsMap.set(positionStrategy, allToasts);\n this.animateToast(toastRef);\n return toastRef;\n }\n /**\n * Attaches the Toast container component to the overlay.\n */\n attachToastContainerComponent(overlayRef, config) {\n const injector = Injector.create({\n parent: this.injector,\n providers: this.getContainerComponentProviders(config)\n });\n const containerPortal = new ComponentPortal(this.toastContainerComponent, null, injector);\n const containerRef = overlayRef.attach(containerPortal);\n containerRef.instance.config = config;\n containerRef.instance.overlayRef = overlayRef;\n return containerRef.instance;\n }\n /**\n * Creates an injector to be used inside a Toast component.\n * @param config Config that was used to create the Toast.\n * @param toastRef Reference to the Toast.\n */\n createContentComponentInjector(config, toastRef) {\n return Injector.create({\n parent: this.injector,\n providers: this.getContentComponentProviders(config, toastRef)\n });\n }\n /**\n * Animates the old Toast out and the new one in.\n */\n animateToast(toastRef) {\n const positionStrategy = toastRef.positionStrategy;\n // When the toast is dismissed, clear the reference to it.\n toastRef\n .afterDismissed()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n const allToasts = this._toastsMap.get(positionStrategy) || [];\n allToasts.splice(allToasts.indexOf(toastRef), 1);\n this._toasts.splice(this._toasts.indexOf(toastRef), 1);\n this._toastsMap.set(positionStrategy, allToasts);\n this._refreshOverlayPositions();\n });\n toastRef.containerInstance.enter();\n }\n /**\n * @hidden\n * Creates a new overlay and places it in the correct location.\n */\n _createOverlay(positionStrategy) {\n const overlayConfig = new OverlayConfig();\n overlayConfig.scrollStrategy = positionStrategy.scrollPosition || this.overlay.scrollStrategies.reposition();\n const { position, isAnchor } = this._getPositionStrategy(positionStrategy);\n overlayConfig.positionStrategy = position;\n overlayConfig.panelClass = 'fd-toast-overlay';\n return { overlay: this.overlay.create(overlayConfig), isAnchor };\n }\n /**\n * @hidden\n * @returns Initial Position Strategy of the Toast Overlay Reference.\n */\n _getPositionStrategy(positionStrategy) {\n const lastOverlay = this._getLastToastWithSamePosition(positionStrategy);\n const globalOverlay = this._toastsMap.get(positionStrategy)?.find(({ _isAnchor }) => _isAnchor);\n if (lastOverlay && globalOverlay) {\n return {\n position: this._composeFlexibleConnectedPosition(lastOverlay.overlayRef.overlayElement, positionStrategy),\n isAnchor: false\n };\n }\n return { position: this._composeGlobalPosition(positionStrategy), isAnchor: true };\n }\n /**\n * @hidden\n * @param needlePosition\n * @private\n */\n _getLastToastWithSamePosition(needlePosition) {\n return [...(this._toastsMap.get(needlePosition) || [])]?.reverse()[0];\n }\n /**\n * @hidden\n * @param connectedElm element to connect with.\n * @param positionStrategy Position Strategy\n * @returns Flexible Connected Position Strategy for Overlay Reference.\n */\n _composeFlexibleConnectedPosition(connectedElm, positionStrategy) {\n positionStrategy = positionStrategy || this.toastPositionStrategy;\n return this.overlay\n .position()\n .flexibleConnectedTo(connectedElm)\n .withPush(false)\n .withPositions([positionStrategy.connected]);\n }\n /**\n * @hidden\n * @returns Default Global Position for Overlay Reference.\n */\n _composeGlobalPosition(positionStrategy) {\n let position;\n if (this._isBoundGlobalPosition(positionStrategy.global)) {\n position = this.overlay\n .position()\n .flexibleConnectedTo(positionStrategy.global.boundTo)\n .withPositions([positionStrategy.global])\n .withPush(false);\n }\n else {\n position = this.overlay.position().global();\n const globalToastPositionStrategy = positionStrategy.global;\n for (const [pos, value] of Object.entries(globalToastPositionStrategy)) {\n switch (pos) {\n case 'left':\n position.left(value);\n break;\n case 'right':\n position.right(value);\n break;\n case 'bottom':\n position.bottom(value);\n break;\n case 'top':\n position.top(value);\n break;\n case 'center':\n position.centerHorizontally();\n break;\n case 'centerVertically':\n position.centerVertically();\n break;\n }\n }\n }\n return position;\n }\n /** @hidden */\n _refreshOverlayPositions() {\n this._toastsMap.forEach((toasts) => {\n this._updateOverlayPositionStrategy(toasts);\n });\n }\n /** @hidden */\n _updateOverlayPositionStrategy(toasts) {\n toasts.forEach((toastRef) => {\n const positionStrategy = this._updatePositionStrategy(toastRef);\n const overlayConfig = toastRef.overlayRef.getConfig();\n toastRef.overlayRef.updatePositionStrategy(positionStrategy);\n overlayConfig.positionStrategy = positionStrategy;\n });\n }\n /**\n * @hidden\n * Updates the position of a current Overlay Reference.\n * @returns New Position Strategy.\n * @param toast Toast Reference\n */\n _updatePositionStrategy(toast) {\n const positionStrategy = toast._defaultPositionStrategy ? this.toastPositionStrategy : toast.positionStrategy;\n if (toast._isAnchor) {\n return this._composeGlobalPosition(positionStrategy);\n }\n const toasts = this._toastsMap.get(positionStrategy) || [];\n const globalOverlay = toasts?.find(({ _isAnchor }) => _isAnchor);\n if (!globalOverlay) {\n toast._isAnchor = true;\n return this._composeGlobalPosition(positionStrategy);\n }\n // Get Previous overlay item.\n const overlayItemIndex = toasts.findIndex((t) => t === toast);\n const previousOverlay = toasts[overlayItemIndex - 1];\n toast._isAnchor = false;\n return this._composeFlexibleConnectedPosition(previousOverlay.overlayRef.overlayElement, positionStrategy);\n }\n /** @hidden */\n _isBoundGlobalPosition(position) {\n return !!position.boundTo;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseToastService, deps: [{ token: i1.Overlay }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseToastService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseToastService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvdG9hc3QvYmFzZS10b2FzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJSCxPQUFPLEVBQ1AsYUFBYSxFQUdoQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUVILFVBQVUsRUFFVixVQUFVLEVBRVYsUUFBUSxFQUVSLFdBQVcsRUFHWCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQVFoRSxNQUFNLE9BQWdCLGdCQUFnQjtJQWdGbEMsY0FBYztJQUNkLFlBQ1csT0FBZ0IsRUFDaEIsUUFBa0I7UUFEbEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBakI3Qjs7O1dBR0c7UUFDTyxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQUV2Qzs7V0FFRztRQUNPLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBcUMsQ0FBQztRQUVwRSxjQUFjO1FBQ04sZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFNdEMsQ0FBQztJQUVKOztPQUVHO0lBQ0gsT0FBTztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILHNCQUFzQixDQUFDLFdBQThC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LEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckQsS0FBSyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFeEIsT0FBTyxJQUFJLENBQUMsaUNBQWlDLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsY0FBYztJQUNOLHNCQUFzQixDQUFDLFFBQWE7UUFDeEMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUM5QixDQUFDOzhHQWxYaUIsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudFR5cGUsXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICAgIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgT3ZlcmxheSxcbiAgICBPdmVybGF5Q29uZmlnLFxuICAgIE92ZXJsYXlSZWYsXG4gICAgUG9zaXRpb25TdHJhdGVneVxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudFJlZixcbiAgICBEZXN0cm95UmVmLFxuICAgIEVtYmVkZGVkVmlld1JlZixcbiAgICBJbmplY3RhYmxlLFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIEluamVjdG9yLFxuICAgIFN0YXRpY1Byb3ZpZGVyLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFR5cGUsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCYXNlVG9hc3RQb3NpdGlvbiwgVG9hc3RHbG9iYWxDb25uZWN0ZWRQb3NpdGlvbiwgVG9hc3RHbG9iYWxQb3NpdGlvbiB9IGZyb20gJy4vYmFzZS10b2FzdC1wb3NpdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVRvYXN0Q29uZmlnIH0gZnJvbSAnLi9jbGFzc2VzL2Jhc2UtdG9hc3QtY29uZmlnJztcbmltcG9ydCB7IEJhc2VUb2FzdFJlZiB9IGZyb20gJy4vY2xhc3Nlcy9iYXNlLXRvYXN0LXJlZic7XG5pbXBvcnQgeyBUb2FzdENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy90b2FzdC1jb250YWluZXItY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBUb2FzdFRleHRDb21wb25lbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvdG9hc3QtdGV4dC1jb21wb25lbnQuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VUb2FzdFNlcnZpY2U8XG4gICAgUCBleHRlbmRzIEJhc2VUb2FzdENvbmZpZyxcbiAgICBDIGV4dGVuZHMgVG9hc3RDb250YWluZXJDb21wb25lbnQ8UD4gPSBUb2FzdENvbnRhaW5lckNvbXBvbmVudDxQPlxuPiB7XG4gICAgLyoqIENvbXBvbmVudCBmb3Igc2ltcGxlIHRleHQgdG9hc3QuICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHRvYXN0VGV4dENvbXBvbmVudDogVHlwZTxUb2FzdFRleHRDb21wb25lbnQ+O1xuICAgIC8qKiBDb21wb25lbnQgZm9yIFRvYXN0IENvbnRhaW5lci4gKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgdG9hc3RDb250YWluZXJDb21wb25lbnQ6IFR5cGU8Qz47XG4gICAgLyoqIEluamVjdGlvbiB0b2tlbiBmb3IgVG9hc3QgRGF0YS4gKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgdG9hc3REYXRhSW5qZWN0aW9uVG9rZW46IEluamVjdGlvblRva2VuPGFueT47XG4gICAgLyoqIFRvYXN0IFBvc2l0aW9uIFN0cmF0ZWd5LiAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCB0b2FzdFBvc2l0aW9uU3RyYXRlZ3k6IEJhc2VUb2FzdFBvc2l0aW9uO1xuICAgIC8qKiBUb2FzdCBkZWZhdWx0IGNvbmZpZy4gKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZGVmYXVsdENvbmZpZzogUDtcblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgVG9hc3Qgd2l0aCB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gdG9hc3QgYWNjZXB0cyBzdHJpbmcsIENvbXBvbmVudCBvciBUZW1wbGF0ZVJlZi5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBvcGVuPFQ+KFxuICAgICAgICB0b2FzdDogc3RyaW5nIHwgVHlwZTxUPiB8IFRlbXBsYXRlUmVmPFQ+XG4gICAgKTogQmFzZVRvYXN0UmVmPFRvYXN0VGV4dENvbXBvbmVudCB8IFQgfCBFbWJlZGRlZFZpZXdSZWY8VD4sIFA+O1xuXG4gICAgYWJzdHJhY3Qgb3BlbkZyb21TdHJpbmcobWVzc2FnZTogc3RyaW5nLCBjb25maWc6IFApOiBCYXNlVG9hc3RSZWY8VG9hc3RUZXh0Q29tcG9uZW50LCBQPjtcblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgVG9hc3Qgd2l0aCBwcm92aWRlZCBjb21wb25lbnQgaW5zaWRlLlxuICAgICAqIEBwYXJhbSBjb21wb25lbnQgQ29tcG9uZW50IHRvIHJlbmRlciBpbnNpZGUgYSBUb2FzdC5cbiAgICAgKiBAcGFyYW0gY29uZmlnIFRvYXN0IGNvbmZpZ3VyYXRpb24uXG4gICAgICogQHJldHVybnMgVG9hc3QgcmVmZXJlbmNlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IG9wZW5Gcm9tQ29tcG9uZW50PFQ+KGNvbXBvbmVudDogVHlwZTxUPiwgY29uZmlnOiBQKTogQmFzZVRvYXN0UmVmPFQsIFA+O1xuXG4gICAgLyoqXG4gICAgICogT3BlbnMgYSBUb2FzdCB3aXRoIHByb3ZpZGVkIFRlbXBsYXRlIFJlZmVyZW5jZS5cbiAgICAgKiBAcGFyYW0gdGVtcGxhdGUgVGVtcGxhdGUgUmVmZXJlbmNlIHRvIHJlbmRlciBpbnNpZGUgYSBUb2FzdC5cbiAgICAgKiBAcGFyYW0gY29uZmlnIFRvYXN0IGNvbmZpZ3VyYXRpb24uXG4gICAgICogQHJldHVybnMgVG9hc3QgcmVmZXJlbmNlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IG9wZW5Gcm9tVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4sIGNvbmZpZzogUCk6IEJhc2VUb2FzdFJlZjxFbWJlZGRlZFZpZXdSZWY8YW55Pj47XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIFRvYXN0IENvbnRhaW5lciBwcm92aWRlcnMuXG4gICAgICogQHBhcmFtIGNvbmZpZyBUb2FzdCBDb25maWcuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldENvbnRhaW5lckNvbXBvbmVudFByb3ZpZGVycyhjb25maWc6IFApOiBTdGF0aWNQcm92aWRlcltdO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBUb2FzdCBDb250ZW50IHByb3ZpZGVycy5cbiAgICAgKiBAcGFyYW0gY29uZmlnIFRvYXN0IENvbmZpZy5cbiAgICAgKiBAcGFyYW0gdG9hc3RSZWYgVG9hc3QgUmVmZXJlbmNlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRDb250ZW50Q29tcG9uZW50UHJvdmlkZXJzPFQ+KGNvbmZpZzogUCwgdG9hc3RSZWY6IEJhc2VUb2FzdFJlZjxUPik6IFN0YXRpY1Byb3ZpZGVyW107XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIFRvYXN0IFJlZmVyZW5jZSBmb3IgcHJvdmlkZWQgY29udGFpbmVyIGFuZCBvdmVybGF5LlxuICAgICAqIEBwYXJhbSBjb250YWluZXJSZWYgQ29udGFpbmVyIHJlZmVyZW5jZS5cbiAgICAgKiBAcGFyYW0gb3ZlcmxheVJlZiBPdmVybGF5IFJlZmVyZW5jZS5cbiAgICAgKiBAcGFyYW0gcG9zaXRpb25TdHJhdGVneSBQb3NpdGlvbiBTdHJhdGVneVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRUb2FzdFJlZjxUPihcbiAgICAgICAgY29udGFpbmVyUmVmOiBDLFxuICAgICAgICBvdmVybGF5UmVmOiBPdmVybGF5UmVmLFxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBCYXNlVG9hc3RQb3NpdGlvblxuICAgICk6IEJhc2VUb2FzdFJlZjxUIHwgRW1iZWRkZWRWaWV3UmVmPGFueT4sIFA+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEFycmF5IG9mIGFsbCBjdXJyZW50IHRvYXN0cy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3RvYXN0czogQmFzZVRvYXN0UmVmW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3RvYXN0c01hcCA9IG5ldyBNYXA8QmFzZVRvYXN0UG9zaXRpb24sIEJhc2VUb2FzdFJlZltdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBvdmVybGF5OiBPdmVybGF5LFxuICAgICAgICBwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICogRGlzbWlzc2VzIGFsbCBUb2FzdHMuXG4gICAgICovXG4gICAgaGlkZUFsbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG9hc3RzLmZvckVhY2goKHQpID0+IHQuZGlzbWlzcygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGVyZSBhcmUgc29tZSBtZXNzYWdlIHRvYXN0cyBjdXJyZW50bHkgb3Blbi4gYEZhbHNlYCBvdGhlcndpc2UuXG4gICAgICovXG4gICAgaGFzT3Blbk1lc3NhZ2VUb2FzdHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b2FzdHMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIG5ldyBwb3NpdGlvbiBzdHJhdGVneSBmb3IgYWxsIFRvYXN0IGl0ZW1zLlxuICAgICAqIEBwYXJhbSBuZXdTdHJhdGVneSBOZXcgUG9zaXRpb24gU3RyYXRlZ3lcbiAgICAgKi9cbiAgICBzZXROZXdQb3NpdGlvblN0cmF0ZWd5KG5ld1N0cmF0ZWd5OiBCYXNlVG9hc3RQb3NpdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAobmV3U3RyYXRlZ3kgPT09IHRoaXMudG9hc3RQb3NpdGlvblN0cmF0ZWd5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvYXN0UG9zaXRpb25TdHJhdGVneSA9IG5ld1N0cmF0ZWd5O1xuXG4gICAgICAgIHRoaXMuX3JlZnJlc2hPdmVybGF5UG9zaXRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFBsYWNlcyBhIG5ldyBjb21wb25lbnQgb3IgYSB0ZW1wbGF0ZSBhcyB0aGUgY29udGVudCBvZiB0aGUgVG9hc3QgY29udGFpbmVyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfYXR0YWNoPFQ+KFxuICAgICAgICBjb250ZW50OiBDb21wb25lbnRUeXBlPFQ+IHwgVGVtcGxhdGVSZWY8VD4sXG4gICAgICAgIHVzZXJDb25maWc/OiBQXG4gICAgKTogQmFzZVRvYXN0UmVmPFQgfCBFbWJlZGRlZFZpZXdSZWY8YW55PiwgUD4ge1xuICAgICAgICBjb25zdCBjb25maWcgPSB7IC4uLnRoaXMuZGVmYXVsdENvbmZpZywgLi4udXNlckNvbmZpZyB9O1xuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gY29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgfHwgdGhpcy50b2FzdFBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgICAgIGNvbnN0IHsgb3ZlcmxheSwgaXNBbmNob3IgfSA9IHRoaXMuX2NyZWF0ZU92ZXJsYXkocG9zaXRpb25TdHJhdGVneSk7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHRoaXMuYXR0YWNoVG9hc3RDb250YWluZXJDb21wb25lbnQob3ZlcmxheSwgY29uZmlnKTtcbiAgICAgICAgY29uc3QgdG9hc3RSZWYgPSB0aGlzLmdldFRvYXN0UmVmPFQ+KGNvbnRhaW5lclJlZiwgb3ZlcmxheSwgcG9zaXRpb25TdHJhdGVneSk7XG4gICAgICAgIHRvYXN0UmVmLl9kZWZhdWx0UG9zaXRpb25TdHJhdGVneSA9ICFjb25maWcucG9zaXRpb25TdHJhdGVneTtcbiAgICAgICAgdG9hc3RSZWYuX2lzQW5jaG9yID0gaXNBbmNob3I7XG5cbiAgICAgICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgLy8gVGVtcGxhdGVQb3J0YWwgcmVxdWlyZXMgdmlld0NvbnRhaW5lciByZWZcbiAgICAgICAgICAgIGNvbnN0IHZpZXdSZWYgPSBudWxsIGFzIGFueSBhcyBWaWV3Q29udGFpbmVyUmVmO1xuICAgICAgICAgICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKGNvbnRlbnQsIHZpZXdSZWYsIHsgJGltcGxpY2l0OiBjb25maWcsIHRvYXN0UmVmIH0gYXMgYW55KTtcblxuICAgICAgICAgICAgdG9hc3RSZWYuaW5zdGFuY2UgPSBjb250YWluZXJSZWYuYXR0YWNoVGVtcGxhdGVQb3J0YWwocG9ydGFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5jcmVhdGVDb250ZW50Q29tcG9uZW50SW5qZWN0b3IoY29uZmlnLCB0b2FzdFJlZik7XG4gICAgICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbnRlbnQsIHVuZGVmaW5lZCwgaW5qZWN0b3IpO1xuICAgICAgICAgICAgY29uc3QgY29udGVudFJlZiA9IGNvbnRhaW5lclJlZi5hdHRhY2hDb21wb25lbnRQb3J0YWw8VD4ocG9ydGFsKTtcblxuICAgICAgICAgICAgLy8gV2UgY2FuJ3QgcGFzcyB0aGlzIHZpYSB0aGUgaW5qZWN0b3IsIGJlY2F1c2UgdGhlIGluamVjdG9yIGlzIGNyZWF0ZWQgZWFybGllci5cbiAgICAgICAgICAgIHRvYXN0UmVmLmluc3RhbmNlID0gY29udGVudFJlZi5pbnN0YW5jZTtcblxuICAgICAgICAgICAgY29udGVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhbGxUb2FzdHMgPSB0aGlzLl90b2FzdHNNYXAuZ2V0KHBvc2l0aW9uU3RyYXRlZ3kpIHx8IFtdO1xuICAgICAgICBhbGxUb2FzdHMucHVzaCh0b2FzdFJlZik7XG4gICAgICAgIHRoaXMuX3RvYXN0cy5wdXNoKHRvYXN0UmVmKTtcbiAgICAgICAgdGhpcy5fdG9hc3RzTWFwLnNldChwb3NpdGlvblN0cmF0ZWd5LCBhbGxUb2FzdHMpO1xuXG4gICAgICAgIHRoaXMuYW5pbWF0ZVRvYXN0PFQ+KHRvYXN0UmVmKTtcblxuICAgICAgICByZXR1cm4gdG9hc3RSZWY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgdGhlIFRvYXN0IGNvbnRhaW5lciBjb21wb25lbnQgdG8gdGhlIG92ZXJsYXkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGF0dGFjaFRvYXN0Q29udGFpbmVyQ29tcG9uZW50KG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsIGNvbmZpZzogUCk6IEMge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICBwcm92aWRlcnM6IHRoaXMuZ2V0Q29udGFpbmVyQ29tcG9uZW50UHJvdmlkZXJzKGNvbmZpZylcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLnRvYXN0Q29udGFpbmVyQ29tcG9uZW50LCBudWxsLCBpbmplY3Rvcik7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZjogQ29tcG9uZW50UmVmPEM+ID0gb3ZlcmxheVJlZi5hdHRhY2goY29udGFpbmVyUG9ydGFsKTtcblxuICAgICAgICBjb250YWluZXJSZWYuaW5zdGFuY2UuY29uZmlnID0gY29uZmlnO1xuICAgICAgICBjb250YWluZXJSZWYuaW5zdGFuY2Uub3ZlcmxheVJlZiA9IG92ZXJsYXlSZWY7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lclJlZi5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluamVjdG9yIHRvIGJlIHVzZWQgaW5zaWRlIGEgVG9hc3QgY29tcG9uZW50LlxuICAgICAqIEBwYXJhbSBjb25maWcgQ29uZmlnIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSBUb2FzdC5cbiAgICAgKiBAcGFyYW0gdG9hc3RSZWYgUmVmZXJlbmNlIHRvIHRoZSBUb2FzdC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY3JlYXRlQ29udGVudENvbXBvbmVudEluamVjdG9yPFQ+KGNvbmZpZzogUCwgdG9hc3RSZWY6IEJhc2VUb2FzdFJlZjxUPik6IEluamVjdG9yIHtcbiAgICAgICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICBwcm92aWRlcnM6IHRoaXMuZ2V0Q29udGVudENvbXBvbmVudFByb3ZpZGVycyhjb25maWcsIHRvYXN0UmVmKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbmltYXRlcyB0aGUgb2xkIFRvYXN0IG91dCBhbmQgdGhlIG5ldyBvbmUgaW4uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFuaW1hdGVUb2FzdDxUPih0b2FzdFJlZjogQmFzZVRvYXN0UmVmPFQgfCBFbWJlZGRlZFZpZXdSZWY8YW55PiwgUD4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRvYXN0UmVmLnBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgICAgIC8vIFdoZW4gdGhlIHRvYXN0IGlzIGRpc21pc3NlZCwgY2xlYXIgdGhlIHJlZmVyZW5jZSB0byBpdC5cbiAgICAgICAgdG9hc3RSZWZcbiAgICAgICAgICAgIC5hZnRlckRpc21pc3NlZCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbGxUb2FzdHMgPSB0aGlzLl90b2FzdHNNYXAuZ2V0KHBvc2l0aW9uU3RyYXRlZ3kpIHx8IFtdO1xuICAgICAgICAgICAgICAgIGFsbFRvYXN0cy5zcGxpY2UoYWxsVG9hc3RzLmluZGV4T2YodG9hc3RSZWYpLCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLl90b2FzdHMuc3BsaWNlKHRoaXMuX3RvYXN0cy5pbmRleE9mKHRvYXN0UmVmKSwgMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdG9hc3RzTWFwLnNldChwb3NpdGlvblN0cmF0ZWd5LCBhbGxUb2FzdHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hPdmVybGF5UG9zaXRpb25zKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0b2FzdFJlZi5jb250YWluZXJJbnN0YW5jZS5lbnRlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDcmVhdGVzIGEgbmV3IG92ZXJsYXkgYW5kIHBsYWNlcyBpdCBpbiB0aGUgY29ycmVjdCBsb2NhdGlvbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jcmVhdGVPdmVybGF5KHBvc2l0aW9uU3RyYXRlZ3k6IEJhc2VUb2FzdFBvc2l0aW9uKTogeyBvdmVybGF5OiBPdmVybGF5UmVmOyBpc0FuY2hvcjogYm9vbGVhbiB9IHtcbiAgICAgICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKCk7XG4gICAgICAgIG92ZXJsYXlDb25maWcuc2Nyb2xsU3RyYXRlZ3kgPSBwb3NpdGlvblN0cmF0ZWd5LnNjcm9sbFBvc2l0aW9uIHx8IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKTtcblxuICAgICAgICBjb25zdCB7IHBvc2l0aW9uLCBpc0FuY2hvciB9ID0gdGhpcy5fZ2V0UG9zaXRpb25TdHJhdGVneShwb3NpdGlvblN0cmF0ZWd5KTtcblxuICAgICAgICBvdmVybGF5Q29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgPSBwb3NpdGlvbjtcbiAgICAgICAgb3ZlcmxheUNvbmZpZy5wYW5lbENsYXNzID0gJ2ZkLXRvYXN0LW92ZXJsYXknO1xuICAgICAgICByZXR1cm4geyBvdmVybGF5OiB0aGlzLm92ZXJsYXkuY3JlYXRlKG92ZXJsYXlDb25maWcpLCBpc0FuY2hvciB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcmV0dXJucyBJbml0aWFsIFBvc2l0aW9uIFN0cmF0ZWd5IG9mIHRoZSBUb2FzdCBPdmVybGF5IFJlZmVyZW5jZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRQb3NpdGlvblN0cmF0ZWd5KHBvc2l0aW9uU3RyYXRlZ3k6IEJhc2VUb2FzdFBvc2l0aW9uKToge1xuICAgICAgICBwb3NpdGlvbjogUG9zaXRpb25TdHJhdGVneTtcbiAgICAgICAgaXNBbmNob3I6IGJvb2xlYW47XG4gICAgfSB7XG4gICAgICAgIGNvbnN0IGxhc3RPdmVybGF5ID0gdGhpcy5fZ2V0TGFzdFRvYXN0V2l0aFNhbWVQb3NpdGlvbihwb3NpdGlvblN0cmF0ZWd5KTtcblxuICAgICAgICBjb25zdCBnbG9iYWxPdmVybGF5ID0gdGhpcy5fdG9hc3RzTWFwLmdldChwb3NpdGlvblN0cmF0ZWd5KT8uZmluZCgoeyBfaXNBbmNob3IgfSkgPT4gX2lzQW5jaG9yKTtcblxuICAgICAgICBpZiAobGFzdE92ZXJsYXkgJiYgZ2xvYmFsT3ZlcmxheSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogdGhpcy5fY29tcG9zZUZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb24oXG4gICAgICAgICAgICAgICAgICAgIGxhc3RPdmVybGF5Lm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3lcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGlzQW5jaG9yOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHBvc2l0aW9uOiB0aGlzLl9jb21wb3NlR2xvYmFsUG9zaXRpb24ocG9zaXRpb25TdHJhdGVneSksIGlzQW5jaG9yOiB0cnVlIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBuZWVkbGVQb3NpdGlvblxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0TGFzdFRvYXN0V2l0aFNhbWVQb3NpdGlvbihuZWVkbGVQb3NpdGlvbjogQmFzZVRvYXN0UG9zaXRpb24pOiBCYXNlVG9hc3RSZWY8UCwgQz4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gWy4uLih0aGlzLl90b2FzdHNNYXAuZ2V0KG5lZWRsZVBvc2l0aW9uKSB8fCBbXSldPy5yZXZlcnNlKClbMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBjb25uZWN0ZWRFbG0gZWxlbWVudCB0byBjb25uZWN0IHdpdGguXG4gICAgICogQHBhcmFtIHBvc2l0aW9uU3RyYXRlZ3kgUG9zaXRpb24gU3RyYXRlZ3lcbiAgICAgKiBAcmV0dXJucyBGbGV4aWJsZSBDb25uZWN0ZWQgUG9zaXRpb24gU3RyYXRlZ3kgZm9yIE92ZXJsYXkgUmVmZXJlbmNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbXBvc2VGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uKFxuICAgICAgICBjb25uZWN0ZWRFbG06IEhUTUxFbGVtZW50LFxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBCYXNlVG9hc3RQb3NpdGlvblxuICAgICk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kgPSBwb3NpdGlvblN0cmF0ZWd5IHx8IHRoaXMudG9hc3RQb3NpdGlvblN0cmF0ZWd5O1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8oY29ubmVjdGVkRWxtKVxuICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW3Bvc2l0aW9uU3RyYXRlZ3kuY29ubmVjdGVkXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEByZXR1cm5zIERlZmF1bHQgR2xvYmFsIFBvc2l0aW9uIGZvciBPdmVybGF5IFJlZmVyZW5jZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb21wb3NlR2xvYmFsUG9zaXRpb24oXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IEJhc2VUb2FzdFBvc2l0aW9uXG4gICAgKTogR2xvYmFsUG9zaXRpb25TdHJhdGVneSB8IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIGxldCBwb3NpdGlvbjogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5IHwgR2xvYmFsUG9zaXRpb25TdHJhdGVneTtcbiAgICAgICAgaWYgKHRoaXMuX2lzQm91bmRHbG9iYWxQb3NpdGlvbihwb3NpdGlvblN0cmF0ZWd5Lmdsb2JhbCkpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhwb3NpdGlvblN0cmF0ZWd5Lmdsb2JhbC5ib3VuZFRvKVxuICAgICAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtwb3NpdGlvblN0cmF0ZWd5Lmdsb2JhbF0pXG4gICAgICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxUb2FzdFBvc2l0aW9uU3RyYXRlZ3k6IFRvYXN0R2xvYmFsUG9zaXRpb24gPSBwb3NpdGlvblN0cmF0ZWd5Lmdsb2JhbDtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBbcG9zLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZ2xvYmFsVG9hc3RQb3NpdGlvblN0cmF0ZWd5KSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAocG9zKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24ubGVmdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24ucmlnaHQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbi5ib3R0b20odmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbi50b3AodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbi5jZW50ZXJIb3Jpem9udGFsbHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdjZW50ZXJWZXJ0aWNhbGx5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLmNlbnRlclZlcnRpY2FsbHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwb3NpdGlvbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hPdmVybGF5UG9zaXRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90b2FzdHNNYXAuZm9yRWFjaCgodG9hc3RzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVPdmVybGF5UG9zaXRpb25TdHJhdGVneSh0b2FzdHMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZU92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5KHRvYXN0czogQmFzZVRvYXN0UmVmW10pOiB2b2lkIHtcbiAgICAgICAgdG9hc3RzLmZvckVhY2goKHRvYXN0UmVmKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fdXBkYXRlUG9zaXRpb25TdHJhdGVneSh0b2FzdFJlZik7XG4gICAgICAgICAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdG9hc3RSZWYub3ZlcmxheVJlZi5nZXRDb25maWcoKTtcblxuICAgICAgICAgICAgdG9hc3RSZWYub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHBvc2l0aW9uU3RyYXRlZ3kpO1xuICAgICAgICAgICAgb3ZlcmxheUNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5ID0gcG9zaXRpb25TdHJhdGVneTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIGEgY3VycmVudCBPdmVybGF5IFJlZmVyZW5jZS5cbiAgICAgKiBAcmV0dXJucyBOZXcgUG9zaXRpb24gU3RyYXRlZ3kuXG4gICAgICogQHBhcmFtIHRvYXN0IFRvYXN0IFJlZmVyZW5jZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodG9hc3Q6IEJhc2VUb2FzdFJlZik6IFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdG9hc3QuX2RlZmF1bHRQb3NpdGlvblN0cmF0ZWd5ID8gdGhpcy50b2FzdFBvc2l0aW9uU3RyYXRlZ3kgOiB0b2FzdC5wb3NpdGlvblN0cmF0ZWd5O1xuXG4gICAgICAgIGlmICh0b2FzdC5faXNBbmNob3IpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21wb3NlR2xvYmFsUG9zaXRpb24ocG9zaXRpb25TdHJhdGVneSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b2FzdHMgPSB0aGlzLl90b2FzdHNNYXAuZ2V0KHBvc2l0aW9uU3RyYXRlZ3kpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IGdsb2JhbE92ZXJsYXkgPSB0b2FzdHM/LmZpbmQoKHsgX2lzQW5jaG9yIH0pID0+IF9pc0FuY2hvcik7XG5cbiAgICAgICAgaWYgKCFnbG9iYWxPdmVybGF5KSB7XG4gICAgICAgICAgICB0b2FzdC5faXNBbmNob3IgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBvc2VHbG9iYWxQb3NpdGlvbihwb3NpdGlvblN0cmF0ZWd5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCBQcmV2aW91cyBvdmVybGF5IGl0ZW0uXG4gICAgICAgIGNvbnN0IG92ZXJsYXlJdGVtSW5kZXggPSB0b2FzdHMuZmluZEluZGV4KCh0KSA9PiB0ID09PSB0b2FzdCk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzT3ZlcmxheSA9IHRvYXN0c1tvdmVybGF5SXRlbUluZGV4IC0gMV07XG4gICAgICAgIHRvYXN0Ll9pc0FuY2hvciA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb3NlRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvbihwcmV2aW91c092ZXJsYXkub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudCwgcG9zaXRpb25TdHJhdGVneSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0JvdW5kR2xvYmFsUG9zaXRpb24ocG9zaXRpb246IGFueSk6IHBvc2l0aW9uIGlzIFRvYXN0R2xvYmFsQ29ubmVjdGVkUG9zaXRpb24ge1xuICAgICAgICByZXR1cm4gISFwb3NpdGlvbi5ib3VuZFRvO1xuICAgIH1cbn1cbiJdfQ==","import { Subject } from 'rxjs';\nexport class BaseToastRef {\n /** @hidden */\n constructor(containerInstance, overlayRef, positionStrategy) {\n this.containerInstance = containerInstance;\n this.overlayRef = overlayRef;\n this.positionStrategy = positionStrategy;\n /** @hidden */\n this._defaultPositionStrategy = true;\n /** @hidden\n * Used for flagging the toast as an anchor for all next appearing toasts.\n */\n this._isAnchor = false;\n /**\n * @hidden\n * Subject for notifying the user that the Toast has been dismissed.\n */\n this._afterDismissed$ = new Subject();\n containerInstance.onExit$.subscribe(() => this._finishDismiss());\n }\n /** Dismisses the Toast. */\n dismiss() {\n if (!this._afterDismissed$.closed) {\n this.containerInstance.exit();\n }\n }\n /** Gets an observable that is notified when the Toast is finished closing. */\n afterDismissed() {\n return this._afterDismissed$.asObservable();\n }\n /** Gets an observable that is notified when the Toast has opened and appeared. */\n afterOpened() {\n return this.containerInstance.onEnter$.asObservable();\n }\n /**\n * @hidden\n * Cleans up the DOM after closing.\n */\n _finishDismiss() {\n this.overlayRef.dispose();\n this._afterDismissed$.next();\n this._afterDismissed$.complete();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy90b2FzdC9jbGFzc2VzL2Jhc2UtdG9hc3QtcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJM0MsTUFBTSxPQUFnQixZQUFZO0lBc0I5QixjQUFjO0lBQ2QsWUFDVyxpQkFBb0IsRUFDcEIsVUFBc0IsRUFDdEIsZ0JBQW1DO1FBRm5DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBRztRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFsQjlDLGNBQWM7UUFDZCw2QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFFaEM7O1dBRUc7UUFDSCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCOzs7V0FHRztRQUNnQixxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBUXRELGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixPQUFPO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEMsQ0FBQztJQUNMLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxrRkFBa0Y7SUFDbEYsV0FBVztRQUNQLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sY0FBYztRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhc2VUb2FzdFBvc2l0aW9uIH0gZnJvbSAnLi4vYmFzZS10b2FzdC1wb3NpdGlvbnMnO1xuaW1wb3J0IHsgVG9hc3RDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RvYXN0LWNvbnRhaW5lci1jb21wb25lbnQuaW50ZXJmYWNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VUb2FzdFJlZjxcbiAgICBUID0gYW55LFxuICAgIFAgPSBhbnksXG4gICAgQyBleHRlbmRzIFRvYXN0Q29udGFpbmVyQ29tcG9uZW50PFA+ID0gVG9hc3RDb250YWluZXJDb21wb25lbnQ8UD5cbj4ge1xuICAgIC8qKiBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudCBpcyBtYWtpbmcgdXAgdGhlIGNvbnRlbnQgb2YgdGhlIFRvYXN0LiAqL1xuICAgIGluc3RhbmNlITogVDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2RlZmF1bHRQb3NpdGlvblN0cmF0ZWd5ID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogVXNlZCBmb3IgZmxhZ2dpbmcgdGhlIHRvYXN0IGFzIGFuIGFuY2hvciBmb3IgYWxsIG5leHQgYXBwZWFyaW5nIHRvYXN0cy5cbiAgICAgKi9cbiAgICBfaXNBbmNob3IgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTdWJqZWN0IGZvciBub3RpZnlpbmcgdGhlIHVzZXIgdGhhdCB0aGUgVG9hc3QgaGFzIGJlZW4gZGlzbWlzc2VkLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfYWZ0ZXJEaXNtaXNzZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY29udGFpbmVySW5zdGFuY2U6IEMsXG4gICAgICAgIHB1YmxpYyBvdmVybGF5UmVmOiBPdmVybGF5UmVmLFxuICAgICAgICBwdWJsaWMgcG9zaXRpb25TdHJhdGVneTogQmFzZVRvYXN0UG9zaXRpb25cbiAgICApIHtcbiAgICAgICAgY29udGFpbmVySW5zdGFuY2Uub25FeGl0JC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZmluaXNoRGlzbWlzcygpKTtcbiAgICB9XG5cbiAgICAvKiogRGlzbWlzc2VzIHRoZSBUb2FzdC4gKi9cbiAgICBkaXNtaXNzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2FmdGVyRGlzbWlzc2VkJC5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVySW5zdGFuY2UuZXhpdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEdldHMgYW4gb2JzZXJ2YWJsZSB0aGF0IGlzIG5vdGlmaWVkIHdoZW4gdGhlIFRvYXN0IGlzIGZpbmlzaGVkIGNsb3NpbmcuICovXG4gICAgYWZ0ZXJEaXNtaXNzZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZnRlckRpc21pc3NlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqIEdldHMgYW4gb2JzZXJ2YWJsZSB0aGF0IGlzIG5vdGlmaWVkIHdoZW4gdGhlIFRvYXN0IGhhcyBvcGVuZWQgYW5kIGFwcGVhcmVkLiAqL1xuICAgIGFmdGVyT3BlbmVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXJJbnN0YW5jZS5vbkVudGVyJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ2xlYW5zIHVwIHRoZSBET00gYWZ0ZXIgY2xvc2luZy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2ZpbmlzaERpc21pc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG5cbiAgICAgICAgdGhpcy5fYWZ0ZXJEaXNtaXNzZWQkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fYWZ0ZXJEaXNtaXNzZWQkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19","import { BaseToastRef } from '../base-toast-ref';\n/** Maximum number of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\nexport class BaseToastDurationDismissibleRef extends BaseToastRef {\n /** @hidden */\n constructor(containerInstance, overlayRef, positionStrategy) {\n super(containerInstance, overlayRef, positionStrategy);\n }\n /** Dismisses the toast and clears the timeout. */\n dismiss() {\n clearTimeout(this.durationTimeoutId);\n super.dismiss();\n }\n /** Dismisses the Toast component after some duration */\n dismissAfter(duration) {\n this.durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n /** Cancels current dismiss timeout */\n cancelDismiss() {\n clearTimeout(this.durationTimeoutId);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC1kdXJhdGlvbi1kaXNtaXNzaWJsZS1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy90b2FzdC9jbGFzc2VzL2R1cmF0aW9uLWRpc21pc3NpYmxlL2Jhc2UtdG9hc3QtZHVyYXRpb24tZGlzbWlzc2libGUtcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCx5RUFBeUU7QUFDekUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRXhDLE1BQU0sT0FBZ0IsK0JBSXBCLFNBQVEsWUFBcUI7SUFPM0IsY0FBYztJQUNkLFlBQXNCLGlCQUFvQixFQUFFLFVBQXNCLEVBQUUsZ0JBQW1DO1FBQ25HLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsa0RBQWtEO0lBQ3pDLE9BQU87UUFDWixZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFckMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQsWUFBWSxDQUFDLFFBQWdCO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELHNDQUFzQztJQUN0QyxhQUFhO1FBQ1QsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBCYXNlVG9hc3RQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2Jhc2UtdG9hc3QtcG9zaXRpb25zJztcbmltcG9ydCB7IEJhc2VUb2FzdENvbmZpZyB9IGZyb20gJy4uL2Jhc2UtdG9hc3QtY29uZmlnJztcbmltcG9ydCB7IEJhc2VUb2FzdFJlZiB9IGZyb20gJy4uL2Jhc2UtdG9hc3QtcmVmJztcbmltcG9ydCB7IEJhc2VUb2FzdER1cmF0aW9uRGlzbWlzc2libGVDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtdG9hc3QtZHVyYXRpb24tZGlzbWlzc2libGUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbi8qKiBNYXhpbXVtIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBjYW4gYmUgcGFzc2VkIGludG8gc2V0VGltZW91dC4gKi9cbmNvbnN0IE1BWF9USU1FT1VUID0gTWF0aC5wb3coMiwgMzEpIC0gMTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VUb2FzdER1cmF0aW9uRGlzbWlzc2libGVSZWY8XG4gICAgVCA9IGFueSxcbiAgICBQIGV4dGVuZHMgQmFzZVRvYXN0Q29uZmlnPFQ+ID0gYW55LFxuICAgIEMgZXh0ZW5kcyBCYXNlVG9hc3REdXJhdGlvbkRpc21pc3NpYmxlQ29udGFpbmVyQ29tcG9uZW50PFA+ID0gQmFzZVRvYXN0RHVyYXRpb25EaXNtaXNzaWJsZUNvbnRhaW5lckNvbXBvbmVudDxQPlxuPiBleHRlbmRzIEJhc2VUb2FzdFJlZjxULCBQLCBDPiB7XG4gICAgLyoqXG4gICAgICogVGltZW91dCBJRCBmb3IgdGhlIGR1cmF0aW9uIHNldFRpbWVvdXQgY2FsbC4gVXNlZCB0byBjbGVhciB0aGUgdGltZW91dCBpZiB0aGUgdG9hc3QgaXNcbiAgICAgKiBkaXNtaXNzZWQgYmVmb3JlIHRoZSBkdXJhdGlvbiBwYXNzZXMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGR1cmF0aW9uVGltZW91dElkITogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihjb250YWluZXJJbnN0YW5jZTogQywgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiwgcG9zaXRpb25TdHJhdGVneTogQmFzZVRvYXN0UG9zaXRpb24pIHtcbiAgICAgICAgc3VwZXIoY29udGFpbmVySW5zdGFuY2UsIG92ZXJsYXlSZWYsIHBvc2l0aW9uU3RyYXRlZ3kpO1xuICAgIH1cblxuICAgIC8qKiBEaXNtaXNzZXMgdGhlIHRvYXN0IGFuZCBjbGVhcnMgdGhlIHRpbWVvdXQuICovXG4gICAgb3ZlcnJpZGUgZGlzbWlzcygpOiB2b2lkIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZHVyYXRpb25UaW1lb3V0SWQpO1xuXG4gICAgICAgIHN1cGVyLmRpc21pc3MoKTtcbiAgICB9XG5cbiAgICAvKiogRGlzbWlzc2VzIHRoZSBUb2FzdCBjb21wb25lbnQgYWZ0ZXIgc29tZSBkdXJhdGlvbiAqL1xuICAgIGRpc21pc3NBZnRlcihkdXJhdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZHVyYXRpb25UaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZGlzbWlzcygpLCBNYXRoLm1pbihkdXJhdGlvbiwgTUFYX1RJTUVPVVQpKTtcbiAgICB9XG5cbiAgICAvKiogQ2FuY2VscyBjdXJyZW50IGRpc21pc3MgdGltZW91dCAqL1xuICAgIGNhbmNlbERpc21pc3MoKTogdm9pZCB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmR1cmF0aW9uVGltZW91dElkKTtcbiAgICB9XG59XG4iXX0=","import { Subject } from 'rxjs';\nimport { BaseToastDurationDismissibleRef } from '../duration-dismissible/base-toast-duration-dismissible-ref';\nexport class BaseToastActionDismissibleRef extends BaseToastDurationDismissibleRef {\n /** @hidden */\n constructor(containerInstance, overlayRef, positionStrategy) {\n super(containerInstance, overlayRef, positionStrategy);\n /** Subject for notifying the user that the Toast action-dismissible was called. */\n this.onAction$ = new Subject();\n /** Whether the Toast was dismissed using the action-dismissible button. */\n this.dismissedByAction = false;\n this.onAction().subscribe(() => this.dismiss());\n }\n /** Marks the Toast action-dismissible clicked. */\n dismissWithAction(reason = null) {\n if (!this.onAction$.closed) {\n this.dismissedByAction = true;\n this.onAction$.next(reason);\n this.onAction$.complete();\n }\n }\n /** Gets an observable that is notified when the Toast action-dismissible is called. */\n onAction() {\n return this.onAction$;\n }\n /**\n * @hidden\n * Cleans up the DOM after closing.\n */\n _finishDismiss() {\n if (!this.onAction$.closed) {\n this.onAction$.complete();\n }\n super._finishDismiss();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC1hY3Rpb24tZGlzbWlzc2libGUtcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvdG9hc3QvY2xhc3Nlcy9hY3Rpb24tZGlzbWlzc2libGUvYmFzZS10b2FzdC1hY3Rpb24tZGlzbWlzc2libGUtcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJM0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFFOUcsTUFBTSxPQUFnQiw2QkFHcEIsU0FBUSwrQkFBcUM7SUFPM0MsY0FBYztJQUNkLFlBQ0ksaUJBQW9FLEVBQ3BFLFVBQXNCLEVBQ3RCLGdCQUFtQztRQUVuQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFaM0QsbUZBQW1GO1FBQ2hFLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQUU1RCwyRUFBMkU7UUFDakUsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBVWhDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxpQkFBaUIsQ0FBQyxTQUF3QixJQUFJO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFFOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0wsQ0FBQztJQUVELHVGQUF1RjtJQUN2RixRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7O09BR0c7SUFDZ0IsY0FBYztRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLENBQUM7UUFFRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhc2VUb2FzdFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vYmFzZS10b2FzdC1wb3NpdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVRvYXN0Q29uZmlnIH0gZnJvbSAnLi4vYmFzZS10b2FzdC1jb25maWcnO1xuaW1wb3J0IHsgQmFzZVRvYXN0RHVyYXRpb25EaXNtaXNzaWJsZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2R1cmF0aW9uLWRpc21pc3NpYmxlL2Jhc2UtdG9hc3QtZHVyYXRpb24tZGlzbWlzc2libGUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNlVG9hc3REdXJhdGlvbkRpc21pc3NpYmxlUmVmIH0gZnJvbSAnLi4vZHVyYXRpb24tZGlzbWlzc2libGUvYmFzZS10b2FzdC1kdXJhdGlvbi1kaXNtaXNzaWJsZS1yZWYnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVRvYXN0QWN0aW9uRGlzbWlzc2libGVSZWY8XG4gICAgVCA9IGFueSxcbiAgICBQIGV4dGVuZHMgQmFzZVRvYXN0Q29uZmlnPFQ+ID0gYW55XG4+IGV4dGVuZHMgQmFzZVRvYXN0RHVyYXRpb25EaXNtaXNzaWJsZVJlZjxULCBQPiB7XG4gICAgLyoqIFN1YmplY3QgZm9yIG5vdGlmeWluZyB0aGUgdXNlciB0aGF0IHRoZSBUb2FzdCBhY3Rpb24tZGlzbWlzc2libGUgd2FzIGNhbGxlZC4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25BY3Rpb24kID0gbmV3IFN1YmplY3Q8c3RyaW5nIHwgbnVsbD4oKTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBUb2FzdCB3YXMgZGlzbWlzc2VkIHVzaW5nIHRoZSBhY3Rpb24tZGlzbWlzc2libGUgYnV0dG9uLiAqL1xuICAgIHByb3RlY3RlZCBkaXNtaXNzZWRCeUFjdGlvbiA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgICAgIGNvbnRhaW5lckluc3RhbmNlOiBCYXNlVG9hc3REdXJhdGlvbkRpc21pc3NpYmxlQ29udGFpbmVyQ29tcG9uZW50PFA+LFxuICAgICAgICBvdmVybGF5UmVmOiBPdmVybGF5UmVmLFxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBCYXNlVG9hc3RQb3NpdGlvblxuICAgICkge1xuICAgICAgICBzdXBlcihjb250YWluZXJJbnN0YW5jZSwgb3ZlcmxheVJlZiwgcG9zaXRpb25TdHJhdGVneSk7XG5cbiAgICAgICAgdGhpcy5vbkFjdGlvbigpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRpc21pc3MoKSk7XG4gICAgfVxuXG4gICAgLyoqIE1hcmtzIHRoZSBUb2FzdCBhY3Rpb24tZGlzbWlzc2libGUgY2xpY2tlZC4gKi9cbiAgICBkaXNtaXNzV2l0aEFjdGlvbihyZWFzb246IHN0cmluZyB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vbkFjdGlvbiQuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmRpc21pc3NlZEJ5QWN0aW9uID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5vbkFjdGlvbiQubmV4dChyZWFzb24pO1xuICAgICAgICAgICAgdGhpcy5vbkFjdGlvbiQuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBpcyBub3RpZmllZCB3aGVuIHRoZSBUb2FzdCBhY3Rpb24tZGlzbWlzc2libGUgaXMgY2FsbGVkLiAqL1xuICAgIG9uQWN0aW9uKCk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbkFjdGlvbiQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENsZWFucyB1cCB0aGUgRE9NIGFmdGVyIGNsb3NpbmcuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF9maW5pc2hEaXNtaXNzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMub25BY3Rpb24kLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5vbkFjdGlvbiQuY29tcGxldGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLl9maW5pc2hEaXNtaXNzKCk7XG4gICAgfVxufVxuIl19","import { ToastBottomCenterPosition } from '../base-toast-positions';\n/**\n * Base Configuration class used when opening a Toast.\n */\nexport class BaseToastConfig {\n constructor() {\n /**\n * Toast position strategy.\n */\n this.positionStrategy = ToastBottomCenterPosition;\n }\n}\n/**\n * Base Configuration class used when opening an animated Toast.\n */\nexport class BaseAnimatedToastConfig extends BaseToastConfig {\n constructor() {\n super(...arguments);\n /** Whether the toast should be animated. */\n this.animated = true;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy90b2FzdC9jbGFzc2VzL2Jhc2UtdG9hc3QtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2Rjs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBV0k7O1dBRUc7UUFDSCxxQkFBZ0IsR0FBdUIseUJBQXlCLENBQUM7SUFvQ3JFLENBQUM7Q0FBQTtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHVCQUFpQyxTQUFRLGVBQWtCO0lBQXhFOztRQUNJLDRDQUE0QztRQUM1QyxhQUFRLEdBQUksSUFBSSxDQUFDO0lBQ3JCLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUb2FzdFBvc2l0aW9uLCBUb2FzdEJvdHRvbUNlbnRlclBvc2l0aW9uIH0gZnJvbSAnLi4vYmFzZS10b2FzdC1wb3NpdGlvbnMnO1xuXG4vKipcbiAqIEJhc2UgQ29uZmlndXJhdGlvbiBjbGFzcyB1c2VkIHdoZW4gb3BlbmluZyBhIFRvYXN0LlxuICovXG5leHBvcnQgY2xhc3MgQmFzZVRvYXN0Q29uZmlnPFQgPSBhbnk+IHtcbiAgICAvKipcbiAgICAgKiBEYXRhIGJlaW5nIGluamVjdGVkIGludG8gdGhlIGNoaWxkIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBkYXRhPzogVDtcblxuICAgIC8qKlxuICAgICAqIEFyaWEtbGFiZWwgZm9yIHRoZSBtZXNzYWdlIHRvYXN0IGNvbXBvbmVudCBlbGVtZW50LlxuICAgICAqL1xuICAgIGFyaWFMYWJlbD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRvYXN0IHBvc2l0aW9uIHN0cmF0ZWd5LlxuICAgICAqL1xuICAgIHBvc2l0aW9uU3RyYXRlZ3k/OiBCYXNlVG9hc3RQb3NpdGlvbiA9IFRvYXN0Qm90dG9tQ2VudGVyUG9zaXRpb247XG5cbiAgICAvKipcbiAgICAgKiBUb2FzdCBtaW5pbXVtIHdpZHRoLlxuICAgICAqL1xuICAgIG1pbldpZHRoPzogbnVtYmVyIHwgc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVG9hc3QgbWF4aW11bSB3aWR0aC5cbiAgICAgKi9cbiAgICBtYXhXaWR0aD86IG51bWJlciB8IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRvYXN0IG1pbmltdW0gaGVpZ2h0LlxuICAgICAqL1xuICAgIG1pbkhlaWdodD86IG51bWJlciB8IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRvYXN0IG1heGltdW0gaGVpZ2h0LlxuICAgICAqL1xuICAgIG1heEhlaWdodD86IG51bWJlciB8IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRvYXN0IHdpZHRoLlxuICAgICAqL1xuICAgIHdpZHRoPzogbnVtYmVyIHwgc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVG9hc3QgaGVpZ2h0LlxuICAgICAqL1xuICAgIGhlaWdodD86IG51bWJlciB8IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRvYXN0IElELlxuICAgICAqL1xuICAgIGlkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgQ29uZmlndXJhdGlvbiBjbGFzcyB1c2VkIHdoZW4gb3BlbmluZyBhbiBhbmltYXRlZCBUb2FzdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VBbmltYXRlZFRvYXN0Q29uZmlnPFQgPSBhbnk+IGV4dGVuZHMgQmFzZVRvYXN0Q29uZmlnPFQ+IHtcbiAgICAvKiogV2hldGhlciB0aGUgdG9hc3Qgc2hvdWxkIGJlIGFuaW1hdGVkLiAqL1xuICAgIGFuaW1hdGVkPyA9IHRydWU7XG59XG4iXX0=","import { __decorate, __metadata } from \"tslib\";\nimport { BasePortalOutlet, CdkPortalOutlet } from '@angular/cdk/portal';\nimport { Directive, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { coerceCssPixel } from '../../decorators';\nimport * as i0 from \"@angular/core\";\nlet toastUniqueId = 0;\nexport class BaseToastContainerComponent extends BasePortalOutlet {\n /** @hidden */\n constructor(config) {\n super();\n this.config = config;\n /** Subject for notifying that the Toast has finished exiting from view. */\n this.onExit$ = new Subject();\n /** Subject for notifying that the Toast has finished entering the view. */\n this.onEnter$ = new Subject();\n this.minWidth = this.config.minWidth;\n this.maxWidth = this.config.maxWidth;\n this.width = this.config.width;\n this.minHeight = this.config.minHeight;\n this.maxHeight = this.config.maxHeight;\n this.height = this.config.height;\n this.ariaLabel = this.config.ariaLabel;\n this.id = this.config.id || 'fd-message-toast-' + toastUniqueId++;\n }\n /**\n * Attaches component to the portal.\n */\n attachComponentPortal(portal) {\n return this._portalOutlet.attachComponentPortal(portal);\n }\n /**\n * Attaches Template to the portal.\n * @param portal\n */\n attachTemplatePortal(portal) {\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseToastContainerComponent, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: BaseToastContainerComponent, isStandalone: true, viewQueries: [{ propertyName: \"_portalOutlet\", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }], usesInheritance: true, ngImport: i0 }); }\n}\n__decorate([\n coerceCssPixel,\n __metadata(\"design:type\", Object)\n], BaseToastContainerComponent.prototype, \"minWidth\", void 0);\n__decorate([\n coerceCssPixel,\n __metadata(\"design:type\", Object)\n], BaseToastContainerComponent.prototype, \"maxWidth\", void 0);\n__decorate([\n coerceCssPixel,\n __metadata(\"design:type\", Object)\n], BaseToastContainerComponent.prototype, \"width\", void 0);\n__decorate([\n coerceCssPixel,\n __metadata(\"design:type\", Object)\n], BaseToastContainerComponent.prototype, \"minHeight\", void 0);\n__decorate([\n coerceCssPixel,\n __metadata(\"design:type\", Object)\n], BaseToastContainerComponent.prototype, \"maxHeight\", void 0);\n__decorate([\n coerceCssPixel,\n __metadata(\"design:type\", Object)\n], BaseToastContainerComponent.prototype, \"height\", void 0);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseToastContainerComponent, decorators: [{\n type: Directive\n }], ctorParameters: () => [{ type: undefined }], propDecorators: { _portalOutlet: [{\n type: ViewChild,\n args: [CdkPortalOutlet, { static: true }]\n }], minWidth: [], maxWidth: [], width: [], minHeight: [], maxHeight: [], height: [] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvdG9hc3QvY2xhc3Nlcy9iYXNlLXRvYXN0LWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQW1DLE1BQU0scUJBQXFCLENBQUM7QUFDekcsT0FBTyxFQUFnQixTQUFTLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFLbEQsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBR3RCLE1BQU0sT0FBZ0IsMkJBQ2xCLFNBQVEsZ0JBQWdCO0lBdUR4QixjQUFjO0lBQ2QsWUFBNkIsTUFBUztRQUNsQyxLQUFLLEVBQUUsQ0FBQztRQURpQixXQUFNLEdBQU4sTUFBTSxDQUFHO1FBaEJ0QywyRUFBMkU7UUFDbEUsWUFBTyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRWhELDJFQUEyRTtRQUNsRSxhQUFRLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFjN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN2QyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLG1CQUFtQixHQUFHLGFBQWEsRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7T0FFRztJQUNILHFCQUFxQixDQUFJLE1BQTBCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsb0JBQW9CLENBQUksTUFBeUI7UUFDN0MsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNELENBQUM7OEdBbEZpQiwyQkFBMkI7a0dBQTNCLDJCQUEyQiw2RkFjbEMsZUFBZTs7QUFLMUI7SUFEQyxjQUFjOzs2REFDbUI7QUFJbEM7SUFEQyxjQUFjOzs2REFDbUI7QUFJbEM7SUFEQyxjQUFjOzswREFDZ0I7QUFJL0I7SUFEQyxjQUFjOzs4REFDb0I7QUFJbkM7SUFEQyxjQUFjOzs4REFDb0I7QUFJbkM7SUFEQyxjQUFjOzsyREFDaUI7MkZBdkNkLDJCQUEyQjtrQkFEaEQsU0FBUzsyRUFnQk4sYUFBYTtzQkFEWixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSzVDLFFBQVEsTUFJUixRQUFRLE1BSVIsS0FBSyxNQUlMLFNBQVMsTUFJVCxTQUFTLE1BSVQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBCYXNlUG9ydGFsT3V0bGV0LCBDZGtQb3J0YWxPdXRsZXQsIENvbXBvbmVudFBvcnRhbCwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgRGlyZWN0aXZlLCBFbWJlZGRlZFZpZXdSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29lcmNlQ3NzUGl4ZWwgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL251bGxhYmxlJztcbmltcG9ydCB7IFRvYXN0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90b2FzdC1jb250YWluZXItY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYXNlVG9hc3RDb25maWcgfSBmcm9tICcuL2Jhc2UtdG9hc3QtY29uZmlnJztcblxubGV0IHRvYXN0VW5pcXVlSWQgPSAwO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlVG9hc3RDb250YWluZXJDb21wb25lbnQ8UCBleHRlbmRzIEJhc2VUb2FzdENvbmZpZyA9IEJhc2VUb2FzdENvbmZpZz5cbiAgICBleHRlbmRzIEJhc2VQb3J0YWxPdXRsZXRcbiAgICBpbXBsZW1lbnRzIFRvYXN0Q29udGFpbmVyQ29tcG9uZW50PFA+XG57XG4gICAgLyoqIE1ldGhvZCwgd2hpY2ggaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIFRvYXN0IGNvbXBvbmVudCBpcyByZWFkeSB0byBiZSBzaG93bi4gVXNlZCB0byB0cmlnZ2VyIGFuaW1hdGlvbnMuICovXG4gICAgYWJzdHJhY3QgZW50ZXIoKTogdm9pZDtcblxuICAgIC8qKiBNZXRob2QsIHdoaWNoIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBUb2FzdCBjb21wb25lbnQgaXMgcmVhZHkgdG8gYmUgcmVtb3ZlZC4gVXNlZCB0byB0cmlnZ2VyIGFuaW1hdGlvbnMuICovXG4gICAgYWJzdHJhY3QgZXhpdCgpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRoZSBwb3J0YWwgb3V0bGV0IGluc2lkZSB0aGlzIGNvbnRhaW5lciBpbnRvIHdoaWNoIHRoZSBUb2FzdCBjb250ZW50IHdpbGwgYmUgbG9hZGVkLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoQ2RrUG9ydGFsT3V0bGV0LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIF9wb3J0YWxPdXRsZXQhOiBDZGtQb3J0YWxPdXRsZXQ7XG5cbiAgICAvKiogTWluIHdpZHRoIG9mIHRoZSB0b2FzdCBjb21wb25lbnQuICovXG4gICAgQGNvZXJjZUNzc1BpeGVsXG4gICAgbWluV2lkdGg/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xuXG4gICAgLyoqIE1heCB3aWR0aCBvZiB0aGUgdG9hc3QgY29tcG9uZW50LiAqL1xuICAgIEBjb2VyY2VDc3NQaXhlbFxuICAgIG1heFdpZHRoPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDtcblxuICAgIC8qKiBXaWR0aCBvZiB0aGUgdG9hc3QgY29tcG9uZW50LiAqL1xuICAgIEBjb2VyY2VDc3NQaXhlbFxuICAgIHdpZHRoPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDtcblxuICAgIC8qKiBNaW4gaGVpZ2h0IG9mIHRoZSB0b2FzdCBjb21wb25lbnQuICovXG4gICAgQGNvZXJjZUNzc1BpeGVsXG4gICAgbWluSGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDtcblxuICAgIC8qKiBNYXggaGVpZ2h0IG9mIHRoZSB0b2FzdCBjb21wb25lbnQuICovXG4gICAgQGNvZXJjZUNzc1BpeGVsXG4gICAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDtcblxuICAgIC8qKiBIZWlnaHQgb2YgdGhlIHRvYXN0IGNvbXBvbmVudC4gKi9cbiAgICBAY29lcmNlQ3NzUGl4ZWxcbiAgICBoZWlnaHQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xuXG4gICAgLyoqIFN1YmplY3QgZm9yIG5vdGlmeWluZyB0aGF0IHRoZSBUb2FzdCBoYXMgZmluaXNoZWQgZXhpdGluZyBmcm9tIHZpZXcuICovXG4gICAgcmVhZG9ubHkgb25FeGl0JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICAvKiogU3ViamVjdCBmb3Igbm90aWZ5aW5nIHRoYXQgdGhlIFRvYXN0IGhhcyBmaW5pc2hlZCBlbnRlcmluZyB0aGUgdmlldy4gKi9cbiAgICByZWFkb25seSBvbkVudGVyJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICAvKiogT3ZlcmxheSByZWZlcmVuY2UgKi9cbiAgICBvdmVybGF5UmVmITogT3ZlcmxheVJlZjtcblxuICAgIC8qKiBBcmlhIGxhYmVsLiAqL1xuICAgIGFyaWFMYWJlbDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBJRCBvZiB0aGUgVG9hc3QuICovXG4gICAgaWQ6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihwdWJsaWMgY29uZmlnOiBQKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWluV2lkdGggPSB0aGlzLmNvbmZpZy5taW5XaWR0aDtcbiAgICAgICAgdGhpcy5tYXhXaWR0aCA9IHRoaXMuY29uZmlnLm1heFdpZHRoO1xuICAgICAgICB0aGlzLndpZHRoID0gdGhpcy5jb25maWcud2lkdGg7XG4gICAgICAgIHRoaXMubWluSGVpZ2h0ID0gdGhpcy5jb25maWcubWluSGVpZ2h0O1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuY29uZmlnLm1heEhlaWdodDtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLmNvbmZpZy5oZWlnaHQ7XG4gICAgICAgIHRoaXMuYXJpYUxhYmVsID0gdGhpcy5jb25maWcuYXJpYUxhYmVsO1xuICAgICAgICB0aGlzLmlkID0gdGhpcy5jb25maWcuaWQgfHwgJ2ZkLW1lc3NhZ2UtdG9hc3QtJyArIHRvYXN0VW5pcXVlSWQrKztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBjb21wb25lbnQgdG8gdGhlIHBvcnRhbC5cbiAgICAgKi9cbiAgICBhdHRhY2hDb21wb25lbnRQb3J0YWw8Qz4ocG9ydGFsOiBDb21wb25lbnRQb3J0YWw8Qz4pOiBDb21wb25lbnRSZWY8Qz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaENvbXBvbmVudFBvcnRhbChwb3J0YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIFRlbXBsYXRlIHRvIHRoZSBwb3J0YWwuXG4gICAgICogQHBhcmFtIHBvcnRhbFxuICAgICAqL1xuICAgIGF0dGFjaFRlbXBsYXRlUG9ydGFsPFQ+KHBvcnRhbDogVGVtcGxhdGVQb3J0YWw8VD4pOiBFbWJlZGRlZFZpZXdSZWY8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaFRlbXBsYXRlUG9ydGFsKHBvcnRhbCk7XG4gICAgfVxufVxuIl19","import { OverlayContainer } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Custom overlay container for CDK Overlay.\n */\nexport class BaseToastOverlayContainer extends OverlayContainer {\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n const containerElement = super.getContainerElement();\n containerElement.classList.add('fn-toast-overlay-container');\n return containerElement;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseToastOverlayContainer, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseToastOverlayContainer }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseToastOverlayContainer, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC1vdmVybGF5LWNvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL3RvYXN0L2NsYXNzZXMvYmFzZS10b2FzdC1vdmVybGF5LWNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQzs7R0FFRztBQUVILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxnQkFBZ0I7SUFDM0Q7Ozs7O09BS0c7SUFDTSxtQkFBbUI7UUFDeEIsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUVyRCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFN0QsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDOzhHQWJRLHlCQUF5QjtrSEFBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheUNvbnRhaW5lciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBDdXN0b20gb3ZlcmxheSBjb250YWluZXIgZm9yIENESyBPdmVybGF5LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQmFzZVRvYXN0T3ZlcmxheUNvbnRhaW5lciBleHRlbmRzIE92ZXJsYXlDb250YWluZXIge1xuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIG92ZXJsYXkgY29udGFpbmVyIGVsZW1lbnQuIEl0IHdpbGwgbGF6aWx5XG4gICAgICogY3JlYXRlIHRoZSBlbGVtZW50IHRoZSBmaXJzdCB0aW1lIGl0IGlzIGNhbGxlZCB0byBmYWNpbGl0YXRlIHVzaW5nXG4gICAgICogdGhlIGNvbnRhaW5lciBpbiBub24tYnJvd3NlciBlbnZpcm9ubWVudHMuXG4gICAgICogQHJldHVybnMgdGhlIGNvbnRhaW5lciBlbGVtZW50XG4gICAgICovXG4gICAgb3ZlcnJpZGUgZ2V0Q29udGFpbmVyRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPSBzdXBlci5nZXRDb250YWluZXJFbGVtZW50KCk7XG5cbiAgICAgICAgY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmbi10b2FzdC1vdmVybGF5LWNvbnRhaW5lcicpO1xuXG4gICAgICAgIHJldHVybiBjb250YWluZXJFbGVtZW50O1xuICAgIH1cbn1cbiJdfQ==","import { BaseToastConfig } from '../base-toast-config';\n/**\n * Base configuration class used when opening a Toast which automatically destroys after some time.\n */\nexport class BaseToastDurationDismissibleConfig extends BaseToastConfig {\n constructor() {\n super(...arguments);\n /**\n * The length of time in milliseconds to wait before automatically dismissing the Message Toast.\n */\n this.duration = 3000;\n /**\n * Whether the message toast should stay visible if the cursor is over it.\n * Default is `true`\n */\n this.mousePersist = true;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC1kdXJhdGlvbi1kaXNtaXNzaWJsZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay91dGlscy90b2FzdC9jbGFzc2VzL2R1cmF0aW9uLWRpc21pc3NpYmxlL2Jhc2UtdG9hc3QtZHVyYXRpb24tZGlzbWlzc2libGUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQ0FBNEMsU0FBUSxlQUFrQjtJQUFuRjs7UUFDSTs7V0FFRztRQUNILGFBQVEsR0FBSSxJQUFJLENBQUM7UUFDakI7OztXQUdHO1FBQ0gsaUJBQVksR0FBYSxJQUFJLENBQUM7SUFDbEMsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVRvYXN0Q29uZmlnIH0gZnJvbSAnLi4vYmFzZS10b2FzdC1jb25maWcnO1xuXG4vKipcbiAqIEJhc2UgY29uZmlndXJhdGlvbiBjbGFzcyB1c2VkIHdoZW4gb3BlbmluZyBhIFRvYXN0IHdoaWNoIGF1dG9tYXRpY2FsbHkgZGVzdHJveXMgYWZ0ZXIgc29tZSB0aW1lLlxuICovXG5leHBvcnQgY2xhc3MgQmFzZVRvYXN0RHVyYXRpb25EaXNtaXNzaWJsZUNvbmZpZzxUID0gYW55PiBleHRlbmRzIEJhc2VUb2FzdENvbmZpZzxUPiB7XG4gICAgLyoqXG4gICAgICogVGhlIGxlbmd0aCBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBhdXRvbWF0aWNhbGx5IGRpc21pc3NpbmcgdGhlIE1lc3NhZ2UgVG9hc3QuXG4gICAgICovXG4gICAgZHVyYXRpb24/ID0gMzAwMDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBtZXNzYWdlIHRvYXN0IHNob3VsZCBzdGF5IHZpc2libGUgaWYgdGhlIGN1cnNvciBpcyBvdmVyIGl0LlxuICAgICAqIERlZmF1bHQgaXMgYHRydWVgXG4gICAgICovXG4gICAgbW91c2VQZXJzaXN0PzogYm9vbGVhbiA9IHRydWU7XG59XG4iXX0=","import { Directive, HostBinding, HostListener, inject, NgZone, signal } from '@angular/core';\nimport { take } from 'rxjs';\nimport { BaseToastContainerComponent } from './base-toast-container.component';\nimport * as i0 from \"@angular/core\";\nexport class BaseToastAnimatedContainerComponent extends BaseToastContainerComponent {\n /**\n * @hidden\n * The state of the Message Toast animations.\n */\n get _animationState() {\n return this._animationStateSignal();\n }\n /** @hidden */\n constructor(config) {\n super(config);\n /**\n * @hidden\n * Whether the animations should be disabled.\n */\n this._animationsDisabled = false;\n /** @hidden */\n this._ngZone = inject(NgZone);\n /** @hidden */\n this._animationStateSignal = signal('void', ...(ngDevMode ? [{ debugName: \"_animationStateSignal\" }] : []));\n this._animationsDisabled = !config.animated;\n }\n /**\n * @hidden\n * Handle end of animations, updating the state of the Message Toast.\n */\n _onAnimationEnd(event) {\n const { fromState, toState } = event;\n if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n this._completeExit();\n }\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this.onEnter$;\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n /** Begin animation of Message Toast entrance into view. */\n enter() {\n this._animationStateSignal.set('visible');\n }\n /** Begin animation of Message Toast removal. */\n exit() {\n this._animationStateSignal.set('hidden');\n }\n /** @hidden */\n ngOnDestroy() {\n this._completeExit();\n }\n /**\n * @hidden\n * Waits for the zone to settle before removing the element. Helps prevent\n * errors where we end up removing an element which is in the middle of an animation.\n */\n _completeExit() {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onExit = this.onExit$;\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n onExit.next();\n onExit.complete();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseToastAnimatedContainerComponent, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: BaseToastAnimatedContainerComponent, isStandalone: true, host: { listeners: { \"@state.done\": \"_onAnimationEnd($event)\" }, properties: { \"@state\": \"this._animationState\", \"@.disabled\": \"this._animationsDisabled\" } }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseToastAnimatedContainerComponent, decorators: [{\n type: Directive\n }], ctorParameters: () => [{ type: undefined }], propDecorators: { _animationState: [{\n type: HostBinding,\n args: ['@state']\n }], _animationsDisabled: [{\n type: HostBinding,\n args: ['@.disabled']\n }], _onAnimationEnd: [{\n type: HostListener,\n args: ['@state.done', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC1hbmltYXRlZC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvdG9hc3QvY2xhc3Nlcy9iYXNlLXRvYXN0LWFuaW1hdGVkLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBRy9FLE1BQU0sT0FBZ0IsbUNBQ2xCLFNBQVEsMkJBQThCO0lBR3RDOzs7T0FHRztJQUNILElBQ2MsZUFBZTtRQUN6QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFjRCxjQUFjO0lBQ2QsWUFBWSxNQUFTO1FBQ2pCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQWZsQjs7O1dBR0c7UUFFTyx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFdEMsY0FBYztRQUNKLFlBQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkMsY0FBYztRQUNOLDBCQUFxQixHQUFHLE1BQU0sQ0FBQyxNQUFNLGlFQUFDLENBQUM7UUFLM0MsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7OztPQUdHO0lBRU8sZUFBZSxDQUFDLEtBQXFCO1FBQzNDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXJDLElBQUksQ0FBQyxPQUFPLEtBQUssTUFBTSxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QiwwREFBMEQ7WUFDMUQsc0NBQXNDO1lBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFFOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNsQixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsS0FBSztRQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxJQUFJO1FBQ0EsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxhQUFhO1FBQ2pCLDBEQUEwRDtRQUMxRCxzQ0FBc0M7UUFDdEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUU1QixJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3ZELE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBcEZpQixtQ0FBbUM7a0dBQW5DLG1DQUFtQzs7MkZBQW5DLG1DQUFtQztrQkFEeEQsU0FBUzsyRUFVUSxlQUFlO3NCQUQ1QixXQUFXO3VCQUFDLFFBQVE7Z0JBU1gsbUJBQW1CO3NCQUQ1QixXQUFXO3VCQUFDLFlBQVk7Z0JBb0JmLGVBQWU7c0JBRHhCLFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBOZ1pvbmUsIE9uRGVzdHJveSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlQW5pbWF0ZWRUb2FzdENvbmZpZyB9IGZyb20gJy4vYmFzZS10b2FzdC1jb25maWcnO1xuaW1wb3J0IHsgQmFzZVRvYXN0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXRvYXN0LWNvbnRhaW5lci5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlVG9hc3RBbmltYXRlZENvbnRhaW5lckNvbXBvbmVudDxQIGV4dGVuZHMgQmFzZUFuaW1hdGVkVG9hc3RDb25maWc+XG4gICAgZXh0ZW5kcyBCYXNlVG9hc3RDb250YWluZXJDb21wb25lbnQ8UD5cbiAgICBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUaGUgc3RhdGUgb2YgdGhlIE1lc3NhZ2UgVG9hc3QgYW5pbWF0aW9ucy5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ0BzdGF0ZScpXG4gICAgcHJvdGVjdGVkIGdldCBfYW5pbWF0aW9uU3RhdGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FuaW1hdGlvblN0YXRlU2lnbmFsKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBXaGV0aGVyIHRoZSBhbmltYXRpb25zIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ0AuZGlzYWJsZWQnKVxuICAgIHByb3RlY3RlZCBfYW5pbWF0aW9uc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FuaW1hdGlvblN0YXRlU2lnbmFsID0gc2lnbmFsKCd2b2lkJyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKGNvbmZpZzogUCkge1xuICAgICAgICBzdXBlcihjb25maWcpO1xuICAgICAgICB0aGlzLl9hbmltYXRpb25zRGlzYWJsZWQgPSAhY29uZmlnLmFuaW1hdGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBIYW5kbGUgZW5kIG9mIGFuaW1hdGlvbnMsIHVwZGF0aW5nIHRoZSBzdGF0ZSBvZiB0aGUgTWVzc2FnZSBUb2FzdC5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdAc3RhdGUuZG9uZScsIFsnJGV2ZW50J10pXG4gICAgcHJvdGVjdGVkIF9vbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmcm9tU3RhdGUsIHRvU3RhdGUgfSA9IGV2ZW50O1xuXG4gICAgICAgIGlmICgodG9TdGF0ZSA9PT0gJ3ZvaWQnICYmIGZyb21TdGF0ZSAhPT0gJ3ZvaWQnKSB8fCB0b1N0YXRlID09PSAnaGlkZGVuJykge1xuICAgICAgICAgICAgdGhpcy5fY29tcGxldGVFeGl0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodG9TdGF0ZSA9PT0gJ3Zpc2libGUnKSB7XG4gICAgICAgICAgICAvLyBOb3RlOiB3ZSBzaG91bGRuJ3QgdXNlIGB0aGlzYCBpbnNpZGUgdGhlIHpvbmUgY2FsbGJhY2ssXG4gICAgICAgICAgICAvLyBiZWNhdXNlIGl0IGNhbiBjYXVzZSBhIG1lbW9yeSBsZWFrLlxuICAgICAgICAgICAgY29uc3Qgb25FbnRlciA9IHRoaXMub25FbnRlciQ7XG5cbiAgICAgICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uRW50ZXIubmV4dCgpO1xuICAgICAgICAgICAgICAgIG9uRW50ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEJlZ2luIGFuaW1hdGlvbiBvZiBNZXNzYWdlIFRvYXN0IGVudHJhbmNlIGludG8gdmlldy4gKi9cbiAgICBlbnRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYW5pbWF0aW9uU3RhdGVTaWduYWwuc2V0KCd2aXNpYmxlJyk7XG4gICAgfVxuXG4gICAgLyoqIEJlZ2luIGFuaW1hdGlvbiBvZiBNZXNzYWdlIFRvYXN0IHJlbW92YWwuICovXG4gICAgZXhpdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYW5pbWF0aW9uU3RhdGVTaWduYWwuc2V0KCdoaWRkZW4nKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb21wbGV0ZUV4aXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogV2FpdHMgZm9yIHRoZSB6b25lIHRvIHNldHRsZSBiZWZvcmUgcmVtb3ZpbmcgdGhlIGVsZW1lbnQuIEhlbHBzIHByZXZlbnRcbiAgICAgKiBlcnJvcnMgd2hlcmUgd2UgZW5kIHVwIHJlbW92aW5nIGFuIGVsZW1lbnQgd2hpY2ggaXMgaW4gdGhlIG1pZGRsZSBvZiBhbiBhbmltYXRpb24uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29tcGxldGVFeGl0KCk6IHZvaWQge1xuICAgICAgICAvLyBOb3RlOiB3ZSBzaG91bGRuJ3QgdXNlIGB0aGlzYCBpbnNpZGUgdGhlIHpvbmUgY2FsbGJhY2ssXG4gICAgICAgIC8vIGJlY2F1c2UgaXQgY2FuIGNhdXNlIGEgbWVtb3J5IGxlYWsuXG4gICAgICAgIGNvbnN0IG9uRXhpdCA9IHRoaXMub25FeGl0JDtcblxuICAgICAgICB0aGlzLl9uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBvbkV4aXQubmV4dCgpO1xuICAgICAgICAgICAgb25FeGl0LmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==","import { Directive, HostListener } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BaseToastAnimatedContainerComponent } from '../base-toast-animated-container.component';\nimport * as i0 from \"@angular/core\";\nexport class BaseToastDurationDismissibleContainerComponent extends BaseToastAnimatedContainerComponent {\n constructor() {\n super(...arguments);\n /** Subject for notifying that component is out of hover */\n this.mouseleave$ = new Subject();\n /** Subject for notifying that component is hovered */\n this.mouseover$ = new Subject();\n }\n /** Emits mouseleave$ subject when component is out of hover. */\n onMouseLeave() {\n this.mouseleave$.next();\n }\n /** Emits mouseover$ subject when component is hovered. */\n onMouseOver() {\n this.mouseover$.next();\n }\n /** @Hidden */\n ngOnDestroy() {\n this.mouseover$.complete();\n this.mouseleave$.complete();\n super.ngOnDestroy();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseToastDurationDismissibleContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: BaseToastDurationDismissibleContainerComponent, isStandalone: true, host: { listeners: { \"mouseleave\": \"onMouseLeave()\", \"mouseover\": \"onMouseOver()\" } }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: BaseToastDurationDismissibleContainerComponent, decorators: [{\n type: Directive\n }], propDecorators: { onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }], onMouseOver: [{\n type: HostListener,\n args: ['mouseover']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC1kdXJhdGlvbi1kaXNtaXNzaWJsZS1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvdG9hc3QvY2xhc3Nlcy9kdXJhdGlvbi1kaXNtaXNzaWJsZS9iYXNlLXRvYXN0LWR1cmF0aW9uLWRpc21pc3NpYmxlLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7QUFJakcsTUFBTSxPQUFnQiw4Q0FDbEIsU0FBUSxtQ0FBc0M7SUFGbEQ7O1FBS0ksMkRBQTJEO1FBQ2xELGdCQUFXLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFcEQsc0RBQXNEO1FBQzdDLGVBQVUsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztLQXFCdEQ7SUFuQkcsZ0VBQWdFO0lBRWhFLFlBQVk7UUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCwwREFBMEQ7SUFFMUQsV0FBVztRQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWM7SUFDTCxXQUFXO1FBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU1QixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs4R0E1QmlCLDhDQUE4QztrR0FBOUMsOENBQThDOzsyRkFBOUMsOENBQThDO2tCQURuRSxTQUFTOzhCQWFOLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZO2dCQU8xQixXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRvYXN0RHVyYXRpb25EaXNtaXNzaWJsZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdG9hc3QtZHVyYXRpb24tZGlzbWlzc2libGUtY29udGFpbmVyLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFzZVRvYXN0QW5pbWF0ZWRDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLXRvYXN0LWFuaW1hdGVkLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFzZVRvYXN0Q29uZmlnIH0gZnJvbSAnLi4vYmFzZS10b2FzdC1jb25maWcnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlVG9hc3REdXJhdGlvbkRpc21pc3NpYmxlQ29udGFpbmVyQ29tcG9uZW50PFAgZXh0ZW5kcyBCYXNlVG9hc3RDb25maWc+XG4gICAgZXh0ZW5kcyBCYXNlVG9hc3RBbmltYXRlZENvbnRhaW5lckNvbXBvbmVudDxQPlxuICAgIGltcGxlbWVudHMgT25EZXN0cm95LCBUb2FzdER1cmF0aW9uRGlzbWlzc2libGVDb250YWluZXJDb21wb25lbnQ8UD5cbntcbiAgICAvKiogU3ViamVjdCBmb3Igbm90aWZ5aW5nIHRoYXQgY29tcG9uZW50IGlzIG91dCBvZiBob3ZlciAqL1xuICAgIHJlYWRvbmx5IG1vdXNlbGVhdmUkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIC8qKiBTdWJqZWN0IGZvciBub3RpZnlpbmcgdGhhdCBjb21wb25lbnQgaXMgaG92ZXJlZCAqL1xuICAgIHJlYWRvbmx5IG1vdXNlb3ZlciQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgLyoqIEVtaXRzIG1vdXNlbGVhdmUkIHN1YmplY3Qgd2hlbiBjb21wb25lbnQgaXMgb3V0IG9mIGhvdmVyLiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb3VzZWxlYXZlJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEVtaXRzIG1vdXNlb3ZlciQgc3ViamVjdCB3aGVuIGNvbXBvbmVudCBpcyBob3ZlcmVkLiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3ZlcicpXG4gICAgb25Nb3VzZU92ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW91c2VvdmVyJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb3VzZW92ZXIkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMubW91c2VsZWF2ZSQuY29tcGxldGUoKTtcblxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==","import { BaseToastService } from '../../base-toast.service';\nexport class BaseDismissibleToastService extends BaseToastService {\n /**\n * Animates the old Toast out and the new one in.\n */\n animateToast(toastRef) {\n super.animateToast(toastRef);\n const config = toastRef.containerInstance.config;\n // If dismiss timeout is provided, set up dismiss based on after the Notification is opened.\n if (config.duration && config.duration > 0) {\n toastRef.afterOpened().subscribe(() => {\n toastRef.dismissAfter(config.duration);\n if (config.mousePersist) {\n toastRef.containerInstance.mouseover$.subscribe(() => {\n toastRef.cancelDismiss();\n });\n toastRef.containerInstance.mouseleave$.subscribe(() => {\n toastRef.dismissAfter(config.duration);\n });\n }\n });\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b2FzdC1kdXJhdGlvbi1kaXNtaXNzaWJsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvdXRpbHMvdG9hc3QvY2xhc3Nlcy9kdXJhdGlvbi1kaXNtaXNzaWJsZS9iYXNlLXRvYXN0LWR1cmF0aW9uLWRpc21pc3NpYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFLNUQsTUFBTSxPQUFnQiwyQkFHcEIsU0FBUSxnQkFBc0I7SUFDNUI7O09BRUc7SUFDZ0IsWUFBWSxDQUFJLFFBQXNFO1FBQ3JHLEtBQUssQ0FBQyxZQUFZLENBQUksUUFBUSxDQUFDLENBQUM7UUFFaEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUVqRCw0RkFBNEY7UUFDNUYsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2xDLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQWtCLENBQUMsQ0FBQztnQkFFakQsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ3RCLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTt3QkFDakQsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUM3QixDQUFDLENBQUMsQ0FBQztvQkFFSCxRQUFRLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7d0JBQ2xELFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQWtCLENBQUMsQ0FBQztvQkFDckQsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVtYmVkZGVkVmlld1JlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZVRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL2Jhc2UtdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlVG9hc3REdXJhdGlvbkRpc21pc3NpYmxlQ29uZmlnIH0gZnJvbSAnLi9iYXNlLXRvYXN0LWR1cmF0aW9uLWRpc21pc3NpYmxlLWNvbmZpZyc7XG5pbXBvcnQgeyBCYXNlVG9hc3REdXJhdGlvbkRpc21pc3NpYmxlQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLXRvYXN0LWR1cmF0aW9uLWRpc21pc3NpYmxlLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFzZVRvYXN0RHVyYXRpb25EaXNtaXNzaWJsZVJlZiB9IGZyb20gJy4vYmFzZS10b2FzdC1kdXJhdGlvbi1kaXNtaXNzaWJsZS1yZWYnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZURpc21pc3NpYmxlVG9hc3RTZXJ2aWNlPFxuICAgIFAgZXh0ZW5kcyBCYXNlVG9hc3REdXJhdGlvbkRpc21pc3NpYmxlQ29uZmlnLFxuICAgIEMgZXh0ZW5kcyBCYXNlVG9hc3REdXJhdGlvbkRpc21pc3NpYmxlQ29udGFpbmVyQ29tcG9uZW50PFA+ID0gQmFzZVRvYXN0RHVyYXRpb25EaXNtaXNzaWJsZUNvbnRhaW5lckNvbXBvbmVudDxQPlxuPiBleHRlbmRzIEJhc2VUb2FzdFNlcnZpY2U8UCwgQz4ge1xuICAgIC8qKlxuICAgICAqIEFuaW1hdGVzIHRoZSBvbGQgVG9hc3Qgb3V0IGFuZCB0aGUgbmV3IG9uZSBpbi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYW5pbWF0ZVRvYXN0PFQ+KHRvYXN0UmVmOiBCYXNlVG9hc3REdXJhdGlvbkRpc21pc3NpYmxlUmVmPFQgfCBFbWJlZGRlZFZpZXdSZWY8YW55PiwgUD4pOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuYW5pbWF0ZVRvYXN0PFQ+KHRvYXN0UmVmKTtcblxuICAgICAgICBjb25zdCBjb25maWcgPSB0b2FzdFJlZi5jb250YWluZXJJbnN0YW5jZS5jb25maWc7XG5cbiAgICAgICAgLy8gSWYgZGlzbWlzcyB0aW1lb3V0IGlzIHByb3ZpZGVkLCBzZXQgdXAgZGlzbWlzcyBiYXNlZCBvbiBhZnRlciB0aGUgTm90aWZpY2F0aW9uIGlzIG9wZW5lZC5cbiAgICAgICAgaWYgKGNvbmZpZy5kdXJhdGlvbiAmJiBjb25maWcuZHVyYXRpb24gPiAwKSB7XG4gICAgICAgICAgICB0b2FzdFJlZi5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdG9hc3RSZWYuZGlzbWlzc0FmdGVyKGNvbmZpZy5kdXJhdGlvbiBhcyBudW1iZXIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5tb3VzZVBlcnNpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9hc3RSZWYuY29udGFpbmVySW5zdGFuY2UubW91c2VvdmVyJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RSZWYuY2FuY2VsRGlzbWlzcygpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0b2FzdFJlZi5jb250YWluZXJJbnN0YW5jZS5tb3VzZWxlYXZlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RSZWYuZGlzbWlzc0FmdGVyKGNvbmZpZy5kdXJhdGlvbiBhcyBudW1iZXIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LWNkay11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3V0aWxzL2Z1bmRhbWVudGFsLW5neC1jZGstdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":["map","merge","i1","switchMap","filter","i1.FdkClickedProvider","i1.AttributeObserver","i1.DisabledObserver","i1.RtlService","i1.FocusKeyManagerListDirective","distinctUntilChanged","startWith","i1.TabbableElementService","debounceTime","i1.ReadonlyObserver","equal","i1.FdkDisabledProvider","i2.FdkReadonlyProvider","i3.SelectionService","i4.FdkClickedProvider","i1.SelectionService","i1.DndKeyboardGroupDirective","tap","take"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-cdk-utils.mjs","sources":["../../../../libs/cdk/utils/functions/consumer-provider-factory.ts","../../../../libs/cdk/utils/functions/element-size.ts","../../../../libs/cdk/utils/functions/get-document-font-size.ts","../../../../libs/cdk/utils/functions/intersection-observable.ts","../../../../libs/cdk/utils/functions/is-compact-density.ts","../../../../libs/cdk/utils/functions/is-odd.ts","../../../../libs/cdk/utils/functions/key-util.ts","../../../../libs/cdk/utils/functions/lodash-utils.ts","../../../../libs/cdk/utils/tokens/module-deprecations.token.ts","../../../../libs/cdk/utils/functions/module-deprecations-provider.ts","../../../../libs/cdk/utils/functions/parser-file-size.ts","../../../../libs/cdk/utils/functions/random-color-accent.ts","../../../../libs/cdk/utils/functions/resize-observable.ts","../../../../libs/cdk/utils/functions/scroll.ts","../../../../libs/cdk/utils/functions/uuidv4-generator.ts","../../../../libs/cdk/utils/directives/auto-complete/auto-complete.directive.ts","../../../../libs/cdk/utils/directives/auto-complete/auto-complete.module.ts","../../../../libs/cdk/utils/helpers/destroy-observable.ts","../../../../libs/cdk/utils/helpers/dfs.ts","../../../../libs/cdk/utils/helpers/get-native-element.ts","../../../../libs/cdk/utils/typecheck.ts","../../../../libs/cdk/utils/helpers/range-selector.ts","../../../../libs/cdk/utils/helpers/warn-once.ts","../../../../libs/cdk/utils/services/content-density.service.ts","../../../../libs/cdk/utils/services/destroyed.service.ts","../../../../libs/cdk/utils/services/focus-trap.service.ts","../../../../libs/cdk/utils/services/keyboard-support/keyboard-support.service.ts","../../../../libs/cdk/utils/services/local-storage.service.ts","../../../../libs/cdk/utils/services/observers/attribute.observer.ts","../../../../libs/cdk/utils/services/resize-observer.service.ts","../../../../libs/cdk/utils/services/rtl.service.ts","../../../../libs/cdk/utils/services/tabbable-element.service.ts","../../../../libs/cdk/utils/tokens/viewport-size.observable.ts","../../../../libs/cdk/utils/directives/breakpoints/responsive-breakpoints.ts","../../../../libs/cdk/utils/directives/breakpoints/breakpoint.directive.ts","../../../../libs/cdk/utils/directives/clicked/clicked.directive.ts","../../../../libs/cdk/utils/directives/clicked/clicked-event.plugin.ts","../../../../libs/cdk/utils/directives/clicked/provide-fdk-clicked.ts","../../../../libs/cdk/utils/directives/clicked/clicked-behavior.module.ts","../../../../libs/cdk/utils/directives/clicked/element-click.observable.ts","../../../../libs/cdk/utils/directives/clicked/fdk-clicked-provider.service.ts","../../../../libs/cdk/utils/directives/disabled/fdk-disabled.token.ts","../../../../libs/cdk/utils/directives/disabled/set-disabled-state.ts","../../../../libs/cdk/utils/directives/disabled/disabled-behavior.directive.ts","../../../../libs/cdk/utils/directives/disabled/disabled-behavior.module.ts","../../../../libs/cdk/utils/directives/disabled/disabled.observer.ts","../../../../libs/cdk/utils/directives/disabled/default-disabled-view-modifier.ts","../../../../libs/cdk/utils/directives/disabled/fdk-disabled-provider.service.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager.tokens.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager-list.directive.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager-item.directive.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager-helpers.module.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable-item.tokens.ts","../../../../libs/cdk/utils/directives/focusable-item/is-element-focusable-by-default.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable.observer.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable-item.directive.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable-item.module.ts","../../../../libs/cdk/utils/directives/focusable-list/focusable-list.tokens.ts","../../../../libs/cdk/utils/directives/focusable-list/indirect-focusable-list.directive.ts","../../../../libs/cdk/utils/directives/focusable-item/indirect-focusable-item.directive.ts","../../../../libs/cdk/utils/directives/focusable-item/is-item-focusable.ts","../../../../libs/cdk/utils/directives/focusable-item/get-item-element.ts","../../../../libs/cdk/utils/directives/focusable-list/scroll.ts","../../../../libs/cdk/utils/directives/focusable-list/focusable-list.directive.ts","../../../../libs/cdk/utils/directives/focusable-list/focusable-list.module.ts","../../../../libs/cdk/utils/directives/focusable-grid/focusable-grid.tokens.ts","../../../../libs/cdk/utils/directives/focusable-grid/focusable-grid.directive.ts","../../../../libs/cdk/utils/directives/focusable-grid/focusable-grid.module.ts","../../../../libs/cdk/utils/directives/ignore-click-on-selection/tokens.ts","../../../../libs/cdk/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.ts","../../../../libs/cdk/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.ts","../../../../libs/cdk/utils/directives/initial-focus/initial-focus.directive.ts","../../../../libs/cdk/utils/directives/initial-focus/initial-focus.module.ts","../../../../libs/cdk/utils/directives/intersection-spy/intersection-spy.directive.ts","../../../../libs/cdk/utils/directives/line-clamp/line-clamp.directive.ts","../../../../libs/cdk/utils/directives/line-clamp/line-clamp.module.ts","../../../../libs/cdk/utils/directives/only-digits/only-digits.directive.ts","../../../../libs/cdk/utils/directives/only-digits/only-digits.module.ts","../../../../libs/cdk/utils/directives/overflow-list/overflow-list-item.directive.ts","../../../../libs/cdk/utils/directives/overflow-list/overflow-list.directive.ts","../../../../libs/cdk/utils/directives/overflow-list/overflow-list.module.ts","../../../../libs/cdk/utils/directives/readonly/set-readonly-state.ts","../../../../libs/cdk/utils/directives/readonly/default-readonly-view-modifier.ts","../../../../libs/cdk/utils/directives/readonly/fdk-readonly.token.ts","../../../../libs/cdk/utils/directives/readonly/readonly.observer.ts","../../../../libs/cdk/utils/directives/readonly/fdk-readonly-provider.service.ts","../../../../libs/cdk/utils/directives/readonly/readonly-behavior.directive.ts","../../../../libs/cdk/utils/directives/readonly/readonly-behavior.module.ts","../../../../libs/cdk/utils/directives/repeat/repeat.directive.ts","../../../../libs/cdk/utils/directives/repeat/repeat.module.ts","../../../../libs/cdk/utils/directives/resize-observer/resize-observer.directive.ts","../../../../libs/cdk/utils/directives/resize/resize-handle.directive.ts","../../../../libs/cdk/utils/directives/resize/resize.directive.ts","../../../../libs/cdk/utils/directives/resize/resize.module.ts","../../../../libs/cdk/utils/directives/selectable-list/select-component-root.token.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-item.token.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-list.tokens.ts","../../../../libs/cdk/utils/directives/selectable-list/selection.service.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-item.directive.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-list.directive.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-list.module.ts","../../../../libs/cdk/utils/directives/template/template.directive.ts","../../../../libs/cdk/utils/directives/template/template.module.ts","../../../../libs/cdk/utils/directives/truncate/truncate.directive.ts","../../../../libs/cdk/utils/directives/truncate/truncate.module.ts","../../../../libs/cdk/utils/drag-and-drop/tokens.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-item/dnd-item.directive.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.ts","../../../../libs/cdk/utils/async-strategy/function-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/observable-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/promise-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/value-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/select-strategy.class.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-list/dnd-list.directive.ts","../../../../libs/cdk/utils/drag-and-drop/drag-and-drop.module.ts","../../../../libs/cdk/utils/utils.module.ts","../../../../libs/cdk/utils/abstract-fd-ngx-class.ts","../../../../libs/cdk/utils/coercion/array.ts","../../../../libs/cdk/utils/components/dynamic-portal/dynamic-portal.component.ts","../../../../libs/cdk/utils/consts/error-messages.ts","../../../../libs/cdk/utils/consts/overflow-priority-score.ts","../../../../libs/cdk/utils/consts/unicode-letters.regex.ts","../../../../libs/cdk/utils/consts/unicode-numbers.regex.ts","../../../../libs/cdk/utils/interfaces/has-element-ref.interface.ts","../../../../libs/cdk/utils/decorators/apply-css-class.decorator.ts","../../../../libs/cdk/utils/decorators/apply-css-style.decorator.ts","../../../../libs/cdk/utils/decorators/setter-alternator.ts","../../../../libs/cdk/utils/decorators/coerce-boolean.ts","../../../../libs/cdk/utils/decorators/coerce-css-pixel.ts","../../../../libs/cdk/utils/deprecated-selector.class.ts","../../../../libs/cdk/utils/dynamic-component/dynamic-component-container.ts","../../../../libs/cdk/utils/dynamic-component/dynamic-component-injector.ts","../../../../libs/cdk/utils/dynamic-component/dynamic-component.service.ts","../../../../libs/cdk/utils/list-item/list-item-utils.ts","../../../../libs/cdk/utils/pipes/async-or-sync.pipe.ts","../../../../libs/cdk/utils/pipes/displayFn.pipe.ts","../../../../libs/cdk/utils/pipes/filter-strings.pipe.ts","../../../../libs/cdk/utils/pipes/is-compact.pipe.ts","../../../../libs/cdk/utils/pipes/make-async.pipe.ts","../../../../libs/cdk/utils/pipes/safe.pipe.ts","../../../../libs/cdk/utils/pipes/search-highlight.pipe.ts","../../../../libs/cdk/utils/pipes/truncate.pipe.ts","../../../../libs/cdk/utils/pipes/two-digits.pipe.ts","../../../../libs/cdk/utils/pipes/value-by-path.pipe.ts","../../../../libs/cdk/utils/pipes/pipe.module.ts","../../../../libs/cdk/utils/toast/base-toast-animations.ts","../../../../libs/cdk/utils/toast/base-toast-positions.ts","../../../../libs/cdk/utils/toast/base-toast.service.ts","../../../../libs/cdk/utils/toast/classes/base-toast-ref.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-ref.ts","../../../../libs/cdk/utils/toast/classes/action-dismissible/base-toast-action-dismissible-ref.ts","../../../../libs/cdk/utils/toast/classes/base-toast-config.ts","../../../../libs/cdk/utils/toast/classes/base-toast-container.component.ts","../../../../libs/cdk/utils/toast/classes/base-toast-overlay-container.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-config.ts","../../../../libs/cdk/utils/toast/classes/base-toast-animated-container.component.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible.service.ts","../../../../libs/cdk/utils/fundamental-ngx-cdk-utils.ts"],"sourcesContent":["import { INJECTOR, Injector, Provider } from '@angular/core';\n\n/**\n * Creates provider for ConsumerClass\n */\nexport function consumerProviderFactory<T = any>(\n ConsumerClass: new (injector: Injector, additionalConfig: Record<any, any> | undefined) => T,\n providedConfiguration?: Record<any, any>\n): Provider {\n return {\n provide: ConsumerClass,\n useFactory: (injector: Injector) => new ConsumerClass(injector, providedConfiguration),\n deps: [INJECTOR]\n };\n}\n","import { ElementRef } from '@angular/core';\n\nexport const pxToNum = (pixels: string): number => Number(pixels.replace('px', '')) || 0;\n\nexport const toNativeElement = (element: HTMLElement | ElementRef): HTMLElement =>\n element instanceof ElementRef ? element.nativeElement : element;\n\n/** Return elements capacity (width subtract by element padding)\n * @param element - HTMLelement or element reference\n * */\nexport function getElementCapacity(element: HTMLElement | ElementRef): number {\n const _element = toNativeElement(element);\n const computedStyle = window.getComputedStyle(_element);\n\n return pxToNum(computedStyle.width) - pxToNum(computedStyle.paddingLeft) - pxToNum(computedStyle.paddingRight);\n}\n\n/** Return elements width\n * @param element - HTMLelement or element reference\n * @param withMargin - weather to add element margins to width\n * */\nexport function getElementWidth(element: HTMLElement | ElementRef, withMargin?: boolean): number {\n const _element = toNativeElement(element);\n const computedStyle = getComputedStyle(_element);\n\n return withMargin\n ? pxToNum(computedStyle.width) + pxToNum(computedStyle.marginLeft) + pxToNum(computedStyle.marginRight)\n : pxToNum(computedStyle.width);\n}\n","/** Get document font size in pixels. */\nexport function getDocumentFontSize(): number {\n const DEFAULT_SIZE = 16;\n const clientFontSize = document?.documentElement\n ? parseFloat(getComputedStyle(document.documentElement).fontSize)\n : DEFAULT_SIZE;\n return isNaN(clientFontSize) ? DEFAULT_SIZE : clientFontSize;\n}\n","import { NEVER, Observable } from 'rxjs';\n\n/**\n * RxJS wrapper for IntersectionObserver class.\n * @param target HTML element to spy on.\n * @param options @see {IntersectionObserverInit}\n * @returns {Observable} with observer entries.\n */\nexport function intersectionObservable(\n target: Element,\n options?: IntersectionObserverInit\n): Observable<IntersectionObserverEntry[]> {\n if ('IntersectionObserver' in window) {\n return new Observable((subscriber) => {\n const io = new IntersectionObserver((entries) => {\n subscriber.next(entries);\n }, options);\n\n io.observe(target);\n\n return function unsubscribe(): void {\n io.disconnect();\n };\n });\n } else {\n // If browser doesn't support IntersectionObserver API never emit a value\n // since we're not supporting IE11 and any other browser should have it.\n return NEVER;\n }\n}\n","import { ContentDensity } from '../interfaces/content-density';\n\n/** Determines whether provided value is valid content density */\nexport function isValidContentDensity(size: any): size is ContentDensity {\n return size === 'cozy' || size === 'compact' || size === 'condensed';\n}\n\n/**\n * Determines if \"compact\" styles should be applied based on provided content density\n */\nexport function isCompactDensity(size: ContentDensity): boolean {\n return isValidContentDensity(size) && size !== 'cozy';\n}\n","/**\n * Function checks whether the passed number is odd.\n * @param number number to check.\n * @returns Boolean whether the number is odd.\n */\nexport function isOdd(number: number): boolean {\n return number % 2 === 1;\n}\n","import {\n A,\n ALT,\n BACKSPACE,\n C,\n CONTROL,\n DASH,\n DELETE,\n DOWN_ARROW,\n END,\n ENTER,\n ESCAPE,\n F2,\n F7,\n HOME,\n LEFT_ARROW,\n MAC_ENTER,\n META,\n NUMPAD_EIGHT,\n NUMPAD_FIVE,\n NUMPAD_FOUR,\n NUMPAD_MINUS,\n NUMPAD_NINE,\n NUMPAD_ONE,\n NUMPAD_SEVEN,\n NUMPAD_SIX,\n NUMPAD_THREE,\n NUMPAD_TWO,\n NUMPAD_ZERO,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n SHIFT,\n SPACE,\n TAB,\n UP_ARROW,\n V,\n X\n} from '@angular/cdk/keycodes';\nimport { isDevMode } from '@angular/core';\n\n/** Map of keyCodes and their corresponding \"key\" values */\nconst keyMap: Map<number, string[]> = new Map([\n [RIGHT_ARROW, ['ArrowRight', 'Right']],\n [DOWN_ARROW, ['ArrowDown', 'Down']],\n [LEFT_ARROW, ['ArrowLeft', 'Left']],\n [UP_ARROW, ['ArrowUp', 'Up']],\n [SPACE, ['Space', 'Spacebar', ' ']],\n [ESCAPE, ['Escape', 'Esc']],\n [DELETE, ['Delete', 'Del']],\n [ENTER, ['Enter']],\n [MAC_ENTER, ['Enter']],\n [TAB, ['Tab']],\n [HOME, ['Home']],\n [END, ['End']],\n [ALT, ['Alt']],\n [CONTROL, ['Ctrl', 'Control', 'Meta']],\n [META, ['Meta']],\n [SHIFT, ['Shift']],\n [BACKSPACE, ['Backspace']],\n [A, ['KeyA']],\n [C, ['KeyC']],\n [V, ['KeyV']],\n [X, ['KeyX']],\n [PAGE_UP, ['PageUp']],\n [PAGE_DOWN, ['PageDown']],\n [DASH, ['-']],\n [NUMPAD_MINUS, ['-']],\n [NUMPAD_ZERO, ['NumPad0']],\n [NUMPAD_ONE, ['NumPad1']],\n [NUMPAD_TWO, ['NumPad2']],\n [NUMPAD_THREE, ['NumPad3']],\n [NUMPAD_FOUR, ['NumPad4']],\n [NUMPAD_FIVE, ['NumPad5']],\n [NUMPAD_SIX, ['NumPad6']],\n [NUMPAD_SEVEN, ['NumPad7']],\n [NUMPAD_EIGHT, ['NumPad8']],\n [NUMPAD_NINE, ['NumPad9']],\n [F2, ['F2']],\n [F7, ['F7']]\n]);\n\nexport class KeyUtil {\n /**\n * Function used to unify key identification across different browsers using KeyCodes\n *\n * @param event - KeyboardEvent\n * @param keyCode - event.key name matching W3C specification / (ASSCI char. codes)\n * */\n static isKeyCode(event: KeyboardEvent, keyCode: number | number[]): boolean {\n if (Array.isArray(keyCode)) {\n return keyCode.some((key) => this.isKeyCode(event, key));\n }\n\n if (event && keyMap.get(keyCode)) {\n return keyMap.get(keyCode)?.some((alias) => alias === event.key) || keyCode === event.keyCode;\n }\n\n if (isDevMode()) {\n throw new Error(\n `Invalid function arguments. Check if \"event\" is a KeyboardEvent or \"key\" is defined in keyMap`\n );\n }\n\n return false;\n }\n\n /**\n * Function used to unify key identification across different browsers\n *\n * @param event - KeyboardEvent\n * @param keyType - Type of key\n * */\n static isKeyType(event: KeyboardEvent, keyType: 'alphabetical' | 'numeric' | 'control' | 'ime'): boolean {\n if (event && keyType) {\n switch (keyType) {\n case 'numeric':\n return event.code\n ? event.code.toLowerCase().includes('digit')\n : (event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105);\n case 'alphabetical':\n return event.code\n ? event.code.toLowerCase().includes('key')\n : event.keyCode >= 65 && event.keyCode <= 90;\n // some service commands as alt, ctr, insert, print, f4 etc. All except letters, numbers and symbols\n case 'control':\n return event.keyCode < 48 || (event.keyCode >= 112 && event.keyCode <= 123);\n case 'ime':\n return event.key?.toLowerCase() === 'process' || event.keyCode === 229;\n }\n }\n\n if (isDevMode()) {\n throw new Error(`Invalid function arguments.`);\n }\n\n return false;\n }\n}\n","/**\n * Utility functions to replace lodash-es functionality with native JavaScript.\n */\n\n/**\n * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned.\n * @param obj The object to query\n * @param path The path of the property to get\n * @param defaultValue The value returned if the resolved value is undefined\n * @returns The resolved value\n */\nexport function get<TDefault = undefined>(\n obj: any,\n path: string | string[],\n defaultValue?: TDefault\n): TDefault extends undefined ? any : TDefault {\n if (obj == null) {\n return defaultValue as any;\n }\n\n const pathArray = Array.isArray(path) ? path : path.split('.');\n let result: any = obj;\n\n for (const key of pathArray) {\n if (result == null) {\n return defaultValue as any;\n }\n result = result[key];\n }\n\n return (result === undefined ? defaultValue : result) as any;\n}\n\n/**\n * Sets the value at path of object. If a portion of path doesn't exist, it's created.\n * @param obj The object to modify\n * @param path The path of the property to set\n * @param value The value to set\n * @returns The object\n */\nexport function set<T = any>(obj: T, path: string | string[], value: any): T {\n const pathArray = Array.isArray(path) ? path : path.split('.');\n const lastIndex = pathArray.length - 1;\n let current: any = obj;\n\n for (let i = 0; i < lastIndex; i++) {\n const key = pathArray[i];\n if (!(key in current) || current[key] == null) {\n current[key] = {};\n }\n current = current[key];\n }\n\n current[pathArray[lastIndex]] = value;\n return obj;\n}\n\n/**\n * Deep clones an object, handling functions and other non-cloneable values.\n * For objects with functions or class instances, it creates a new object and copies properties.\n * @param obj The object to clone\n * @returns The cloned object\n */\nexport function cloneDeep<T>(obj: T): T {\n // Handle primitives, null, and undefined\n if (obj == null || typeof obj !== 'object') {\n return obj;\n }\n\n // Handle Date\n if (obj instanceof Date) {\n return new Date(obj.getTime()) as any;\n }\n\n // Handle Array\n if (Array.isArray(obj)) {\n return obj.map((item) => cloneDeep(item)) as any;\n }\n\n // Handle RegExp\n if (obj instanceof RegExp) {\n return new RegExp(obj.source, obj.flags) as any;\n }\n\n // Handle Map\n if (obj instanceof Map) {\n const clonedMap = new Map();\n obj.forEach((value, key) => {\n clonedMap.set(cloneDeep(key), cloneDeep(value));\n });\n return clonedMap as any;\n }\n\n // Handle Set\n if (obj instanceof Set) {\n const clonedSet = new Set();\n obj.forEach((value) => {\n clonedSet.add(cloneDeep(value));\n });\n return clonedSet as any;\n }\n\n // Handle plain objects\n const clonedObj = {} as T;\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const value = obj[key];\n // Functions and symbols are copied by reference, not cloned\n if (typeof value === 'function' || typeof value === 'symbol') {\n (clonedObj as any)[key] = value;\n } else {\n (clonedObj as any)[key] = cloneDeep(value);\n }\n }\n }\n\n return clonedObj;\n}\n\n/**\n * Deep merges two or more objects, with properties from source objects overwriting those in the target.\n * @param target The target object\n * @param sources The source objects\n * @returns The merged object\n */\nexport function merge<T>(target: T, ...sources: Partial<T>[]): T {\n // Handle null or undefined target\n if (target == null) {\n target = {} as T;\n }\n\n const result = cloneDeep(target);\n\n for (const source of sources) {\n if (source != null) {\n deepMergeInto(result, source);\n }\n }\n\n return result;\n}\n\n/**\n * Helper function for deep merge\n */\nfunction deepMergeInto<T>(target: T, source: Partial<T>): void {\n // Handle null or undefined target\n if (target == null) {\n return;\n }\n\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n const sourceValue = source[key];\n const targetValue = target[key];\n\n // Handle functions and primitives - copy by reference\n if (typeof sourceValue === 'function' || typeof sourceValue !== 'object' || sourceValue === null) {\n (target as any)[key] = sourceValue;\n } else if (Array.isArray(sourceValue)) {\n // Clone arrays\n (target as any)[key] = cloneDeep(sourceValue);\n } else if (\n sourceValue instanceof Date ||\n sourceValue instanceof RegExp ||\n sourceValue instanceof Map ||\n sourceValue instanceof Set\n ) {\n // Clone special objects\n (target as any)[key] = cloneDeep(sourceValue);\n } else if (targetValue && typeof targetValue === 'object' && !Array.isArray(targetValue)) {\n // Recursively merge plain objects\n deepMergeInto(targetValue, sourceValue as any);\n } else {\n // Clone plain objects\n (target as any)[key] = cloneDeep(sourceValue);\n }\n }\n }\n}\n\n/**\n * Merges two objects with a customizer function.\n * @param target The target object\n * @param source The source object\n * @param customizer The function to customize assigned values\n * @returns The merged object\n */\nexport function mergeWith<T>(\n target: T,\n source: Partial<T>,\n customizer: (targetValue: any, sourceValue: any, key: string) => any\n): T {\n // Handle null or undefined target\n if (target == null) {\n target = {} as T;\n }\n\n const result = cloneDeep(target);\n\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n const sourceValue = source[key];\n const targetValue = result[key];\n const customValue = customizer(targetValue, sourceValue, key);\n\n if (customValue !== undefined) {\n (result as any)[key] = customValue;\n } else if (sourceValue && typeof sourceValue === 'object' && !Array.isArray(sourceValue)) {\n if (targetValue && typeof targetValue === 'object' && !Array.isArray(targetValue)) {\n (result as any)[key] = mergeWith(targetValue, sourceValue as any, customizer);\n } else {\n (result as any)[key] = cloneDeep(sourceValue);\n }\n } else {\n (result as any)[key] = cloneDeep(sourceValue);\n }\n }\n }\n\n return result;\n}\n\n/**\n * Creates an array of unique values from the given array.\n * @param array The array to inspect\n * @returns The new array of unique values\n */\nexport function uniq<T>(array: T[]): T[] {\n return Array.from(new Set(array));\n}\n\n/**\n * Creates an array of unique values from an array based on a property.\n * @param array The array to inspect\n * @param iteratee The iteratee invoked per element\n * @returns The new duplicate free array\n */\nexport function uniqBy<T>(array: T[], iteratee: ((item: T) => any) | string): T[] {\n const seen = new Set();\n const result: T[] = [];\n const getter = typeof iteratee === 'function' ? iteratee : (item: T) => get(item, iteratee);\n\n for (const item of array) {\n const key = getter(item);\n if (!seen.has(key)) {\n seen.add(key);\n result.push(item);\n }\n }\n\n return result;\n}\n\n/**\n * Flattens an array a single level deep.\n * @param array The array to flatten\n * @returns The new flattened array\n */\nexport function flatten<T>(array: T[][]): T[] {\n return array.flat();\n}\n\n/**\n * Creates an object composed of keys generated from the results of running each element through iteratee.\n * The corresponding value of each key is the number of times the key was returned by iteratee.\n * @param array The array to iterate over\n * @param iteratee The iteratee to transform keys\n * @returns The composed aggregate object\n */\nexport function countBy<T>(array: T[], iteratee: ((item: T) => any) | string): Record<string, number> {\n const result: Record<string, number> = {};\n const getter = typeof iteratee === 'function' ? iteratee : (item: T) => get(item, iteratee);\n\n for (const item of array) {\n const key = String(getter(item));\n result[key] = (result[key] || 0) + 1;\n }\n\n return result;\n}\n\n/**\n * Concatenates arrays.\n * @param arrays The arrays to concatenate\n * @returns The new concatenated array\n */\nexport function concat<T>(...arrays: (T | T[])[]): T[] {\n return ([] as T[]).concat(...arrays);\n}\n\n/**\n * Escapes HTML characters in a string.\n * Converts characters like <, >, &, \", and ' to their HTML entity equivalents.\n * @param str The string to escape\n * @returns The escaped string\n */\nexport function escape(str: string): string {\n const div = document.createElement('div');\n div.textContent = str;\n return div.innerHTML;\n}\n","import { InjectionToken } from '@angular/core';\nimport { ModuleDeprecation } from '../interfaces/module-deprecation.interface';\n\nexport const ModuleDeprecations = new InjectionToken<ModuleDeprecation>('ModuleDeprecations');\n","import { FactorySansProvider, Provider } from '@angular/core';\nimport { ModuleDeprecations } from '../tokens/module-deprecations.token';\n\n/** Module deprecations provider */\nexport function moduleDeprecationsProvider(classRef: any): Provider {\n return {\n provide: ModuleDeprecations,\n useClass: classRef,\n multi: true\n };\n}\n\n/** Module deprecations provider factory */\nexport function moduleDeprecationsFactory(factory: FactorySansProvider): Provider {\n return {\n provide: ModuleDeprecations,\n ...factory,\n multi: true\n };\n}\n","const fileSizeMap = new Map([\n ['KB', 1024],\n ['MB', 1048576],\n ['GB', 1073741824],\n ['TB', 1099511627776]\n]);\n\n/** Parse file size to bytes */\nexport function parserFileSize(fileSize: string): number {\n if (fileSize === '') {\n return 0;\n }\n\n const sizes = fileSize.match(/[\\d.]+|\\D+/g);\n if (sizes && sizes.length > 1) {\n const size = Number(sizes[0].replace(/ +/g, ''));\n const unit = sizes[1].replace(/ +/g, '').toUpperCase();\n const unitSize = fileSizeMap.get(unit);\n\n if (isNaN(size)) {\n throw new Error('FileSizeError - Invalid File size please check.');\n }\n if (unit === 'B' || unit === 'BYTE' || unit === 'BYTES') {\n return size;\n }\n if (!unitSize) {\n throw new Error('FileSizeError - Invalid File size please check.');\n } else {\n return unitSize * size;\n }\n } else {\n if (isNaN(Number(sizes))) {\n throw new Error('FileSizeError - Invalid File size please check.');\n }\n\n return Number(sizes);\n }\n}\n","import { ColorAccent } from '../datatypes';\n\n/** Get random number from 1 to 10. */\nexport function getRandomColorAccent(): ColorAccent {\n return (Math.floor(Math.random() * 10) + 1) as ColorAccent;\n}\n","import { fromEvent, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * RxJS wrapper for ResizeObserver class.\n * @param target HTML element to spy on.\n * @param options @see {ResizeObserverOptions}\n * @returns {Observable} with observer entries.\n */\nexport function resizeObservable(target: Element, options?: ResizeObserverOptions): Observable<ResizeObserverEntry[]> {\n if ('ResizeObserver' in window) {\n return new Observable((subscriber) => {\n let animationFrame: number;\n const ro = new ResizeObserver((entries) => {\n animationFrame = window.requestAnimationFrame(() => {\n subscriber.next(entries);\n });\n });\n\n ro.observe(target, options);\n\n return function unsubscribe(): void {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n ro.unobserve(target);\n ro.disconnect();\n };\n });\n } else {\n // If current browser does not support resizeObserver, rely on window resize and return empty array of items.\n return fromEvent(window, 'resize').pipe(map(() => []));\n }\n}\n","/**\n * Function used to scroll specified element by some distance\n *\n * @param containerElement - Container element scrolled\n * @param distanceToScroll - Distance of scroll in px\n * */\nexport function scrollTop(containerElement: Element, distanceToScroll: number): void {\n // Check if scrollTo method is supported by current browser\n if (containerElement.scrollTo && containerElement.scrollTo instanceof Function) {\n containerElement.scrollTo({\n top: distanceToScroll,\n behavior: 'smooth'\n });\n } else {\n containerElement.scrollTop = distanceToScroll;\n }\n}\n","/** Generate a UUID v4 */\nexport function uuidv4(): string {\n const modifier = 16;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * modifier) | 0,\n // eslint-disable-next-line no-bitwise\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(modifier);\n });\n}\n","import { BACKSPACE, CONTROL, DELETE, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, EventEmitter, Input, NgZone, Output, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, map, switchMap } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { KeyUtil } from '../../functions';\n\nexport interface AutoCompleteEvent {\n term: string;\n forceClose: boolean;\n}\n\n@Directive({\n selector: '[fdkAutoComplete]',\n standalone: true\n})\nexport class AutoCompleteDirective {\n /** Values that will fill missing text in the input. */\n @Input()\n options: any[];\n\n /**\n * Input text, that is taken from ngModel of formControl,\n * there has to be difference between native input value and model value\n */\n @Input()\n inputText: string;\n\n /** Whether the auto complete directive should be enabled */\n @Input()\n enable = true;\n\n /** Display function. Accepts an object of the same type as the\n * items passed to dropdownValues as argument, and outputs a string.\n * An arrow function can be used to access the *this* keyword in the calling component.\n * See search input examples for details. */\n @Input()\n displayFn = this._defaultDisplay;\n\n /** Event thrown, when the auto ahead text is accepted */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onComplete: EventEmitter<AutoCompleteEvent> = new EventEmitter<AutoCompleteEvent>();\n\n /** @hidden */\n private readonly _completeKeys: number[] = [ENTER];\n\n /** @hidden */\n private readonly _fillKeys: number[] = [LEFT_ARROW, RIGHT_ARROW];\n\n /** @hidden */\n private readonly _stopKeys: number[] = [BACKSPACE, DELETE, ESCAPE];\n\n /** @hidden */\n private oldValue: string;\n\n /** @hidden */\n private lastKeyUpEvent: KeyboardEvent;\n\n /** @hidden */\n private _isComposing = false;\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n private readonly _zone = inject(NgZone);\n\n /** @hidden */\n\n constructor() {\n /**\n * Fixes #10710\n * With chinese characters inputText property update was triggered after the keyup event trigger.\n * By ensuring that we set all properties we can proceed with stable data.\n */\n this._zone.runOutsideAngular(() => {\n const keyupEvent = fromEvent<KeyboardEvent>(this._elementRef.nativeElement, 'keydown');\n const compositionStartEvent = fromEvent<CompositionEvent>(\n this._elementRef.nativeElement,\n 'compositionstart'\n );\n const compositionEndEvent = fromEvent<CompositionEvent>(this._elementRef.nativeElement, 'compositionend');\n\n keyupEvent\n .pipe(\n switchMap((evt) =>\n this._zone.onStable.pipe(\n first(),\n map(() => evt)\n )\n ),\n takeUntilDestroyed()\n )\n .subscribe((evt) => this._handleKeyboardEvent(evt));\n\n compositionStartEvent.pipe(takeUntilDestroyed()).subscribe(() => {\n this._isComposing = true;\n });\n\n compositionEndEvent.pipe(takeUntilDestroyed()).subscribe(() => {\n this._isComposing = false;\n this.inputText = this._elementRef.nativeElement.value;\n });\n });\n }\n\n /** Matcher function for testing the str for a search term */\n @Input()\n matcher = (str: string, searchTerm: string): boolean => str.startsWith(searchTerm);\n\n /** @hidden */\n _handleKeyboardEvent(event: KeyboardEvent): void {\n if (this.enable && !this._isComposing) {\n if (KeyUtil.isKeyCode(event, this._stopKeys)) {\n this._elementRef.nativeElement.value = this.inputText;\n } else if (KeyUtil.isKeyCode(event, this._completeKeys)) {\n this._sendCompleteEvent(true);\n this._moveIndicatorToLastCharacter();\n } else if (KeyUtil.isKeyCode(event, this._fillKeys)) {\n this._sendCompleteEvent(false);\n } else if (!this._isControlKey(event) && this.inputText) {\n const hasSelection =\n this._elementRef.nativeElement.selectionStart !== this._elementRef.nativeElement.selectionEnd;\n if (hasSelection) {\n return;\n }\n\n const currentNativeValue = this._elementRef.nativeElement.value;\n\n if (this.inputText.length > currentNativeValue.length + 1) {\n this.inputText = currentNativeValue;\n return;\n }\n\n if (!this._triggerTypeAhead()) {\n return;\n }\n\n this.oldValue = this.inputText;\n\n const item = this.options.find((option) =>\n this.matcher(this.displayFn(option).toLocaleLowerCase(), this.inputText.toLocaleLowerCase())\n );\n\n if (item) {\n this._typeahead(this.displayFn(item));\n }\n }\n }\n this.lastKeyUpEvent = event;\n }\n\n /** @hidden */\n private _typeahead(displayedValue: string): void {\n this._elementRef.nativeElement.value = displayedValue;\n const selectionStartIndex = this.inputText.length;\n this._elementRef.nativeElement.setSelectionRange(selectionStartIndex, displayedValue.length);\n }\n\n /** @hidden */\n private _isControlKey(event: KeyboardEvent): boolean {\n return KeyUtil.isKeyCode(event, CONTROL) || event.ctrlKey;\n }\n\n /** @hidden */\n private _defaultDisplay(value: any): string {\n return value;\n }\n\n /** @hidden */\n private _triggerTypeAhead(): boolean {\n return !(\n this.lastKeyUpEvent &&\n KeyUtil.isKeyCode(this.lastKeyUpEvent, CONTROL) &&\n this.inputText === this.oldValue\n );\n }\n\n /** @hidden */\n private _sendCompleteEvent(forceClose: boolean): void {\n this.onComplete.emit({\n term: this._elementRef.nativeElement.value,\n forceClose\n });\n }\n\n /** @hidden */\n private _moveIndicatorToLastCharacter(): void {\n const inputTextLength = this.inputText?.length ?? 0;\n this._elementRef.nativeElement.setSelectionRange(inputTextLength, inputTextLength);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AutoCompleteDirective } from './auto-complete.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [AutoCompleteDirective],\n exports: [AutoCompleteDirective],\n declarations: []\n})\nexport class AutoCompleteModule {}\n","import { DestroyRef, inject } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Creates an observable that emits when the component is destroyed.\n * @param destroyRef\n */\nexport const destroyObservable = (destroyRef = inject(DestroyRef)): Observable<void> => {\n const destroy$ = new Subject<void>();\n destroyRef.onDestroy(() => destroy$.next());\n return destroy$.asObservable();\n};\n","import { get } from '../functions/lodash-utils';\n\n/** @hidden */\ninterface DfsOptions<T> {\n children: string | ((item: T) => Array<T>);\n shouldVisit: (item: T) => boolean;\n postOrder: boolean;\n}\n\n/** @hidden */\nconst _defaultDfsOptions: DfsOptions<any> = {\n children: 'children',\n shouldVisit: () => true,\n postOrder: true\n};\n\n/** @hidden */\nfunction postOrderDfs<T>(): (item: T, callback: (item: T) => void, options: DfsOptions<T>) => void {\n const iterator = (item: T, callback: (item: T) => void, options: DfsOptions<T>): void => {\n if (options.shouldVisit(item)) {\n const children =\n typeof options.children === 'string' ? (get(item, options.children) as T[]) : options.children(item);\n children.forEach((child: T) => iterator(child, callback, options));\n callback(item);\n }\n };\n return iterator;\n}\n\n/** @hidden */\nfunction preOrderDfs<T>(): (item: T, callback: (item: T) => void, options: DfsOptions<T>) => void {\n const iterator = (item: T, callback: (item: T) => void, options: DfsOptions<T>): void => {\n if (options.shouldVisit(item)) {\n const children =\n typeof options.children === 'string' ? (get(item, options.children) as T[]) : options.children(item);\n callback(item);\n children.forEach((child: T) => iterator(child, callback, options));\n }\n };\n return iterator;\n}\n\n/**\n * Depth-first search algorithm, which traverses a tree/graph/tree-like structure.\n * callback is called for each item in the collection. The order of the callback calls\n * depends on the options. By default, the algorithm is post-order, which means that\n * the callback is called for each item after its children have been visited.\n *\n * @param collection\n * @param callback\n * @param options\n */\nexport function dfs<T>(collection: Array<T>, callback: (item: T) => void, options: Partial<DfsOptions<T>> = {}): void {\n const mergedOptions = { ..._defaultDfsOptions, ...options } as DfsOptions<T>;\n const iterator = mergedOptions.postOrder ? postOrderDfs<T>() : preOrderDfs<T>();\n for (const item of collection) {\n iterator(item, callback, mergedOptions);\n }\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef } from '@angular/core';\n\n/**\n * Retrieves native element from ElementRef.\n */\nexport function getNativeElement<T extends Element = HTMLElement>(\n element: { elementRef: ElementRef<T> } | T | ElementRef<T>\n): T {\n let coercible = element;\n if (hasElementRef<T>(element)) {\n coercible = element.elementRef;\n }\n return coerceElement(coercible as T | ElementRef<T>);\n}\n\n/**\n * Checks whether object has element reference in it.\n */\nexport function hasElementRef<T extends Element = HTMLElement>(\n something: any\n): something is { elementRef: ElementRef<T> } {\n return something && something['elementRef'] instanceof ElementRef;\n}\n","import { Observable } from 'rxjs';\n\n/**\n * Helper function check whether passed data is a JS object (including function).\n */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function isJsObject(obj: any): obj is object | Function {\n return obj !== null && (typeof obj === 'function' || typeof obj === 'object');\n}\n\n/**\n * Helper function checks whether passed value is not empty.\n */\nexport function isPresent(obj: any): boolean {\n return obj !== undefined && obj !== null;\n}\n\n/**\n * Helper function check whether passed value is empty.\n */\nexport function isBlank(obj: any): obj is undefined | null {\n return obj === undefined || obj === null;\n}\n\n/**\n * Helper function checks whether passed value is a boolean.\n */\nexport function isBoolean(obj: any): obj is boolean {\n return typeof obj === 'boolean';\n}\n\n/**\n * Helper function checks whether passed value is a valid number.\n */\nexport function isNumber(obj: any): obj is number {\n return typeof obj === 'number';\n}\n\n/**\n * Helper function checks whether passed value is a string.\n */\nexport function isString(obj: any): obj is string {\n return typeof obj === 'string';\n}\n\n/**\n * Helper function checks whether passed value is a function\n */\nexport function isFunction(obj: any): boolean {\n return typeof obj === 'function';\n}\n\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function isType(obj: any): obj is Function {\n return isFunction(obj);\n}\n\n/**\n * Helper function checks whether passed value is a record of `T` values.\n */\nexport function isStringMap<T = any>(obj: any): obj is Record<string, T> {\n return typeof obj === 'object' && obj !== null;\n}\n\n/**\n * Helper function checks whether passed value is an `object`.\n */\nexport function isObject<T>(item: T): boolean {\n return typeof item === 'object' && !Array.isArray(item) && item !== null;\n}\n\n/**\n * Helper function checks whether passed value is a promise.\n */\nexport function isPromise<T = any>(obj: any): obj is Promise<T> {\n // allow any Promise/A+ compliant thenable.\n // It's up to the caller to ensure that obj.then conforms to the spec\n return !!obj && isFunction(obj.then);\n}\n\n/**\n * Helper function checks whether passed value is an Observable/Subscribable.\n */\nexport function isSubscribable<T = any>(obj: any | Observable<T>): obj is Observable<T> {\n return !!obj && isFunction(obj.subscribe);\n}\n","import { Nullable } from '../models/nullable';\nimport { isNumber } from '../typecheck';\n\n/**\n * Utility type, that allows to track and select ranges of elements while using multi-selection.\n *\n * @usage\n * Imagine we have a simple list of checkboxes:\n * ```html\n * <input\n * #checkboxInput\n * *ngFor=\"let o of options; let idx = index\"\n * type=\"checkbox\"\n * [checked]=\"selectionModel.checked(o)\"\n * (click)=\"toggle(idx, $event)\"\n * >\n * ```\n * With the given layout the logic should be as follows:\n * ```typescript\n * export class YourComponent {\n * options = ['a', 'b', 'c'];\n * readonly selectionModel = new SelectionModel(true);\n *\n * private readonly _rangeSelector = new RangeSelector();\n *\n *\n * toggle(idx: number, event: PointerEvent): void {\n * // getting the toggled value of the checkbox\n * const toggledSelection = event.target.value;\n *\n * // registering the selection of current checkbox\n * this._rangeSelector.onRangeElementToggled(idx, event);\n *\n * // Apply value to each element in range.\n * // If checkbox was toggled without shift pressed or without previously selected one,\n * // this method will select only it.\n * this._rangeSelector.applyValueToEachInRange(idx => {\n * if (toggledSelection) {\n * this.selectionModel.select(options[idx]);\n * } else {\n * this.selectionModel.deselect(options[idx]);\n * }\n * });\n * }\n * }\n * ```\n */\nexport class RangeSelector {\n /** @hidden */\n private _previousSelectedIndex: number | null = null;\n /** @hidden */\n private _state: RangeSelectionState | null;\n\n /**\n * Last registered selection state (either multiple or single).\n * Is updated on each `onRangeElementClicked` invokation. Will be `null` initially or once `reset()` is called.\n */\n get lastRangeSelectionState(): RangeSelectionState | null {\n return this._state ? { ...this._state } : null;\n }\n\n /**\n * The method that should be used to register each checkbox toggle.\n * Accepts two arguments: `index` and `event`. If none provided, will reset existing state.\n * Otherwise will register current index as last checked.\n *\n * If toggling was done with \"shift\" pressed and there's a previously registered index, will register a range selection.\n * At the same time if checkbox was toggled without shift pressed or without previously selected one, this method will select only it.\n *\n * After calling this method it's recommended to use `applyValueToEachInRange` to actually toggle each checkbox in range.\n *\n * See usage example on this class itself.\n */\n onRangeElementToggled(index?: number, event?: KeyboardEvent | MouseEvent | TouchEvent): RangeSelectionState | null {\n if (\n this._isNonNegativeInteger(this._previousSelectedIndex) &&\n this._isNonNegativeInteger(index) &&\n event?.shiftKey\n ) {\n this._state = {\n isRangeSelection: true,\n from: Math.min(this._previousSelectedIndex, index),\n to: Math.max(this._previousSelectedIndex, index)\n };\n this._previousSelectedIndex = index;\n } else if (this._isNonNegativeInteger(index)) {\n this._state = { isRangeSelection: false, from: index, to: index };\n this._previousSelectedIndex = index;\n } else {\n this.reset();\n }\n\n return this.lastRangeSelectionState;\n }\n\n /**\n * Allows to apply selection to each item in selection range.\n * Accepts a function to apply selection to each item by registered index.\n *\n * See usage example on this class itself.\n */\n applyValueToEachInRange(selectionMethod: (index: number) => void): void {\n const state = this.lastRangeSelectionState;\n\n if (!state) {\n return;\n }\n\n if (this._isNonNegativeInteger(state?.from) && this._isNonNegativeInteger(state?.to)) {\n for (let index = state.from; index <= state.to; index++) {\n selectionMethod(index);\n }\n }\n }\n\n /** Resets selection state. Useful when the list of selectable items is changed (e.g. by filtering, sorting, page change) */\n reset(): void {\n this._state = null;\n this._previousSelectedIndex = null;\n }\n\n /** @hidden */\n private _isNonNegativeInteger(num: Nullable<number>): num is number {\n return isNumber(num) && num >= 0;\n }\n}\n\nexport interface RangeSelectionState {\n isRangeSelection: boolean;\n from: number;\n to: number;\n}\n","const messages = new Set<string>();\n\n/** @hidden */\nexport function warnOnce(message: string): void {\n if (!messages.has(message)) {\n console.warn(message);\n messages.add(message);\n }\n}\n","import { Injectable, isDevMode } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\nimport { isCompactDensity } from '../functions/is-compact-density';\nimport { warnOnce } from '../helpers';\nimport { ContentDensity } from '../interfaces/content-density';\n\nexport const DEFAULT_CONTENT_DENSITY: ContentDensity = 'cozy';\n\n/**\n * Service taking care of ContentDensity\n */\n@Injectable()\nexport class ContentDensityService {\n /** Content Density BehaviourSubject */\n readonly contentDensity = new BehaviorSubject(DEFAULT_CONTENT_DENSITY);\n\n /** @hidden */\n constructor() {\n if (isDevMode()) {\n warnOnce(\n `[Deprecated] ContentDensityService is deprecated and will be removed in the next major version.\n Please use ContentDensityControllerService instead, or use the ContentDensityModule forRoot method.`\n );\n }\n }\n\n /** @hidden */\n get _contentDensityListener(): Observable<ContentDensity> {\n return this.contentDensity.pipe(distinctUntilChanged(), startWith(this.contentDensity.getValue()));\n }\n\n /** @hidden */\n get _isCompactDensity(): Observable<boolean> {\n return this._contentDensityListener.pipe(map((density) => isCompactDensity(density)));\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { warnOnce } from '../helpers';\n\n/**\n * @deprecated Use Angular's built-in `DestroyRef` and `takeUntilDestroyed` instead.\n * Will be removed in next release\n */\n@Injectable()\nexport class DestroyedService extends ReplaySubject<void> implements OnDestroy {\n /** @hidden */\n constructor() {\n super(1);\n warnOnce(\n `DestroyedService is deprecated. Use Angular's built-in 'DestroyRef' and 'takeUntilDestroyed' instead.`\n );\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.next();\n this.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { createFocusTrap, FocusTrap, Options } from 'focus-trap';\nimport { uuidv4 } from '../functions/uuidv4-generator';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FocusTrapService {\n /** @hidden */\n private _focusTrapInstances: Map<any, FocusTrap> = new Map();\n\n /**\n * Creates focus trap instance for defined element\n * @param element Container for which to create focus trap\n * @param userOptions Focus-trap specific configuration\n * @returns {string} Unique ID of focus trap instance\n */\n createFocusTrap(\n element: string | HTMLElement | SVGElement | (string | HTMLElement | SVGElement)[],\n userOptions?: Options\n ): string {\n const uid = uuidv4();\n\n const trap = createFocusTrap(element, userOptions);\n\n this._focusTrapInstances.set(uid, trap);\n\n this.activateFocusTrap(uid);\n\n return uid;\n }\n\n /**\n * Activates focus trap for defined ID\n * @param id Unique ID of focus trap instance\n */\n activateFocusTrap(id: string): void {\n if (!this._focusTrapExists(id)) {\n return;\n }\n\n const trap = this.getFocusTrapInstance(id);\n\n trap?.activate();\n }\n\n /**\n * Deactivates focus trap for defined ID\n * @param id Unique ID of focus trap instance\n */\n deactivateFocusTrap(id: string): void {\n if (!this._focusTrapExists(id)) {\n return;\n }\n\n const trap = this.getFocusTrapInstance(id);\n\n trap?.deactivate();\n\n this._focusTrapInstances.delete(id);\n }\n\n /**\n * Pauses current focus trap.\n */\n pauseCurrentFocusTrap(): void {\n if (this._focusTrapInstances.size === 0) {\n return;\n }\n\n const trapItem = this._getLastTrapedItem();\n\n trapItem?.pause();\n }\n\n /**\n * Unpauses current focus trap.\n */\n unpauseCurrentFocusTrap(): void {\n if (this._focusTrapInstances.size === 0) {\n return;\n }\n\n const trapItem = this._getLastTrapedItem();\n\n trapItem?.unpause();\n }\n\n /**\n * Get focus trap instance by ID.\n * @param id ID of the instance.\n * @returns Focus trap instance if exists.\n */\n getFocusTrapInstance(id: string): FocusTrap | undefined {\n return this._focusTrapInstances.get(id);\n }\n\n /** @hidden */\n private _getLastTrapedItem(): FocusTrap | undefined {\n const lastItem = Array.from(this._focusTrapInstances).pop();\n\n return lastItem ? lastItem[1] : undefined;\n }\n\n /** @hidden */\n private _focusTrapExists(id: string): boolean {\n return this._focusTrapInstances.has(id);\n }\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, TAB, UP_ARROW, hasModifierKey } from '@angular/cdk/keycodes';\nimport { DestroyRef, Injectable, OnDestroy, QueryList, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject, merge } from 'rxjs';\nimport { filter, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { KeyUtil } from '../../functions';\nimport { destroyObservable } from '../../helpers/destroy-observable';\nimport { KeyboardSupportItemInterface } from '../../interfaces/keyboard-support-item.interface';\n\nexport type FocusEscapeDirection = 'up' | 'down';\n\n@Injectable()\nexport class KeyboardSupportService<T> implements OnDestroy {\n /** Subject that is thrown, when focus escapes the list */\n focusEscapeList = new Subject<FocusEscapeDirection>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */\n private readonly _onRefresh$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _keyManager: FocusKeyManager<T>;\n\n /** @hidden */\n get keyManager(): FocusKeyManager<T> {\n return this._keyManager;\n }\n\n /** @hidden\n * allow tab key navigation. default is true.\n */\n private _tabKeyNavigation = true;\n\n /** @hidden */\n setKeyboardService(\n queryList: QueryList<KeyboardSupportItemInterface & T>,\n wrap?: boolean,\n tabKeyNavigation = true\n ): void {\n this._keyManager?.destroy();\n this._tabKeyNavigation = tabKeyNavigation;\n this._keyManager = new FocusKeyManager(queryList).withWrap(wrap).withHomeAndEnd();\n queryList.changes\n .pipe(startWith(0), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._refreshEscapeLogic(queryList));\n }\n\n /** @hidden */\n onKeyDown(event: KeyboardEvent): void {\n this._keyManager.onKeydown(event);\n if (KeyUtil.isKeyCode(event, TAB)) {\n if (KeyUtil.isKeyCode(event, TAB) && this._tabKeyNavigation) {\n event.preventDefault();\n hasModifierKey(event, 'shiftKey')\n ? this.keyManager.setPreviousItemActive()\n : this.keyManager.setNextItemActive();\n }\n }\n }\n\n /** Destroys KeyboardSupportService dependencies */\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n }\n\n /** @hidden */\n private _refreshEscapeLogic(queryList: QueryList<KeyboardSupportItemInterface & T>): void {\n const createEscapeListener = (\n listItem: KeyboardSupportItemInterface & T,\n onKeyCode: number,\n escapeDirection: FocusEscapeDirection\n ): void => {\n listItem.keyDown\n .pipe(\n takeUntil(unsubscribe$),\n filter((event) => KeyUtil.isKeyCode(event, onKeyCode)),\n tap((event) => event.preventDefault())\n )\n .subscribe(() => this.focusEscapeList.next(escapeDirection));\n };\n\n /** Finish all of the streams, form before */\n this._onRefresh$.next();\n\n const unsubscribe$ = merge(this._onRefresh$, destroyObservable(this._destroyRef));\n\n if (queryList.length) {\n createEscapeListener(queryList.last, DOWN_ARROW, 'down');\n createEscapeListener(queryList.first, UP_ARROW, 'up');\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nclass MockStorage {\n readonly length: number;\n\n // eslint-disable-next-line\n key(index: number): any {}\n\n clear(): void {}\n\n // eslint-disable-next-line\n getItem(key: string): any {}\n\n // eslint-disable-next-line\n removeItem(key: string): void {}\n\n // eslint-disable-next-line\n setItem(key: string, value: string): void {}\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LocalStorageService {\n /** @hidden */\n private _storage: Storage;\n\n /** @hidden */\n constructor() {\n typeof localStorage !== 'undefined' ? (this._storage = localStorage) : (this._storage = new MockStorage());\n }\n\n /** Get item from local storage. */\n get(key: string): any {\n const value = this._storage.getItem(key);\n if (value) {\n return JSON.parse(value);\n }\n return null;\n }\n\n /** Set item in local storage. */\n set(key: string, value: any): void {\n this._storage.setItem(key, JSON.stringify(value));\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { MutationObserverFactory } from '@angular/cdk/observers';\nimport { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AttributeObserver implements OnDestroy {\n /** @Hidden */\n private readonly _observedElements = new Map<\n Element,\n {\n observer: MutationObserver | null;\n stream: Subject<MutationRecord[]>;\n count: number;\n }\n >();\n\n /** @hidden */\n constructor(private _mutationObserverFactory: MutationObserverFactory) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n /** @Hidden */\n observe(elementOrRef: Element | ElementRef<Element> | HasElementRef<Element>): Observable<MutationRecord[]> {\n const element = getNativeElement(elementOrRef);\n return new Observable((observer: Observer<MutationRecord[]>) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n /** @Hidden */\n unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n this._unobserveElement(getNativeElement(element));\n }\n\n /** @hidden */\n private _observeElement(element: Element): Subject<MutationRecord[]> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<MutationRecord[]>();\n const observer = this._mutationObserverFactory.create((mutations) => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n attributes: true\n });\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n } else {\n this._observedElements.get(element)!.count++;\n }\n return this._observedElements.get(element)!.stream;\n }\n\n /** @Hidden */\n private _unobserveElement(element: Element): void {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element)!.count--;\n if (!this._observedElements.get(element)!.count) {\n this._cleanupObserver(element);\n }\n }\n }\n\n /** @hidden */\n private _cleanupObserver(element: Element): void {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element)!;\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\n\ninterface ObservedElement {\n observer: ResizeObserver | null;\n readonly stream: Subject<ResizeObserverEntry[]>;\n count: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverFactory {\n /** Factory to create ResizeObserver if it's present in browser. */\n create(callback: ResizeObserverCallback): ResizeObserver | null {\n return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService implements OnDestroy {\n /** @hidden */\n private _observedElements = new Map<Element, ObservedElement>();\n\n /** @hidden */\n constructor(private _resizeObserverFactory: ResizeObserverFactory) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n /** Observe the given element and emit whenever its size changes. */\n observe(elementOrRef: Element | ElementRef<Element>): Observable<ResizeObserverEntry[]> {\n const element = coerceElement(elementOrRef);\n\n return new Observable((observer: Observer<ResizeObserverEntry[]>) => {\n const stream = this._observeElement(element);\n const subscription = stream?.subscribe(observer);\n\n return () => {\n subscription?.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n /**\n * Observes the given element by using the existing MutationObserver if available, or creating a\n * new one if not.\n */\n private _observeElement(element: Element): Subject<ResizeObserverEntry[]> | undefined {\n let observedElement = this._observedElements.get(element);\n\n if (!observedElement) {\n const stream = new Subject<ResizeObserverEntry[]>();\n const observer = this._resizeObserverFactory.create((mutations) => stream.next(mutations));\n if (observer) {\n observer.observe(element);\n }\n observedElement = { observer, stream, count: 0 };\n this._observedElements.set(element, observedElement);\n }\n observedElement.count++;\n return observedElement?.stream;\n }\n\n /**\n * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n * observing this element.\n */\n private _unobserveElement(element: Element): void {\n const observedElement = this._observedElements.get(element);\n if (!observedElement) {\n return;\n }\n\n if (--observedElement.count) {\n return;\n }\n this._cleanupObserver(element);\n }\n\n /** Clean up the underlying MutationObserver for the specified element. */\n private _cleanupObserver(element: Element): void {\n const observedElement = this._observedElements.get(element);\n\n if (!observedElement) {\n return;\n }\n const { observer, stream } = observedElement;\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n}\n","import { Inject, Injectable, InjectionToken, Optional, Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject } from 'rxjs';\n\n/** Default RTL languages */\nconst DefaultRtlLanguages = ['ar', 'arc', 'dv', 'fa', 'ha', 'he', 'khw', 'ks', 'ku', 'ps', 'ur', 'yi'];\nexport const RTL_LANGUAGE = new InjectionToken<string[]>('RtlLanguage');\n\n@Injectable()\n/**\n * Service taking care of RTL trough behavior subject\n * language list is used to determine if rtl should be enabled at start\n * user can overwrite default languages by using injection token RtlLanguageToken\n */\nexport class RtlService {\n /** RTL value */\n rtl: BehaviorSubject<boolean>;\n\n /** Signal wrapper for RTL value. */\n rtlSignal: Signal<boolean>;\n\n /** @hidden */\n constructor(@Optional() @Inject(RTL_LANGUAGE) injectedRtlLanguages: string[]) {\n injectedRtlLanguages = injectedRtlLanguages || DefaultRtlLanguages;\n\n const filtered = injectedRtlLanguages.filter((language) => navigator.language.includes(language));\n\n this.rtl = new BehaviorSubject(filtered.length > 0);\n\n this.rtlSignal = toSignal(this.rtl, { requireSync: true });\n }\n}\n","import { InteractivityChecker } from '@angular/cdk/a11y';\n\nimport { DOCUMENT, Inject, Injectable, Optional } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class TabbableElementService {\n /** @hidden */\n constructor(\n private readonly _checker: InteractivityChecker,\n @Optional() @Inject(DOCUMENT) private readonly _document: Document | null\n ) {}\n\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n getTabbableElement(root: HTMLElement, focusLastElement = false, skipSelf = false): HTMLElement | null {\n if (!skipSelf && this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n\n // Iterate in DOM order. Note that IE doesn't have `children` for SVG, so we fall\n // back to `childNodes` which includes text nodes, comments etc.\n const rootChildren = root.children || root.childNodes;\n\n const children = focusLastElement ? Array.from(rootChildren).reverse() : rootChildren;\n\n for (let i = 0; i < children.length; i++) {\n const tabbableChild =\n children[i].nodeType === this._document?.ELEMENT_NODE\n ? this.getTabbableElement(children[i] as HTMLElement, focusLastElement)\n : null;\n\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n\n return null;\n }\n}\n","import { ViewportRuler } from '@angular/cdk/overlay';\nimport { inject, InjectionToken } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\n/**\n * Injection token for the viewport size observable.\n * Emits the viewport size in pixels, which are outputted by the ViewportRuler\n * from @angular/cdk/overlay.\n */\nexport const ViewportSizeObservable = new InjectionToken<Observable<number>>('ViewportSizeObservable', {\n providedIn: 'root',\n factory: () => {\n const viewportRuler = inject(ViewportRuler);\n return viewportRuler\n .change(50)\n .pipe(map((e) => (e.target as Window).innerWidth))\n .pipe(startWith(window.innerWidth));\n }\n});\n","export const ResponsiveBreakpoints = {\n S: 600,\n M: 1024,\n L: 1440\n} as const;\n\ntype breakpointName = keyof typeof ResponsiveBreakpoints | 'XL';\n\nexport type BreakpointName = Lowercase<breakpointName> | Uppercase<breakpointName>;\n\n/** @hidden */\nexport function getBreakpointName(width: number): breakpointName {\n if (width < ResponsiveBreakpoints.S) {\n return 'S';\n }\n if (width < ResponsiveBreakpoints.M) {\n return 'M';\n }\n if (width < ResponsiveBreakpoints.L) {\n return 'L';\n }\n return 'XL';\n}\n","/* eslint-disable @angular-eslint/no-input-rename */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Input,\n NgModule,\n OnChanges,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, Subject, combineLatest } from 'rxjs';\nimport { finalize, map, startWith, switchMap, tap } from 'rxjs/operators';\nimport { ResizeObserverService } from '../../services';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\nimport { BreakpointName, getBreakpointName } from './responsive-breakpoints';\n\n/**\n * Directive to show/hide element on specific breakpoint or range of window width.\n * Uses native ngIf directive to show/hide element.\n */\n@Directive({\n selector:\n '[fdkBreakpoint], [fdkBreakpointS], [fdkBreakpointM], [fdkBreakpointL], [fdkBreakpointXL], [fdkBreakpointLt], [fdkBreakpointGt]',\n standalone: true\n})\nexport class BreakpointDirective implements OnChanges, AfterViewInit {\n /**\n * Provide list of the breakpoints to show element on.\n * */\n @Input()\n set fdkBreakpoint(value: BreakpointName[]) {\n const providedValues = value.map((v) => v.toLowerCase());\n this.showOnS = providedValues.includes('s');\n this.showOnM = providedValues.includes('m');\n this.showOnL = providedValues.includes('l');\n this.showOnXL = providedValues.includes('xl');\n }\n\n /**\n * Show element on S breakpoint.\n * S - 0 - 599px\n * */\n @Input({ alias: 'fdkBreakpointS', transform: booleanAttribute })\n showOnS = false;\n\n /**\n * Show element on M breakpoint.\n * M - 0 - 1023px\n * */\n @Input({ alias: 'fdkBreakpointM', transform: booleanAttribute })\n showOnM = false;\n\n /**\n * Show element on L breakpoint.\n * L - 0 - 1439px\n * */\n @Input({ alias: 'fdkBreakpointL', transform: booleanAttribute })\n showOnL = false;\n\n /**\n * Show element on XL breakpoint.\n * */\n @Input({ alias: 'fdkBreakpointXL', transform: booleanAttribute })\n showOnXL = false;\n\n /**\n * Show element on breakpoint less than provided value.\n * */\n @Input()\n fdkBreakpointLt: number;\n\n /**\n * Show element on breakpoint greater than provided value.\n * */\n @Input()\n fdkBreakpointGt: number;\n\n /**\n * Observe element width changes.\n */\n @Input('fdkBreakpointObserve')\n set observationSource(value: HTMLElement | ElementRef<HTMLElement>) {\n if (!value) {\n this._sizeObservable$.next(this.viewportSize$);\n return;\n }\n const element = coerceElement(value);\n this._sizeObservable$.next(\n this._resizeObserverService.observe(value).pipe(\n map(() => element.offsetWidth),\n startWith(element.offsetWidth)\n )\n );\n }\n\n /** @hidden */\n templateViewRef?: EmbeddedViewRef<unknown>;\n\n /** @hidden */\n onChanges$ = new Subject<void>();\n\n /** @hidden */\n _sizeObservable$: BehaviorSubject<Observable<number>> = new BehaviorSubject<Observable<number>>(\n inject(ViewportSizeObservable)\n );\n\n /** @hidden */\n private viewportSize$ = inject(ViewportSizeObservable);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _resizeObserverService = inject(ResizeObserverService);\n\n /** @hidden */\n constructor(\n private readonly templateRef: TemplateRef<any>,\n private readonly viewContainer: ViewContainerRef\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n combineLatest([this._sizeObservable$.pipe(switchMap((obs$) => obs$)), this.onChanges$.pipe(startWith(void 0))])\n .pipe(\n map(([w]) => [w, getBreakpointName(w)] as const),\n map(([width, breakpointName]) => this._shouldShow(width, breakpointName)),\n tap((shouldShow) => {\n if (shouldShow) {\n if (!this.templateViewRef) {\n this.viewContainer.clear();\n this.templateViewRef = this.viewContainer.createEmbeddedView(this.templateRef);\n this.templateViewRef.detectChanges();\n }\n } else {\n this.viewContainer.clear();\n this.templateViewRef = undefined;\n }\n }),\n takeUntilDestroyed(this._destroyRef),\n finalize(() => {\n this.viewContainer.clear();\n this.templateViewRef = undefined;\n })\n )\n .subscribe();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.onChanges$.next();\n }\n\n /** @hidden */\n private _shouldShow(width: number, currentBreakpoint: BreakpointName): boolean {\n const shouldShowOnBreakpoints = [\n this.showOnS && 'S',\n this.showOnM && 'M',\n this.showOnL && 'L',\n this.showOnXL && 'XL'\n ].filter(Boolean);\n const shouldShow = shouldShowOnBreakpoints.includes(currentBreakpoint);\n if (this.fdkBreakpointLt) {\n return width < this.fdkBreakpointLt;\n }\n if (this.fdkBreakpointGt) {\n return width > this.fdkBreakpointGt;\n }\n return shouldShow;\n }\n}\n\n@NgModule({\n imports: [BreakpointDirective],\n exports: [BreakpointDirective]\n})\nexport class BreakpointModule {}\n","import { DestroyRef, Directive, ElementRef, inject, Output, Renderer2 } from '@angular/core';\nimport { fromEvent, merge, Observable, Subject } from 'rxjs';\n\n@Directive({\n selector: '[fdkClicked]',\n standalone: true\n})\nexport class ClickedDirective {\n /**\n * Event name.\n */\n static eventName = 'fdkClicked';\n\n /**\n * Event emitted when user either clicks with mouse, or\n * clicks on space or enter keys\n */\n @Output() fdkClicked: Observable<MouseEvent | KeyboardEvent>;\n\n /** @hidden */\n constructor() {\n const { nativeElement: element } = inject<ElementRef<HTMLElement>>(ElementRef);\n const renderer = inject(Renderer2);\n const destroyRef = inject(DestroyRef);\n const enter$ = new Subject<KeyboardEvent>();\n const space$ = new Subject<KeyboardEvent>();\n\n destroyRef.onDestroy(renderer.listen(element, 'keydown.enter', (e) => enter$.next(e)));\n destroyRef.onDestroy(renderer.listen(element, 'keydown.space', (e) => space$.next(e)));\n\n destroyRef.onDestroy(() => {\n enter$.complete();\n space$.complete();\n });\n\n this.fdkClicked = merge(fromEvent<MouseEvent>(element, 'click'), enter$, space$);\n }\n}\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\n\nimport { DOCUMENT, Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { ClickedDirective } from './clicked.directive';\n\ntype EventHandlerFunction = ($event: Event) => void;\ntype HandlerRemoveFunction = () => void;\n\n/**\n * @deprecated\n * No need to use it anymore. Use ClickedDirective directly instead.\n */\n@Injectable()\nexport class ClickedEventPlugin {\n /** @hidden */\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n console.warn(\n `ClickedEventPlugin is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n );\n }\n\n /** @hidden */\n addEventListener(element: HTMLElement, eventName: string, handler: EventHandlerFunction): ($event: Event) => void {\n return this._setupEventBinding(element, handler);\n }\n\n /** @hidden */\n addGlobalEventListener(\n higherOrderElement: string,\n eventName: string,\n handler: EventHandlerFunction\n ): HandlerRemoveFunction {\n const target = this._parseHigherOrderElement(higherOrderElement);\n return this._setupEventBinding(target, handler);\n }\n\n /** @hidden */\n supports(eventName: string): boolean {\n return eventName === ClickedDirective.eventName;\n }\n\n /** @hidden */\n private _parseHigherOrderElement(selector: string): EventTarget {\n if (this.platformId !== 'browser') {\n return this.document;\n }\n switch (selector) {\n case 'window':\n return window;\n case 'document':\n return document;\n case 'body':\n return document.body;\n default:\n throw new Error(`Element selector [${selector}] not supported.`);\n }\n }\n\n /** @hidden */\n private _setupEventBinding(target: EventTarget, handler: EventHandlerFunction): HandlerRemoveFunction {\n const addProxyFunction = (): void => {\n target.addEventListener('click', proxyFunction, false);\n target.addEventListener('keydown', proxyFunction, false);\n };\n\n const removeProxyFunction = (): void => {\n target.removeEventListener('click', proxyFunction, false);\n target.removeEventListener('keydown', proxyFunction, false);\n };\n\n const proxyFunction = (event: Event | MouseEvent | KeyboardEvent): void => {\n if (event instanceof KeyboardEvent) {\n if (event.keyCode !== ENTER && event.keyCode !== SPACE) {\n return;\n }\n }\n handler(event);\n };\n\n addProxyFunction();\n\n return removeProxyFunction;\n }\n}\n","import { InjectionToken, isDevMode, Provider } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { ClickedEventPlugin } from './clicked-event.plugin';\n\n/**\n * @deprecated\n * ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.\n */\nexport const ClickedBehaviorModuleForRootLoadedOnce = new InjectionToken<boolean>(\n 'Checking Module providers had been loaded',\n { factory: () => false }\n);\n\n/**\n * Provides ClickedEventPlugin to the application\n * @deprecated\n */\nexport function provideFdkClicked(): Provider[] {\n if (isDevMode()) {\n console.warn(\n `provideFdkClicked() is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n );\n }\n return [\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: ClickedEventPlugin,\n multi: true\n },\n {\n provide: ClickedBehaviorModuleForRootLoadedOnce,\n useValue: true\n }\n ];\n}\n","import { isDevMode, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ClickedDirective } from './clicked.directive';\nimport { provideFdkClicked } from './provide-fdk-clicked';\n\n/**\n * @deprecated\n * ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.\n */\n@NgModule({\n imports: [ClickedDirective],\n exports: [ClickedDirective]\n})\nexport class ClickedBehaviorModule {\n /** @hidden */\n constructor() {\n console.warn(\n `ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n );\n }\n /** @hidden */\n static forRoot(): ModuleWithProviders<ClickedBehaviorModule> {\n if (isDevMode()) {\n console.warn(\n `ClickedBehaviorModule.forRoot() is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n );\n }\n return {\n ngModule: ClickedBehaviorModule,\n providers: [provideFdkClicked()]\n };\n }\n}\n","import { ElementRef, inject, Renderer2 } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Returns Observable that emits when element is clicked. Uses Renderer2 to listen to events.\n * @param element\n * @param renderer\n */\nexport function elementClick$(\n element: ElementRef<HTMLElement> | HTMLElement,\n renderer: Renderer2 = inject(Renderer2)\n): Observable<MouseEvent | KeyboardEvent> {\n return new Observable<MouseEvent | KeyboardEvent>((observer) => {\n const cleanups: (() => void)[] = [\n renderer.listen(element, 'click', (event) => observer.next(event)),\n renderer.listen(element, 'keydown.enter', (event) => observer.next(event)),\n renderer.listen(element, 'keydown.space', (event) => {\n event.preventDefault();\n observer.next(event);\n })\n ];\n return () => cleanups.forEach((cleanup) => cleanup());\n });\n}\n","import { ElementRef, Inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\nimport { ClickedEventPlugin } from './clicked-event.plugin';\nimport { ClickedDirective } from './clicked.directive';\n\n@Injectable()\nexport class FdkClickedProvider extends Subject<MouseEvent | KeyboardEvent> implements OnDestroy {\n /** @hidden */\n private _preventDefault = true;\n /** @hidden */\n private _listeners!: Array<() => void>;\n /** @hidden */\n private readonly _fdkClickedEventManagerPluginLoaded: boolean;\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef<Element>,\n private readonly _renderer: Renderer2,\n @Inject(EVENT_MANAGER_PLUGINS) eventManagerPlugins: any[]\n ) {\n super();\n this._fdkClickedEventManagerPluginLoaded = eventManagerPlugins.some((em) => em instanceof ClickedEventPlugin);\n this._initialize();\n }\n\n /** @hidden */\n setPreventDefault(val: boolean): void {\n this._preventDefault = val;\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._listeners.forEach((d) => d());\n this.complete();\n }\n\n /** @hidden */\n private _initialize(): void {\n const eventsList: string[] = this._fdkClickedEventManagerPluginLoaded\n ? [ClickedDirective.eventName]\n : ['click', 'keydown.enter', 'keydown.space'];\n this._listeners = eventsList.map((eventName) =>\n this._renderer.listen(this._elementRef.nativeElement, eventName, (event: MouseEvent | KeyboardEvent) => {\n if (this._preventDefault) {\n event.preventDefault();\n }\n this.next(event);\n })\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { DisabledBehavior } from './disabled-behavior.interface';\n\nexport const FDK_DISABLED_DIRECTIVE = new InjectionToken<DisabledBehavior>('Disabled directive token');\n","import { ElementRef } from '@angular/core';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\n/** @hidden */\nexport function setDisabledState(\n element: HasElementRef<Element> | Element | ElementRef<Element>,\n isDisabled: boolean,\n disabledClass: string,\n addDisabledClass: boolean\n): void {\n const htmlElement = getNativeElement(element);\n if (isDisabled) {\n if (addDisabledClass) {\n htmlElement.classList.add(disabledClass);\n }\n htmlElement.setAttribute('disabled', '');\n htmlElement.setAttribute('aria-disabled', 'true');\n } else {\n htmlElement.classList.remove(disabledClass);\n htmlElement.removeAttribute('disabled');\n htmlElement.removeAttribute('aria-disabled');\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, DestroyRef, Directive, ElementRef, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, ReplaySubject, filter } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FdkClickedProvider } from '../clicked';\nimport { DisabledBehavior } from './disabled-behavior.interface';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\nimport { setDisabledState } from './set-disabled-state';\n\n@Directive({\n selector: '[fdkDisabled]',\n standalone: true,\n providers: [\n {\n provide: FDK_DISABLED_DIRECTIVE,\n useExisting: DisabledBehaviorDirective\n },\n FdkClickedProvider\n ]\n})\nexport class DisabledBehaviorDirective\n extends ReplaySubject<boolean>\n implements AfterViewInit, DisabledBehavior, DisabledViewModifier\n{\n /** @hidden */\n @Input()\n set fdkDisabled(value: BooleanInput) {\n const val = coerceBooleanProperty(value);\n this._clicked.setPreventDefault(val);\n this._fdkDisableInput$.next(val);\n }\n\n get fdkDisabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Whether to add `disabledClass` class to the element.\n */\n @Input()\n addDisabledClass = true;\n\n /**\n * Disabled css class to apply to the element.\n */\n @Input()\n disabledClass = 'is-disabled';\n\n /** @hidden */\n private _disabled = false;\n /** @hidden */\n private readonly _fdkDisableInput$ = new BehaviorSubject(false);\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _destroyRef: DestroyRef,\n private _clicked: FdkClickedProvider\n ) {\n super(1);\n this._destroyRef.onDestroy(() => this.complete());\n }\n\n /** @hidden */\n setDisabledState = (isDisabled: boolean): void => {\n setDisabledState(this._elementRef, isDisabled, this.disabledClass, this.addDisabledClass);\n };\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._fdkDisableInput$\n .pipe(\n filter((isDisabled) => isDisabled !== this._disabled),\n tap((isDisabled) => {\n this.setDisabledState(isDisabled);\n this._disabled = isDisabled;\n this.next(isDisabled);\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DisabledBehaviorDirective } from './disabled-behavior.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [DisabledBehaviorDirective],\n exports: [DisabledBehaviorDirective]\n})\nexport class DisabledBehaviorModule {}\n","import { ElementRef, Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DisabledObserver {\n /** @hidden */\n private readonly _attributeObserver = inject(AttributeObserver);\n\n /** @hidden */\n static isDisabled(el: Element): boolean {\n return (\n el.hasAttribute('disabled') ||\n el.getAttribute('aria-disabled') === 'true' ||\n el.classList.contains('is-disabled')\n );\n }\n\n /** @hidden */\n observe(element: HasElementRef<Element> | Element | ElementRef<Element>): Observable<boolean> {\n return this._attributeObserver.observe(element).pipe(\n map(() => DisabledObserver.isDisabled(getNativeElement(element))),\n distinctUntilChanged()\n );\n }\n\n /** @hidden */\n unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n this._attributeObserver.unobserve(element);\n }\n}\n","import { ElementRef } from '@angular/core';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { setDisabledState } from './set-disabled-state';\n\nexport class DefaultDisabledViewModifier implements DisabledViewModifier {\n /** @hidden */\n constructor(private elementRef: ElementRef<Element>) {}\n\n /** @hidden */\n setDisabledState = (isDisabled: boolean): void => {\n setDisabledState(this.elementRef, isDisabled, 'is-disabled', true);\n };\n}\n","import {\n DestroyRef,\n ElementRef,\n Inject,\n Injectable,\n NgZone,\n OnDestroy,\n Optional,\n Self,\n SkipSelf,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest, firstValueFrom } from 'rxjs';\nimport { distinctUntilChanged, startWith, tap } from 'rxjs/operators';\nimport { DefaultDisabledViewModifier } from './default-disabled-view-modifier';\nimport { DisabledBehavior } from './disabled-behavior.interface';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { DisabledObserver } from './disabled.observer';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\n\n@Injectable()\nexport class FdkDisabledProvider extends ReplaySubject<boolean> implements DisabledBehavior, OnDestroy {\n /** @Hidden */\n fdkDisabled = false;\n /** @Hidden */\n private readonly _destroyRef = inject(DestroyRef);\n /** @hidden */\n private readonly disabledObserver = inject(DisabledObserver);\n /** @hidden */\n private readonly _viewModifiers$: BehaviorSubject<DisabledViewModifier[]>;\n /** @hidden */\n private _disabledChange$: Observable<boolean>;\n\n /** @hidden */\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef<HTMLElement>,\n @Optional() @Self() @Inject(FDK_DISABLED_DIRECTIVE) private selfDisabled$?: DisabledBehavior,\n @Optional() @SkipSelf() @Inject(FDK_DISABLED_DIRECTIVE) private parentDisabled$?: DisabledBehavior\n ) {\n super(1);\n\n // Initialize properties that depend on injected services\n this._viewModifiers$ = new BehaviorSubject<DisabledViewModifier[]>(this._getInitialViewModifiers());\n this._disabledChange$ = this._getDisabledChange$();\n combineLatest([this._disabledChange$, this._viewModifiers$])\n .pipe(\n tap(([isDisabled]) => this.setDisabledState(isDisabled)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n this._disabledChange$\n .pipe(\n tap((isDisabled) => (this.fdkDisabled = isDisabled)),\n tap((isDisabled) => this.next(isDisabled)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n /** @hidden */\n addViewModifier(modifier: DisabledViewModifier): void {\n const viewModifiers = [...new Set([...this._viewModifiers$.value, modifier]).values()];\n this._viewModifiers$.next(viewModifiers);\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n firstValueFrom(this.ngZone.onStable).then(() => {\n this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setDisabledState(isDisabled));\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.complete();\n this.disabledObserver.unobserve(this.elementRef);\n }\n\n /** @hidden */\n private _getDisabledChange$(): Observable<boolean> {\n let selfDisabled = false;\n let parentDisabled = false;\n\n if (this.parentDisabled$) {\n this.parentDisabled$\n .pipe(\n startWith(this.parentDisabled$.fdkDisabled),\n tap((d) => (parentDisabled = d)),\n distinctUntilChanged(),\n tap(() => {\n if (parentDisabled) {\n this.setDisabledState(true);\n }\n if (!selfDisabled && !parentDisabled) {\n this.setDisabledState(false);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n if (this.selfDisabled$) {\n this.selfDisabled$\n .pipe(\n startWith(this.selfDisabled$.fdkDisabled),\n tap((d) => (selfDisabled = d)),\n distinctUntilChanged(),\n tap((isDisabled) => {\n if (!parentDisabled) {\n this.setDisabledState(isDisabled);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n return this.disabledObserver.observe(this.elementRef).pipe(distinctUntilChanged());\n }\n\n /** @hidden */\n private _getInitialViewModifiers(): DisabledViewModifier[] {\n return !this.selfDisabled$ ? [new DefaultDisabledViewModifier(this.elementRef)] : [this.selfDisabled$];\n }\n}\n","import { FocusableOption } from '@angular/cdk/a11y';\nimport { InjectionToken } from '@angular/core';\n\nexport const FOCUSABLE_ITEM = new InjectionToken<FocusableOption>('Focusable Option');\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChildren,\n DestroyRef,\n Directive,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n QueryList,\n SimpleChanges\n} from '@angular/core';\nimport { filter } from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RtlService } from '../../services/rtl.service';\nimport { FOCUSABLE_ITEM } from './focus-key-manager.tokens';\n\n/** Directive to apply Angular Material FocusKeyManager to lists.\n * To be used with FocusKeyManagerItemDirective\n */\n@Directive({\n selector: `[fdkFocusKeyManagerList]`,\n standalone: true\n})\nexport class FocusKeyManagerListDirective<TItem extends FocusableOption = Record<any, any> & FocusableOption>\n implements OnChanges, AfterContentInit, OnDestroy\n{\n /** Orientation for the FocusKeyManager */\n @Input()\n orientation: 'horizontal' | 'vertical';\n\n /** Skip predicate for the FocusKeyManager */\n @Input()\n skipPredicate: (item: TItem) => boolean;\n\n /** @hidden */\n @ContentChildren(FOCUSABLE_ITEM)\n readonly _items: QueryList<TItem>;\n\n /** @hidden */\n get focusKeyManager(): FocusKeyManager<TItem> {\n return this._focusKeyManager;\n }\n\n /** @hidden */\n private _focusKeyManager: FocusKeyManager<TItem>;\n\n /** @hidden */\n private readonly _onDestroy$ = inject(DestroyRef);\n\n /** @hidden */\n constructor(\n @Optional() private readonly _rtlService: RtlService,\n private readonly _cdr: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._focusKeyManager) {\n return;\n }\n\n if ('orientation' in changes) {\n this._applyOrientation();\n }\n\n if ('skiPredicate' in changes) {\n this._focusKeyManager.skipPredicate(this.skipPredicate);\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._focusKeyManager = new FocusKeyManager<TItem>(this._items).skipPredicate(this.skipPredicate);\n\n this._applyOrientation();\n\n this._cdr.detectChanges();\n\n this._rtlService?.rtl\n .pipe(\n filter(() => this.orientation === 'horizontal'),\n takeUntilDestroyed(this._onDestroy$)\n )\n .subscribe(() => this._applyOrientation());\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._focusKeyManager.destroy();\n }\n\n /** Focus certain list's item */\n focusItem(item: number | TItem): any {\n if (typeof item === 'number') {\n this._focusKeyManager.setActiveItem(item);\n } else {\n this._focusKeyManager.setActiveItem(item);\n }\n }\n\n /** @hidden */\n private _applyOrientation(): void {\n switch (this.orientation) {\n case 'horizontal':\n this._focusKeyManager.withHorizontalOrientation(this._rtlService?.rtl.value ? 'rtl' : 'ltr');\n break;\n case 'vertical':\n this._focusKeyManager.withVerticalOrientation(true);\n break;\n }\n }\n}\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport { booleanAttribute, Directive, ElementRef, forwardRef, HostBinding, HostListener, Input } from '@angular/core';\nimport { FocusKeyManagerListDirective } from './focus-key-manager-list.directive';\nimport { FOCUSABLE_ITEM } from './focus-key-manager.tokens';\n\n/** Directive to apply Angular Material FocusKeyManager to lists.\n * To be used with FocusKeyManagerItemDirective\n */\n@Directive({\n selector: '[fdkFocusKeyManagerItem]',\n standalone: true,\n providers: [{ provide: FOCUSABLE_ITEM, useExisting: forwardRef(() => FocusKeyManagerItemDirective) }]\n})\nexport class FocusKeyManagerItemDirective implements FocusableOption {\n /** Whether item should be initially focused */\n @Input({ transform: booleanAttribute })\n initialFocus = false;\n\n /** @hidden */\n @Input()\n @HostBinding('attr.tabindex')\n get _tabindex(): number {\n return this.initialFocus ? 0 : (this.nativeElement?.tabIndex ?? -1);\n }\n\n /** Native element of the item */\n get nativeElement(): any {\n return this._elRef?.nativeElement;\n }\n\n /** @hidden */\n private get _focusKeyManager(): FocusKeyManager<FocusableOption> {\n return this._list.focusKeyManager;\n }\n\n /** @hidden */\n constructor(\n private readonly _list: FocusKeyManagerListDirective,\n private readonly _elRef: ElementRef\n ) {}\n\n /** @hidden */\n @HostListener('focus')\n _onFocus(): void {\n // For cases where initially selected item doesn't have 0 index\n this._focusKeyManager?.updateActiveItem(this);\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n _onKeydown(event: KeyboardEvent): void {\n this._focusKeyManager?.onKeydown(event);\n }\n\n /** Focus current item native element */\n focus(): void {\n this._elRef?.nativeElement.focus();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { FocusKeyManagerItemDirective } from './focus-key-manager-item.directive';\nimport { FocusKeyManagerListDirective } from './focus-key-manager-list.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective],\n exports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective]\n})\nexport class FocusKeyManagerHelpersModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_ITEM_DIRECTIVE = new InjectionToken('Focusable directive token');\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ElementRef } from '@angular/core';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces';\n\nconst focusableTagnamesByDefault = new Set(['select', 'textarea', 'input', 'button', 'audio', 'video']);\n\nconst focusableTagOptions = [\n {\n tag: 'div',\n attributes: [\n {\n name: 'contenteditable',\n valueMatcher: (value: string) => coerceBooleanProperty(value)\n }\n ]\n }\n];\n\n/** @hidden */\nexport function isElementFocusableByDefault(el: HasElementRef<Element> | Element | ElementRef<Element>): boolean {\n const element = getNativeElement(el);\n const tagName = element.tagName.toLowerCase();\n if (focusableTagnamesByDefault.has(tagName)) {\n return true;\n }\n\n return focusableTagOptions.some((tagOptions) => {\n if (tagOptions.tag === tagName) {\n return tagOptions.attributes.some((attribute) => {\n const attrVal = element.getAttribute(attribute.name);\n return attrVal && attribute.valueMatcher(attrVal);\n });\n }\n return false;\n });\n}\n","import { ElementRef, Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\nimport { DisabledObserver } from '../disabled/disabled.observer';\nimport { isElementFocusableByDefault } from './is-element-focusable-by-default';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FocusableObserver {\n /** @hidden */\n private readonly _attributeObserver = inject(AttributeObserver);\n\n /** @Hidden */\n static isFocusable(element: Element, respectTabIndex: boolean): boolean {\n if (DisabledObserver.isDisabled(element)) {\n return false;\n }\n\n if (!respectTabIndex) {\n return true;\n }\n\n const tabIndex = parseInt(element.getAttribute('tabindex') + '', 10);\n if (isNaN(tabIndex)) {\n return isElementFocusableByDefault(element);\n }\n\n return tabIndex > -1;\n }\n\n /** @hidden */\n observe(\n element: HasElementRef<Element> | Element | ElementRef<Element>,\n respectTabIndex = true\n ): Observable<boolean> {\n const nativeElement = getNativeElement(element);\n return this._attributeObserver.observe(nativeElement).pipe(\n map(() => FocusableObserver.isFocusable(nativeElement, respectTabIndex)),\n distinctUntilChanged()\n );\n }\n\n /** @hidden */\n unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n this._attributeObserver.unobserve(element);\n }\n}\n","import { InteractivityChecker, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\n\nimport {\n DOCUMENT,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n Renderer2,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject, fromEvent } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { Nullable } from '../../models/nullable';\nimport { TabbableElementService } from '../../services';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable-item.tokens';\nimport { FocusableItem } from './focusable.item';\nimport { FocusableObserver } from './focusable.observer';\n\nexport type CellFocusedEventAnnouncer = Nullable<(position: FocusableItemPosition) => string>;\n\nexport interface FocusableItemPosition {\n rowIndex: number;\n colIndex: number;\n totalRows: number;\n totalCols: number;\n}\n\n@Directive({\n selector: '[fdkFocusableItem]',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: FocusableItemDirective\n }\n ]\n})\nexport class FocusableItemDirective implements FocusableItem, HasElementRef {\n /** Whether the item is focusable. Default is true. */\n @Input({ transform: booleanAttribute })\n set fdkFocusableItem(val: boolean) {\n this._focusable = val;\n this.setTabbable(this._focusable);\n }\n\n get fdkFocusableItem(): boolean {\n return this._focusable;\n }\n\n /** Function, which returns a string to be announced by screen-reader whenever an item which is in grid receives focus. */\n @Input()\n cellFocusedEventAnnouncer: CellFocusedEventAnnouncer = this._defaultItemFocusedEventAnnouncer;\n\n /** Event emitted when the cell receives focus, not being emitted when focus moves between item's children. */\n @Output()\n readonly cellFocused = new EventEmitter<FocusableItemPosition>();\n\n /** Event emitted when a focusable child element is focused. */\n @Output()\n readonly focusableChildElementFocused = new EventEmitter<void>();\n\n /** @hidden */\n @Output()\n readonly _parentFocusableItemFocused = new EventEmitter<void>();\n\n /** Element reference. */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** @hidden */\n readonly keydown = new Subject<KeyboardEvent>();\n\n /** @hidden */\n _position: FocusableItemPosition;\n\n /** @hidden */\n protected readonly _destroyRef = inject(DestroyRef);\n /** @hidden */\n protected readonly _zone = inject(NgZone);\n\n /** @hidden */\n private _focusable = true;\n\n /** @hidden */\n private _tabbableElements = new Map<HTMLElement, number>();\n\n /** @hidden */\n private _tabbable = true;\n /** @hidden */\n private readonly _focusableObserver = inject(FocusableObserver);\n /** @hidden */\n private readonly _tabbableElementService = inject(TabbableElementService);\n /** @hidden */\n private readonly _liveAnnouncer = inject(LiveAnnouncer);\n\n /** @hidden */\n private readonly _renderer2 = inject(Renderer2);\n\n /** @hidden */\n private readonly _document = inject(DOCUMENT);\n\n /** @hidden */\n private readonly _checker = inject(InteractivityChecker);\n\n /** @hidden */\n constructor() {\n this._focusableObserver\n .observe(this.elementRef, false)\n .pipe(takeUntilDestroyed())\n .subscribe((isFocusable) => {\n if (isFocusable !== this.fdkFocusableItem) {\n this.fdkFocusableItem = isFocusable;\n }\n });\n\n this._zone.runOutsideAngular(() => {\n fromEvent(this.elementRef.nativeElement, 'focusin')\n .pipe(takeUntilDestroyed())\n .subscribe(async () => {\n await this._onFocusin();\n });\n\n fromEvent<KeyboardEvent>(this.elementRef.nativeElement, 'keydown')\n .pipe(takeUntilDestroyed())\n .subscribe((event) => {\n this._onKeydown(event);\n });\n });\n }\n\n /** @hidden */\n element = (): HTMLElement => this.elementRef.nativeElement;\n\n /** @hidden */\n isFocusable(): boolean {\n return this._focusable;\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n /** Set tabbable state */\n setTabbable(state: boolean): void {\n this._zone.runOutsideAngular(() => {\n this._tabbable = state;\n this._renderer2.setAttribute(this.elementRef.nativeElement, 'tabindex', this._tabbable ? '0' : '-1');\n });\n }\n\n /** @hidden */\n enableTabbableElements(): void {\n if (this._tabbableElements.size === 0) {\n return;\n }\n\n this._tabbableElements.forEach((tabIndex, element) => (element.tabIndex = tabIndex));\n this._tabbable = false;\n }\n\n /** @hidden */\n disableTabbableElements(): void {\n // Since we cannot select by tabindex attribute (links, inputs, buttons might not have one but still can be focusable),\n // Select all elements from the cell and filter by tabIndex property.\n Array.from(this.elementRef.nativeElement.querySelectorAll<HTMLElement>('*'))\n .filter((elm) => elm.tabIndex >= 0)\n .forEach((elm) => {\n this._tabbableElements.set(elm, elm.tabIndex);\n elm.tabIndex = -1;\n });\n }\n\n /** @hidden */\n private async _onFocusin(): Promise<void> {\n if (!this.fdkFocusableItem) {\n return;\n }\n\n if (this._position) {\n this.cellFocused.next(this._position);\n\n if (this.cellFocusedEventAnnouncer) {\n this._liveAnnouncer.clear();\n await this._liveAnnouncer.announce(this.cellFocusedEventAnnouncer(this._position));\n }\n }\n\n const activeEl = this._document.activeElement as HTMLElement;\n\n if (activeEl === this.elementRef.nativeElement) {\n this._parentFocusableItemFocused.emit();\n } else if (activeEl && activeEl !== this.elementRef.nativeElement && this._checker.isFocusable(activeEl)) {\n this.focusableChildElementFocused.emit();\n }\n }\n\n /** @hidden */\n private _onKeydown(event: KeyboardEvent): void {\n if (!this.fdkFocusableItem) {\n return;\n }\n const activeEl = this._document.activeElement;\n const isFocused = activeEl === this.elementRef.nativeElement;\n const shouldFocusChild = KeyUtil.isKeyCode(event, [ENTER, MAC_ENTER, F2]) && !event.shiftKey && isFocused;\n const shouldFocusCell =\n ((KeyUtil.isKeyCode(event, F2) && event.shiftKey) || KeyUtil.isKeyCode(event, ESCAPE)) && !isFocused;\n\n if (shouldFocusChild) {\n event.stopPropagation();\n\n const tabbableElement = this._tabbableElementService.getTabbableElement(\n this.elementRef.nativeElement,\n false,\n true\n );\n\n tabbableElement?.focus();\n\n this.focusableChildElementFocused.emit();\n\n return;\n } else if (shouldFocusCell) {\n event.stopPropagation();\n\n this.elementRef.nativeElement.focus();\n\n return;\n }\n\n if (isFocused) {\n this.keydown.next(event);\n }\n }\n\n /** @hidden */\n private _defaultItemFocusedEventAnnouncer(position: FocusableItemPosition): string {\n return `Column ${position.colIndex + 1} of ${position.totalCols}, row: ${position.rowIndex + 1} of ${\n position.totalRows\n }`;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableItemDirective } from './focusable-item.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [FocusableItemDirective],\n exports: [FocusableItemDirective]\n})\nexport class FocusableItemModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_LIST_DIRECTIVE = new InjectionToken('Focusable list token');\n","import { Directive, inject, Injector } from '@angular/core';\nimport deepEqual from 'fast-deep-equal';\nimport { BehaviorSubject, debounceTime, distinctUntilChanged, map } from 'rxjs';\nimport { FocusableItem } from '../focusable-item/focusable.item';\nimport { FocusableListDirective, ItemsQueryList } from './focusable-list.directive';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';\n\n@Directive({\n selector: '[fdkIndirectFocusableList]',\n exportAs: 'fdkIndirectFocusableList',\n standalone: true\n})\nexport class IndirectFocusableListDirective {\n /** @hidden */\n injector = inject(Injector);\n /** @hidden */\n _focusableList = inject<FocusableListDirective>(FDK_FOCUSABLE_LIST_DIRECTIVE, { optional: true });\n /** @hidden */\n _indirectChildren = new BehaviorSubject<FocusableItem[]>([]);\n /** @hidden */\n _indirectChildrenMap = new Map<FocusableItem, number | (() => number)>();\n\n /** @hidden */\n constructor() {\n if (this._focusableList) {\n const queryList: ItemsQueryList<FocusableItem> = {\n toArray: () => this._indirectChildren.value,\n get: (index: number) => this._indirectChildren.value[index],\n [Symbol.iterator]: () => this._indirectChildren.value[Symbol.iterator](),\n forEach: (\n callback: (value: FocusableItem, index: number, array: FocusableItem[]) => void,\n thisArg?: any\n ) => this._indirectChildren.value.forEach(callback, thisArg)\n } as any;\n queryList['changes'] = this._indirectChildren.pipe(\n debounceTime(100),\n distinctUntilChanged(deepEqual),\n map(() => queryList)\n );\n this._focusableList.setItems(queryList);\n }\n }\n\n /** @hidden */\n register(item: FocusableItem, itemOrder: number | (() => number)): void {\n this._indirectChildrenMap.set(item, itemOrder);\n this._updateIndirectChildren();\n }\n\n /** @hidden */\n unregister(item: FocusableItem): void {\n this._indirectChildrenMap.delete(item);\n this._updateIndirectChildren();\n }\n\n /** @hidden */\n protected _updateIndirectChildren(): void {\n this._indirectChildren.next(\n Array.from(this._indirectChildrenMap.entries())\n .sort(([, orderA], [, orderB]) => {\n const orderAValue = typeof orderA === 'function' ? orderA() : orderA;\n const orderBValue = typeof orderB === 'function' ? orderB() : orderB;\n return orderAValue - orderBValue;\n })\n .map(([focusableItem]) => focusableItem)\n );\n }\n}\n","import { DestroyRef, Directive, inject, InjectionToken } from '@angular/core';\nimport { IndirectFocusableListDirective } from '../focusable-list/indirect-focusable-list.directive';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable-item.tokens';\nimport { FocusableItem } from './focusable.item';\n\nexport const FDK_INDIRECT_FOCUSABLE_ITEM_ORDER = new InjectionToken<number | (() => number)>(\n 'FDK_INDIRECT_FOCUSABLE_ITEM_ORDER'\n);\n\n/**\n * Directive, to mark the focusable item in the focusable list, which\n * is not the direct child of the focusable list.\n *\n * Useful in cases, when you need to make the item focusable, and\n * you do not have the access to the focusable list.\n */\n@Directive({\n selector: '[fdkIndirectFocusableItem]',\n standalone: true\n})\nexport class IndirectFocusableItemDirective {\n /** @hidden */\n protected _focusableItem = inject<FocusableItem>(FDK_FOCUSABLE_ITEM_DIRECTIVE, { optional: true });\n /** @hidden */\n protected _indirectFocusableList = inject(IndirectFocusableListDirective, { optional: true });\n /** @hidden */\n protected _order: number | (() => number) | null = inject(FDK_INDIRECT_FOCUSABLE_ITEM_ORDER, { optional: true });\n /** @hidden */\n protected _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor() {\n if (!this._focusableItem) {\n throw new Error(\n 'fdkIndirectFocusableItem directive must be used in conjunction with fdkFocusableItem directive'\n );\n }\n if (this._indirectFocusableList && this._order) {\n const focusableItem = this._focusableItem;\n const indirectFocusableList = this._indirectFocusableList;\n indirectFocusableList.register(this._focusableItem, this._order);\n this._destroyRef.onDestroy(() => indirectFocusableList.unregister(focusableItem));\n }\n }\n}\n","import { FocusableItem } from './focusable.item';\n\n/**\n * Returns true if the item configured to be focusable.\n * @param item\n */\nexport function isItemFocusable(item: FocusableItem): boolean {\n return Boolean(typeof item.isFocusable === 'function' ? item.isFocusable() : item.isFocusable);\n}\n","import { Nullable } from '../../models/nullable';\nimport { FocusableItem } from './focusable.item';\n\n/**\n * Returns the element of the item.\n * @param item\n */\nexport function getItemElement(item?: Nullable<FocusableItem>): HTMLElement | null {\n if (!item) {\n return null;\n }\n if (typeof item.element === 'function') {\n return item.element();\n }\n\n return item.element;\n}\n","import { Nullable } from '../../models/nullable';\n\nexport type ScrollPosition = 'top' | 'bottom' | undefined;\n\n/** Helper function to scroll to focusable list or its item relatively to the container. */\nexport function scrollIntoView(element: Nullable<HTMLElement>, position: Nullable<ScrollPosition>): void {\n if (!element) {\n return;\n }\n\n const scrollableParent = getScrollParent(element);\n\n if (scrollableParent) {\n const itemOffsetTop = element.offsetTop - scrollableParent.offsetTop;\n if (!position) {\n /**\n * check if top of focused element is fully visible, and if not, adjust scroll.\n * this is triggered when a sticky table header overlaps the focused cell.\n */\n const elRect = element.getBoundingClientRect();\n const topEl = document.elementFromPoint(elRect.left, elRect.top) as HTMLElement;\n if (\n !element.isSameNode(topEl) &&\n topEl &&\n element.getBoundingClientRect().top !== topEl.getBoundingClientRect().top\n ) {\n scrollableParent.scrollBy({ top: elRect.top - topEl.getBoundingClientRect().bottom });\n }\n }\n switch (position) {\n case 'top':\n scrollableParent.scrollTop = itemOffsetTop;\n break;\n case 'bottom':\n scrollableParent.scrollTop = itemOffsetTop - (scrollableParent.offsetHeight - element.offsetHeight);\n break;\n }\n }\n}\n\nfunction getScrollParent(node: HTMLElement | null): HTMLElement | null {\n if (node == null) {\n return null;\n }\n\n if (node.scrollHeight > node.clientHeight && ['auto', 'scroll'].includes(getComputedStyle(node).overflowY)) {\n return node;\n } else {\n return getScrollParent(node.parentNode as HTMLElement);\n }\n}\n","import { FocusKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\n\nimport {\n AfterViewInit,\n ContentChildren,\n DOCUMENT,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, Subject, merge } from 'rxjs';\nimport { finalize, map, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { KeyUtil, intersectionObservable } from '../../functions';\nimport { destroyObservable } from '../../helpers';\nimport { Nullable } from '../../models/nullable';\nimport {\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FocusableItem,\n FocusableListPosition,\n FocusableObserver,\n isItemFocusable\n} from '../focusable-item';\nimport { FocusableItemPosition } from '../focusable-item/focusable-item.directive';\nimport { getItemElement } from '../focusable-item/get-item-element';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';\nimport { ScrollPosition, scrollIntoView } from './scroll';\n\nexport interface FocusableListItemFocusedEvent {\n index: number;\n total: number;\n id?: string | null;\n}\n\nexport interface FocusableListKeydownEvent {\n list: FocusableListDirective;\n event: KeyboardEvent;\n activeItemIndex: Nullable<number>;\n}\n\ninterface FocusableListConfig {\n wrap?: boolean;\n direction?: 'vertical' | 'horizontal';\n contentDirection?: 'ltr' | 'rtl' | null;\n}\n\nexport interface ItemsQueryList<T> extends Iterable<T> {\n changes: Observable<ItemsQueryList<T>>;\n length: number;\n toArray(): T[];\n find(predicate: (item: T, index: number) => boolean): Nullable<T>;\n get(index: number): Nullable<T>;\n forEach(param: (item: T, index: number) => void): void;\n}\n\n@Directive({\n selector: '[fdkFocusableList]',\n exportAs: 'fdkFocusableList',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: FocusableListDirective\n }\n ]\n})\nexport class FocusableListDirective implements OnChanges, AfterViewInit, OnDestroy {\n /** Whether the whole list should be focusable, handy in grids. */\n @Input({ transform: booleanAttribute })\n set focusable(value: boolean) {\n this._focusable = value;\n\n this.setTabbable(this._focusable);\n }\n\n get focusable(): boolean {\n return this._focusable;\n }\n\n /** Direction of navigation. Should be set to 'grid' when list is a part of grid. */\n @Input()\n navigationDirection: 'horizontal' | 'vertical' | 'grid' = 'vertical';\n\n /** Direction of the content. */\n @Input()\n contentDirection: 'ltr' | 'rtl' | null = 'ltr';\n\n /**\n * Configures wrapping mode which determines whether the active item will wrap to the other end of list when there are no more items in the given direction.\n */\n @Input({ transform: booleanAttribute })\n wrap = false;\n\n /** Function, which returns a string to be announced by screen-reader whenever an row which is in grid receives focus. */\n @Input()\n listFocusedEventAnnouncer: (position: FocusableListPosition) => string = this._defaultListFocusedEventAnnouncer;\n\n /** Event emitted when list's item focused, contains item's position info. */\n @Output()\n readonly itemFocused = new EventEmitter<FocusableListItemFocusedEvent>();\n\n /** @hidden */\n @ContentChildren(FDK_FOCUSABLE_ITEM_DIRECTIVE, { descendants: true })\n readonly _projectedFocusableItems: ItemsQueryList<FocusableItem>;\n\n /** @hidden */\n get _focusableItems(): ItemsQueryList<FocusableItem> {\n return this._items ? this._items : this._projectedFocusableItems;\n }\n\n /** @hidden */\n _items: ItemsQueryList<FocusableItem> | undefined;\n\n /** @hidden */\n readonly _gridItemFocused$ = new Subject<FocusableItemPosition>();\n\n /** @hidden */\n readonly _gridListFocused$ = new Subject<FocusableListPosition>();\n\n /** @hidden */\n readonly _keydown$ = new Subject<FocusableListKeydownEvent>();\n\n /** @hidden */\n _isVisible = false;\n\n /** @hidden */\n protected readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n protected _focusable = false;\n\n /** @hidden */\n private _gridPosition: { rowIndex: number; totalRows: number };\n\n /** @hidden */\n private _keyManager?: FocusKeyManager<FocusableItem>;\n\n /** @hidden */\n private _tabbable = false;\n\n /** @hidden */\n private readonly _refreshItems$ = new Subject<void>();\n /** @hidden */\n private readonly _refresh$ = new Subject<void>();\n /** @hidden */\n private readonly _renderer = inject(Renderer2);\n /** @hidden */\n private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n /** @hidden */\n private readonly _liveAnnouncer = inject(LiveAnnouncer);\n /** @hidden */\n private readonly _focusableObserver = inject(FocusableObserver);\n\n /** @hidden */\n private readonly _document = inject(DOCUMENT);\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n get _tabindex(): number {\n return this._tabbable ? 0 : -1;\n }\n\n /** @hidden */\n constructor() {\n intersectionObservable(this._elementRef.nativeElement, { threshold: 0.25 })\n .pipe(takeUntilDestroyed())\n .subscribe((isVisible) => (this._isVisible = isVisible[0]?.isIntersecting));\n\n this._focusableObserver\n .observe(this._elementRef, false)\n .pipe(takeUntilDestroyed())\n .subscribe((isFocusable) => {\n if (!isFocusable && isFocusable !== this.focusable) {\n this.focusable = isFocusable;\n }\n });\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n _onKeydown(event: KeyboardEvent): void {\n // Already handled\n if (event.defaultPrevented) {\n return;\n }\n\n const isFocused = this._document.activeElement === this._elementRef.nativeElement;\n const shouldFocusChild = KeyUtil.isKeyCode(event, [ENTER, MAC_ENTER, F2]) && !event.shiftKey && isFocused;\n const shouldFocusList =\n ((KeyUtil.isKeyCode(event, F2) && event.shiftKey) || KeyUtil.isKeyCode(event, ESCAPE)) && !isFocused;\n\n if (shouldFocusChild) {\n event.stopPropagation();\n\n this.setActiveItem(0);\n\n return;\n } else if (shouldFocusList) {\n event.stopPropagation();\n\n this.focus();\n\n return;\n }\n\n this._keydown$.next({ list: this, event, activeItemIndex: this._keyManager?.activeItemIndex ?? null });\n }\n\n /** @hidden */\n @HostListener('focus')\n async _onFocus(): Promise<void> {\n if (this._gridPosition) {\n this._gridListFocused$.next(this._gridPosition);\n\n this._liveAnnouncer.clear();\n await this._liveAnnouncer.announce(this.listFocusedEventAnnouncer(this._gridPosition));\n\n this.setTabbable(true);\n }\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._keyManager) {\n return;\n }\n\n if (changes['wrap']) {\n this._keyManager = this._keyManager.withWrap(changes['wrap'].currentValue);\n }\n\n if (changes['navigationDirection']) {\n this._updateNavigationDirection();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenOnItems();\n }\n\n /** Set items programmatically. */\n setItems(items: ItemsQueryList<FocusableItem>): void {\n this._items = items;\n this._listenOnItems();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n }\n\n /** Set active item in list */\n setActiveItem(index: number, scrollPosition?: ScrollPosition): void {\n let availableIndex;\n\n this._focusableItems.find((item, itemIndex) => {\n if (itemIndex >= index && isItemFocusable(item)) {\n availableIndex = itemIndex;\n return true;\n }\n\n return false;\n });\n\n if (availableIndex != null) {\n scrollIntoView(getItemElement(this._focusableItems.get(availableIndex)), scrollPosition);\n this._keyManager?.setActiveItem(availableIndex);\n }\n }\n\n /** Focus whole list */\n focus(scrollPosition?: ScrollPosition): void {\n if (this.focusable) {\n scrollIntoView(this._elementRef.nativeElement, scrollPosition);\n this._elementRef.nativeElement.focus();\n }\n }\n\n /** Set tabbable state */\n setTabbable(state: boolean): void {\n this._tabbable = state;\n }\n\n /** @hidden */\n _updateNavigationDirection(): void {\n if (!this._keyManager) {\n return;\n }\n\n if (this.navigationDirection === 'vertical') {\n this._keyManager = this._keyManager.withVerticalOrientation(true);\n this._keyManager = this._keyManager.withHorizontalOrientation(null);\n } else {\n this._keyManager = this._keyManager.withVerticalOrientation(false);\n this._keyManager = this._keyManager.withHorizontalOrientation(this.contentDirection || 'ltr');\n }\n }\n\n /** @hidden */\n _setItemsTabbable(state: boolean): void {\n this._focusableItems.forEach((item) => item.setTabbable(state));\n }\n\n /** @hidden */\n _setGridPosition(position: FocusableListPosition): void {\n this._gridPosition = position;\n\n this._focusableItems.changes\n .pipe(startWith(this._focusableItems), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) =>\n items.forEach(\n (item, index) =>\n (item._position = {\n ...this._gridPosition,\n colIndex: index,\n totalCols: this._focusableItems.length\n })\n )\n );\n }\n\n /** @hidden */\n private _initializeFocusManager(items: FocusableItem[], config: FocusableListConfig = {}): void {\n this._refreshItems$.next();\n\n let keyManager = new FocusKeyManager<any>(items).withHomeAndEnd();\n\n if (config.wrap !== false) {\n keyManager = keyManager.withWrap();\n }\n\n if (config.direction === 'horizontal') {\n keyManager = keyManager.withHorizontalOrientation(config.contentDirection || 'ltr'); // should be replaced\n\n // Vertical is enabled by default, so let's disable it here in consistency purposes\n keyManager = keyManager.withVerticalOrientation(false);\n }\n\n keyManager.skipPredicate((i) => !isItemFocusable(i));\n\n this._keyManager = keyManager;\n\n const focusListenerDestroyers = items.map((item, index) =>\n this._renderer.listen(getItemElement(item), 'focus', () => {\n const directiveItem = this._focusableItems.get(index);\n if (!directiveItem) {\n return;\n }\n\n if (this._gridPosition) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._gridItemFocused$.next(directiveItem._position!);\n }\n\n const id = getItemElement(item)?.id ?? null;\n this.itemFocused.next({ index, total: items.length, id });\n this._focusableItems.forEach((i) => i.setTabbable(i === directiveItem));\n this._keyManager?.setActiveItem(index);\n })\n );\n\n merge(...items.map((item) => item.keydown))\n .pipe(\n tap((event: KeyboardEvent) => {\n // Already handled\n if (event.defaultPrevented) {\n return;\n }\n\n this._keyManager?.onKeydown(event);\n }),\n takeUntil(merge(this._refreshItems$, destroyObservable(this._destroyRef))),\n finalize(() => focusListenerDestroyers.forEach((d) => d()))\n )\n .subscribe();\n }\n\n /** @hidden */\n private _defaultListFocusedEventAnnouncer(position: FocusableListPosition): string {\n return `Row: ${position.rowIndex + 1} of ${position.totalRows}, use F2 button to dive in and focus list's item`;\n }\n\n /** @hidden */\n private _listenOnItems(): void {\n const refresh$ = merge(this._refresh$, destroyObservable(this._destroyRef));\n this._refresh$.next();\n this._focusableItems.changes\n .pipe(\n startWith(null),\n map(() => this._focusableItems.toArray()),\n tap((items: FocusableItem[]): void => {\n const direction = this.navigationDirection === 'grid' ? 'horizontal' : this.navigationDirection;\n\n this._initializeFocusManager(items, {\n direction,\n contentDirection: this.contentDirection,\n wrap: !!this.wrap\n });\n }),\n takeUntil(refresh$)\n )\n .subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableItemDirective } from '../focusable-item';\nimport { FocusableListDirective } from './focusable-list.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [FocusableItemDirective, FocusableListDirective],\n exports: [FocusableItemDirective, FocusableListDirective]\n})\nexport class FocusableListModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_GRID_DIRECTIVE = new InjectionToken('Focusable grid directive token');\n","import { DOWN_ARROW, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ContentChildren,\n DestroyRef,\n Directive,\n EventEmitter,\n Input,\n Output,\n QueryList,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge, startWith, switchMap } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { Nullable } from '../../models/nullable';\nimport {\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FocusableItemDirective,\n FocusableItemPosition,\n FocusableListPosition\n} from '../focusable-item';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE, FocusableListDirective, ScrollPosition } from '../focusable-list';\nimport { FDK_FOCUSABLE_GRID_DIRECTIVE } from './focusable-grid.tokens';\n\nexport interface FocusableCellPosition {\n rowIndex: number;\n colIndex: number;\n}\n\n@Directive({\n selector: '[fdkFocusableGrid]',\n exportAs: 'fdkFocusableGrid',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_GRID_DIRECTIVE,\n useExisting: FocusableGridDirective\n }\n ]\n})\nexport class FocusableGridDirective implements AfterViewInit {\n /** Direction of the content. */\n @Input()\n contentDirection: 'ltr' | 'rtl' | null = 'ltr';\n\n /** Whether the item in the previous/next row should be selected when going out of the first/last cell in the row. Default is false. */\n @Input({ transform: booleanAttribute })\n wrapHorizontally = false;\n\n /** Specify which item to select in prev/next row if its length smaller than current index. Nullish value means do not select. Default is null. */\n @Input()\n shortRowFocus: Nullable<'first' | 'last'> = null;\n\n /** Event emitted when item focused, contains item's position info. */\n @Output()\n readonly itemFocused = new EventEmitter<FocusableItemPosition>();\n\n /** Event emitted when whole row focused, contains row's position info. */\n @Output()\n readonly rowFocused = new EventEmitter<FocusableListPosition>();\n\n /** @hidden */\n @ContentChildren(FDK_FOCUSABLE_LIST_DIRECTIVE, { descendants: true })\n private readonly _focusableLists: QueryList<FocusableListDirective>;\n\n /** @hidden */\n @ContentChildren(FDK_FOCUSABLE_ITEM_DIRECTIVE, { descendants: true })\n private readonly _focusableItems: QueryList<FocusableItemDirective>;\n\n /** @hidden */\n _preventKeydown = false;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._focusableLists.changes\n .pipe(startWith(this._focusableLists), takeUntilDestroyed(this._destroyRef))\n .subscribe((lists) => {\n lists.forEach((list, index) => {\n list._setGridPosition({ rowIndex: index, totalRows: this._focusableLists.length });\n list._focusableItems.changes\n .pipe(startWith(list._focusableItems), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) => {\n this._handleItemSubscriptions(items);\n });\n });\n });\n\n this._focusableItems.changes\n .pipe(startWith(this._focusableItems), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) => {\n this._handleItemSubscriptions(items);\n });\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().map((list) => list._gridListFocused$))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((focusedEvent) => {\n this.rowFocused.emit(focusedEvent);\n\n this._focusableLists.forEach((list) => list.setTabbable(false));\n this._focusableLists.forEach((list) => list._setItemsTabbable(false));\n });\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().map((list) => list._gridItemFocused$))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((focusedEvent) => {\n this.itemFocused.emit(focusedEvent);\n\n this._focusableLists.forEach((list) => list.setTabbable(false));\n this._focusableLists.forEach((list) => list._setItemsTabbable(false));\n });\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().map((list) => list._keydown$))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(({ event, list, activeItemIndex }) => this._onKeydown(event, list, activeItemIndex));\n }\n\n /**\n * Focus cell by position.\n * @param position position of the cell\n */\n focusCell(position: FocusableCellPosition): void {\n const list = this._focusableLists.get(position.rowIndex);\n if (list) {\n list.setActiveItem(position.colIndex);\n }\n }\n\n /** @hidden */\n _onKeydown(event: KeyboardEvent, list: FocusableListDirective, activeItemIndex: Nullable<number>): void {\n if (\n !KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, PAGE_DOWN, PAGE_UP]) ||\n this._preventKeydown\n ) {\n return;\n }\n\n const lists = this._focusableLists.toArray();\n const currentRowIndex = lists.findIndex((item) => item === list);\n let nextRowIndex: number | undefined;\n let nextRowItemIndex = activeItemIndex ?? 0;\n let scrollIntoView: ScrollPosition;\n\n const isFirstItemLtr = activeItemIndex === 0 && this.contentDirection !== 'rtl';\n const isLastItemRtl = activeItemIndex === list._focusableItems.length - 1 && this.contentDirection === 'rtl';\n\n const isFirstItemRtl = activeItemIndex === 0 && this.contentDirection === 'rtl';\n const isLastItemLtr = activeItemIndex === list._focusableItems.length - 1 && this.contentDirection !== 'rtl';\n\n switch (event.keyCode) {\n case UP_ARROW:\n event.preventDefault();\n nextRowIndex = currentRowIndex - 1;\n break;\n case DOWN_ARROW:\n event.preventDefault();\n nextRowIndex = currentRowIndex + 1;\n break;\n case LEFT_ARROW:\n if (this.wrapHorizontally && (isFirstItemLtr || isLastItemRtl)) {\n event.preventDefault();\n nextRowIndex = currentRowIndex - 1;\n nextRowItemIndex = lists[nextRowIndex]?._focusableItems.length - 1;\n }\n break;\n case RIGHT_ARROW:\n if (this.wrapHorizontally && (isFirstItemRtl || isLastItemLtr)) {\n event.preventDefault();\n nextRowIndex = currentRowIndex + 1;\n nextRowItemIndex = 0;\n }\n break;\n case PAGE_DOWN:\n event.preventDefault();\n nextRowIndex = lists.findLastIndex((item) => item._isVisible);\n scrollIntoView = 'top';\n break;\n case PAGE_UP:\n event.preventDefault();\n nextRowIndex = lists.findIndex((item) => item._isVisible);\n scrollIntoView = 'bottom';\n break;\n }\n\n const nextRow = lists[nextRowIndex ?? -1];\n if (nextRow) {\n if (nextRow.focusable) {\n nextRow.focus(scrollIntoView);\n return;\n }\n\n const itemIndex = this._getItemIndex(nextRow, nextRowItemIndex);\n if (itemIndex != null) {\n nextRow.setActiveItem(itemIndex, scrollIntoView);\n }\n }\n }\n\n /** @hidden */\n private _getItemIndex(list: FocusableListDirective, activeIndex: number): Nullable<number> {\n if (activeIndex >= 0 && activeIndex < list._focusableItems.length) {\n return activeIndex;\n }\n\n if (this.shortRowFocus == null) {\n return null;\n }\n\n return this.shortRowFocus === 'first' ? 0 : list._focusableItems.length - 1;\n }\n\n /** @hidden */\n private _handleItemSubscriptions(items: QueryList<FocusableItemDirective>): void {\n items.forEach((item) => {\n item.focusableChildElementFocused.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._focusableLists.forEach((focusableList) => {\n focusableList._focusableItems.forEach((focusableItem) => {\n focusableItem.setTabbable(false);\n (focusableItem as FocusableItemDirective).enableTabbableElements();\n });\n });\n });\n item._parentFocusableItemFocused.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._focusableLists.forEach((focusableList) => {\n focusableList._focusableItems.forEach((focusableItem) => {\n if (item !== focusableItem) {\n (focusableItem as FocusableItemDirective).disableTabbableElements();\n } else {\n (focusableItem as FocusableItemDirective).enableTabbableElements();\n }\n });\n });\n });\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableListModule } from '../focusable-list';\nimport { FocusableGridDirective } from './focusable-grid.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [FocusableListModule, FocusableGridDirective],\n exports: [FocusableListModule, FocusableGridDirective]\n})\nexport class FocusableGridModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const IgnoreClickOnSelectionDirectiveToken = new InjectionToken('Ignore click on selection directive');\n","import { Directive, DOCUMENT, ElementRef, HostListener, Inject } from '@angular/core';\nimport { IgnoreClickOnSelectionDirectiveToken } from './tokens';\n\n/**\n * Directive will stop propagation and prevent default of click, if selected area is coming from\n * directive's host element. This gives ability to not cancel all clicks on element, just the ones\n * which include selection\n */\n@Directive({\n selector: '[fdkIgnoreClickOnSelection]',\n standalone: true,\n providers: [\n {\n provide: IgnoreClickOnSelectionDirectiveToken,\n useExisting: IgnoreClickOnSelectionDirective\n }\n ]\n})\nexport class IgnoreClickOnSelectionDirective {\n /** @hidden */\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private _elementRef: ElementRef<HTMLElement>\n ) {}\n\n /** Host click listener. Checks for selection existence and if finds one, checks anchor */\n @HostListener('click', ['$event'])\n clicked($event: MouseEvent): void {\n const selection = this.document.getSelection();\n if (selection?.toString()) {\n if (\n selection.anchorNode &&\n (this._elementRef.nativeElement.isSameNode(selection.anchorNode) ||\n this._elementRef.nativeElement.isSameNode(selection.anchorNode.parentElement))\n ) {\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { IgnoreClickOnSelectionDirective } from './ignore-click-on-selection.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [IgnoreClickOnSelectionDirective],\n exports: [IgnoreClickOnSelectionDirective]\n})\nexport class IgnoreClickOnSelectionModule {}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, filter, take } from 'rxjs/operators';\nimport { TabbableElementService } from '../../services/tabbable-element.service';\n\n@Directive({\n selector: '[fdkInitialFocus]',\n standalone: true,\n providers: [TabbableElementService]\n})\nexport class InitialFocusDirective implements AfterViewInit {\n /**\n * CSS selector of an element that should be focused.\n */\n @Input()\n fdkInitialFocus = '.fd-initial-focus-item';\n\n /**\n * Whether initial focus enabled for a current element.\n */\n @Input()\n set enabled(value: boolean) {\n if (value === this.enabled) {\n return;\n }\n this._enabled$.next(value);\n }\n\n get enabled(): boolean {\n return this._enabled$.getValue();\n }\n\n /**\n * Whether to focus last element in a found array of elements.\n */\n @Input()\n focusLastElement = false;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _enabled$ = new BehaviorSubject<boolean>(true);\n\n /** @hidden */\n constructor(\n private _elmRef: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n private readonly _tabbableService: TabbableElementService\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._enabled$\n .pipe(\n distinctUntilChanged(),\n filter((enabled) => enabled),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(() => {\n this._executeOnEmpty(() => this._focus());\n });\n }\n\n /**\n * @hidden\n * Executes a function when the zone is stable.\n */\n private _executeOnEmpty(fn: () => any): void {\n if (!this._ngZone.hasPendingMicrotasks) {\n fn();\n } else {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(fn);\n }\n }\n\n /**\n * @hidden\n * Searches for an appropriate focusable element\n */\n private _getFocusableElement(): HTMLElement | null {\n if (!this.fdkInitialFocus) {\n return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);\n }\n\n const autoFocusableItems = this._elmRef.nativeElement.querySelectorAll(\n this.fdkInitialFocus\n ) as NodeListOf<HTMLElement>;\n\n if (autoFocusableItems.length > 0) {\n return !this.focusLastElement ? autoFocusableItems[0] : autoFocusableItems[autoFocusableItems.length - 1];\n }\n\n // If no elements found, fallback to a first tabbable element.\n return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);\n }\n\n /** @hidden */\n private _focus(): void {\n if (!this.enabled) {\n return;\n }\n const elm = this._getFocusableElement();\n elm?.focus();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { InitialFocusDirective } from './initial-focus.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [InitialFocusDirective],\n exports: [InitialFocusDirective]\n})\nexport class InitialFocusModule {}\n","import { DestroyRef, Directive, ElementRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { intersectionObservable } from '../../functions';\n\n@Directive({\n selector: '[fdkIntersectionSpy]',\n standalone: true\n})\nexport class IntersectionSpyDirective implements OnInit {\n /** Intersection offset in px. */\n @Input('fdkIntersectionSpy')\n offset = 20;\n /** Intersection observer options. */\n @Input()\n viewportOptions: IntersectionObserverInit;\n\n /** Event emitted when intersection observer emits with the current element. */\n @Output()\n intersected = new EventEmitter<boolean>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** @hidden */\n ngOnInit(): void {\n intersectionObservable(this._elementRef.nativeElement, this.viewportOptions)\n .pipe(\n map((entries) => entries[0]),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((entry) => {\n this.intersected.emit(entry.isIntersecting);\n });\n }\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n Renderer2\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { Nullable } from '../../models/nullable';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\n\n@Directive({\n selector: '[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]',\n exportAs: 'fdLineClampTarget',\n standalone: true\n})\nexport class LineClampTargetDirective implements OnChanges, AfterViewInit {\n /**\n * Target text for clamping\n */\n @Input()\n fdLineClampTargetText: string;\n\n /**\n * Event with target instance for clamping\n */\n @Output() update = new EventEmitter<LineClampTargetDirective>();\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef) {}\n\n /**\n * Native element of clamping target\n */\n get targetElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.update.emit(this);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.update.emit(this);\n }\n}\n\n@Directive({\n selector: '[fdkLineClamp]',\n exportAs: 'fdLineClamp',\n standalone: true\n})\nexport class LineClampDirective implements OnChanges, AfterViewInit {\n /**\n * Count lines for clamping\n */\n @Input()\n set fdLineClampLines(value: Nullable<number>) {\n this._lineCount = coerceNumberProperty(value);\n }\n\n /**\n * Clamping state\n */\n @Input()\n fdLineclampState = false;\n\n /**\n * Event return count of lines from the target\n */\n @Output()\n lineCountUpdate = new EventEmitter<number>();\n\n /** @hidden */\n private _lineClampTarget: HTMLElement;\n /** @hidden */\n private _originalText: string;\n\n /** @hidden */\n private _isNativeSupport = true;\n\n /** @hidden */\n private _lineCount: number;\n\n /** @hidden */\n private viewportSize$ = inject(ViewportSizeObservable);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n /**\n * Root native element of clamping box\n */\n get rootElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef,\n private readonly _renderer: Renderer2\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._isNativeSupport = typeof this.rootElement.style.webkitLineClamp !== 'undefined';\n\n // need to use setTimeout to force recheck of parent elements\n setTimeout(() => {\n this._checkLineCount();\n });\n\n this.viewportSize$\n .pipe(distinctUntilChanged(), debounceTime(200), takeUntilDestroyed(this._destroyRef))\n .subscribe({\n next: () => this._checkLineCount()\n });\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.reset();\n this.refreshClamp();\n }\n\n /** @hidden */\n reset(): void {\n if (this._lineClampTarget) {\n this._lineClampTarget.textContent = this._originalText;\n }\n if (this._isNativeSupport) {\n this._resetNative();\n }\n }\n\n /** @hidden */\n refreshTarget(event: LineClampTargetDirective): void {\n this._lineClampTarget = event.targetElement;\n this._originalText = event.fdLineClampTargetText;\n this._checkLineCount();\n }\n\n /** @hidden */\n refreshClamp(): void {\n if (this.fdLineclampState && this._lineCount) {\n this.native();\n if (!this._isNativeSupport) {\n this._truncate();\n }\n }\n }\n\n /** @hidden\n * Truncate text in the target box, if browser not support lineclamp style\n */\n private _truncate(): void {\n if (!this._lineClampTarget) {\n return;\n }\n const lineClampHeight = Math.ceil(this.getLineHeight() * this._lineCount);\n const ellipsisTextArray = this._originalText.split(' ');\n const ellipsisText = (): void => {\n if (this.rootElement.scrollHeight > lineClampHeight) {\n ellipsisTextArray.pop();\n this._lineClampTarget.textContent = ellipsisTextArray.join(' ') + '...';\n ellipsisText.call(this);\n }\n };\n ellipsisText();\n }\n\n /** @hidden\n * Get lineheight for rootelement, if browser not support lineclamp style\n */\n private getLineHeight(): number {\n const lineHeight = window.getComputedStyle(this.rootElement, null).getPropertyValue('line-height');\n if (lineHeight === 'normal') {\n return parseInt(window.getComputedStyle(this.rootElement, null).getPropertyValue('font-size'), 10) * 1.25;\n }\n\n return parseFloat(lineHeight);\n }\n\n /** @hidden\n * Setup native styles for lineclamp text\n */\n private native(): void {\n if (this._isNativeSupport) {\n this._renderer.setStyle(this.rootElement, 'display', '-webkit-box');\n this._renderer.setStyle(this.rootElement, 'overflow', 'hidden');\n this._renderer.setStyle(this.rootElement, 'text-overflow', 'ellipsis');\n this._renderer.setStyle(this.rootElement, '-webkit-box-orient', 'vertical');\n this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', `${this._lineCount}`);\n }\n }\n\n /** @hidden\n * Reset native styles for lineclamp text\n */\n private _resetNative(): void {\n if (this._isNativeSupport) {\n this._renderer.setStyle(this.rootElement, 'display', '');\n this._renderer.setStyle(this.rootElement, 'overflow', '');\n this._renderer.setStyle(this.rootElement, 'text-overflow', '');\n this._renderer.setStyle(this.rootElement, '-webkit-box-orient', '');\n this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', '');\n }\n }\n\n /** @hidden */\n private _checkLineCount(): void {\n if (!this.rootElement) {\n return;\n }\n const style = window.getComputedStyle(this.rootElement, null);\n\n this.reset();\n\n const fontSize = parseInt(style.getPropertyValue('font-size'), 10);\n const boxSizing = style.getPropertyValue('box-sizing');\n let height = parseInt(style.getPropertyValue('height'), 10);\n let lineHeight = parseFloat(style.getPropertyValue('line-height'));\n if (isNaN(lineHeight)) {\n lineHeight = fontSize * 1.2;\n }\n if (boxSizing === 'border-box') {\n const padding_top = parseInt(style.getPropertyValue('padding-top'), 10);\n const padding_bottom = parseInt(style.getPropertyValue('padding-bottom'), 10);\n const border_top = parseInt(style.getPropertyValue('border-top-width'), 10);\n const border_bottom = parseInt(style.getPropertyValue('border-bottom-width'), 10);\n height = height - padding_top - padding_bottom - border_top - border_bottom;\n }\n this.refreshClamp();\n this.lineCountUpdate.emit(Math.ceil(height / lineHeight));\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { LineClampDirective, LineClampTargetDirective } from './line-clamp.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [LineClampTargetDirective, LineClampDirective],\n exports: [LineClampTargetDirective, LineClampDirective]\n})\nexport class LineClampModule {}\n","import {\n A,\n BACKSPACE,\n C,\n DASH,\n DELETE,\n DOWN_ARROW,\n END,\n ENTER,\n ESCAPE,\n HOME,\n LEFT_ARROW,\n NUMPAD_MINUS,\n RIGHT_ARROW,\n TAB,\n UP_ARROW,\n V,\n X\n} from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { KeyUtil } from '../../functions';\n\n@Directive({\n selector: '[fdkOnlyDigits]',\n standalone: true\n})\nexport class OnlyDigitsDirective {\n /** Allow using decimal */\n @Input() decimal = false;\n /** Define decimal separator\n * Default: .(dot)\n */\n @Input() decimalSeparator = '.';\n\n /** @hidden */\n private _inputElement: HTMLInputElement;\n /** @hidden */\n private _hasDecimalPoint = false;\n\n /** @hidden */\n constructor(private readonly _el: ElementRef) {\n this._inputElement = this._el.nativeElement;\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n onKeyDown(e: KeyboardEvent): void {\n if (\n // Allow: Delete, Backspace, Tab, Escape, Enter, End, Home, Arrow Left, Arrow Right, Arrow Up, Arrow Down\n KeyUtil.isKeyCode(e, [\n DELETE,\n BACKSPACE,\n TAB,\n ESCAPE,\n ENTER,\n END,\n HOME,\n LEFT_ARROW,\n RIGHT_ARROW,\n UP_ARROW,\n DOWN_ARROW\n ]) ||\n // Allow: Ctrl+(A/C/V/X) and Cmd+(A/C/V/X) (Mac)\n (KeyUtil.isKeyCode(e, [A, C, V, X]) && (e.ctrlKey || e.metaKey))\n ) {\n return; // let it happen, don't do anything\n }\n\n if (KeyUtil.isKeyCode(e, [DASH, NUMPAD_MINUS])) {\n const newValue = this._forecastValue(e.key);\n\n if (this._inputElement.value[0] === '-' || newValue[0] !== '-') {\n e.preventDefault();\n\n return; // has DASH point\n } else {\n return; // Allow: only one DASH point\n }\n }\n\n if (this.decimal && e.key === this.decimalSeparator) {\n const newValue = this._forecastValue(e.key);\n if (newValue.split(this.decimalSeparator).length > 2) {\n // has two or more decimal points\n e.preventDefault();\n return;\n } else {\n this._hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;\n return; // Allow: only one decimal point\n }\n }\n\n // Ensure that it is a number and stop the keypress\n if (e.key === ' ' || isNaN(Number(e.key))) {\n e.preventDefault();\n return;\n }\n }\n\n /** @hidden */\n @HostListener('paste', ['$event'])\n onPaste(event: any): void {\n if (window['clipboardData']) {\n // Browser is IE\n this._pasteData(window['clipboardData'].getData('text'));\n } else if (event.clipboardData && event.clipboardData.getData) {\n // Other browsers\n this._pasteData(event.clipboardData.getData('text/plain'));\n }\n\n event.preventDefault();\n }\n\n /** @hidden */\n @HostListener('drop', ['$event'])\n onDrop(event: DragEvent): void {\n const textData = event.dataTransfer?.getData('text') ?? '';\n this._inputElement.focus();\n this._pasteData(textData);\n\n event.preventDefault();\n }\n\n /** @hidden */\n private _pasteData(pastedContent: string): void {\n const sanitizedContent = this._sanitizeInput(pastedContent);\n const pasted = document.execCommand('insertText', false, sanitizedContent);\n if (!pasted) {\n if (this._inputElement.setRangeText) {\n const { selectionStart: start, selectionEnd: end } = this._inputElement;\n this._inputElement.setRangeText(sanitizedContent, start ?? 0, end ?? 0, 'end');\n // Angular's Reactive Form relies on \"input\" event, but on Firefox, the setRangeText method doesn't trigger it\n // so we have to trigger it ourself.\n if (typeof window['InstallTrigger'] !== 'undefined') {\n this._inputElement.dispatchEvent(new Event('input', { cancelable: true }));\n }\n } else {\n // Browser does not support setRangeText, e.g. IE\n this._insertAtCursor(this._inputElement, sanitizedContent);\n }\n }\n\n if (this.decimal) {\n this._hasDecimalPoint = this._inputElement.value.indexOf(this.decimalSeparator) > -1;\n }\n }\n\n // The following 2 methods were added from the below article for browsers that do not support setRangeText\n // https://stackoverflow.com/questions/11076975/how-to-insert-text-into-the-textarea-at-the-current-cursor-position\n /** @hidden */\n private _insertAtCursor(myField: HTMLInputElement, myValue: string): void {\n const startPos = myField.selectionStart ?? 0;\n const endPos = myField.selectionEnd ?? 0;\n\n myField.value =\n myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);\n\n const pos = startPos + myValue.length;\n myField.focus();\n myField.setSelectionRange(pos, pos);\n\n this._triggerEvent(myField, 'input');\n }\n\n /** @hidden */\n private _triggerEvent(el: HTMLInputElement, type: string): void {\n if ('createEvent' in document) {\n // modern browsers, IE9+\n const e = document.createEvent('HTMLEvents');\n e.initEvent(type, false, true);\n el.dispatchEvent(e);\n }\n }\n // end stack overflow code\n\n /** @hidden */\n private _sanitizeInput(input: string): string {\n let result = '';\n if (this.decimal && this._isValidDecimal(input)) {\n const regex = new RegExp(`[^0-9${this.decimalSeparator}]`, 'g');\n result = input.replace(regex, '');\n } else {\n result = input.replace(/[^0-9]/g, '');\n }\n\n if (input[0] === '-') {\n result = `-${result}`;\n }\n\n const maxLength = this._inputElement.maxLength;\n if (maxLength > 0) {\n // the input element has maxLength limit\n const allowedLength = maxLength - this._inputElement.value.length;\n result = allowedLength > 0 ? result.substring(0, allowedLength) : '';\n }\n\n return result;\n }\n\n /** @hidden */\n private _isValidDecimal(string: string): boolean {\n if (!this._hasDecimalPoint) {\n return string.split(this.decimalSeparator).length <= 2;\n } else {\n // the input element already has a decimal separator\n const selectedText = this._getSelection;\n if (selectedText && selectedText.indexOf(this.decimalSeparator) > -1) {\n return string.split(this.decimalSeparator).length <= 2;\n } else {\n return string.indexOf(this.decimalSeparator) < 0;\n }\n }\n }\n\n /** @hidden */\n private get _getSelection(): string {\n const { selectionStart, selectionEnd } = this._inputElement;\n\n return this._inputElement.value.substring(selectionStart ?? 0, selectionEnd ?? 0);\n }\n\n /** @hidden */\n private _forecastValue(key: string): string {\n const { selectionStart, selectionEnd, value: oldValue } = this._inputElement;\n const selection = oldValue.substring(selectionStart ?? 0, selectionEnd ?? 0);\n\n return selection\n ? oldValue.replace(selection, key)\n : oldValue.substring(0, selectionStart ?? 0) + key + oldValue.substring(selectionStart ?? 0);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { OnlyDigitsDirective } from './only-digits.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [OnlyDigitsDirective],\n exports: [OnlyDigitsDirective]\n})\nexport class OnlyDigitsModule {}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[fdkOverflowListItem]',\n standalone: true\n})\nexport class OverflowListItemDirective {\n /** @hidden */\n constructor(public el: ElementRef) {}\n}\n","import {\n AfterViewInit,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n QueryList,\n inject\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\n\n@Directive({\n selector: '[fdkOverflowList]',\n standalone: true\n})\nexport class OverflowListDirective implements AfterViewInit {\n /**\n * @description Offset to calculate correct position\n */\n @Input()\n overflowOffset = 0;\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description value of display property of existed list items\n */\n @Input()\n itemCssBlockValue = 'flex';\n\n /**\n * @description Emits when changed amount of extra items\n */\n @Output()\n overflowChanged: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * @description References to QueryList of OverflowListItemDirective\n */\n @ContentChildren(OverflowListItemDirective)\n overflowItems: QueryList<OverflowListItemDirective>;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private observer: ResizeObserver;\n\n /** @hidden */\n constructor(\n private _el: ElementRef,\n private _ngZone: NgZone\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.initResizeObserver();\n this.calculateOverflow();\n fromEvent(window, 'resize')\n .pipe(debounceTime(100))\n .subscribe(() => this.calculateOverflow());\n }\n\n /**\n * @description Get amount of extra items in current list\n * */\n getAmountOfExtraItems(): number {\n const elements = this.overflowItems.toArray().map((item) => item.el.nativeElement);\n const computed = getComputedStyle(this._el.nativeElement);\n const contentWidth = Math.floor(\n this._el.nativeElement.clientWidth -\n parseFloat(computed.paddingLeft || '0') -\n parseFloat(computed.paddingRight || '0')\n );\n\n if (contentWidth <= 0) {\n return 0;\n }\n\n return this._checkWidthWithOffset(elements, contentWidth);\n }\n\n /**\n * @description Ensuring that calculations run in the Angular zone\n */\n public calculateOverflow(): void {\n this._ngZone.run(() => {\n setTimeout(() => {\n const elements = this.overflowItems.map((item) => item.el.nativeElement);\n const contentWidth = this._el.nativeElement.clientWidth;\n\n let totalWidth = 0;\n let overflowCount = 0;\n\n elements.forEach((elm) => {\n const elmWidth = elm.offsetWidth;\n totalWidth += elmWidth;\n\n if (totalWidth > contentWidth) {\n overflowCount++;\n }\n });\n\n this._calculateAmountOfOverflowedItems();\n }, 0);\n });\n }\n\n private initResizeObserver(): void {\n this.observer = new ResizeObserver(() => {\n this._ngZone.run(() => this.calculateOverflow());\n });\n this.observer.observe(this._el.nativeElement);\n }\n\n /** @hidden */\n private _calculateAmountOfOverflowedItems(): void {\n const extra = this.getAmountOfExtraItems();\n this.overflowChanged.emit(extra);\n }\n\n /**\n * @hidden\n * @param arrItems\n * @param containerWidth\n * @param checkWithOffset\n * */\n private _checkWidthWithOffset(\n arrItems: HTMLElement[],\n containerWidth: number,\n checkWithOffset: boolean = false\n ): number {\n let itemsTotalWidth = 0;\n const parentWidth = checkWithOffset ? containerWidth - this.overflowOffset : containerWidth;\n\n arrItems.forEach((item) => {\n item.hidden = true;\n item.style.display = this.itemCssBlockValue;\n });\n\n for (let i = 0; i < arrItems.length; i++) {\n const item = arrItems[i];\n\n itemsTotalWidth += this.isRtl\n ? containerWidth - item.offsetLeft - itemsTotalWidth\n : Math.ceil(item.offsetWidth + item.offsetLeft - itemsTotalWidth);\n\n if (parentWidth < itemsTotalWidth) {\n this._clearTempStyles(arrItems);\n return checkWithOffset\n ? arrItems.length - i\n : this._checkWidthWithOffset(arrItems, containerWidth, true);\n }\n }\n\n this._clearTempStyles(arrItems);\n return 0;\n }\n\n /**\n * @param arrItems\n * @hidden\n * */\n private _clearTempStyles(arrItems: HTMLElement[]): void {\n arrItems.forEach((item) => {\n item.hidden = false;\n item.style.removeProperty('display');\n });\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\nimport { OverflowListDirective } from './overflow-list.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [OverflowListDirective, OverflowListItemDirective],\n exports: [OverflowListDirective, OverflowListItemDirective]\n})\nexport class OverflowListModule {}\n","import { ElementRef } from '@angular/core';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\n/** @Hidden */\nexport function setReadonlyState(\n element: HasElementRef<Element> | Element | ElementRef<Element>,\n isReadonly: boolean\n): void {\n const htmlElement = getNativeElement(element);\n if (isReadonly) {\n htmlElement.classList.add('is-readonly');\n htmlElement.setAttribute('readonly', '');\n } else {\n htmlElement.classList.remove('is-readonly');\n htmlElement.removeAttribute('readonly');\n }\n}\n","import { ElementRef } from '@angular/core';\nimport { ReadonlyViewModifier } from './readonly-view-modifier.interface';\nimport { setReadonlyState } from './set-readonly-state';\n\nexport class DefaultReadonlyViewModifier implements ReadonlyViewModifier {\n /** @hidden */\n constructor(private elementRef: ElementRef<Element>) {}\n\n /** @hidden */\n setReadonlyState = (isDisabled: boolean): void => {\n setReadonlyState(this.elementRef, isDisabled);\n };\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_READONLY_DIRECTIVE = new InjectionToken('Readonly directive token');\n","import { ElementRef, Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ReadonlyObserver {\n /** @Hidden */\n private readonly _attributeObserver = inject(AttributeObserver);\n\n /** @Hidden */\n static isReadonly(element: Element): boolean {\n return element.classList.contains('is-readonly') || element.hasAttribute('readonly');\n }\n\n /** @hidden */\n observe(element: HasElementRef<Element> | Element | ElementRef<Element>): Observable<boolean> {\n return this._attributeObserver.observe(element).pipe(\n map(() => ReadonlyObserver.isReadonly(getNativeElement(element))),\n distinctUntilChanged()\n );\n }\n\n /** @Hidden */\n unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n this._attributeObserver.unobserve(element);\n }\n}\n","import {\n DestroyRef,\n ElementRef,\n Inject,\n Injectable,\n NgZone,\n OnDestroy,\n Optional,\n Self,\n SkipSelf,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest, firstValueFrom } from 'rxjs';\nimport { distinctUntilChanged, startWith, tap } from 'rxjs/operators';\nimport { DefaultReadonlyViewModifier } from './default-readonly-view-modifier';\nimport { FDK_READONLY_DIRECTIVE } from './fdk-readonly.token';\nimport { ReadonlyBehavior } from './readonly-behavior.interface';\nimport { ReadonlyViewModifier } from './readonly-view-modifier.interface';\nimport { ReadonlyObserver } from './readonly.observer';\n\n@Injectable()\nexport class FdkReadonlyProvider extends ReplaySubject<boolean> implements ReadonlyBehavior, OnDestroy {\n /** @Hidden */\n fdkReadonly = false;\n\n /** @hidden */\n private readonly _viewModifiers$: BehaviorSubject<ReadonlyViewModifier[]>;\n\n /** @hidden */\n private _readonlyChange$: Observable<boolean>;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly readonlyObserver = inject(ReadonlyObserver);\n\n /** @hidden */\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef<Element>,\n @Optional() @Self() @Inject(FDK_READONLY_DIRECTIVE) private selfReadonly$: ReadonlyBehavior,\n @Optional() @SkipSelf() @Inject(FDK_READONLY_DIRECTIVE) private parentReadonly$: ReadonlyBehavior\n ) {\n super(1);\n\n // Initialize properties that depend on injected services\n this._viewModifiers$ = new BehaviorSubject<ReadonlyViewModifier[]>(this._getInitialViewModifiers());\n this._readonlyChange$ = this._getReadonlyChange$();\n\n combineLatest([this._readonlyChange$, this._viewModifiers$])\n .pipe(\n tap(([isReadonly]) => this.setReadonlyState(isReadonly)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n this._readonlyChange$\n .pipe(\n tap((isDisabled) => (this.fdkReadonly = isDisabled)),\n tap((isDisabled) => this.next(isDisabled)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n /** @hidden */\n addViewModifier(modifier: ReadonlyViewModifier): void {\n const viewModifiers = [...new Set([...this._viewModifiers$.value, modifier]).values()];\n this._viewModifiers$.next(viewModifiers);\n }\n\n /** @hidden */\n setReadonlyState(isReadonly: boolean): void {\n firstValueFrom(this.ngZone.onStable).then(() => {\n this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setReadonlyState(isReadonly));\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.complete();\n this.readonlyObserver.unobserve(this.elementRef);\n }\n\n /** @hidden */\n private _getReadonlyChange$(): Observable<boolean> {\n let selfReadonly = false;\n let parentReadonly = false;\n\n if (this.parentReadonly$) {\n this.parentReadonly$\n .pipe(\n startWith(this.parentReadonly$.fdkReadonly),\n tap((d) => (parentReadonly = d)),\n distinctUntilChanged(),\n tap(() => {\n if (parentReadonly) {\n this.setReadonlyState(true);\n }\n if (!selfReadonly && !parentReadonly) {\n this.setReadonlyState(false);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n if (this.selfReadonly$) {\n this.selfReadonly$\n .pipe(\n startWith(this.selfReadonly$.fdkReadonly),\n tap((d) => (selfReadonly = d)),\n distinctUntilChanged(),\n tap((isReadonly) => {\n if (!parentReadonly) {\n this.setReadonlyState(isReadonly);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n return this.readonlyObserver.observe(this.elementRef).pipe(distinctUntilChanged());\n }\n\n /** @hidden */\n private _getInitialViewModifiers(): ReadonlyViewModifier[] {\n return !this.selfReadonly$ ? [new DefaultReadonlyViewModifier(this.elementRef)] : [this.selfReadonly$];\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, Input, booleanAttribute } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FDK_READONLY_DIRECTIVE } from './fdk-readonly.token';\nimport { ReadonlyBehavior } from './readonly-behavior.interface';\nimport { setReadonlyState } from './set-readonly-state';\n\n@Directive({\n selector: '[fdkReadonly]',\n standalone: true,\n providers: [\n {\n provide: FDK_READONLY_DIRECTIVE,\n useExisting: ReadonlyBehaviorDirective\n }\n ]\n})\nexport class ReadonlyBehaviorDirective extends ReplaySubject<boolean> implements ReadonlyBehavior, AfterViewInit {\n /** @Hidden */\n @Input({ transform: booleanAttribute })\n set fdkReadonly(value: boolean) {\n this._readonlyInput$.next(value);\n }\n\n get fdkReadonly(): boolean {\n return this._readonly;\n }\n\n /** @Hidden */\n _readonly = false;\n /** @hidden */\n private readonly _readonlyInput$ = new BehaviorSubject(false);\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _destroyRef: DestroyRef\n ) {\n super(1);\n this._destroyRef.onDestroy(() => this.complete());\n }\n\n /** @Hidden */\n setReadonlyState = (isReadonly: boolean): void => {\n setReadonlyState(this._elementRef, isReadonly);\n };\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._readonlyInput$\n .pipe(\n tap((isReadonly) => {\n if (isReadonly !== this._readonly) {\n this.setReadonlyState(isReadonly);\n this._readonly = isReadonly;\n this.next(isReadonly);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ReadonlyBehaviorDirective } from './readonly-behavior.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [ReadonlyBehaviorDirective],\n exports: [ReadonlyBehaviorDirective]\n})\nexport class ReadonlyBehaviorModule {}\n","import { Directive, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';\n\n/**\n * Directive to repeatably render template N times.\n */\n@Directive({\n selector: '[fdkRepeat]',\n standalone: true\n})\nexport class RepeatDirective implements OnChanges {\n /** Number of times to render a template. */\n @Input('fdkRepeat')\n count: number;\n\n /** @hidden */\n constructor(\n private readonly _templateRef: TemplateRef<any>,\n private readonly _viewContainerRef: ViewContainerRef\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes['count'] || changes['deprecatedCount']) && Number.isInteger(this.count)) {\n this._viewContainerRef.clear();\n\n for (let index = 0; index < Math.max(0, this.count); index++) {\n this._viewContainerRef.createEmbeddedView(this._templateRef, { index });\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { RepeatDirective } from './repeat.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [RepeatDirective],\n exports: [RepeatDirective]\n})\nexport class RepeatModule {}\n","import { Directive, ElementRef, inject, Output } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HasElementRef } from '../../interfaces';\nimport { ResizeObserverService } from '../../services/resize-observer.service';\n\n@Directive({\n selector: '[fdkResizeObserver]',\n exportAs: 'fdkResizeObserver',\n standalone: true\n})\nexport class ResizeObserverDirective implements HasElementRef {\n /**\n * When the element is resized, emits an array of ResizeObserverEntry objects.\n **/\n @Output()\n resized: Observable<ResizeObserverEntry[]>;\n\n /**\n * The reference to the Resize target element.\n **/\n elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n /** @hidden */\n private _resizeObserverService = inject(ResizeObserverService);\n\n /** @hidden */\n constructor() {\n this.resized = this._resizeObserverService.observe(this.elementRef.nativeElement);\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[fdkResizeHandle]',\n standalone: true\n})\nexport class ResizeHandleDirective {\n /** @hidden */\n constructor(public elementRef: ElementRef) {}\n}\n","import {\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n computed\n} from '@angular/core';\nimport { Observable, Subscription, fromEvent, merge } from 'rxjs';\nimport { filter, map, pairwise, takeUntil, tap } from 'rxjs/operators';\nimport { Nullable } from '../../models/nullable';\nimport { RtlService } from '../../services/rtl.service';\nimport { ResizeHandleDirective } from './resize-handle.directive';\n\ninterface ResizeMove {\n x: number;\n y: number;\n}\n\n@Directive({\n selector: '[fdkResize]',\n standalone: true\n})\nexport class ResizeDirective implements OnChanges, AfterViewInit, OnDestroy {\n /** Element limiting resizable container growth */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeBoundary') resizeBoundary: string | HTMLElement = 'body';\n\n /** Whether resizable behaviour should be disabled */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeDisabled') disabled = false;\n\n /** Additional class to be applied to the Element ref during resize. */\n @Input()\n fdkResizeClass: string;\n\n /** Localization of resize handle inside resizable container */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeHandleLocation') resizeHandleLocation: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' =\n 'bottom-right';\n\n /** Resize handle reference - should be used if Resize handle is not a ContentChild of resizable container */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeResizeHandleRef') set setResizeHandleReference(value: ResizeHandleDirective) {\n this.resizeHandleReference = value;\n }\n\n /** Emits event when resizing has tarted */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onResizeStart = new EventEmitter<void>();\n\n /** Emits event when resizing has ended */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onResizeEnd = new EventEmitter<void>();\n\n /** @hidden Reference to Resize handle */\n @ContentChild(ResizeHandleDirective, { static: false })\n set resizeHandleReference(value: Nullable<ResizeHandleDirective>) {\n this._resizeHandleReference = value;\n if (!value) {\n this._unsubscribe();\n } else {\n this._setResizeListeners();\n }\n }\n get resizeHandleReference(): Nullable<ResizeHandleDirective> {\n return this._resizeHandleReference;\n }\n\n /** @hidden */\n private _resizeHandleReference: Nullable<ResizeHandleDirective>;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _resizeSubscriptions = new Subscription();\n\n /** @hidden */\n private readonly _direction$ = computed(() => (this._rtlService?.rtlSignal() ? -1 : 1));\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n @Optional() private _rtlService: RtlService\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled']) {\n if (changes['disabled'].previousValue === false && changes['disabled'].currentValue === true) {\n this._unsubscribe();\n } else if (changes['disabled'].previousValue === true && changes['disabled'].currentValue === false) {\n this._setResizeListeners();\n }\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (!this.disabled) {\n this._setResizeListeners();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._resizeSubscriptions.unsubscribe();\n }\n\n /** @hidden */\n private _unsubscribe(): void {\n this._resizeSubscriptions.unsubscribe();\n this._resizeSubscriptions = new Subscription();\n }\n\n /** @hidden Sets Resize listeners */\n private _setResizeListeners(): void {\n this._unsubscribe();\n const resize = this._getResizeFunction();\n let moveOffset = this._getMoveOffsetFunction();\n const resizeContainer = this._findResizeContainer();\n if (!resizeContainer || !this.resizeHandleReference) {\n return;\n }\n const isBoundaryOverflow = this._getBoundaryOverflowFunction(resizeContainer);\n\n const mouseUpEvent$ = fromEvent<MouseEvent>(window, 'mouseup');\n const mouseMoveEvent$ = fromEvent<MouseEvent>(resizeContainer, 'mousemove');\n const mouseDownEvent$ = fromEvent<MouseEvent>(this.resizeHandleReference.elementRef.nativeElement, 'mousedown');\n\n const resizeActive$ = merge(\n mouseDownEvent$.pipe(\n map(() => true),\n tap(() => {\n moveOffset = this._getMoveOffsetFunction();\n })\n ),\n mouseUpEvent$.pipe(map(() => false))\n );\n const emitResizableEvents$ = this._getResizeEventsNotifiers(resizeActive$);\n const preventOtherPointerEvents$ = this._blockOtherPointerEvents(resizeActive$);\n\n const resizingCursorMovement$ = mouseMoveEvent$.pipe(\n pairwise(),\n map(([event1, event2]: [MouseEvent, MouseEvent]) => moveOffset(event1, event2)),\n filter((move) => isBoundaryOverflow(move))\n );\n\n const setupResizer = (): void => {\n resizingCursorMovement$.pipe(takeUntil(mouseUpEvent$)).subscribe((event) => resize(event));\n };\n const setupResize$ = resizeActive$.pipe(\n filter((isActive) => isActive),\n tap(() => setupResizer())\n );\n\n this._resizeSubscriptions.add(setupResize$.subscribe());\n this._resizeSubscriptions.add(emitResizableEvents$.subscribe());\n this._resizeSubscriptions.add(preventOtherPointerEvents$.subscribe());\n }\n\n /** @hidden Creates resize function*/\n private _getResizeFunction(): (move: ResizeMove) => void {\n return (move: ResizeMove) => {\n this._elementRef.nativeElement.style.width = `${this._elementRef.nativeElement.offsetWidth + move.x}px`;\n this._elementRef.nativeElement.style.height = `${this._elementRef.nativeElement.offsetHeight + move.y}px`;\n };\n }\n\n /** @hidden Creates move function */\n private _getMoveOffsetFunction(): (event1: MouseEvent, event2: MouseEvent) => ResizeMove {\n let verticalModifier: 1 | -1;\n let horizontalModifier: 1 | -1;\n\n switch (this.resizeHandleLocation) {\n case 'top-left':\n horizontalModifier = -1;\n verticalModifier = -1;\n break;\n case 'top-right':\n horizontalModifier = -1;\n verticalModifier = 1;\n break;\n case 'bottom-left':\n horizontalModifier = 1;\n verticalModifier = -1;\n break;\n case 'bottom-right':\n horizontalModifier = 1;\n verticalModifier = 1;\n break;\n }\n\n return (event1: MouseEvent, event2: MouseEvent) => {\n const x = (event2.screenX - event1.screenX) * this._direction$();\n const y = event2.screenY - event1.screenY;\n\n return {\n x: x * verticalModifier,\n y: y * horizontalModifier\n };\n };\n }\n\n /** @hidden Return boundary container */\n private _findResizeContainer(): Element | null {\n let resizeContainer: Element | null;\n if (typeof this.resizeBoundary === 'string') {\n if (this.resizeBoundary === 'body') {\n return document.body;\n }\n resizeContainer = this._elementRef.nativeElement.closest(this.resizeBoundary);\n } else {\n resizeContainer = this.resizeBoundary;\n }\n\n if (resizeContainer) {\n return resizeContainer;\n } else {\n console.warn(`fdResize - Cannot find \"${this.resizeBoundary}\", falling back to \"body\"`);\n return document.body;\n }\n }\n\n /** @hidden Check whether resizable container is overflowing boundary container */\n private _getBoundaryOverflowFunction(resizeContainer: Element): (move: ResizeMove) => boolean {\n return (move: ResizeMove) => {\n const containerPosition = resizeContainer.getBoundingClientRect();\n const elementPosition = this._elementRef.nativeElement.getBoundingClientRect();\n\n switch (this.resizeHandleLocation) {\n case 'top-left':\n return (\n containerPosition.top < elementPosition.top + move.y &&\n containerPosition.left < elementPosition.left + move.x\n );\n case 'top-right':\n return (\n containerPosition.top < elementPosition.top + move.y &&\n containerPosition.right > elementPosition.right + move.x\n );\n case 'bottom-left':\n return (\n containerPosition.bottom > elementPosition.bottom + move.y &&\n containerPosition.left < elementPosition.left + move.x\n );\n case 'bottom-right':\n return (\n containerPosition.bottom > elementPosition.bottom + move.y &&\n containerPosition.right > elementPosition.right + move.x\n );\n }\n };\n }\n\n /** @hidden Create Observable notifying on resize actions */\n private _getResizeEventsNotifiers(trigger$: Observable<boolean>): Observable<any> {\n const emitResizableStart$ = trigger$.pipe(\n filter((isActive) => isActive),\n tap(() => this.onResizeStart.emit())\n );\n\n const emitResizableEnd$ = trigger$.pipe(\n filter((isActive) => !isActive),\n tap(() => this.onResizeEnd.emit())\n );\n\n return merge(emitResizableStart$, emitResizableEnd$);\n }\n\n /** @hidden Block resizable container pointer events when resizing */\n private _blockOtherPointerEvents(trigger$: Observable<boolean>): Observable<any> {\n return trigger$.pipe(\n tap((isActive) => {\n if (!this.fdkResizeClass) {\n return;\n }\n if (!isActive) {\n this._elementRef.nativeElement.classList.remove(this.fdkResizeClass);\n } else {\n this._elementRef.nativeElement.classList.add(this.fdkResizeClass);\n }\n }),\n map((isActive) => (isActive ? 'none' : 'auto')),\n tap((value) => {\n this._elementRef.nativeElement.style.pointerEvents = value;\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ResizeHandleDirective } from './resize-handle.directive';\nimport { ResizeDirective } from './resize.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [ResizeDirective, ResizeHandleDirective],\n exports: [ResizeDirective, ResizeHandleDirective]\n})\nexport class ResizeModule {}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { Observable } from 'rxjs';\n\nexport type SelectableListValueType<T> = T extends any[] ? Array<any> : any;\n\nexport abstract class SelectComponentRootToken<T = any> {\n abstract selected?: SelectableListValueType<T>;\n abstract selectedChange: Observable<SelectableListValueType<T>>;\n abstract multiple?: BooleanInput;\n abstract toggle?: BooleanInput;\n abstract onChange: (value: SelectableListValueType<T>) => void;\n}\n","import { ElementRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\nexport abstract class SelectableItemToken<ElementType extends Element = HTMLElement, TValue = ElementType>\n implements HasElementRef<ElementType>\n{\n abstract value: TValue;\n abstract fdkSelectableItem?: boolean;\n\n abstract readonly elementRef: ElementRef<ElementType>;\n\n abstract clicked: Observable<MouseEvent | KeyboardEvent>;\n\n abstract setSelected(isSelected: boolean): void;\n\n abstract getSelected(): boolean;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_SELECTABLE_ITEM_PROVIDER = new InjectionToken(\n 'Token for providing custom behaviors to the SelectableListItem'\n);\n","import { coerceArray } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, DestroyRef, Injectable, QueryList, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport equal from 'fast-deep-equal';\nimport { Observable, ReplaySubject, Subject, combineLatest, isObservable, merge, of, switchMap } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { destroyObservable } from '../../helpers/destroy-observable';\nimport { SelectComponentRootToken, SelectableListValueType } from './select-component-root.token';\nimport { SelectableItemToken } from './selectable-item.token';\n\nexport type SelectionItemsList<ElementType extends Element, ValueType = ElementType> =\n | QueryList<SelectableItemToken<ElementType, ValueType>>\n | Observable<SelectableItemToken<ElementType, ValueType>[]>\n | SelectableItemToken<ElementType, ValueType>[];\n\n@Injectable()\nexport class SelectionService<ElementType extends Element, ValueType = ElementType> {\n /** @hidden */\n value$: Observable<SelectableListValueType<ValueType>>;\n\n /** @hidden */\n private _items$!: Observable<SelectableItemToken<ElementType, ValueType>[]>;\n /** @hidden */\n private _value$ = new ReplaySubject<SelectableListValueType<ValueType>>(1);\n /** @hidden */\n private _normalizedValue$: Observable<ValueType[]>;\n /** @hidden */\n private _rootComponent!: SelectComponentRootToken<ElementType>;\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n /** @hidden */\n private _clear$ = new Subject<void>();\n /** @hidden */\n private _value: ValueType[] = [];\n\n /** @hidden */\n constructor(private _cd: ChangeDetectorRef) {\n this._normalizedValue$ = this._value$.pipe(\n distinctUntilChanged(equal),\n map((v) => coerceArray<ValueType>(v)),\n map((value) => (this._isMultipleMode ? value : [value[0]])),\n map((coerced: ValueType[]) => coerced.filter(Boolean))\n );\n this._normalizedValue$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((val) => (this._value = val));\n this.value$ = this._normalizedValue$.pipe(\n map((v) => this._getProperValues(v as SelectableListValueType<ElementType>)),\n shareReplay(1)\n );\n }\n\n /**\n * Register main select component, which holds config\n * */\n registerRootComponent(rootComponent: SelectComponentRootToken<ElementType>): void {\n this._rootComponent = rootComponent;\n }\n\n /**\n * Clear listeners\n */\n clear(): void {\n this._clear$.next();\n }\n\n /**\n * Initialize watcher for selection changes and user interactions\n * */\n initialize(list: SelectionItemsList<ElementType, ValueType>): void {\n if (list instanceof QueryList) {\n this._items$ = list.changes.pipe(\n startWith(list),\n map((items: QueryList<SelectableItemToken<ElementType, ValueType>>) => items.toArray()),\n shareReplay(1)\n );\n } else {\n this._items$ = isObservable(list) ? list : of(list);\n }\n this.listenToItemInteractions();\n }\n\n /**\n * Sets Value, on which service looks at and updates UI accordingly\n * */\n setValue(v: SelectableListValueType<ElementType>): void {\n this._value$.next(v);\n }\n\n /** @hidden */\n getValue(): SelectableListValueType<ElementType> {\n return this._getProperValues(this._value as SelectableListValueType<ElementType>);\n }\n\n /**\n * Start listening for item interactions. Will destroy() first.\n * Will silently continue if service was not initialized first.\n * */\n listenToItemInteractions(): void {\n this.clear();\n const unsubscribe$ = merge(destroyObservable(this._destroyRef), this._clear$);\n if (this._items$) {\n this._items$\n .pipe(\n map((items) => items.filter((itm) => itm.fdkSelectableItem !== false)),\n switchMap((items: SelectableItemToken<ElementType, ValueType>[]) => {\n const clickedEvents$ = items.map((item) => item.clicked.pipe(map(() => item)));\n return merge(...clickedEvents$);\n }),\n tap((clickedItem) => this._itemClicked(clickedItem)),\n takeUntil(unsubscribe$)\n )\n .subscribe();\n combineLatest([this._normalizedValue$, this._items$])\n .pipe(\n tap(([value, items]) => {\n if (\n value.length === 0 &&\n items.some((itm) => itm.getSelected()) &&\n !this._rootComponent.toggle\n ) {\n const selectedValues = this._getSelectedValues(items);\n this._rootComponent.onChange(selectedValues as SelectableListValueType<ElementType>);\n return this._value$.next(selectedValues as SelectableListValueType<ElementType>);\n }\n items.forEach((item) => {\n item.setSelected(value.includes(item.value));\n });\n this._cd.detectChanges();\n }),\n takeUntil(unsubscribe$)\n )\n .subscribe();\n }\n }\n\n /** @hidden */\n selectItem(item: SelectableItemToken<ElementType, ValueType>): void {\n if (item.fdkSelectableItem !== false) {\n const val: ValueType[] = [item.value, ...this._value];\n const properValues = this._getProperValues(val as SelectableListValueType<ElementType>);\n this._value$.next(properValues);\n this._rootComponent.onChange(properValues);\n }\n }\n\n /** @hidden */\n deselectItem(item: SelectableItemToken<ElementType, ValueType>): void {\n const canBeDeselected = this._rootComponent.toggle || (this._isMultipleMode && this._value.length > 1);\n if (canBeDeselected) {\n const val: SelectableListValueType<ElementType> = this._value.filter(\n (v) => v !== item.value\n ) as SelectableListValueType<ElementType>;\n const properValues = this._getProperValues(val);\n this._value$.next(properValues);\n this._rootComponent.onChange(properValues);\n }\n }\n\n /** @hidden */\n private get _isMultipleMode(): boolean {\n return this._rootComponent.multiple === true;\n }\n\n /** @hidden */\n private _itemClicked(item: SelectableItemToken<ElementType, ValueType>): void {\n const wasSelected = this._value.includes(item.value);\n if (wasSelected) {\n this.deselectItem(item);\n } else {\n this.selectItem(item);\n }\n }\n\n /** @hidden */\n private _getSelectedValues(items: SelectableItemToken<ElementType, ValueType>[]): ElementType | ElementType[] {\n const selectedValues = items.filter((itm) => itm.getSelected()).map((itm) => itm.value);\n return this._getProperValues(selectedValues as SelectableListValueType<ElementType>);\n }\n\n /** @hidden */\n private _getProperValues(values: SelectableListValueType<ElementType>): SelectableListValueType<ElementType> {\n return this._isMultipleMode ? values : values[0];\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { Observable, merge } from 'rxjs';\nimport { FdkClickedProvider } from '../clicked';\nimport { FdkDisabledProvider } from '../disabled';\nimport { FdkReadonlyProvider } from '../readonly';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { FDK_SELECTABLE_ITEM_PROVIDER } from './selectable-list.tokens';\nimport { SelectionService } from './selection.service';\n\n@Directive({\n selector: '[fdkSelectableItem]',\n exportAs: 'fdkSelectableItem',\n standalone: true,\n providers: [\n {\n provide: SelectableItemToken,\n useExisting: SelectableItemDirective\n },\n FdkReadonlyProvider,\n FdkDisabledProvider,\n FdkClickedProvider\n ]\n})\nexport class SelectableItemDirective<ElementType extends Element = HTMLElement, ValueType = any>\n implements SelectableItemToken<ElementType, ValueType>\n{\n /** @hidden */\n @Input()\n set value(val: ValueType) {\n this._value = val;\n }\n get value(): ValueType {\n if (this.provider && this.provider.value) {\n return this.provider.value;\n }\n return this._value;\n }\n\n /** @hidden */\n @Input()\n set fdkSelectableItem(value: BooleanInput) {\n const isSelectable = coerceBooleanProperty(value);\n if (isSelectable !== this._selectable) {\n this._selectable = isSelectable;\n }\n }\n\n get fdkSelectableItem(): boolean {\n let selectable = this._selectable;\n if (typeof this.provider?.fdkSelectableItem !== 'undefined') {\n selectable = this.provider.fdkSelectableItem;\n }\n return (\n selectable &&\n (!this.disabled$ || !this.disabled$?.fdkDisabled) &&\n (!this.readonly$ || !this.readonly$?.fdkReadonly)\n );\n }\n\n /** @hidden */\n @Output()\n clicked: Observable<MouseEvent | KeyboardEvent>;\n\n /** Event emitted when selection state being changed for selectable item. */\n @Output()\n selected = new EventEmitter<boolean>();\n\n /** @hidden */\n private _value!: ValueType;\n /** @hidden */\n private _selected = false;\n /** @hidden */\n private _selectable = true;\n\n /** @hidden */\n constructor(\n @Optional()\n @Inject(FDK_SELECTABLE_ITEM_PROVIDER)\n private provider: Partial<SelectableItemToken<ElementType, ValueType>>,\n private disabled$: FdkDisabledProvider,\n private readonly$: FdkReadonlyProvider,\n private selectionService: SelectionService<ElementType, ValueType>,\n public readonly elementRef: ElementRef<ElementType>,\n _clicked: FdkClickedProvider\n ) {\n this.clicked = this.provider?.clicked || _clicked.asObservable();\n this._listenToDisablingEvents();\n }\n\n /** @hidden */\n getSelected(): boolean {\n if (this.provider?.getSelected) {\n return this.provider.getSelected();\n }\n return this._selected;\n }\n\n /** @hidden */\n setSelected(isSelected: boolean): void {\n if (this.provider?.setSelected) {\n this.provider.setSelected(isSelected);\n } else {\n this._selected = isSelected;\n const htmlElement = this.elementRef.nativeElement;\n const { classList } = htmlElement;\n if (isSelected) {\n classList.add('is-selected');\n } else {\n classList.remove('is-selected');\n }\n htmlElement.setAttribute('aria-selected', `${isSelected}`);\n }\n\n this.selected.emit(isSelected);\n }\n\n /** @hidden */\n private _listenToDisablingEvents(): void {\n const disablingEvents$: Observable<boolean>[] = [];\n if (this.disabled$) {\n disablingEvents$.push(this.disabled$);\n }\n if (this.readonly$) {\n disablingEvents$.push(this.readonly$);\n }\n merge(...disablingEvents$).subscribe(() => this._updateSelectionAndSelectableWatcher());\n }\n\n /** @hidden */\n private _updateSelectionAndSelectableWatcher(): void {\n if (this.disabled$?.fdkDisabled) {\n this.selectionService.deselectItem(this);\n }\n this._updateSelectableWatcher();\n }\n\n /** @hidden */\n private _updateSelectableWatcher(): void {\n this.selectionService.listenToItemInteractions();\n }\n}\n","import {\n AfterViewInit,\n ContentChildren,\n Directive,\n EventEmitter,\n Input,\n Output,\n QueryList,\n booleanAttribute\n} from '@angular/core';\nimport { SelectComponentRootToken, SelectableListValueType } from './select-component-root.token';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { SelectionService } from './selection.service';\n\n@Directive({\n selector: '[fdkSelectableList]',\n exportAs: 'fdkSelectableList',\n standalone: true,\n providers: [\n {\n provide: SelectComponentRootToken,\n useExisting: SelectableListDirective\n },\n SelectionService\n ]\n})\nexport class SelectableListDirective<T extends Element = HTMLElement, V = any>\n implements SelectComponentRootToken<T>, AfterViewInit\n{\n /** @hidden */\n @Output()\n selectedChange = new EventEmitter<SelectableListValueType<T>>();\n\n /** @hidden */\n @Input({ transform: booleanAttribute })\n toggle = false;\n\n /** @hidden */\n @Input({ transform: booleanAttribute })\n multiple = false;\n\n /** @hidden */\n @Input()\n set selected(value: SelectableListValueType<T>) {\n this._selectionService.setValue(value);\n }\n\n /** @hidden */\n @ContentChildren(SelectableItemToken) selectableItems!: QueryList<SelectableItemToken<T, V>>;\n\n /** @hidden */\n constructor(private _selectionService: SelectionService<T, V>) {\n this._selectionService.registerRootComponent(this);\n }\n\n /** @hidden */\n select(item: SelectableItemToken<T, V>): void {\n this._selectionService.selectItem(item);\n }\n\n /** @hidden */\n deselect(item: SelectableItemToken<T, V>): void {\n this._selectionService.deselectItem(item);\n }\n\n /** @hidden */\n toggleSelect(item: SelectableItemToken<T, V>): void {\n if (item.getSelected()) {\n this.deselect(item);\n } else {\n this.select(item);\n }\n }\n\n /** @hidden */\n onChange(value: SelectableListValueType<T>): void {\n this.selectedChange.emit(value);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._selectionService.initialize(this.selectableItems);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SelectableItemDirective } from './selectable-item.directive';\nimport { SelectableListDirective } from './selectable-list.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [SelectableListDirective, SelectableItemDirective],\n exports: [SelectableListDirective, SelectableItemDirective]\n})\nexport class SelectableListModule {}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[fdkTemplate]',\n standalone: true\n})\nexport class TemplateDirective {\n /** Name of the template */\n @Input('fdkTemplate')\n name: string;\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<any>) {}\n\n /** @hidden */\n getName(): string {\n return this.name;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TemplateDirective } from './template.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [TemplateDirective],\n exports: [TemplateDirective]\n})\nexport class TemplateModule {}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { AfterContentChecked, AfterViewInit, Directive, ElementRef, Input, OnChanges } from '@angular/core';\nimport { Nullable } from '../../models/nullable';\n\n@Directive({\n selector: '[fdkTruncate]',\n standalone: true\n})\nexport class TruncateDirective implements OnChanges, AfterViewInit {\n /**\n * Width in pixel for truncation of an element , by default\n */\n @Input()\n set fdkTruncateWidth(value: Nullable<number>) {\n this._customWidthCount = coerceNumberProperty(value);\n }\n\n /**\n * Truncating state\n */\n @Input()\n fdkTruncateState = false;\n\n /** @hidden */\n private _customWidthCount = 200;\n\n /** @hidden */\n private _truncateTarget: HTMLElement;\n\n /** @hidden\n * saves default style of element before truncating\n */\n private _defaultStyle: string;\n\n /** @hidden */\n private takeDefaultStyleOnce = true;\n\n /** @hidden\n * truncation style for truncating element\n */\n private _truncationStyle: string;\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef) {}\n\n /**\n * Root native element\n */\n get rootElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /**\n * Method saves default style of target element before first truncate.\n */\n setDefaultStyle(): void {\n if (this.takeDefaultStyleOnce) {\n this._defaultStyle = this._truncateTarget.style.cssText;\n this.takeDefaultStyleOnce = false;\n }\n }\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.rootElement) {\n this._truncate();\n }\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this._truncate();\n }\n\n /** @hidden */\n private _truncate(): void {\n this._truncateTarget = this.rootElement;\n\n if (!this._truncateTarget) {\n return;\n }\n this.setDefaultStyle();\n this._truncationStyle = `${this._defaultStyle} max-width: ${this._customWidthCount}px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`;\n this._truncateTarget.style.cssText = this.fdkTruncateState ? this._truncationStyle : this._defaultStyle;\n }\n}\n\n@Directive({\n selector: '[fdkTruncatedTitle], [fdTruncatedTitle], [fd-truncate-title]',\n standalone: true\n})\nexport class TruncatedTitleDirective implements AfterContentChecked {\n /** @hidden */\n constructor(private _elRef: ElementRef) {}\n\n /** @hidden */\n ngAfterContentChecked(): void {\n const el = this._elRef.nativeElement;\n if (el.scrollWidth > el.offsetWidth) {\n el.title = el.innerText;\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { TruncateDirective, TruncatedTitleDirective } from './truncate.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [TruncateDirective, TruncatedTitleDirective],\n exports: [TruncateDirective, TruncatedTitleDirective]\n})\nexport class TruncateModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const DND_ITEM = new InjectionToken('Drag and drop Item');\nexport const DND_LIST = new InjectionToken('Drag and drop List');\n","import { DragDrop, DragRef } from '@angular/cdk/drag-drop';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n forwardRef\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { Nullable } from '../../models/nullable';\nimport { DndItem, ElementChord, ElementPosition, LinkPosition } from '../dnd.interfaces';\nimport { DND_ITEM } from '../tokens';\n\n@Directive({\n selector: '[fdkDndItem], [fd-dnd-item]',\n providers: [DragDrop, { provide: DND_ITEM, useExisting: forwardRef(() => DndItemDirective) }],\n standalone: true\n})\nexport class DndItemDirective<T = any> implements DndItem, AfterContentInit, OnDestroy {\n /** Item reference. Used for cases when `[items]` array of dnd list is different than `dndItems` content children. */\n @Input('fdkDndItem')\n item: Nullable<T>;\n /**\n * Whether to apply \"fd-dnd-item\" class.\n * @default true\n */\n @Input()\n @HostBinding('class.fd-dnd-item')\n applyDragItemClass = true;\n\n /** Container selector */\n @Input()\n containerSelector?: string;\n\n /** Event thrown when the element is moved by 1px */\n @Output()\n readonly moved = new EventEmitter<ElementPosition>();\n\n /** Event thrown when the element is released */\n @Output()\n readonly released = new EventEmitter<void>();\n\n /** Event thrown when the element is started to be dragged */\n @Output()\n readonly started = new EventEmitter<void>();\n\n /**\n * Defines if the item is prevented from being moved by other elements.\n * So nothing can be placed just before and just after it\n */\n @Input()\n stickInPlace = false;\n\n /** Defines if element is draggable */\n @Input()\n set draggable(draggable: boolean) {\n this._draggable = draggable;\n this.changeCDKDragState();\n }\n\n /** Class added to element, when it's dragged. */\n @Input()\n classWhenElementDragged = 'fd-dnd-on-drag';\n\n /** Defines if every element in list is draggable */\n listDraggable = true;\n\n /** @hidden\n * Drag reference, object created from DND CDK Service\n */\n private _dragRef: DragRef;\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _placeholderElement: HTMLElement | null = null;\n\n /** @hidden */\n private _lineElement: HTMLElement | null = null;\n\n /** @hidden */\n private _replaceIndicator: HTMLElement | null = null;\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n private readonly _dragDrop: DragDrop,\n private readonly _renderer: Renderer2\n ) {}\n\n /** @hidden */\n getElementCoordinates(isBefore: boolean): ElementChord {\n /** Takes distance from the beginning of window page */\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n\n const position: LinkPosition = isBefore ? 'before' : 'after';\n\n /** Vertically distance is counted by distance from top of the side + half of the element height */\n return {\n x: rect.left,\n position,\n y: rect.top,\n stickToPosition: this.stickInPlace,\n width: rect.width,\n height: rect.height\n };\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setCDKDrag();\n this._listenElementEvents();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._dragRef.dispose();\n }\n\n /** @hidden */\n onCdkMove(position: ElementPosition): void {\n this.moved.emit(position);\n }\n\n /** @hidden */\n onCdkDragReleased(): void {\n /** Remove class which is added, when element is dragged */\n this.elementRef.nativeElement.classList.remove(this.classWhenElementDragged);\n this.released.emit();\n\n /** Resets the position of element. */\n this._dragRef.reset();\n\n /** Removes placeholder element */\n this.removePlaceholder();\n }\n\n /** @hidden */\n onCdkDragStart(): void {\n /** Adds class */\n this.elementRef.nativeElement.classList.add(this.classWhenElementDragged);\n\n if (!this._placeholderElement) {\n this.createPlaceholder();\n }\n this.started.emit();\n }\n\n /** @hidden */\n removePlaceholder(): void {\n if (this._placeholderElement && this._placeholderElement.parentNode) {\n // IE11 workaround\n this._placeholderElement.parentNode.removeChild(this._placeholderElement);\n this._placeholderElement = null;\n }\n }\n\n /** @hidden */\n removeLine(): void {\n if (this._lineElement && this._lineElement.parentNode) {\n // IE11 workaround\n this._lineElement.parentNode.removeChild(this._lineElement);\n this._lineElement = null;\n }\n }\n\n /** @hidden */\n removeReplaceIndicator(): void {\n if (this._replaceIndicator && this._replaceIndicator.parentNode) {\n // IE11 workaround\n this._replaceIndicator.parentNode.removeChild(this._replaceIndicator);\n this._replaceIndicator = null;\n }\n }\n\n /** @hidden */\n createReplaceIndicator(): void {\n this._replaceIndicator = document.createElement('DIV');\n this._replaceIndicator.classList.add('fd-replace-indicator');\n\n let container = this.elementRef.nativeElement;\n if (this.containerSelector) {\n const newContainer = this.elementRef.nativeElement.querySelector(this.containerSelector);\n if (newContainer) {\n container = newContainer;\n }\n }\n\n container.appendChild(this._replaceIndicator);\n }\n\n /** @hidden */\n createLine(position: LinkPosition, gridMode: boolean): void {\n /** Creating of line element */\n this._lineElement = document.createElement('div');\n this._lineElement.classList.add('drop-area__line');\n\n if (gridMode) {\n this._lineElement.classList.add('drop-area__line--vertical');\n } else {\n this._lineElement.classList.add('drop-area__line--horizontal');\n }\n if (position === 'after') {\n this._lineElement.classList.add('after');\n }\n if (position === 'before') {\n this._lineElement.classList.add('before');\n }\n\n /** Putting element to the container */\n let container = this.elementRef.nativeElement;\n if (this.containerSelector) {\n const newContainer = this.elementRef.nativeElement.querySelector(this.containerSelector);\n if (newContainer) {\n container = newContainer;\n }\n }\n\n container.appendChild(this._lineElement);\n }\n\n /** @hidden */\n changeCDKDragState(): void {\n if (this._dragRef) {\n this._dragRef.disabled = !(this._draggable && this.listDraggable);\n }\n }\n\n /**\n * Sets the disabled state of the dnd item.\n * @param state\n */\n setDisabledState(state: boolean): void {\n if (state) {\n this._renderer.addClass(this.elementRef.nativeElement, 'fd-dnd-item--disabled');\n } else {\n this._renderer.removeClass(this.elementRef.nativeElement, 'fd-dnd-item--disabled');\n }\n }\n\n /** @hidden */\n private createPlaceholder(): void {\n const placeholder = this.elementRef.nativeElement.cloneNode(true);\n /** Cloning container element */\n this._placeholderElement = placeholder;\n\n placeholder.classList.add('fd-dnd-placeholder');\n this._setPlaceholderStyles();\n\n /** Including element to the container\n * IE11 equivalent to `this.element.nativeElement.after(clone);`\n */\n this._placeAfter(this.elementRef.nativeElement, placeholder);\n }\n\n /** @hidden */\n private _setPlaceholderStyles(): void {\n const offset = this._getOffsetToParent(this.elementRef.nativeElement);\n\n if (!offset || !this._placeholderElement) {\n return;\n }\n\n this._placeholderElement.style.top = offset.y + 'px';\n this._placeholderElement.style.left = offset.x + 'px';\n this._placeholderElement.style.position = 'absolute';\n this._placeholderElement.style.zIndex = '0';\n this._placeholderElement.style.opacity = '0.3';\n\n this._placeholderElement.style.width = this.elementRef.nativeElement.offsetWidth + 'px';\n this._placeholderElement.style.height = this.elementRef.nativeElement.offsetHeight + 'px';\n }\n\n /** @hidden */\n private _getOffsetToParent(element: Element): { x: number; y: number } | undefined {\n const parentElement = element.parentElement;\n if (!parentElement) {\n return;\n }\n\n const parentElmRect = parentElement.getBoundingClientRect();\n const elmRect = element.getBoundingClientRect();\n\n const parentTop = parentElmRect.top;\n const parentLeft = parentElmRect.left;\n\n return {\n x: Math.abs(elmRect.left - parentLeft),\n y: Math.abs(elmRect.top - parentTop)\n };\n }\n\n /** @hidden */\n private _setCDKDrag(): void {\n this._dragRef = this._dragDrop.createDrag(this.elementRef);\n this._dragRef.disabled = !this._draggable;\n this._subscriptions.add(this._dragRef.moved.subscribe((event) => this.onCdkMove(event.pointerPosition)));\n this._subscriptions.add(this._dragRef.released.subscribe(() => this.onCdkDragReleased()));\n this._subscriptions.add(this._dragRef.started.subscribe(() => this.onCdkDragStart()));\n }\n\n /** IE11 equivalent of Node.after() Method */\n private _placeAfter(element: Element, cloneNode: Node): void {\n const docFrag = document.createDocumentFragment();\n docFrag.appendChild(cloneNode);\n element.parentNode?.insertBefore(docFrag, element.nextSibling);\n }\n\n /** @hidden */\n private _listenElementEvents(): void {\n this._subscriptions.add(\n this.released\n .pipe(\n // postpone blur\n delay(0)\n )\n .subscribe(() => {\n if (this.containerSelector) {\n this.elementRef.nativeElement.children[0].blur();\n }\n this.elementRef.nativeElement.blur();\n })\n );\n }\n}\n","import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ChangeDetectorRef, Directive, Input, Optional } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { RtlService } from '../../services/rtl.service';\n\n/**\n * This directive is used to provide drag & drop with keyboard support.\n * It should be used together with directive fdDndKeyboardItem.\n */\n@Directive({\n selector: '[fdkDndKeyboardGroup], [fdDndKeyboardGroup]'\n})\nexport class DndKeyboardGroupDirective {\n /** Group of items */\n @Input()\n groups: any[][];\n\n /** Whether to disable drag & drop */\n @Input()\n disableKeyboardDragDrop = false;\n\n /** Used to apply indexes when moving between groups */\n @Input()\n orientation: 'horizontal' | 'vertical' = 'vertical';\n\n /** @hidden */\n _onDndItemFocus$ = new Subject<[number, number]>();\n\n /** @hidden */\n constructor(\n private readonly _cdr: ChangeDetectorRef,\n @Optional() private readonly _rtlService: RtlService\n ) {}\n\n /** Custom function to call when moving item inside the group */\n @Input()\n customMoveFn = (group: any[], fromIndex: number, toIndex: number): void =>\n moveItemInArray(group, fromIndex, toIndex);\n\n /** Custom function to call when moving item between groups */\n @Input()\n customTransferFn = (group: any[], nextGroup: any[], fromIndex: number, toIndex: number): void =>\n transferArrayItem(group, nextGroup, fromIndex, toIndex);\n\n /** Process drag & drop */\n processDragDrop(event: KeyboardEvent, itemIndex: number, groupIndex: number): void {\n if (this.disableKeyboardDragDrop || !event.altKey) {\n return;\n }\n\n const isRtl = this._rtlService.rtl.value;\n\n const group = this.groups[groupIndex];\n const indexInNextGroup = this.orientation === 'vertical' ? 0 : itemIndex;\n\n const nextGroupExists = this.groups.length > groupIndex + 1;\n const prevGroupExists = !!groupIndex;\n\n if (KeyUtil.isKeyCode(event, RIGHT_ARROW) && (isRtl ? prevGroupExists : nextGroupExists)) {\n event.preventDefault();\n\n const nextGroupIndex = groupIndex + (isRtl ? -1 : 1);\n const nextGroup = this.groups[nextGroupIndex];\n\n this.customTransferFn(group, nextGroup, itemIndex, indexInNextGroup);\n this._focusDndItem(nextGroupIndex, indexInNextGroup);\n } else if (KeyUtil.isKeyCode(event, LEFT_ARROW) && (isRtl ? nextGroupExists : prevGroupExists)) {\n event.preventDefault();\n\n const nextGroupIndex = groupIndex + (isRtl ? 1 : -1);\n const nextGroup = this.groups[nextGroupIndex];\n\n this.customTransferFn(group, nextGroup, itemIndex, indexInNextGroup);\n this._focusDndItem(nextGroupIndex, indexInNextGroup);\n } else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n event.preventDefault();\n\n this.customMoveFn(group, itemIndex, itemIndex + 1);\n this._focusDndItem(groupIndex, itemIndex + 1);\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n event.preventDefault();\n\n this.customMoveFn(group, itemIndex, itemIndex - 1);\n this._focusDndItem(groupIndex, itemIndex - 1);\n }\n }\n\n /** @hidden Focus after moving elements with keyboard */\n private _focusDndItem(groupIndex: number, itemIndex: number): void {\n this._cdr.detectChanges();\n\n this._onDndItemFocus$.next([groupIndex, itemIndex]);\n }\n}\n","import { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { DndKeyboardGroupDirective } from '../dnd-keyboard-group/dnd-keyboard-group.directive';\n\n/**\n * This directive is used to provide drag & drop with keyboard support.\n * It should be used together with directive fdDndKeyboardGroup.\n * We are using _groups from fdDndKeyboardGroup and adding a possibility to move cards.\n * Please see example below:\n * @Component({\n * selector: 'cdk-drag-drop-example',\n * template: `<div\n * cdkDragListGroup\n * fdDndKeyboardGroup\n * [groups]=\"groups\"\n * >\n * <div\n * *ngFor=\"let group of groups; let groupIndex = index\"\n * cdkDragList\n * >\n * Group #{{ groupIndex }}\n * <div\n * *ngFor=\"let item of group; let index = index\"\n * cdkDrag\n * fdDndKeyboardItem\n * [itemIndex]=\"index\"\n * [groupIndex]=\"groupIndex\"\n * [dndKeyboardDisabled]=\"flag for disable/enable keyboard navigation if needed\"\n * tabindex=\"0\"\n * >\n * Item #{{ item }}\n * </div>\n * </div>\n * </div>`,\n * })\n * export class CdkDragDropExample {\n * groups = [\n * [1, 2, 3],\n * [4, 5, 6],\n * ];\n * }\n */\n@Directive({\n selector: '[fdkDndKeyboardItem], [fdDndKeyboardItem]'\n})\nexport class DndKeyboardItemDirective implements OnInit, OnDestroy {\n /** item index in group(column) */\n @Input()\n itemIndex: number;\n\n /** group(column) index */\n @Input()\n groupIndex: number;\n\n /** @hidden */\n private readonly _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(\n private readonly _dndGroup: DndKeyboardGroupDirective,\n private readonly _elementRef: ElementRef\n ) {}\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n _onKeyDown(event: KeyboardEvent): void {\n this._dndGroup.processDragDrop(event, this.itemIndex, this.groupIndex);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._dndGroup._onDndItemFocus$.subscribe(([groupIndex, itemIndex]) => {\n if (this.groupIndex === groupIndex && this.itemIndex === itemIndex) {\n this._elementRef.nativeElement.focus();\n }\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n}\n","import { isFunction } from '../typecheck';\nimport { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description Executes function and passes returned value into callback function.\n */\nexport class FunctionStrategy<T> implements SubscriptionStrategy<T> {\n /** @hidden */\n createSubscription(fn: () => T, updateLatestValue: (v: T) => any): Promise<void> {\n const result = isFunction(fn) ? fn() : ((<any>fn) as T);\n return Promise.resolve(result).then(updateLatestValue);\n }\n}\n","import { Observable, firstValueFrom } from 'rxjs';\nimport { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description Converts observable into Promise and passes returned value into callback function.\n */\nexport class ObservableStrategy<T> implements SubscriptionStrategy<T> {\n /** @hidden */\n createSubscription(async: Observable<T>, updateLatestValue: any): Promise<void> {\n return firstValueFrom(async).then(updateLatestValue, (e) => {\n console.error(e);\n });\n }\n}\n","import { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description awaits for promise to resolve it's value and passes returned value into callback function.\n */\nexport class PromiseStrategy<T> implements SubscriptionStrategy<T> {\n /** @hidden */\n createSubscription(async: Promise<T>, updateLatestValue: (v: T) => any): Promise<void> {\n return async.then(updateLatestValue, (e) => {\n console.error(e);\n });\n }\n}\n","import { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description Passes value object into callback function.\n */\nexport class ValueStrategy<T> implements SubscriptionStrategy<T> {\n /** @hidden */\n createSubscription(value: T, updateLatestValue: (v: T) => any): Promise<void> {\n return Promise.resolve(value).then(updateLatestValue);\n }\n}\n","import { Observable } from 'rxjs';\nimport { isFunction, isPromise, isSubscribable } from '../typecheck';\n\nimport { FunctionStrategy } from './function-strategy.class';\nimport { ObservableStrategy } from './observable-strategy.class';\nimport { PromiseStrategy } from './promise-strategy.class';\nimport { SubscriptionStrategy } from './subscription-strategy.interface';\nimport { ValueStrategy } from './value-strategy.class';\n\n/**\n * @description Selects appropriate strategy on how to resolve function value\n * @param obj object to get value from\n * @returns appropriate strategy to retrieve value from the object\n */\nexport function selectStrategy<T = any>(obj: Observable<T> | Promise<T> | (() => void) | T): SubscriptionStrategy<T> {\n if (isPromise(obj)) {\n return new PromiseStrategy<T>();\n }\n\n if (isSubscribable(obj)) {\n return new ObservableStrategy<T>();\n }\n\n if (isFunction(obj)) {\n return new FunctionStrategy<T>();\n }\n\n return new ValueStrategy<T>();\n}\n","import {\n AfterContentInit,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n inject,\n Input,\n OnDestroy,\n Output,\n QueryList\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { startWith, take, takeUntil } from 'rxjs/operators';\nimport { selectStrategy } from '../../async-strategy';\nimport { destroyObservable } from '../../helpers';\nimport { DndItem, ElementChord, ElementPosition, FdDndDropType, FdDropEvent, LinkPosition } from '../dnd.interfaces';\nimport { DND_ITEM, DND_LIST } from '../tokens';\n\nexport type DropPredicate<T> = (\n dragItem: T,\n dropItem: T,\n event: FdDropEvent<T>\n) => boolean | Promise<boolean> | Observable<boolean>;\nexport type DragoverPredicate<T> = (\n dragItem: T,\n dragOverItem: T,\n dragItemIndex: number,\n dragOverItemIndex: number\n) => boolean;\n\n@Directive({\n selector: '[fdkDndList], [fd-dnd-list]',\n providers: [{ provide: DND_LIST, useExisting: forwardRef(() => DndListDirective) }],\n standalone: true\n})\nexport class DndListDirective<T> implements AfterContentInit, OnDestroy {\n /**\n * Defines if the element is allowed to be dragged in 2 dimensions,\n * When true - replace indicator will be displayed vertically\n */\n @Input()\n gridMode = false;\n\n /**\n * Defines drop strategy:\n * * `shift` mode will create line after the closest drop element.\n * * `group` mode will create replace indicator on a whole closest drop element.\n * * `auto` mode will create a line after the closest drop element\n * if dragged element coordinates are shifted for 30% from the center of the closest drop element.\n * Otherwise, it will create replace indicator on a whole closest drop element.\n *\n * `shift` mode is the default.\n */\n @Input()\n dropMode: FdDndDropType = 'shift';\n\n /**\n * Threshold of dragged item over another item to define which type of `dropMode` should be used.\n */\n @Input()\n threshold = 0.3;\n\n /** Array of items, that will be sorted */\n @Input()\n items: Array<T> = [];\n\n /** Defines if drag and drop feature should be enabled for list items */\n @Input()\n set draggable(draggable: boolean) {\n this._draggable = draggable;\n this._changeDraggableState(draggable);\n }\n\n /** Predicate function that checks whether the item can be dropped over another item. */\n @Input()\n dropPredicate: DropPredicate<T> | undefined;\n\n /**\n * Predicate function that checks whether the item can be dragged over another item.\n * If the function returns `false`, dragged over item will not be highlighted, and drop event will be canceled.\n */\n @Input()\n dragoverPredicate: DragoverPredicate<T> | undefined;\n\n /**\n * Event emitted when `dropPredicate` function evaluation changes.\n * Emits `true` when evaluation started, and `false` when completed.\n */\n @Output()\n dropPredicateCalculating = new EventEmitter<boolean>();\n\n /** Event that is thrown when items are reordered */\n @Output()\n readonly itemsChange = new EventEmitter<Array<T>>();\n\n /** Event that is thrown when the item is dropped */\n @Output()\n readonly itemDropped = new EventEmitter<FdDropEvent<T>>();\n\n /** Event that is thrown when predicate function returned false. */\n @Output()\n readonly dropCancelled = new EventEmitter<void>();\n\n /** @hidden */\n @ContentChildren(DND_ITEM)\n dndItems: QueryList<DndItem<T>>;\n\n /** @hidden */\n @HostBinding('class')\n protected readonly _initialClass = 'fd-dnd-list';\n\n /** @hidden */\n private _elementsCoordinates: ElementChord[];\n\n /** @hidden */\n private _closestItemIndex: number | null = null;\n\n /** @hidden */\n private _closestItemPosition: 'before' | 'after' | null = null;\n\n /** An RxJS Subject that will kill the current data stream (for unsubscribing) */\n private readonly _refresh$ = new Subject<void>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _dndItemReference: DndItem[];\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n private _detectedDropMode: 'shift' | 'group';\n\n /** @hidden */\n private _linesRemoved = true;\n\n /** @hidden */\n private _indicatorsRemoved = true;\n\n /** @hidden */\n private _draggedItem: T | undefined;\n\n /** @hidden */\n private _ignoreDrop = false;\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._changeDraggableState(this._draggable);\n this.dndItems.changes\n .pipe(startWith(null), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this.refreshQueryList());\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._refresh$.next();\n this._refresh$.complete();\n }\n\n /**\n * Refreshes the indexes of the items.\n */\n refreshQueryList(): void {\n const refresh$ = merge(this._refresh$, destroyObservable(this._destroyRef));\n this._refresh$.next();\n\n this._dndItemReference = this.dndItems.toArray();\n\n this._changeDraggableState(this._draggable);\n\n this.dndItems.forEach((item, index) => {\n item.moved.pipe(takeUntil(refresh$)).subscribe((position: ElementPosition) => this.onMove(position, index));\n item.started.pipe(takeUntil(refresh$)).subscribe(() => this.dragStart(index));\n item.released.pipe(takeUntil(refresh$)).subscribe(async () => await this.dragEnd(index));\n });\n }\n\n /** Method called when the item is being moved by 1 px */\n onMove(mousePosition: ElementPosition, draggedItemIndex: number): void {\n /** Temporary object, to store lowest distance values */\n let closestItemIndex: number | null = null;\n\n const closestDndItem = this._elementsCoordinates.find((element, index) => {\n /** Check if an element can be replaced */\n if (!element.stickToPosition && closestItemIndex !== index) {\n const isMouseOnElement = _isMouseOnElement(element, mousePosition);\n if (isMouseOnElement) {\n closestItemIndex = index;\n\n return true;\n }\n }\n return false;\n });\n\n if (!closestDndItem) {\n closestItemIndex = null;\n }\n\n /** If the closest element is different from the old one, the new one is picked. It prevents from performance issues */\n if (\n (closestItemIndex || closestItemIndex === 0) &&\n (closestItemIndex !== this._closestItemIndex || this.dropMode === 'auto')\n ) {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n this._closestItemIndex = closestItemIndex;\n this._closestItemPosition = this._elementsCoordinates[closestItemIndex].position;\n const closestItem = this.items[this._closestItemIndex];\n // If closest item index is same as dragged item, just remove indicators\n if (closestItemIndex === draggedItemIndex) {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n return;\n }\n if (\n this.dragoverPredicate &&\n this._draggedItem &&\n !this.dragoverPredicate(this._draggedItem, closestItem, draggedItemIndex, this._closestItemIndex)\n ) {\n this._ignoreDrop = true;\n this._setDisabledItem(this._closestItemIndex);\n return;\n }\n this._setDisabledItem(-1);\n /** Generating line, that shows where the element will be placed, on a drop */\n if (this.dropMode === 'group') {\n this._createReplaceIndicator(this._closestItemIndex);\n } else if (this.dropMode === 'shift') {\n this._createLine(this._closestItemIndex, this._closestItemPosition);\n } else {\n this._selectDropModeIndicator(draggedItemIndex, closestDndItem, closestItemIndex);\n }\n }\n }\n\n /** Method called when an element is started to be dragged */\n dragStart(index: number): void {\n const draggedItemElement = this._dndItemReference[index].elementRef;\n this._draggedItem = this.items[index];\n /** Counting all the element's chords */\n this._elementsCoordinates = this._dndItemReference.map((item: DndItem) =>\n item.getElementCoordinates(this._isBefore(draggedItemElement, item.elementRef), this.gridMode)\n );\n }\n\n /** Method called when an element is released */\n async dragEnd(draggedItemIndex: number): Promise<void> {\n this._draggedItem = undefined;\n const items = this.items.slice();\n const replacedItemIndex = this._closestItemIndex;\n this._setDisabledItem(-1);\n\n if (this._ignoreDrop) {\n this._ignoreDrop = false;\n return;\n }\n\n if (replacedItemIndex === null || replacedItemIndex === -1) {\n return;\n }\n\n const draggedDndItem = this.dndItems.get(draggedItemIndex)?.item ?? items[draggedItemIndex];\n const replacedDndItem = this.dndItems.get(replacedItemIndex)?.item ?? items[replacedItemIndex];\n\n const predicateSubj = new Subject<boolean>();\n\n const evt: FdDropEvent<T> = {\n replacedItemIndex,\n draggedItemIndex,\n items,\n insertAt: this._closestItemPosition,\n mode: this.dropMode !== 'auto' ? this.dropMode : this._detectedDropMode\n };\n\n predicateSubj.pipe(take(1)).subscribe((result) => {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n\n /** Reset */\n this._elementsCoordinates = [];\n this._closestItemIndex = null;\n this._closestItemPosition = null;\n\n if (!result) {\n this.dropCancelled.emit();\n return;\n }\n\n if (draggedItemIndex !== replacedItemIndex) {\n if (draggedItemIndex < replacedItemIndex) {\n for (let i = draggedItemIndex; i < replacedItemIndex; i++) {\n items[i] = items[i + 1];\n }\n } else {\n for (let i = draggedItemIndex; i > replacedItemIndex; i--) {\n items[i] = items[i - 1];\n }\n }\n\n /** Replacing items */\n items[replacedItemIndex] = draggedDndItem;\n\n this.itemsChange.emit(items);\n }\n\n this.itemDropped.emit(evt);\n });\n\n if (this.dropPredicate !== undefined) {\n this.dropPredicateCalculating.emit(true);\n const obj = this.dropPredicate(draggedDndItem, replacedDndItem, evt);\n const strategy = selectStrategy(obj);\n\n await strategy.createSubscription(obj, (result) => {\n predicateSubj.next(result);\n this.dropPredicateCalculating.emit(false);\n });\n } else {\n predicateSubj.next(true);\n }\n }\n\n /** @hidden */\n private _setDisabledItem(itemIndex: number): void {\n this.dndItems.forEach((item, index) => {\n item.setDisabledState(index === itemIndex);\n });\n }\n\n /** @hidden */\n private _selectDropModeIndicator(\n draggedItemIndex: number,\n closestItem: ElementChord | undefined,\n closestItemIndex: number\n ): void {\n if (!closestItem || !this._dndItemReference[draggedItemIndex]) {\n return;\n }\n\n let newDetectedDropMode: 'shift' | 'group';\n const draggedElmCoords =\n this._dndItemReference[draggedItemIndex].elementRef.nativeElement.getBoundingClientRect();\n\n const closestItemBoundaries = getElementBoundaries(closestItem, this.threshold);\n const draggedItemStartCoords = getElementStartCoords(draggedElmCoords, closestItem.position);\n\n if (\n _between(draggedItemStartCoords.x, closestItemBoundaries.x.start, closestItemBoundaries.x.end) &&\n _between(draggedItemStartCoords.y, closestItemBoundaries.y.start, closestItemBoundaries.y.end)\n ) {\n newDetectedDropMode = 'group';\n } else {\n newDetectedDropMode = 'shift';\n }\n\n if (newDetectedDropMode === this._detectedDropMode && (!this._linesRemoved || !this._indicatorsRemoved)) {\n return;\n }\n\n this._detectedDropMode = newDetectedDropMode;\n\n if (this._detectedDropMode === 'shift') {\n this._createLine(closestItemIndex, this._elementsCoordinates[closestItemIndex].position);\n } else {\n this._createReplaceIndicator(closestItemIndex);\n }\n }\n\n /** @hidden */\n private _removeAllLines(): void {\n this._linesRemoved = true;\n this.dndItems.forEach((item) => item.removeLine());\n }\n\n /** @hidden */\n private _removeAllReplaceIndicators(): void {\n this._indicatorsRemoved = true;\n this.dndItems.forEach((item) => item.removeReplaceIndicator());\n }\n\n /** @hidden */\n private _createLine(closestItemIndex: number, linkPosition: LinkPosition): void {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n this._linesRemoved = false;\n this._dndItemReference[closestItemIndex].createLine(linkPosition, this.gridMode);\n }\n\n /** @hidden */\n private _createReplaceIndicator(closestItemIndex: number): void {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n this._indicatorsRemoved = false;\n this._dndItemReference[closestItemIndex].createReplaceIndicator();\n }\n\n /**\n * @hidden\n * Return information if an element is placed before the dragged element\n */\n private _isBefore(draggedElement: ElementRef, targetElement: ElementRef): boolean {\n /** Sometimes the elements are not straight in one column, that's why offset is needed */\n const VERTICAL_OFFSET = 20;\n\n /** Distances from the top of the screen */\n const draggedElementBound = draggedElement.nativeElement.getBoundingClientRect();\n const targetElementBound = targetElement.nativeElement.getBoundingClientRect();\n\n if (draggedElementBound.top - targetElementBound.top > VERTICAL_OFFSET) {\n /** If an element is higher than the dragged element, it's for sure before */\n return true;\n } else if (targetElementBound.top - draggedElementBound.top > VERTICAL_OFFSET) {\n /** If an element is lower than the dragged element, it's for sure after */\n return false;\n } else {\n /** If elements are in same level, the horizontal position decides if it's before/after */\n return draggedElementBound.left - targetElementBound.left > 0;\n }\n }\n\n /** @hidden */\n private _changeDraggableState(draggable: boolean): void {\n if (this.dndItems) {\n this.dndItems.forEach((item) => {\n item.listDraggable = draggable;\n item.changeCDKDragState();\n });\n }\n }\n}\n\nfunction _isMouseOnElement(element: ElementChord, mousePosition: ElementPosition): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = element.y;\n const endY = element.y + element.height;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n}\n\nfunction _between(x: number, min: number, max: number): boolean {\n return x >= min && x <= max;\n}\n\ninterface ElementBoundaries {\n x: {\n start: number;\n end: number;\n };\n y: {\n start: number;\n end: number;\n };\n}\n\nfunction getElementStartCoords(rect: DOMRect, position: ElementChord['position']): { x: number; y: number } {\n return {\n x: position === 'after' ? rect.x + rect.width : rect.x,\n y: position === 'after' ? rect.y + rect.height : rect.y\n };\n}\n\nfunction getElementBoundaries(coordinates: ElementChord, threshold: number): ElementBoundaries {\n const widthOffset = coordinates.width * (coordinates.position === 'after' ? 1 : -1);\n const heightOffset = coordinates.height * (coordinates.position === 'after' ? 1 : -1);\n const xStart = coordinates.position === 'after' ? coordinates.x : coordinates.x + coordinates.width;\n const xEnd = xStart + widthOffset + (widthOffset / 2) * threshold;\n const yStart = coordinates.position === 'after' ? coordinates.y : coordinates.y + coordinates.height;\n const yEnd = yStart + heightOffset + (heightOffset / 2) * threshold;\n return {\n x: {\n start: xStart > xEnd ? xEnd : xStart,\n end: xStart > xEnd ? xStart : xEnd\n },\n y: {\n start: yStart > yEnd ? yEnd : yStart,\n end: yStart > yEnd ? yStart : yEnd\n }\n };\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { DndItemDirective } from './dnd-item/dnd-item.directive';\nimport { DndKeyboardGroupDirective } from './dnd-keyboard-group/dnd-keyboard-group.directive';\nimport { DndKeyboardItemDirective } from './dnd-keyboard-item/dnd-keyboard-item.directive';\nimport { DndListDirective } from './dnd-list/dnd-list.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [DragDropModule, DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective],\n exports: [DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective]\n})\nexport class DragAndDropModule {}\n","import { NgModule } from '@angular/core';\nimport {\n AutoCompleteModule,\n BreakpointModule,\n ClickedDirective,\n DisabledBehaviorModule,\n FocusableGridModule,\n FocusableItemModule,\n FocusableListModule,\n InitialFocusModule,\n IntersectionSpyDirective,\n LineClampModule,\n OnlyDigitsModule,\n OverflowListModule,\n ReadonlyBehaviorModule,\n RepeatModule,\n ResizeModule,\n SelectableListModule,\n TemplateModule,\n TruncateModule\n} from './directives';\nimport { DragAndDropModule } from './drag-and-drop/drag-and-drop.module';\nimport { RtlService } from './services/rtl.service';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [\n FocusableItemModule,\n FocusableListModule,\n FocusableGridModule,\n DragAndDropModule,\n OnlyDigitsModule,\n TruncateModule,\n LineClampModule,\n OverflowListModule,\n RepeatModule,\n ResizeModule,\n TemplateModule,\n AutoCompleteModule,\n DisabledBehaviorModule,\n SelectableListModule,\n ReadonlyBehaviorModule,\n ClickedDirective,\n InitialFocusModule,\n BreakpointModule,\n IntersectionSpyDirective\n ],\n exports: [\n FocusableItemModule,\n FocusableListModule,\n FocusableGridModule,\n DragAndDropModule,\n OnlyDigitsModule,\n TruncateModule,\n LineClampModule,\n OverflowListModule,\n RepeatModule,\n ResizeModule,\n TemplateModule,\n AutoCompleteModule,\n DisabledBehaviorModule,\n SelectableListModule,\n ReadonlyBehaviorModule,\n ClickedDirective,\n InitialFocusModule,\n BreakpointModule,\n IntersectionSpyDirective\n ],\n providers: [RtlService]\n})\nexport class UtilsModule {}\n","import { Directive, ElementRef, Input, OnChanges, OnInit, inject } from '@angular/core';\nimport { HasElementRef } from './interfaces/has-element-ref.interface';\n\n/*\n This abstract class allows the user to set their own custom styles on a Fundamental Library for Angular directive, in addition to the\n styles the library needs to add itself.\n When library styles were added through the directive's host: {'[class]'} property, any styles the user added would be\n overwritten. By extending this class, we instead add library styles to the user's classList rather than replace them.\n */\n\n/** @hidden */\n@Directive()\nexport abstract class AbstractFdNgxClass implements HasElementRef, OnInit, OnChanges {\n /** @hidden */\n abstract _setProperties(): void;\n\n /** @hidden */\n @Input() class: string; // user's custom classes\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n /** @hidden */\n constructor() {\n this._setProperties();\n }\n\n /*\n each directive that extends this class will implement this function and populate it with one or more calls to\n the '_addClassToElement' function, passing the style names to be added with each call\n */\n\n /** @hidden */\n _setClassToElement(className: string): void {\n (this.elementRef.nativeElement as HTMLElement).classList.value = `${className} ${this.class}`;\n }\n\n /** @hidden */\n _clearElementClass(): void {\n (this.elementRef.nativeElement as HTMLElement).classList.value = '';\n }\n\n /** @hidden */\n _addClassToElement(className: string): void {\n (this.elementRef.nativeElement as HTMLElement).classList.add(...className.split(' '));\n }\n\n /** @hidden */\n _addStyleToElement(attribute, value): void {\n (this.elementRef.nativeElement as HTMLElement).style[attribute] = value;\n }\n\n /** @hidden */\n ngOnChanges(): void {\n const classList = (this.elementRef.nativeElement as HTMLElement).classList;\n while (classList.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n classList.remove(classList.item(0)!);\n }\n if (this.class) {\n this._addClassToElement(this.class);\n }\n this._setProperties();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._setProperties();\n }\n}\n","import { coerceArray } from '@angular/cdk/coercion';\nimport { isBlank } from '../typecheck';\n\n/** @hidden */\nexport function coerceArraySafe<T>(value: T | T[]): T[] {\n return isBlank(value) ? [] : coerceArray(value);\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport {\n CdkPortalOutlet,\n ComponentPortal,\n ComponentType,\n DomPortal,\n PortalModule,\n TemplatePortal\n} from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n Component,\n ComponentRef,\n DestroyRef,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Input,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, filter, map, tap } from 'rxjs';\n\n/**\n * A component that can be used to attach a portal to a DOM element, without explicitly creating portal instances on place.\n * This is useful when you have a list of the components or templates, or HTMLElmets, and you want to attach them to the DOM\n * dynamically in a loop.\n */\n@Component({\n selector: 'fdk-dynamic-portal',\n imports: [PortalModule],\n template: ` <ng-template cdkPortalOutlet></ng-template>`\n})\nexport class DynamicPortalComponent implements AfterViewInit {\n /** The DOM element to attach */\n @Input()\n set domElement(value: HTMLElement | ElementRef<HTMLElement> | string) {\n this.portalContent$.next(value);\n }\n\n /** The component to attach */\n @Input()\n set component(value: ComponentType<any>) {\n this.portalContent$.next(value);\n }\n\n /** The template to attach */\n @Input()\n set template(value: TemplateRef<any>) {\n this.portalContent$.next(value);\n }\n\n /** The Content which should be attached and can be any of the items */\n @Input()\n set auto(value: DynamicPortalComponent['domElement' | 'component' | 'template']) {\n this.portalContent$.next(value);\n }\n\n /** Emits when the portal is attached */\n @Output()\n attached = new EventEmitter<ComponentRef<any> | EmbeddedViewRef<any> | Element>();\n\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n portalOutlet?: CdkPortalOutlet;\n\n /** @hidden */\n private portalContent$ = new BehaviorSubject<\n DynamicPortalComponent['domElement' | 'component' | 'template'] | undefined\n >(undefined);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private viewContainerRef = inject(ViewContainerRef);\n\n /** @hidden */\n private renderer = inject(Renderer2);\n\n /** @hidden */\n private elementRef = inject(ElementRef);\n\n /** @hidden */\n ngAfterViewInit(): void {\n const portalOutlet = this.portalOutlet as CdkPortalOutlet;\n this.portalContent$\n .pipe(\n tap(() => portalOutlet.detach()),\n filter(Boolean),\n map((content) => {\n if (typeof content === 'string') {\n const textElement = this.renderer.createText(content);\n this.renderer.appendChild(this.elementRef.nativeElement, textElement);\n return new DomPortal(textElement);\n } else if (content instanceof HTMLElement || content instanceof ElementRef) {\n return new DomPortal(coerceElement(content as HTMLElement | ElementRef<HTMLElement>));\n } else if (content instanceof TemplateRef) {\n return new TemplatePortal(content, this.viewContainerRef);\n }\n return new ComponentPortal(content);\n }),\n filter(Boolean),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((portal) => {\n const ref = portalOutlet.attach(portal);\n if (portal instanceof DomPortal) {\n // DomPortal Attachment does not refer return Ref, like other portals\n this.attached.emit(portal.element);\n } else {\n this.attached.emit(ref);\n }\n });\n }\n}\n","export const MOBILE_CONFIG_ERROR = `Missing configuration object for mobile version of the component.\n Consult the documentation on how to provide MobileModeConfiguration object for this component.\n`;\n\nexport const THEME_SWITCHER_ROUTER_MISSING_ERROR = `You need to import RouterModule to enable theme settings via the url.`;\n\nexport const INVALID_DATE_ERROR = 'Invalid Date';\n","export type OverflowPriority = 'always' | 'never' | 'low' | 'high' | 'disappear';\n\nexport const OVERFLOW_PRIORITY_SCORE: Map<OverflowPriority, number> = new Map([\n ['always', 0],\n ['disappear', 1],\n ['low', 2],\n ['high', 3],\n ['never', 4]\n]);\n","/**\n * Instead of `/\\p{L}/u` because of it's not working in IE11 and Edge\n * - https://github.com/Microsoft/ChakraCore/issues/2969\n * */\n// eslint-disable-next-line max-len\nexport const LETTERS_UNICODE_RANGE = `[A-Za-z\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]`;\n// eslint-disable-next-line max-len\nexport const ANY_LANGUAGE_LETTERS_REGEX = new RegExp(LETTERS_UNICODE_RANGE, 'g');\n// eslint-disable-next-line max-len\nexport const ANY_LANGUAGE_LETTERS_GROUP_REGEX = new RegExp(`(${LETTERS_UNICODE_RANGE})+`, 'g');\n","/**\n * Polyfill for `/\\p{Nd}/u` to work in IE11 and Edge\n */\n// eslint-disable-next-line max-len\nexport const DECIMAL_NUMBER_UNICODE_RANGE = `[0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]`;\nexport const DECIMAL_NUMBER_UNICODE_REGEX = new RegExp(DECIMAL_NUMBER_UNICODE_RANGE, 'g');\nexport const DECIMAL_NUMBER_UNICODE_GROUP_REGEX = new RegExp(`(${DECIMAL_NUMBER_UNICODE_RANGE})+`, 'g');\n","import { ElementRef } from '@angular/core';\n\nexport interface HasElementRef<ElementType extends Element = HTMLElement> {\n readonly elementRef: ElementRef<ElementType>;\n}\n\nexport const ELEMENT_REF_EXCEPTION = 'HasElementRef interface has to be implemented';\n","import { uuidv4 } from '../functions/uuidv4-generator';\nimport { CssClassBuilder } from '../interfaces/css-class-builder.interface';\nimport { ELEMENT_REF_EXCEPTION } from '../interfaces/has-element-ref.interface';\n\n/**\n * Method decorator to apply css class to a component through native element\n * decorator will store original method in variable and wrap it with custom one\n * component has to implement CssClassBuilder interface\n * more info abour method decorator: https://www.typescriptlang.org/docs/handbook/decorators.html#method-decorators\n * @param target a component\n * @param propertyKey name of the method\n * @param descriptor method\n */\nexport function applyCssClass(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {\n const originalMethod = descriptor.value;\n descriptor.value = function (): string[] {\n const self = this as unknown as CssClassBuilder & { _uuidv4?: string };\n if (!('elementRef' in self)) {\n throw ELEMENT_REF_EXCEPTION;\n }\n\n const classListToApply: string[] = sanitize(originalMethod.apply(this));\n\n const elementRef = self.elementRef;\n\n const nativeElement: HTMLElement & { _classMap?: any } = elementRef?.nativeElement;\n\n if (!nativeElement) {\n return classListToApply;\n }\n\n if (!nativeElement._classMap) {\n nativeElement._classMap = {};\n }\n\n if (!self._uuidv4) {\n self._uuidv4 = uuidv4();\n }\n\n const currentClassList = Array.from(nativeElement.classList);\n\n const previousClassListToApply = nativeElement._classMap[self._uuidv4] || [];\n\n const newClassList = createComponentClassList(currentClassList, previousClassListToApply, classListToApply);\n\n nativeElement.className = newClassList.join(' ');\n\n nativeElement._classMap[self._uuidv4] = classListToApply;\n\n return classListToApply;\n };\n}\n\n/** Filter list to unique items */\nfunction unique(value: unknown, index: number, list: unknown[]): boolean {\n return list.indexOf(value) === index;\n}\n\n/** Splits merged classes, removes falsy elements and leaves only unique items */\nfunction sanitize(array: string[]): string[] {\n return array\n .filter(Boolean)\n .reduce((classList: string[], cssClass: string) => [...classList, ...cssClass.split(/\\s+/)], [])\n .filter(unique);\n}\n\nfunction firstCommonElementIndex(array1: string[], array2: string[]): number {\n return array1.findIndex((element) => array2.indexOf(element) !== -1);\n}\n\n/** Create set of component classes based on previous set and new set */\nfunction createComponentClassList(\n allClasses: string[],\n previousComponentClassList: string[],\n newComponentClassList: string[]\n): string[] {\n allClasses = allClasses.slice();\n let index = firstCommonElementIndex(allClasses, previousComponentClassList);\n index = index === -1 ? 0 : index;\n allClasses.splice(index, previousComponentClassList.length, ...newComponentClassList);\n\n return allClasses;\n}\n","import { Hash } from '../datatypes/hash.datatype';\nimport { ELEMENT_REF_EXCEPTION, HasElementRef } from '../interfaces/has-element-ref.interface';\n\n/**\n * Method decorator to apply css styles to a component through native element\n * decorator will store original method in variable and wrap it with custom one\n * component has to implement HasElementRef or CssStyleBuilder interface\n * more info abour method decorator: https://www.typescriptlang.org/docs/handbook/decorators.html#method-decorators\n * @param target a component\n * @param propertyKey name of the method\n * @param descriptor method\n */\nexport function applyCssStyle(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {\n const originalMethod = descriptor.value;\n descriptor.value = function (): Hash<number | string> {\n const self = this as unknown as HasElementRef;\n if (!self.elementRef) {\n throw ELEMENT_REF_EXCEPTION;\n }\n\n const _styles: Hash<number | string> = originalMethod.apply(this);\n const htmlElement = self.elementRef.nativeElement as HTMLElement;\n Object.keys(_styles).forEach((key) => {\n htmlElement.style[key] = _styles[key];\n });\n\n return _styles;\n };\n}\n","/**\n * Function, which generates decorator. Passed mutator will be called during value set\n */\nexport function alternateSetter(mutator: (value: any, self: Record<string | symbol, any>) => any): PropertyDecorator {\n return function (targetObj: Record<string | symbol, any>, propertyKey: string | symbol) {\n const _key = Symbol();\n targetObj[_key] = targetObj[propertyKey];\n Object.defineProperty(targetObj, propertyKey, {\n get() {\n return this[_key];\n },\n set(v: any) {\n this[_key] = mutator.call(this, v, this);\n }\n });\n };\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { alternateSetter } from './setter-alternator';\n\n/**\n * Decorator for coercing passed value to boolean, using @angular/cdk coerceBooleanProperty\n */\nexport const coerceBoolean = alternateSetter(coerceBooleanProperty);\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { alternateSetter } from './setter-alternator';\n\nexport const coerceCssPixel = alternateSetter(coerceCssPixelValue);\n","import { inject, InjectionToken, isDevMode, ValueProvider } from '@angular/core';\n\nexport interface DeprecatedSelectorModel {\n deprecated: string;\n current: string;\n}\n\n/** @hidden */\nexport function getDeprecatedModel(current: string, deprecated: string): DeprecatedSelectorModel {\n return {\n current,\n deprecated\n };\n}\n\n/** @hidden */\nexport function deprecatedModelProvider(current: string, deprecated: string): ValueProvider {\n return {\n provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,\n useValue: getDeprecatedModel(current, deprecated)\n };\n}\n\nexport const FD_DEPRECATED_DIRECTIVE_SELECTOR = new InjectionToken<DeprecatedSelectorModel>(\n 'FdDeprecatedDirectiveSelector'\n);\n\nexport abstract class DeprecatedSelector {\n /** @hidden */\n protected _selectors: DeprecatedSelectorModel | null = inject(FD_DEPRECATED_DIRECTIVE_SELECTOR, { optional: true });\n\n /** @hidden */\n constructor() {\n if (isDevMode() && this._selectors) {\n console.warn(this._messageGenerator(this._selectors.deprecated, this._selectors.current));\n }\n }\n\n /** @hidden */\n protected _messageGenerator(deprecated: string, current: string): string {\n const segments = [`${deprecated} selector(s) are deprecated and may affect input properties`];\n if (current) {\n segments.push(`Use ${current} instead.`);\n }\n return segments.join('. ');\n }\n}\n","import { CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n Injector,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Nullable } from '../models/nullable';\n\nexport abstract class DynamicComponentContainer<T = TemplateRef<any> | Type<any>> {\n /** @hidden */\n abstract portalOutlet: CdkPortalOutlet;\n\n /** @hidden Load received content */\n protected abstract _loadContent(): void;\n\n /** @hidden */\n childContent: Nullable<T> = undefined;\n\n /** @hidden */\n protected _componentRef: ComponentRef<any> | EmbeddedViewRef<any>;\n\n /** @hidden */\n protected _contentLoaded$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n protected constructor(\n public elementRef: ElementRef,\n protected _injector: Injector\n ) {}\n\n /** @hidden Load received content as component */\n protected _createFromComponent(content: Type<any>): void {\n this.portalOutlet?.attachedRef?.destroy();\n const injector = Injector.create({\n parent: this._injector,\n providers: []\n });\n this._componentRef = this.portalOutlet.attach(new ComponentPortal(content, null, injector));\n }\n\n /** @hidden Load received content as embedded view */\n protected _createFromTemplate(content: TemplateRef<any>, context: any): void {\n this.portalOutlet?.attachedRef?.destroy();\n if (this.portalOutlet.hasAttached()) {\n this.portalOutlet.detach();\n }\n this._componentRef = this.portalOutlet.attach(\n new TemplatePortal(content, null as unknown as ViewContainerRef, context)\n );\n }\n}\n","import { Injector } from '@angular/core';\n\nexport class DynamicComponentInjector implements Injector {\n /** @hidden */\n constructor(\n private _parentInjector: Injector,\n private _additionalTokens: WeakMap<any, any>\n ) {}\n\n /**\n *\n * @param token\n * @param notFoundValue\n */\n get(token: any, notFoundValue?: any): void {\n const value = this._additionalTokens.get(token);\n\n if (value) {\n return value;\n }\n\n return this._parentInjector.get<any>(token, notFoundValue);\n }\n}\n","import {\n ApplicationRef,\n Compiler,\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n Injector,\n NgModuleFactory,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { DynamicComponentConfig } from './dynamic-component-config';\nimport { DynamicComponentInjector } from './dynamic-component-injector';\n\n/**\n * Service used to dynamically generate components like dialogs/alerts/notifications\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicComponentService {\n /** @hidden */\n constructor(\n private readonly _componentFactoryResolver: ComponentFactoryResolver,\n private readonly _applicationRef: ApplicationRef,\n private readonly _injector: Injector,\n private readonly _compiler: Compiler\n ) {}\n\n /**\n * Function that creates dynamic component and injects services to allow communication between component and outside\n * @param content Type of the component content\n * @param componentType Type of component that should be rendered.\n * @param config Configuration that will be passed to the component.\n * @param inject enables to provide preconfigured component injector and dependencies\n */\n public createDynamicComponent<T>(\n content: TemplateRef<any> | Type<any> | string | Record<string, any>,\n componentType: Type<T>,\n config: DynamicComponentConfig,\n inject: { injector?: Injector; services?: any[] } = {}\n ): ComponentRef<T> {\n const { injector, services } = inject;\n const dependenciesMap = this._createDependencyMap(services);\n const componentRef = this._createComponent<T>(componentType, dependenciesMap, injector);\n this._passExternalContent<T>(componentRef, content);\n this._attachToContainer<T>(componentRef, config);\n\n return componentRef;\n }\n\n /**\n * Function that creates dynamic component and injects services to allow communication between component and outside\n * @param content Type of the component content\n * @param moduleType Type of module that should be compiled.\n * @param componentType Type of component that should be rendered.\n * @param containerRef The container that the dynamic component is appended to.\n * @param injector enables to provide preconfigured component injector\n */\n async createDynamicModule<M, C>(\n content: TemplateRef<any> | Type<any> | string | Record<string, any>,\n moduleType: Type<M> | NgModuleFactory<M>,\n componentType: Type<C>,\n containerRef: ViewContainerRef,\n injector?: Injector\n ): Promise<ComponentRef<C>> {\n const moduleFactory =\n moduleType instanceof NgModuleFactory ? moduleType : await this._compiler.compileModuleAsync<M>(moduleType);\n const moduleRef = moduleFactory.create(injector || this._injector);\n const componentFactory = moduleRef.componentFactoryResolver.resolveComponentFactory(componentType);\n\n containerRef.clear();\n\n const componentRef: ComponentRef<C> = containerRef.createComponent(componentFactory);\n\n this._passExternalContent<C>(componentRef, content);\n\n return componentRef;\n }\n\n /** Function that destroys dynamic component */\n public destroyComponent(componentRef: ComponentRef<any>): void {\n this._applicationRef.detachView(componentRef.hostView);\n componentRef.hostView.detach();\n componentRef.destroy();\n }\n\n /** @hidden */\n private _createDependencyMap(services: any[] = []): WeakMap<any, any> {\n const dependencyMap = new WeakMap();\n services.filter((service) => !!service).forEach((service) => dependencyMap.set(service.constructor, service));\n return dependencyMap;\n }\n\n /** @hidden */\n private _attachToContainer<V>(componentRef: ComponentRef<V>, config: DynamicComponentConfig): void {\n const configObj = Object.assign({}, config);\n if (config.containerRef) {\n componentRef.hostView.detach();\n config.containerRef.insert(componentRef.hostView);\n return;\n }\n this._applicationRef.attachView(componentRef.hostView);\n const componentEl = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n if (configObj.container !== 'body') {\n configObj.container?.appendChild(componentEl);\n } else {\n document.body.appendChild(componentEl);\n }\n }\n\n /** @hidden */\n private _createComponent<V>(\n componentType: Type<V>,\n dependenciesMap: WeakMap<any, any>,\n injector?: Injector\n ): ComponentRef<V> {\n const dynamicComponentInjector = new DynamicComponentInjector(injector || this._injector, dependenciesMap);\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(componentType);\n const componentRef = componentFactory.create(dynamicComponentInjector);\n // this._applicationRef.attachView(componentRef.hostView);\n return componentRef;\n }\n\n /** @hidden */\n private _passExternalContent<V>(\n componentRef: ComponentRef<V>,\n content: TemplateRef<any> | Type<any> | string | Record<string, any>\n ): void {\n // TODO: this approach should be revisited, it can cause issues, that is really hard to debug\n if (Object.prototype.hasOwnProperty.call(componentRef.instance, 'childContent')) {\n (componentRef.instance as any).childContent = content;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const LIST_ITEM_COMPONENT = new InjectionToken<string[]>('ListItemComponent');\n\nexport interface ListItemInterface {\n selected: boolean;\n\n link: boolean;\n\n focus(): void;\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { isPromise, isSubscribable } from '../typecheck';\n\nexport type FdkAsyncProperty<T> = T | Observable<T> | Promise<T>;\n\n@Pipe({\n name: 'fdkAsyncOrSync',\n standalone: true,\n pure: false\n})\nexport class AsyncOrSyncPipe implements OnDestroy, PipeTransform {\n /** @hidden */\n private _cdr: ChangeDetectorRef | null;\n /** @hidden */\n private _asyncPipe: AsyncPipe;\n\n /** @hidden */\n constructor(ref: ChangeDetectorRef) {\n this._cdr = ref;\n this._asyncPipe = new AsyncPipe(this._cdr);\n }\n\n /**\n * Transforms raw async-like value into static one.\n * @param value raw value. Can be either a static value, or Promise-like, or Observable-like.\n */\n transform<T>(value: FdkAsyncProperty<T>): T | null {\n if (isPromise(value) || isSubscribable(value)) {\n return this._asyncPipe.transform(value);\n }\n return value;\n }\n\n /** @Hidden */\n ngOnDestroy(): void {\n this._asyncPipe.ngOnDestroy();\n this._cdr = null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'displayFnPipe',\n standalone: true\n})\nexport class DisplayFnPipe implements PipeTransform {\n /** Transform value with display function. */\n transform(value: any, displayFn: any, ...args: any): string {\n return displayFn(value, ...args);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Nullable } from '../models/nullable';\n\n@Pipe({\n name: 'fdFilterStrings',\n standalone: true\n})\nexport class FilterStringsPipe implements PipeTransform {\n /**\n * Performs filtering.\n * @param values Array of items.\n * @param params Search parameters.\n */\n transform(values: any[] = [], params: { searchTerm: Nullable<string>; key: string }): any[] {\n if (!params.searchTerm) {\n return values;\n }\n if (params.key) {\n values = values.filter((item) =>\n item[params.key].toLocaleLowerCase().includes(params.searchTerm?.toLocaleLowerCase())\n );\n } else {\n values = values.filter((item) => item.toLocaleLowerCase().includes(params.searchTerm?.toLocaleLowerCase()));\n }\n return values;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isCompactDensity } from '../functions/is-compact-density';\nimport { ContentDensity } from '../interfaces/content-density';\n\n@Pipe({ name: 'isCompactDensity', standalone: true })\nexport class IsCompactDensityPipe implements PipeTransform {\n /** Check if the content density is compact. */\n transform(size: ContentDensity): boolean {\n return isCompactDensity(size);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { isPromise, isSubscribable } from '../typecheck';\n\n@Pipe({\n name: 'fdkMakeAsync',\n pure: true,\n standalone: true\n})\nexport class MakeAsyncPipe implements PipeTransform {\n /**\n * Transforms raw value into observable.\n * @param value raw value. Can be either a static value, or Promise-like, or Observable-like.\n */\n transform<T>(value: T | Promise<T> | Observable<T>): Observable<T> | Promise<T> {\n return isPromise(value) || isSubscribable(value) ? value : of(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safe',\n standalone: true\n})\nexport class SafePipe implements PipeTransform {\n /** @hidden */\n constructor(protected sanitizer: DomSanitizer) {}\n\n /** Sanitize HTML string. */\n public transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n\n default:\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { escape } from '../functions/lodash-utils';\n\n@Pipe({\n name: 'highlight',\n standalone: true\n})\nexport class SearchHighlightPipe implements PipeTransform {\n /** Highlight search term in string. */\n transform(\n value: string,\n matches: string | Array<[number, number]>,\n active: boolean = true,\n includeSpans: boolean = false\n ): string {\n value = escape(value);\n let result: string = value;\n if (value && active && matches) {\n if (Array.isArray(matches)) {\n matches.forEach((match) => {\n const matchingString = value.substring(match[0], match[1] + 1);\n result = result.replace(matchingString, '<strong>' + matchingString + '</strong>');\n });\n } else if (typeof matches === 'string') {\n const testStr: string = escape(matches.trim().toLowerCase());\n const startIndex = value.toLowerCase().indexOf(testStr);\n if (startIndex !== -1) {\n const matchingString = value.substring(startIndex, startIndex + testStr.length);\n result = value.replace(matchingString, '<strong>' + matchingString + '</strong>');\n }\n }\n }\n if (includeSpans) {\n result = '<span>' + result + '</span>';\n }\n return result;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n standalone: true\n})\nexport class TruncatePipe implements PipeTransform {\n /** Truncate string to given length. */\n transform(value: string, limit: number = 500): string {\n return value && value.length > limit ? value.substring(0, limit) + '...' : value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'twoDigits',\n standalone: true\n})\nexport class TwoDigitsPipe implements PipeTransform {\n /** Transform number to two digits. */\n transform(value: number, enable: boolean = true): string {\n if ((value || value === 0) && enable) {\n return value < 10 ? '0' + value : value.toString();\n } else {\n return String(value);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { get } from '../functions/lodash-utils';\n\n@Pipe({ name: 'valueByPath', standalone: true })\nexport class ValueByPathPipe implements PipeTransform {\n /** Get value by path. */\n transform(value: any, key: string): any {\n return get(value, key);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AsyncOrSyncPipe } from './async-or-sync.pipe';\n\nimport { DisplayFnPipe } from './displayFn.pipe';\nimport { FilterStringsPipe } from './filter-strings.pipe';\nimport { IsCompactDensityPipe } from './is-compact.pipe';\nimport { MakeAsyncPipe } from './make-async.pipe';\nimport { SafePipe } from './safe.pipe';\nimport { SearchHighlightPipe } from './search-highlight.pipe';\nimport { TruncatePipe } from './truncate.pipe';\nimport { TwoDigitsPipe } from './two-digits.pipe';\nimport { ValueByPathPipe } from './value-by-path.pipe';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [\n DisplayFnPipe,\n SearchHighlightPipe,\n TwoDigitsPipe,\n SafePipe,\n ValueByPathPipe,\n IsCompactDensityPipe,\n TruncatePipe,\n FilterStringsPipe,\n MakeAsyncPipe,\n AsyncOrSyncPipe\n ],\n exports: [\n DisplayFnPipe,\n SearchHighlightPipe,\n TwoDigitsPipe,\n SafePipe,\n ValueByPathPipe,\n IsCompactDensityPipe,\n TruncatePipe,\n FilterStringsPipe,\n MakeAsyncPipe,\n AsyncOrSyncPipe\n ]\n})\nexport class PipeModule {}\n","import { AnimationTriggerMetadata, animate, state, style, transition, trigger } from '@angular/animations';\n\n/**\n * Animations used by the Toast components.\n */\nexport const baseToastAnimations: {\n readonly toastState: AnimationTriggerMetadata;\n} = {\n /** Animation that shows and hides Toast. */\n toastState: trigger('state', [\n state(\n 'void, hidden',\n style({\n transform: 'translateY(1rem)',\n opacity: 0\n })\n ),\n state(\n 'visible',\n style({\n transform: 'translateY(0)',\n opacity: 1\n })\n ),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition(\n '* => void, * => hidden',\n animate(\n '75ms cubic-bezier(0.4, 0.0, 1, 1)',\n style({\n opacity: 0\n })\n )\n )\n ])\n};\n","import { ConnectedPosition, ScrollStrategy } from '@angular/cdk/overlay';\n\nexport interface ToastGlobalPosition {\n left?: string;\n right?: string;\n bottom?: string;\n top?: string;\n center: boolean;\n centerVertically?: boolean;\n}\n\nexport interface ToastGlobalConnectedPosition extends ConnectedPosition {\n boundTo: HTMLElement;\n}\n\nexport const toastConnectedTopPosition: ConnectedPosition = {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 16\n};\n\nexport const toastConnectedTopLeftPosition: ConnectedPosition = {\n ...toastConnectedTopPosition,\n ...{ overlayX: 'start', originX: 'start' }\n};\n\nexport const toastConnectedTopRightPosition: ConnectedPosition = {\n ...toastConnectedTopPosition,\n ...{ overlayX: 'end', originX: 'end' }\n};\n\nexport const toastConnectedBottomPosition: ConnectedPosition = {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -16\n};\n\nexport const toastConnectedBottomLeftPosition: ConnectedPosition = {\n ...toastConnectedBottomPosition,\n ...{ overlayX: 'start', originX: 'start' }\n};\n\nexport const toastConnectedBottomRightPosition: ConnectedPosition = {\n ...toastConnectedBottomPosition,\n ...{ overlayX: 'end', originX: 'end' }\n};\n\n/**\n * Base Toast Position class.\n */\nexport abstract class BaseToastPosition {\n /**\n * Position strategy of the first item.\n */\n global!: ToastGlobalPosition | ToastGlobalConnectedPosition;\n /**\n * Position strategy of the newly added items.\n */\n connected!: ConnectedPosition;\n\n /**\n * Scroll strategy. Used when global position is bound to some HTML element on the page.\n */\n scrollPosition?: ScrollStrategy;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the top-center of the screen.\n * New items will stack after the first item.\n */\nexport class ToastTopCenterPosition extends BaseToastPosition {\n /** @hidden */\n static global: ToastGlobalPosition = {\n top: '1rem',\n center: true\n };\n /** @hidden */\n static connected: ConnectedPosition = toastConnectedTopPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the bottom-center of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomCenterPosition extends BaseToastPosition {\n /** @hidden */\n static global: ToastGlobalPosition = {\n bottom: '1rem',\n center: true\n };\n /** @hidden */\n static connected: ConnectedPosition = toastConnectedBottomPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the top-left of the screen.\n * New items will stack after first item.\n */\nexport class ToastTopLeftPosition extends ToastTopCenterPosition {\n /** @hidden */\n static override global = { ...ToastTopCenterPosition.global, ...{ left: '1rem', center: false } };\n /** @hidden */\n static override connected: ConnectedPosition = toastConnectedTopLeftPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the top-right of the screen.\n * New items will stack after first item.\n */\nexport class ToastTopRightPosition extends ToastTopCenterPosition {\n /** @hidden */\n static override global = { ...ToastTopCenterPosition.global, ...{ right: '1rem', center: false } };\n /** @hidden */\n static override connected: ConnectedPosition = toastConnectedTopRightPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the bottom-left of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomLeftPosition extends ToastBottomCenterPosition {\n /** @hidden */\n static override global = { ...ToastBottomCenterPosition.global, ...{ left: '1rem', center: false } };\n /** @hidden */\n static override connected = toastConnectedBottomLeftPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the bottom-right of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomRightPosition extends ToastBottomCenterPosition {\n /** @hidden */\n static override global = { ...ToastBottomCenterPosition.global, ...{ right: '1rem', center: false } };\n /** @hidden */\n static override connected = toastConnectedBottomRightPosition;\n}\n","import {\n ComponentType,\n FlexibleConnectedPositionStrategy,\n GlobalPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n DestroyRef,\n EmbeddedViewRef,\n Injectable,\n InjectionToken,\n Injector,\n StaticProvider,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BaseToastPosition, ToastGlobalConnectedPosition, ToastGlobalPosition } from './base-toast-positions';\nimport { BaseToastConfig } from './classes/base-toast-config';\nimport { BaseToastRef } from './classes/base-toast-ref';\nimport { ToastContainerComponent } from './interfaces/toast-container-component.interface';\nimport { ToastTextComponent } from './interfaces/toast-text-component.interface';\n\n@Injectable()\nexport abstract class BaseToastService<\n P extends BaseToastConfig,\n C extends ToastContainerComponent<P> = ToastContainerComponent<P>\n> {\n /** Component for simple text toast. */\n protected abstract toastTextComponent: Type<ToastTextComponent>;\n /** Component for Toast Container. */\n protected abstract toastContainerComponent: Type<C>;\n /** Injection token for Toast Data. */\n protected abstract toastDataInjectionToken: InjectionToken<any>;\n /** Toast Position Strategy. */\n protected abstract toastPositionStrategy: BaseToastPosition;\n /** Toast default config. */\n protected abstract defaultConfig: P;\n\n /**\n * Opens a Toast with the provided configuration.\n * @param toast accepts string, Component or TemplateRef.\n */\n abstract open<T>(\n toast: string | Type<T> | TemplateRef<T>\n ): BaseToastRef<ToastTextComponent | T | EmbeddedViewRef<T>, P>;\n\n abstract openFromString(message: string, config: P): BaseToastRef<ToastTextComponent, P>;\n\n /**\n * Opens a Toast with provided component inside.\n * @param component Component to render inside a Toast.\n * @param config Toast configuration.\n * @returns Toast reference.\n */\n abstract openFromComponent<T>(component: Type<T>, config: P): BaseToastRef<T, P>;\n\n /**\n * Opens a Toast with provided Template Reference.\n * @param template Template Reference to render inside a Toast.\n * @param config Toast configuration.\n * @returns Toast reference.\n */\n abstract openFromTemplate(template: TemplateRef<any>, config: P): BaseToastRef<EmbeddedViewRef<any>>;\n\n /**\n * Gets Toast Container providers.\n * @param config Toast Config.\n */\n protected abstract getContainerComponentProviders(config: P): StaticProvider[];\n\n /**\n * Gets Toast Content providers.\n * @param config Toast Config.\n * @param toastRef Toast Reference.\n */\n protected abstract getContentComponentProviders<T>(config: P, toastRef: BaseToastRef<T>): StaticProvider[];\n\n /**\n * Creates Toast Reference for provided container and overlay.\n * @param containerRef Container reference.\n * @param overlayRef Overlay Reference.\n * @param positionStrategy Position Strategy\n */\n protected abstract getToastRef<T>(\n containerRef: C,\n overlayRef: OverlayRef,\n positionStrategy: BaseToastPosition\n ): BaseToastRef<T | EmbeddedViewRef<any>, P>;\n\n /**\n * @hidden\n * Array of all current toasts.\n */\n protected _toasts: BaseToastRef[] = [];\n\n /**\n * @hidden\n */\n protected _toastsMap = new Map<BaseToastPosition, BaseToastRef[]>();\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n protected constructor(\n public overlay: Overlay,\n public injector: Injector\n ) {}\n\n /**\n * Dismisses all Toasts.\n */\n hideAll(): void {\n this._toasts.forEach((t) => t.dismiss());\n }\n\n /**\n * Returns `true` if there are some message toasts currently open. `False` otherwise.\n */\n hasOpenMessageToasts(): boolean {\n return this._toasts.length > 0;\n }\n\n /**\n * Sets new position strategy for all Toast items.\n * @param newStrategy New Position Strategy\n */\n setNewPositionStrategy(newStrategy: BaseToastPosition): void {\n if (newStrategy === this.toastPositionStrategy) {\n return;\n }\n\n this.toastPositionStrategy = newStrategy;\n\n this._refreshOverlayPositions();\n }\n\n /**\n * @hidden\n * Places a new component or a template as the content of the Toast container.\n */\n protected _attach<T>(\n content: ComponentType<T> | TemplateRef<T>,\n userConfig?: P\n ): BaseToastRef<T | EmbeddedViewRef<any>, P> {\n const config = { ...this.defaultConfig, ...userConfig };\n const positionStrategy = config.positionStrategy || this.toastPositionStrategy;\n const { overlay, isAnchor } = this._createOverlay(positionStrategy);\n const containerRef = this.attachToastContainerComponent(overlay, config);\n const toastRef = this.getToastRef<T>(containerRef, overlay, positionStrategy);\n toastRef._defaultPositionStrategy = !config.positionStrategy;\n toastRef._isAnchor = isAnchor;\n\n if (content instanceof TemplateRef) {\n // TemplatePortal requires viewContainer ref\n const viewRef = null as any as ViewContainerRef;\n const portal = new TemplatePortal(content, viewRef, { $implicit: config, toastRef } as any);\n\n toastRef.instance = containerRef.attachTemplatePortal(portal);\n } else {\n const injector = this.createContentComponentInjector(config, toastRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = containerRef.attachComponentPortal<T>(portal);\n\n // We can't pass this via the injector, because the injector is created earlier.\n toastRef.instance = contentRef.instance;\n\n contentRef.changeDetectorRef.detectChanges();\n }\n\n const allToasts = this._toastsMap.get(positionStrategy) || [];\n allToasts.push(toastRef);\n this._toasts.push(toastRef);\n this._toastsMap.set(positionStrategy, allToasts);\n\n this.animateToast<T>(toastRef);\n\n return toastRef;\n }\n\n /**\n * Attaches the Toast container component to the overlay.\n */\n protected attachToastContainerComponent(overlayRef: OverlayRef, config: P): C {\n const injector = Injector.create({\n parent: this.injector,\n providers: this.getContainerComponentProviders(config)\n });\n\n const containerPortal = new ComponentPortal(this.toastContainerComponent, null, injector);\n const containerRef: ComponentRef<C> = overlayRef.attach(containerPortal);\n\n containerRef.instance.config = config;\n containerRef.instance.overlayRef = overlayRef;\n\n return containerRef.instance;\n }\n\n /**\n * Creates an injector to be used inside a Toast component.\n * @param config Config that was used to create the Toast.\n * @param toastRef Reference to the Toast.\n */\n protected createContentComponentInjector<T>(config: P, toastRef: BaseToastRef<T>): Injector {\n return Injector.create({\n parent: this.injector,\n providers: this.getContentComponentProviders(config, toastRef)\n });\n }\n\n /**\n * Animates the old Toast out and the new one in.\n */\n protected animateToast<T>(toastRef: BaseToastRef<T | EmbeddedViewRef<any>, P>): void {\n const positionStrategy = toastRef.positionStrategy;\n // When the toast is dismissed, clear the reference to it.\n toastRef\n .afterDismissed()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n const allToasts = this._toastsMap.get(positionStrategy) || [];\n allToasts.splice(allToasts.indexOf(toastRef), 1);\n this._toasts.splice(this._toasts.indexOf(toastRef), 1);\n this._toastsMap.set(positionStrategy, allToasts);\n this._refreshOverlayPositions();\n });\n\n toastRef.containerInstance.enter();\n }\n\n /**\n * @hidden\n * Creates a new overlay and places it in the correct location.\n */\n private _createOverlay(positionStrategy: BaseToastPosition): { overlay: OverlayRef; isAnchor: boolean } {\n const overlayConfig = new OverlayConfig();\n overlayConfig.scrollStrategy = positionStrategy.scrollPosition || this.overlay.scrollStrategies.reposition();\n\n const { position, isAnchor } = this._getPositionStrategy(positionStrategy);\n\n overlayConfig.positionStrategy = position;\n overlayConfig.panelClass = 'fd-toast-overlay';\n return { overlay: this.overlay.create(overlayConfig), isAnchor };\n }\n\n /**\n * @hidden\n * @returns Initial Position Strategy of the Toast Overlay Reference.\n */\n private _getPositionStrategy(positionStrategy: BaseToastPosition): {\n position: PositionStrategy;\n isAnchor: boolean;\n } {\n const lastOverlay = this._getLastToastWithSamePosition(positionStrategy);\n\n const globalOverlay = this._toastsMap.get(positionStrategy)?.find(({ _isAnchor }) => _isAnchor);\n\n if (lastOverlay && globalOverlay) {\n return {\n position: this._composeFlexibleConnectedPosition(\n lastOverlay.overlayRef.overlayElement,\n positionStrategy\n ),\n isAnchor: false\n };\n }\n\n return { position: this._composeGlobalPosition(positionStrategy), isAnchor: true };\n }\n\n /**\n * @hidden\n * @param needlePosition\n * @private\n */\n private _getLastToastWithSamePosition(needlePosition: BaseToastPosition): BaseToastRef<P, C> | undefined {\n return [...(this._toastsMap.get(needlePosition) || [])]?.reverse()[0];\n }\n\n /**\n * @hidden\n * @param connectedElm element to connect with.\n * @param positionStrategy Position Strategy\n * @returns Flexible Connected Position Strategy for Overlay Reference.\n */\n private _composeFlexibleConnectedPosition(\n connectedElm: HTMLElement,\n positionStrategy: BaseToastPosition\n ): FlexibleConnectedPositionStrategy {\n positionStrategy = positionStrategy || this.toastPositionStrategy;\n return this.overlay\n .position()\n .flexibleConnectedTo(connectedElm)\n .withPush(false)\n .withPositions([positionStrategy.connected]);\n }\n\n /**\n * @hidden\n * @returns Default Global Position for Overlay Reference.\n */\n private _composeGlobalPosition(\n positionStrategy: BaseToastPosition\n ): GlobalPositionStrategy | FlexibleConnectedPositionStrategy {\n let position: FlexibleConnectedPositionStrategy | GlobalPositionStrategy;\n if (this._isBoundGlobalPosition(positionStrategy.global)) {\n position = this.overlay\n .position()\n .flexibleConnectedTo(positionStrategy.global.boundTo)\n .withPositions([positionStrategy.global])\n .withPush(false);\n } else {\n position = this.overlay.position().global();\n const globalToastPositionStrategy: ToastGlobalPosition = positionStrategy.global;\n\n for (const [pos, value] of Object.entries(globalToastPositionStrategy)) {\n switch (pos) {\n case 'left':\n position.left(value);\n break;\n case 'right':\n position.right(value);\n break;\n case 'bottom':\n position.bottom(value);\n break;\n case 'top':\n position.top(value);\n break;\n case 'center':\n position.centerHorizontally();\n break;\n case 'centerVertically':\n position.centerVertically();\n break;\n }\n }\n }\n\n return position;\n }\n\n /** @hidden */\n private _refreshOverlayPositions(): void {\n this._toastsMap.forEach((toasts) => {\n this._updateOverlayPositionStrategy(toasts);\n });\n }\n\n /** @hidden */\n private _updateOverlayPositionStrategy(toasts: BaseToastRef[]): void {\n toasts.forEach((toastRef) => {\n const positionStrategy = this._updatePositionStrategy(toastRef);\n const overlayConfig = toastRef.overlayRef.getConfig();\n\n toastRef.overlayRef.updatePositionStrategy(positionStrategy);\n overlayConfig.positionStrategy = positionStrategy;\n });\n }\n\n /**\n * @hidden\n * Updates the position of a current Overlay Reference.\n * @returns New Position Strategy.\n * @param toast Toast Reference\n */\n private _updatePositionStrategy(toast: BaseToastRef): PositionStrategy {\n const positionStrategy = toast._defaultPositionStrategy ? this.toastPositionStrategy : toast.positionStrategy;\n\n if (toast._isAnchor) {\n return this._composeGlobalPosition(positionStrategy);\n }\n\n const toasts = this._toastsMap.get(positionStrategy) || [];\n\n const globalOverlay = toasts?.find(({ _isAnchor }) => _isAnchor);\n\n if (!globalOverlay) {\n toast._isAnchor = true;\n return this._composeGlobalPosition(positionStrategy);\n }\n\n // Get Previous overlay item.\n const overlayItemIndex = toasts.findIndex((t) => t === toast);\n const previousOverlay = toasts[overlayItemIndex - 1];\n toast._isAnchor = false;\n\n return this._composeFlexibleConnectedPosition(previousOverlay.overlayRef.overlayElement, positionStrategy);\n }\n\n /** @hidden */\n private _isBoundGlobalPosition(position: any): position is ToastGlobalConnectedPosition {\n return !!position.boundTo;\n }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { BaseToastPosition } from '../base-toast-positions';\nimport { ToastContainerComponent } from '../interfaces/toast-container-component.interface';\n\nexport abstract class BaseToastRef<\n T = any,\n P = any,\n C extends ToastContainerComponent<P> = ToastContainerComponent<P>\n> {\n /** The instance of the component is making up the content of the Toast. */\n instance!: T;\n\n /** @hidden */\n _defaultPositionStrategy = true;\n\n /** @hidden\n * Used for flagging the toast as an anchor for all next appearing toasts.\n */\n _isAnchor = false;\n\n /**\n * @hidden\n * Subject for notifying the user that the Toast has been dismissed.\n */\n protected readonly _afterDismissed$ = new Subject<void>();\n\n /** @hidden */\n protected constructor(\n public containerInstance: C,\n public overlayRef: OverlayRef,\n public positionStrategy: BaseToastPosition\n ) {\n containerInstance.onExit$.subscribe(() => this._finishDismiss());\n }\n\n /** Dismisses the Toast. */\n dismiss(): void {\n if (!this._afterDismissed$.closed) {\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the Toast is finished closing. */\n afterDismissed(): Observable<void> {\n return this._afterDismissed$.asObservable();\n }\n\n /** Gets an observable that is notified when the Toast has opened and appeared. */\n afterOpened(): Observable<void> {\n return this.containerInstance.onEnter$.asObservable();\n }\n\n /**\n * @hidden\n * Cleans up the DOM after closing.\n */\n protected _finishDismiss(): void {\n this.overlayRef.dispose();\n\n this._afterDismissed$.next();\n this._afterDismissed$.complete();\n }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { BaseToastPosition } from '../../base-toast-positions';\nimport { BaseToastConfig } from '../base-toast-config';\nimport { BaseToastRef } from '../base-toast-ref';\nimport { BaseToastDurationDismissibleContainerComponent } from './base-toast-duration-dismissible-container.component';\n\n/** Maximum number of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n\nexport abstract class BaseToastDurationDismissibleRef<\n T = any,\n P extends BaseToastConfig<T> = any,\n C extends BaseToastDurationDismissibleContainerComponent<P> = BaseToastDurationDismissibleContainerComponent<P>\n> extends BaseToastRef<T, P, C> {\n /**\n * Timeout ID for the duration setTimeout call. Used to clear the timeout if the toast is\n * dismissed before the duration passes.\n */\n protected durationTimeoutId!: ReturnType<typeof setTimeout>;\n\n /** @hidden */\n protected constructor(containerInstance: C, overlayRef: OverlayRef, positionStrategy: BaseToastPosition) {\n super(containerInstance, overlayRef, positionStrategy);\n }\n\n /** Dismisses the toast and clears the timeout. */\n override dismiss(): void {\n clearTimeout(this.durationTimeoutId);\n\n super.dismiss();\n }\n\n /** Dismisses the Toast component after some duration */\n dismissAfter(duration: number): void {\n this.durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n\n /** Cancels current dismiss timeout */\n cancelDismiss(): void {\n clearTimeout(this.durationTimeoutId);\n }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { BaseToastPosition } from '../../base-toast-positions';\nimport { BaseToastConfig } from '../base-toast-config';\nimport { BaseToastDurationDismissibleContainerComponent } from '../duration-dismissible/base-toast-duration-dismissible-container.component';\nimport { BaseToastDurationDismissibleRef } from '../duration-dismissible/base-toast-duration-dismissible-ref';\n\nexport abstract class BaseToastActionDismissibleRef<\n T = any,\n P extends BaseToastConfig<T> = any\n> extends BaseToastDurationDismissibleRef<T, P> {\n /** Subject for notifying the user that the Toast action-dismissible was called. */\n protected readonly onAction$ = new Subject<string | null>();\n\n /** Whether the Toast was dismissed using the action-dismissible button. */\n protected dismissedByAction = false;\n\n /** @hidden */\n protected constructor(\n containerInstance: BaseToastDurationDismissibleContainerComponent<P>,\n overlayRef: OverlayRef,\n positionStrategy: BaseToastPosition\n ) {\n super(containerInstance, overlayRef, positionStrategy);\n\n this.onAction().subscribe(() => this.dismiss());\n }\n\n /** Marks the Toast action-dismissible clicked. */\n dismissWithAction(reason: string | null = null): void {\n if (!this.onAction$.closed) {\n this.dismissedByAction = true;\n\n this.onAction$.next(reason);\n this.onAction$.complete();\n }\n }\n\n /** Gets an observable that is notified when the Toast action-dismissible is called. */\n onAction(): Observable<string | null> {\n return this.onAction$;\n }\n\n /**\n * @hidden\n * Cleans up the DOM after closing.\n */\n protected override _finishDismiss(): void {\n if (!this.onAction$.closed) {\n this.onAction$.complete();\n }\n\n super._finishDismiss();\n }\n}\n","import { BaseToastPosition, ToastBottomCenterPosition } from '../base-toast-positions';\n\n/**\n * Base Configuration class used when opening a Toast.\n */\nexport class BaseToastConfig<T = any> {\n /**\n * Data being injected into the child component.\n */\n data?: T;\n\n /**\n * Aria-label for the message toast component element.\n */\n ariaLabel?: string;\n\n /**\n * Toast position strategy.\n */\n positionStrategy?: BaseToastPosition = ToastBottomCenterPosition;\n\n /**\n * Toast minimum width.\n */\n minWidth?: number | string;\n\n /**\n * Toast maximum width.\n */\n maxWidth?: number | string;\n\n /**\n * Toast minimum height.\n */\n minHeight?: number | string;\n\n /**\n * Toast maximum height.\n */\n maxHeight?: number | string;\n\n /**\n * Toast width.\n */\n width?: number | string;\n\n /**\n * Toast height.\n */\n height?: number | string;\n\n /**\n * Toast ID.\n */\n id?: string;\n}\n\n/**\n * Base Configuration class used when opening an animated Toast.\n */\nexport class BaseAnimatedToastConfig<T = any> extends BaseToastConfig<T> {\n /** Whether the toast should be animated. */\n animated? = true;\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, Directive, EmbeddedViewRef, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { coerceCssPixel } from '../../decorators';\nimport { Nullable } from '../../models/nullable';\nimport { ToastContainerComponent } from '../interfaces/toast-container-component.interface';\nimport { BaseToastConfig } from './base-toast-config';\n\nlet toastUniqueId = 0;\n\n@Directive()\nexport abstract class BaseToastContainerComponent<P extends BaseToastConfig = BaseToastConfig>\n extends BasePortalOutlet\n implements ToastContainerComponent<P>\n{\n /** Method, which is triggered when the Toast component is ready to be shown. Used to trigger animations. */\n abstract enter(): void;\n\n /** Method, which is triggered when the Toast component is ready to be removed. Used to trigger animations. */\n abstract exit(): void;\n\n /**\n * @hidden\n * The portal outlet inside this container into which the Toast content will be loaded.\n */\n @ViewChild(CdkPortalOutlet, { static: true })\n _portalOutlet!: CdkPortalOutlet;\n\n /** Min width of the toast component. */\n @coerceCssPixel\n minWidth?: string | number | null;\n\n /** Max width of the toast component. */\n @coerceCssPixel\n maxWidth?: string | number | null;\n\n /** Width of the toast component. */\n @coerceCssPixel\n width?: string | number | null;\n\n /** Min height of the toast component. */\n @coerceCssPixel\n minHeight?: string | number | null;\n\n /** Max height of the toast component. */\n @coerceCssPixel\n maxHeight?: string | number | null;\n\n /** Height of the toast component. */\n @coerceCssPixel\n height?: string | number | null;\n\n /** Subject for notifying that the Toast has finished exiting from view. */\n readonly onExit$: Subject<void> = new Subject();\n\n /** Subject for notifying that the Toast has finished entering the view. */\n readonly onEnter$: Subject<void> = new Subject();\n\n /** Overlay reference */\n overlayRef!: OverlayRef;\n\n /** Aria label. */\n ariaLabel: Nullable<string>;\n\n /** ID of the Toast. */\n id: Nullable<string>;\n\n /** @hidden */\n protected constructor(public config: P) {\n super();\n this.minWidth = this.config.minWidth;\n this.maxWidth = this.config.maxWidth;\n this.width = this.config.width;\n this.minHeight = this.config.minHeight;\n this.maxHeight = this.config.maxHeight;\n this.height = this.config.height;\n this.ariaLabel = this.config.ariaLabel;\n this.id = this.config.id || 'fd-message-toast-' + toastUniqueId++;\n }\n\n /**\n * Attaches component to the portal.\n */\n attachComponentPortal<C>(portal: ComponentPortal<C>): ComponentRef<C> {\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /**\n * Attaches Template to the portal.\n * @param portal\n */\n attachTemplatePortal<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T> {\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n}\n","import { OverlayContainer } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\n\n/**\n * Custom overlay container for CDK Overlay.\n */\n@Injectable()\nexport class BaseToastOverlayContainer extends OverlayContainer {\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n override getContainerElement(): HTMLElement {\n const containerElement = super.getContainerElement();\n\n containerElement.classList.add('fn-toast-overlay-container');\n\n return containerElement;\n }\n}\n","import { BaseToastConfig } from '../base-toast-config';\n\n/**\n * Base configuration class used when opening a Toast which automatically destroys after some time.\n */\nexport class BaseToastDurationDismissibleConfig<T = any> extends BaseToastConfig<T> {\n /**\n * The length of time in milliseconds to wait before automatically dismissing the Message Toast.\n */\n duration? = 3000;\n /**\n * Whether the message toast should stay visible if the cursor is over it.\n * Default is `true`\n */\n mousePersist?: boolean = true;\n}\n","import { AnimationEvent } from '@angular/animations';\nimport { Directive, HostBinding, HostListener, inject, NgZone, OnDestroy, signal } from '@angular/core';\nimport { take } from 'rxjs';\nimport { BaseAnimatedToastConfig } from './base-toast-config';\nimport { BaseToastContainerComponent } from './base-toast-container.component';\n\n@Directive()\nexport abstract class BaseToastAnimatedContainerComponent<P extends BaseAnimatedToastConfig>\n extends BaseToastContainerComponent<P>\n implements OnDestroy\n{\n /**\n * @hidden\n * The state of the Message Toast animations.\n */\n @HostBinding('@state')\n protected get _animationState(): string {\n return this._animationStateSignal();\n }\n /**\n * @hidden\n * Whether the animations should be disabled.\n */\n @HostBinding('@.disabled')\n protected _animationsDisabled = false;\n\n /** @hidden */\n protected _ngZone = inject(NgZone);\n\n /** @hidden */\n private _animationStateSignal = signal('void');\n\n /** @hidden */\n constructor(config: P) {\n super(config);\n this._animationsDisabled = !config.animated;\n }\n\n /**\n * @hidden\n * Handle end of animations, updating the state of the Message Toast.\n */\n @HostListener('@state.done', ['$event'])\n protected _onAnimationEnd(event: AnimationEvent): void {\n const { fromState, toState } = event;\n\n if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n this._completeExit();\n }\n\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this.onEnter$;\n\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n\n /** Begin animation of Message Toast entrance into view. */\n enter(): void {\n this._animationStateSignal.set('visible');\n }\n\n /** Begin animation of Message Toast removal. */\n exit(): void {\n this._animationStateSignal.set('hidden');\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._completeExit();\n }\n\n /**\n * @hidden\n * Waits for the zone to settle before removing the element. Helps prevent\n * errors where we end up removing an element which is in the middle of an animation.\n */\n private _completeExit(): void {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onExit = this.onExit$;\n\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n onExit.next();\n onExit.complete();\n });\n }\n}\n","import { Directive, HostListener, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ToastDurationDismissibleContainerComponent } from '../../interfaces/toast-duration-dismissible-container-component.interface';\nimport { BaseToastAnimatedContainerComponent } from '../base-toast-animated-container.component';\nimport { BaseToastConfig } from '../base-toast-config';\n\n@Directive()\nexport abstract class BaseToastDurationDismissibleContainerComponent<P extends BaseToastConfig>\n extends BaseToastAnimatedContainerComponent<P>\n implements OnDestroy, ToastDurationDismissibleContainerComponent<P>\n{\n /** Subject for notifying that component is out of hover */\n readonly mouseleave$: Subject<void> = new Subject();\n\n /** Subject for notifying that component is hovered */\n readonly mouseover$: Subject<void> = new Subject();\n\n /** Emits mouseleave$ subject when component is out of hover. */\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.mouseleave$.next();\n }\n\n /** Emits mouseover$ subject when component is hovered. */\n @HostListener('mouseover')\n onMouseOver(): void {\n this.mouseover$.next();\n }\n\n /** @Hidden */\n override ngOnDestroy(): void {\n this.mouseover$.complete();\n this.mouseleave$.complete();\n\n super.ngOnDestroy();\n }\n}\n","import { EmbeddedViewRef } from '@angular/core';\nimport { BaseToastService } from '../../base-toast.service';\nimport { BaseToastDurationDismissibleConfig } from './base-toast-duration-dismissible-config';\nimport { BaseToastDurationDismissibleContainerComponent } from './base-toast-duration-dismissible-container.component';\nimport { BaseToastDurationDismissibleRef } from './base-toast-duration-dismissible-ref';\n\nexport abstract class BaseDismissibleToastService<\n P extends BaseToastDurationDismissibleConfig,\n C extends BaseToastDurationDismissibleContainerComponent<P> = BaseToastDurationDismissibleContainerComponent<P>\n> extends BaseToastService<P, C> {\n /**\n * Animates the old Toast out and the new one in.\n */\n protected override animateToast<T>(toastRef: BaseToastDurationDismissibleRef<T | EmbeddedViewRef<any>, P>): void {\n super.animateToast<T>(toastRef);\n\n const config = toastRef.containerInstance.config;\n\n // If dismiss timeout is provided, set up dismiss based on after the Notification is opened.\n if (config.duration && config.duration > 0) {\n toastRef.afterOpened().subscribe(() => {\n toastRef.dismissAfter(config.duration as number);\n\n if (config.mousePersist) {\n toastRef.containerInstance.mouseover$.subscribe(() => {\n toastRef.cancelDismiss();\n });\n\n toastRef.containerInstance.mouseleave$.subscribe(() => {\n toastRef.dismissAfter(config.duration as number);\n });\n }\n });\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","merge","switchMap","filter","i1.FdkClickedProvider","i1.RtlService","i1.FocusKeyManagerListDirective","distinctUntilChanged","startWith","i1.TabbableElementService","debounceTime","equal","i1.FdkDisabledProvider","i2.FdkReadonlyProvider","i3.SelectionService","i4.FdkClickedProvider","i1.SelectionService","i1","i1.DndKeyboardGroupDirective","tap","take"],"mappings":"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"}
|