@skyux/core 12.27.0 → 13.0.0-alpha.1

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.
Files changed (140) hide show
  1. package/fesm2022/skyux-core-testing.mjs +26 -26
  2. package/fesm2022/skyux-core-testing.mjs.map +1 -1
  3. package/fesm2022/skyux-core.mjs +181 -181
  4. package/fesm2022/skyux-core.mjs.map +1 -1
  5. package/index.d.ts +1658 -96
  6. package/package.json +7 -7
  7. package/testing/index.d.ts +227 -3
  8. package/lib/modules/adapter-service/adapter.module.d.ts +0 -10
  9. package/lib/modules/adapter-service/adapter.service.d.ts +0 -76
  10. package/lib/modules/adapter-service/focusable-children-options.d.ts +0 -15
  11. package/lib/modules/affix/affix-auto-fit-context.d.ts +0 -10
  12. package/lib/modules/affix/affix-config.d.ts +0 -46
  13. package/lib/modules/affix/affix-horizontal-alignment.d.ts +0 -4
  14. package/lib/modules/affix/affix-offset-change.d.ts +0 -7
  15. package/lib/modules/affix/affix-offset.d.ts +0 -9
  16. package/lib/modules/affix/affix-placement-change.d.ts +0 -7
  17. package/lib/modules/affix/affix-placement.d.ts +0 -4
  18. package/lib/modules/affix/affix-position.d.ts +0 -1
  19. package/lib/modules/affix/affix-rect.d.ts +0 -11
  20. package/lib/modules/affix/affix-utils.d.ts +0 -3
  21. package/lib/modules/affix/affix-vertical-alignment.d.ts +0 -4
  22. package/lib/modules/affix/affix.directive.d.ts +0 -71
  23. package/lib/modules/affix/affix.module.d.ts +0 -8
  24. package/lib/modules/affix/affix.service.d.ts +0 -14
  25. package/lib/modules/affix/affixer.d.ts +0 -40
  26. package/lib/modules/affix/dom-utils.d.ts +0 -23
  27. package/lib/modules/breakpoint-observer/breakpoint-observer.d.ts +0 -9
  28. package/lib/modules/breakpoint-observer/breakpoint-observer.token.d.ts +0 -7
  29. package/lib/modules/breakpoint-observer/breakpoint-utils.d.ts +0 -17
  30. package/lib/modules/breakpoint-observer/breakpoint.d.ts +0 -9
  31. package/lib/modules/breakpoint-observer/container-breakpoint-observer.d.ts +0 -18
  32. package/lib/modules/breakpoint-observer/media-breakpoint-observer.d.ts +0 -18
  33. package/lib/modules/breakpoint-observer/provide-breakpoint-observer.d.ts +0 -7
  34. package/lib/modules/breakpoint-observer/responsive-host.directive.d.ts +0 -32
  35. package/lib/modules/content-info-provider/content-info-descriptor.d.ts +0 -16
  36. package/lib/modules/content-info-provider/content-info-provider.d.ts +0 -17
  37. package/lib/modules/content-info-provider/content-info.d.ts +0 -13
  38. package/lib/modules/default-input-provider/default-input-provider.d.ts +0 -10
  39. package/lib/modules/dock/dock-dom-adapter.service.d.ts +0 -17
  40. package/lib/modules/dock/dock-insert-component-config.d.ts +0 -8
  41. package/lib/modules/dock/dock-item-config.d.ts +0 -11
  42. package/lib/modules/dock/dock-item-reference.d.ts +0 -9
  43. package/lib/modules/dock/dock-item.d.ts +0 -22
  44. package/lib/modules/dock/dock-location.d.ts +0 -17
  45. package/lib/modules/dock/dock-options.d.ts +0 -18
  46. package/lib/modules/dock/dock.component.d.ts +0 -17
  47. package/lib/modules/dock/dock.module.d.ts +0 -10
  48. package/lib/modules/dock/dock.service.d.ts +0 -33
  49. package/lib/modules/dock/sort-by-stack-order.d.ts +0 -4
  50. package/lib/modules/dynamic-component/dynamic-component-location.d.ts +0 -25
  51. package/lib/modules/dynamic-component/dynamic-component-options.d.ts +0 -31
  52. package/lib/modules/dynamic-component/dynamic-component.module.d.ts +0 -11
  53. package/lib/modules/dynamic-component/dynamic-component.service.d.ts +0 -33
  54. package/lib/modules/file-reader/file-reader.service.d.ts +0 -10
  55. package/lib/modules/format/app-format.d.ts +0 -6
  56. package/lib/modules/help/help-global-options-token.d.ts +0 -6
  57. package/lib/modules/help/help-global-options.d.ts +0 -13
  58. package/lib/modules/help/help-open-args.d.ts +0 -9
  59. package/lib/modules/help/help-update-args.d.ts +0 -13
  60. package/lib/modules/help/help.service.d.ts +0 -25
  61. package/lib/modules/id/id.directive.d.ts +0 -15
  62. package/lib/modules/id/id.module.d.ts +0 -7
  63. package/lib/modules/id/id.service.d.ts +0 -9
  64. package/lib/modules/layout-host/layout-host-for-child-args.d.ts +0 -3
  65. package/lib/modules/layout-host/layout-host.directive.d.ts +0 -11
  66. package/lib/modules/layout-host/layout-host.service.d.ts +0 -13
  67. package/lib/modules/live-announcer/live-announcer.service.d.ts +0 -31
  68. package/lib/modules/live-announcer/types/live-announcer-args.d.ts +0 -12
  69. package/lib/modules/live-announcer/types/live-announcer-politeness.d.ts +0 -5
  70. package/lib/modules/log/log.module.d.ts +0 -10
  71. package/lib/modules/log/log.service.d.ts +0 -47
  72. package/lib/modules/log/types/log-deprecation-args.d.ts +0 -27
  73. package/lib/modules/log/types/log-level-token.d.ts +0 -6
  74. package/lib/modules/log/types/log-level.d.ts +0 -8
  75. package/lib/modules/media-query/media-breakpoints.d.ts +0 -22
  76. package/lib/modules/media-query/media-query-listener.d.ts +0 -7
  77. package/lib/modules/media-query/media-query.module.d.ts +0 -10
  78. package/lib/modules/media-query/media-query.service.d.ts +0 -55
  79. package/lib/modules/mutation/mutation-observer-service.d.ts +0 -9
  80. package/lib/modules/numeric/numeric-symbol.d.ts +0 -7
  81. package/lib/modules/numeric/numeric.module.d.ts +0 -8
  82. package/lib/modules/numeric/numeric.options.d.ts +0 -61
  83. package/lib/modules/numeric/numeric.pipe.d.ts +0 -22
  84. package/lib/modules/numeric/numeric.service.d.ts +0 -24
  85. package/lib/modules/overlay/overlay-adapter.service.d.ts +0 -15
  86. package/lib/modules/overlay/overlay-config.d.ts +0 -41
  87. package/lib/modules/overlay/overlay-context.d.ts +0 -9
  88. package/lib/modules/overlay/overlay-instance.d.ts +0 -42
  89. package/lib/modules/overlay/overlay-position.d.ts +0 -1
  90. package/lib/modules/overlay/overlay.component.d.ts +0 -30
  91. package/lib/modules/overlay/overlay.module.d.ts +0 -10
  92. package/lib/modules/overlay/overlay.service.d.ts +0 -39
  93. package/lib/modules/percent-pipe/percent-pipe.module.d.ts +0 -8
  94. package/lib/modules/percent-pipe/percent.pipe.d.ts +0 -12
  95. package/lib/modules/resize-observer/resize-observer-media-query.service.d.ts +0 -45
  96. package/lib/modules/resize-observer/resize-observer.service.d.ts +0 -17
  97. package/lib/modules/screen-reader-label/screen-reader-label.directive.d.ts +0 -20
  98. package/lib/modules/scroll-shadow/scroll-shadow-event-args.d.ts +0 -7
  99. package/lib/modules/scroll-shadow/scroll-shadow.directive.d.ts +0 -19
  100. package/lib/modules/scrollable-host/scrollable-host.service.d.ts +0 -32
  101. package/lib/modules/shared/number-format/number-format-utility.d.ts +0 -5
  102. package/lib/modules/shared/sky-core-resources.module.d.ts +0 -10
  103. package/lib/modules/stacking-context/stacking-context-token.d.ts +0 -6
  104. package/lib/modules/stacking-context/stacking-context.d.ts +0 -7
  105. package/lib/modules/title/set-title-args.d.ts +0 -3
  106. package/lib/modules/title/title.service.d.ts +0 -18
  107. package/lib/modules/trim/trim.directive.d.ts +0 -14
  108. package/lib/modules/trim/trim.module.d.ts +0 -7
  109. package/lib/modules/ui-config/ui-config.service.d.ts +0 -8
  110. package/lib/modules/viewkeeper/viewkeeper-boundary-info.d.ts +0 -11
  111. package/lib/modules/viewkeeper/viewkeeper-fixed-styles.d.ts +0 -10
  112. package/lib/modules/viewkeeper/viewkeeper-host-options.d.ts +0 -14
  113. package/lib/modules/viewkeeper/viewkeeper-offset.d.ts +0 -4
  114. package/lib/modules/viewkeeper/viewkeeper-options.d.ts +0 -45
  115. package/lib/modules/viewkeeper/viewkeeper.d.ts +0 -7
  116. package/lib/modules/viewkeeper/viewkeeper.directive.d.ts +0 -17
  117. package/lib/modules/viewkeeper/viewkeeper.module.d.ts +0 -7
  118. package/lib/modules/viewkeeper/viewkeeper.service.d.ts +0 -23
  119. package/lib/modules/window/window-ref.d.ts +0 -18
  120. package/testing/legacy/core-testing.module.d.ts +0 -9
  121. package/testing/legacy/mock-media-query.service.d.ts +0 -23
  122. package/testing/legacy/mock-ui-config.service.d.ts +0 -11
  123. package/testing/legacy/resize-observer-mock.d.ts +0 -15
  124. package/testing/modules/file-reader/file-reader-testing.service.d.ts +0 -10
  125. package/testing/modules/file-reader/provide-file-reader-testing.d.ts +0 -12
  126. package/testing/modules/help/help-testing-controller.d.ts +0 -15
  127. package/testing/modules/help/help-testing.module.d.ts +0 -9
  128. package/testing/modules/help/help-testing.service.d.ts +0 -16
  129. package/testing/modules/media-query/breakpoint-observer-testing.d.ts +0 -15
  130. package/testing/modules/media-query/media-query-testing-controller.d.ts +0 -15
  131. package/testing/modules/media-query/provide-media-query-testing.d.ts +0 -5
  132. package/testing/modules/overlay/overlay-harness-filters.d.ts +0 -7
  133. package/testing/modules/overlay/overlay-harness.d.ts +0 -18
  134. package/testing/public-api.d.ts +0 -16
  135. package/testing/shared/component-harness.d.ts +0 -9
  136. package/testing/shared/harness-filters.d.ts +0 -10
  137. package/testing/shared/harness-utility.d.ts +0 -4
  138. package/testing/shared/input-harness.d.ts +0 -35
  139. package/testing/shared/queryable-component-harness.d.ts +0 -31
  140. package/version.d.ts +0 -15
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-core.mjs","sources":["../../../../../libs/components/core/src/lib/modules/adapter-service/adapter.module.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/breakpoint.ts","../../../../../libs/components/core/src/lib/modules/media-query/media-breakpoints.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/breakpoint-utils.ts","../../../../../libs/components/core/src/lib/modules/adapter-service/adapter.service.ts","../../../../../libs/components/core/src/lib/modules/affix/affix-auto-fit-context.ts","../../../../../libs/components/core/src/lib/modules/affix/affix-utils.ts","../../../../../libs/components/core/src/lib/modules/affix/dom-utils.ts","../../../../../libs/components/core/src/lib/modules/affix/affixer.ts","../../../../../libs/components/core/src/lib/modules/affix/affix.service.ts","../../../../../libs/components/core/src/lib/modules/affix/affix.directive.ts","../../../../../libs/components/core/src/lib/modules/affix/affix.module.ts","../../../../../libs/components/core/src/lib/modules/content-info-provider/content-info-provider.ts","../../../../../libs/components/core/src/lib/modules/default-input-provider/default-input-provider.ts","../../../../../libs/components/core/src/lib/modules/dock/dock-item.ts","../../../../../libs/components/core/src/lib/modules/dock/dock-location.ts","../../../../../libs/components/core/src/lib/modules/dock/dock.module.ts","../../../../../libs/components/core/src/lib/modules/dynamic-component/dynamic-component-location.ts","../../../../../libs/components/core/src/lib/modules/window/window-ref.ts","../../../../../libs/components/core/src/lib/modules/dynamic-component/dynamic-component.service.ts","../../../../../libs/components/core/src/lib/modules/mutation/mutation-observer-service.ts","../../../../../libs/components/core/src/lib/modules/dock/dock-dom-adapter.service.ts","../../../../../libs/components/core/src/lib/modules/dock/sort-by-stack-order.ts","../../../../../libs/components/core/src/lib/modules/dock/dock.component.ts","../../../../../libs/components/core/src/lib/modules/dock/dock.component.html","../../../../../libs/components/core/src/lib/modules/dock/dock.service.ts","../../../../../libs/components/core/src/lib/modules/dynamic-component/dynamic-component.module.ts","../../../../../libs/components/core/src/lib/modules/file-reader/file-reader.service.ts","../../../../../libs/components/core/src/lib/modules/format/app-format.ts","../../../../../libs/components/core/src/lib/modules/help/help-global-options-token.ts","../../../../../libs/components/core/src/lib/modules/help/help.service.ts","../../../../../libs/components/core/src/lib/modules/id/id.service.ts","../../../../../libs/components/core/src/lib/modules/id/id.directive.ts","../../../../../libs/components/core/src/lib/modules/id/id.module.ts","../../../../../libs/components/core/src/lib/modules/layout-host/layout-host.service.ts","../../../../../libs/components/core/src/lib/modules/layout-host/layout-host.directive.ts","../../../../../libs/components/core/src/lib/modules/live-announcer/live-announcer.service.ts","../../../../../libs/components/core/src/lib/modules/log/log.module.ts","../../../../../libs/components/core/src/lib/modules/log/types/log-level.ts","../../../../../libs/components/core/src/lib/modules/log/types/log-level-token.ts","../../../../../libs/components/core/src/lib/modules/log/log.service.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/breakpoint-observer.token.ts","../../../../../libs/components/core/src/lib/modules/resize-observer/resize-observer.service.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/container-breakpoint-observer.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/media-breakpoint-observer.ts","../../../../../libs/components/core/src/lib/modules/media-query/media-query.service.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/provide-breakpoint-observer.ts","../../../../../libs/components/core/src/lib/modules/breakpoint-observer/responsive-host.directive.ts","../../../../../libs/components/core/src/lib/modules/media-query/media-query.module.ts","../../../../../libs/components/core/src/lib/modules/shared/sky-core-resources.module.ts","../../../../../libs/components/core/src/lib/modules/numeric/numeric.options.ts","../../../../../libs/components/core/src/lib/modules/shared/number-format/number-format-utility.ts","../../../../../libs/components/core/src/lib/modules/numeric/numeric.service.ts","../../../../../libs/components/core/src/lib/modules/numeric/numeric.pipe.ts","../../../../../libs/components/core/src/lib/modules/numeric/numeric.module.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay-instance.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay.module.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay-adapter.service.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay-context.ts","../../../../../libs/components/core/src/lib/modules/stacking-context/stacking-context-token.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay.component.ts","../../../../../libs/components/core/src/lib/modules/overlay/overlay.component.html","../../../../../libs/components/core/src/lib/modules/overlay/overlay.service.ts","../../../../../libs/components/core/src/lib/modules/percent-pipe/percent.pipe.ts","../../../../../libs/components/core/src/lib/modules/percent-pipe/percent-pipe.module.ts","../../../../../libs/components/core/src/lib/modules/resize-observer/resize-observer-media-query.service.ts","../../../../../libs/components/core/src/lib/modules/screen-reader-label/screen-reader-label.directive.ts","../../../../../libs/components/core/src/lib/modules/scroll-shadow/scroll-shadow.directive.ts","../../../../../libs/components/core/src/lib/modules/scrollable-host/scrollable-host.service.ts","../../../../../libs/components/core/src/lib/modules/title/title.service.ts","../../../../../libs/components/core/src/lib/modules/trim/trim.directive.ts","../../../../../libs/components/core/src/lib/modules/trim/trim.module.ts","../../../../../libs/components/core/src/lib/modules/ui-config/ui-config.service.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper-host-options.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.service.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.directive.ts","../../../../../libs/components/core/src/lib/modules/viewkeeper/viewkeeper.module.ts","../../../../../libs/components/core/src/version.ts","../../../../../libs/components/core/src/skyux-core.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyCoreAdapterService` no longer needs the `SkyCoreAdapterModule`.\n * The `SkyCoreAdapterModule` can be removed from your project.\n */\n@NgModule({})\nexport class SkyCoreAdapterModule {}\n","/**\n * A list of all breakpoints.\n * @internal\n */\nexport const SKY_BREAKPOINTS = ['xs', 'sm', 'md', 'lg'] as const;\n\n/**\n * The name of a viewport or container breakpoint.\n */\nexport type SkyBreakpoint = (typeof SKY_BREAKPOINTS)[number];\n","/**\n * Represents all available media breakpoints.\n * @deprecated Use `SkyBreakpoint` instead.\n */\nexport enum SkyMediaBreakpoints {\n /**\n * Screen widths of 767px or less.\n */\n xs = 1,\n\n /**\n * Screen widths of 768px to 991px.\n */\n sm,\n\n /**\n * Screen widths of 992px to 1199px.\n */\n md,\n\n /**\n * Screen widths of 1200px or greater.\n */\n lg,\n}\n","import { SkyMediaBreakpoints } from '../media-query/media-breakpoints';\n\nimport { SKY_BREAKPOINTS, SkyBreakpoint } from './breakpoint';\n\nconst breakpointLookup = new Map<SkyMediaBreakpoints, SkyBreakpoint>([\n [SkyMediaBreakpoints.xs, 'xs'],\n [SkyMediaBreakpoints.sm, 'sm'],\n [SkyMediaBreakpoints.md, 'md'],\n [SkyMediaBreakpoints.lg, 'lg'],\n]);\n\nconst legacyLookup = new Map<SkyBreakpoint, SkyMediaBreakpoints>([\n ['xs', SkyMediaBreakpoints.xs],\n ['sm', SkyMediaBreakpoints.sm],\n ['md', SkyMediaBreakpoints.md],\n ['lg', SkyMediaBreakpoints.lg],\n]);\n\n/**\n * Whether the value is of type `SkyBreakpoint`.\n * @internal\n */\nexport function isSkyBreakpoint(\n value: SkyBreakpoint | SkyMediaBreakpoints | null | undefined,\n): value is SkyBreakpoint {\n return (\n value !== null &&\n value !== undefined &&\n SKY_BREAKPOINTS.includes(value as SkyBreakpoint)\n );\n}\n\n/**\n * Transforms a `SkyMediaBreakpoints` value to `SkyBreakpoint`.\n * @internal\n */\nexport function toSkyBreakpoint(\n breakpoint: SkyMediaBreakpoints,\n): SkyBreakpoint {\n return breakpointLookup.get(breakpoint) as SkyBreakpoint;\n}\n\n/**\n * Transforms a `SkyBreakpoint` value to `SkyMediaBreakpoints`.\n * @internal\n */\nexport function toSkyMediaBreakpoints(\n breakpoint: SkyBreakpoint,\n): SkyMediaBreakpoints {\n return legacyLookup.get(breakpoint) as SkyMediaBreakpoints;\n}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\n\nimport {\n SKY_BREAKPOINTS,\n SkyBreakpoint,\n} from '../breakpoint-observer/breakpoint';\nimport {\n isSkyBreakpoint,\n toSkyBreakpoint,\n} from '../breakpoint-observer/breakpoint-utils';\nimport { SkyMediaBreakpoints } from '../media-query/media-breakpoints';\n\nimport { SkyFocusableChildrenOptions } from './focusable-children-options';\n\nconst SKY_TABBABLE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled])',\n 'button:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '*[contenteditable=true]:not([disabled])',\n '*[tabindex]:not([disabled])',\n].join(', ');\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyCoreAdapterService {\n #renderer: Renderer2;\n\n constructor(rendererFactory: RendererFactory2) {\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n /**\n * Set the responsive container CSS class for a given element.\n *\n * @param elementRef - The element that will receive the new CSS class.\n * @param breakpoint - The breakpoint to determine which class gets set.\n * For example a breakpoint of \"xs\" will set a CSS class of \"sky-responsive-container-xs\".\n * @deprecated Use the `SkyResponsiveHostDirective` instead.\n */\n public setResponsiveContainerClass(\n elementRef: ElementRef,\n breakpoint: SkyBreakpoint | SkyMediaBreakpoints,\n ): void {\n const nativeEl = elementRef.nativeElement;\n\n for (const breakpointType of SKY_BREAKPOINTS) {\n this.#renderer.removeClass(\n nativeEl,\n `sky-responsive-container-${breakpointType}`,\n );\n }\n\n if (!isSkyBreakpoint(breakpoint)) {\n breakpoint = toSkyBreakpoint(breakpoint);\n }\n\n this.#renderer.addClass(nativeEl, `sky-responsive-container-${breakpoint}`);\n }\n\n /**\n * This method temporarily enables/disables pointer events.\n * This is helpful to prevent iFrames from interfering with drag events.\n *\n * @param enable - Set to `true` to enable pointer events. Set to `false` to disable.\n */\n public toggleIframePointerEvents(enable: boolean): void {\n const iframes = Array.from<HTMLElement>(\n document.querySelectorAll('iframe'),\n );\n for (const iframe of iframes) {\n this.#renderer.setStyle(iframe, 'pointer-events', enable ? '' : 'none');\n }\n }\n\n /**\n * Focuses on the first element found with an `autofocus` attribute inside the supplied `elementRef`.\n *\n * @param elementRef - The element to search within.\n * @return Returns `true` if a child element with autofocus is found.\n */\n public applyAutoFocus(elementRef?: ElementRef): boolean {\n if (!elementRef) {\n return false;\n }\n\n const elementWithAutoFocus =\n elementRef.nativeElement.querySelector('[autofocus]');\n\n // Child was found with the autofocus property. Set focus and return true.\n if (elementWithAutoFocus) {\n elementWithAutoFocus.focus();\n return true;\n }\n\n // No children were found with autofocus property. Return false.\n return false;\n }\n\n /**\n * Sets focus on the first focusable child of the `elementRef` parameter.\n * If no focusable children are found, and `focusOnContainerIfNoChildrenFound` is `true`,\n * focus will be set on the container element.\n *\n * @param elementRef - The element to search within.\n * @param containerSelector - A CSS selector indicating the container that should\n * receive focus if no focusable children are found.\n * @param focusOnContainerIfNoChildrenFound - It set to `true`, the container will\n * receive focus if no focusable children are found.\n */\n public getFocusableChildrenAndApplyFocus(\n elementRef: ElementRef,\n containerSelector?: string,\n focusOnContainerIfNoChildrenFound = false,\n ): void {\n const containerElement =\n elementRef.nativeElement.querySelector(containerSelector);\n\n if (containerElement) {\n const focusableChildren = this.getFocusableChildren(containerElement);\n\n // Focus first focusable child if available. Otherwise, set focus on container.\n if (\n !this.#focusFirstElement(focusableChildren) &&\n focusOnContainerIfNoChildrenFound\n ) {\n containerElement.focus();\n }\n }\n }\n\n /**\n * Returns an array of all focusable children of provided `element`.\n *\n * @param element - The HTMLElement to search within.\n * @param options - Options for getting focusable children.\n */\n public getFocusableChildren(\n element?: HTMLElement,\n options?: SkyFocusableChildrenOptions,\n ): HTMLElement[] {\n if (!element) {\n return [];\n }\n\n let elements = Array.prototype.slice.call(\n element.querySelectorAll(SKY_TABBABLE_SELECTOR),\n );\n\n // Unless ignoreTabIndex = true, filter out elements with tabindex = -1.\n if (!options || !options.ignoreTabIndex) {\n elements = elements.filter((el: HTMLElement) => {\n return el.tabIndex !== -1;\n });\n }\n\n // Unless ignoreVisibility = true, filter out elements that are not visible.\n if (!options || !options.ignoreVisibility) {\n elements = elements.filter((el: HTMLElement) => {\n return this.#isVisible(el);\n });\n }\n\n return elements;\n }\n\n /**\n * Returns the clientWidth of the provided elementRef.\n * @param elementRef - The element to calculate width from.\n */\n public getWidth(elementRef: ElementRef): number {\n return elementRef.nativeElement.clientWidth;\n }\n\n /**\n * Checks if an event target has a higher z-index than a given element.\n * @param target The event target element.\n * @param element The element to test against. A z-index must be explicitly set for this element.\n */\n public isTargetAboveElement(\n target: EventTarget,\n element: HTMLElement,\n ): boolean {\n const zIndex = getComputedStyle(element).zIndex;\n\n let el = target as HTMLElement;\n\n while (el) {\n // Getting the computed style only works for elements that exist in the DOM.\n // In certain scenarios, an element is removed after a click event; by the time the event\n // bubbles up to other elements, however, the element has been removed and the computed style returns empty.\n // In this case, we'll need to check the z-index directly, via the style property.\n const targetZIndex = getComputedStyle(el).zIndex || el.style.zIndex;\n if (\n targetZIndex !== '' &&\n targetZIndex !== 'auto' &&\n +targetZIndex > +zIndex\n ) {\n return true;\n }\n\n el = el.parentElement as HTMLElement;\n }\n\n return false;\n }\n\n /**\n * Remove inline height styles from the provided elements.\n * @param elementRef - The element to search within.\n * @param selector - The CSS selector to use when finding elements for removing height.\n */\n public resetHeight(elementRef: ElementRef, selector: string): void {\n const children = Array.from<HTMLElement>(\n elementRef.nativeElement.querySelectorAll(selector),\n );\n for (const child of children) {\n this.#renderer.removeStyle(child, 'height');\n }\n }\n\n /**\n * Sets all element heights to match the height of the tallest element.\n * @param elementRef - The element to search within.\n * @param selector - The CSS selector to use when finding elements for syncing height.\n */\n public syncMaxHeight(elementRef: ElementRef, selector: string): void {\n const children = Array.from<HTMLElement>(\n elementRef.nativeElement.querySelectorAll(selector),\n );\n /* istanbul ignore else */\n if (children.length > 0) {\n let maxHeight = 0;\n for (const child of children) {\n maxHeight = Math.max(maxHeight, child.offsetHeight);\n }\n for (const child of children) {\n this.#renderer.setStyle(child, 'height', `${maxHeight}px`);\n }\n }\n }\n\n #focusFirstElement(list: HTMLElement[]): boolean {\n if (list.length > 0) {\n list[0].focus();\n return true;\n }\n return false;\n }\n\n #isVisible(element: HTMLElement): boolean {\n const style = window.getComputedStyle(element);\n const isHidden = style.display === 'none' || style.visibility === 'hidden';\n if (isHidden) {\n return false;\n }\n\n const hasBounds = !!(\n element.offsetWidth ||\n element.offsetHeight ||\n element.getClientRects().length\n );\n return hasBounds;\n }\n}\n","export enum SkyAffixAutoFitContext {\n /**\n * Auto-fit functionality will respect the nearest overflow parent element's dimensions.\n */\n OverflowParent = 0,\n\n /**\n * Auto-fit functionality will respect the browser viewport dimensions.\n */\n Viewport = 1,\n}\n","import { SkyAffixPlacement } from './affix-placement';\n\nexport function getNextPlacement(\n placement: SkyAffixPlacement,\n): SkyAffixPlacement {\n const placements: SkyAffixPlacement[] = ['above', 'right', 'below', 'left'];\n\n let index = placements.indexOf(placement) + 1;\n if (index >= placements.length) {\n index = 0;\n }\n\n return placements[index];\n}\n\nexport function getInversePlacement(\n placement: SkyAffixPlacement,\n): SkyAffixPlacement {\n const pairings: Record<string, SkyAffixPlacement> = {\n above: 'below',\n below: 'above',\n right: 'left',\n left: 'right',\n };\n\n return pairings[placement];\n}\n","import { ViewportRuler } from '@angular/cdk/overlay';\n\nimport { SkyAffixOffset } from './affix-offset';\nimport { AffixRect } from './affix-rect';\n\nfunction useViewportForBounds(element: HTMLElement): boolean {\n return 'BODY' === element.tagName;\n}\n\n/**\n * Returns the offset values of a given element.\n * @param element The HTML element.\n * @param bufferOffset An optional offset to add/subtract to the element's actual offset.\n */\nexport function getElementOffset(\n element: HTMLElement,\n bufferOffset?: SkyAffixOffset,\n): Required<SkyAffixOffset> {\n const bufferOffsetBottom = bufferOffset?.bottom || 0;\n const bufferOffsetLeft = bufferOffset?.left || 0;\n const bufferOffsetRight = bufferOffset?.right || 0;\n const bufferOffsetTop = bufferOffset?.top || 0;\n\n let top: number;\n let left: number;\n let right: number;\n let bottom: number;\n\n const clientRect = element.getBoundingClientRect();\n left = clientRect.left;\n top = clientRect.top;\n right = clientRect.right;\n bottom = clientRect.bottom;\n\n bottom -= bufferOffsetBottom;\n left += bufferOffsetLeft;\n right -= bufferOffsetRight;\n top += bufferOffsetTop;\n\n return {\n bottom,\n left,\n right,\n top,\n };\n}\n\n/**\n * Returns an AffixRect that represents the outer dimensions of a given element.\n */\nexport function getOuterRect(element: HTMLElement): Required<AffixRect> {\n const rect = element.getBoundingClientRect();\n const computedStyle = window.getComputedStyle(element, undefined);\n const marginTop = parseFloat(computedStyle.marginTop);\n const marginLeft = parseFloat(computedStyle.marginLeft);\n const marginRight = parseFloat(computedStyle.marginRight);\n const marginBottom = parseFloat(computedStyle.marginBottom);\n\n return {\n top: rect.top - marginTop,\n left: rect.left - marginLeft,\n bottom: rect.top + rect.height + marginBottom,\n right: rect.left + rect.width + marginLeft + marginRight,\n width: rect.width + marginLeft + marginRight,\n height: rect.height + marginTop + marginBottom,\n };\n}\n\n/**\n * Returns the visible rect for a given element.\n */\nexport function getVisibleRectForElement(\n viewportRuler: ViewportRuler,\n element: HTMLElement,\n): Required<AffixRect> {\n const elementRect = getOuterRect(element);\n const viewportRect = viewportRuler.getViewportRect();\n\n const visibleRect = {\n top: Math.max(elementRect.top, 0),\n left: Math.max(elementRect.left, 0),\n bottom: Math.min(elementRect.bottom, viewportRect.height),\n right: Math.min(elementRect.right, viewportRect.width),\n };\n\n return {\n ...visibleRect,\n width: visibleRect.right - visibleRect.left,\n height: visibleRect.bottom - visibleRect.top,\n };\n}\n\nexport function getOverflowParents(child: HTMLElement): HTMLElement[] {\n const bodyElement = window.document.body;\n const results = [];\n\n let parentElement = child?.parentNode;\n\n while (parentElement !== undefined && parentElement instanceof HTMLElement) {\n if (parentElement.matches('body')) {\n break;\n }\n\n const computedStyle = window.getComputedStyle(parentElement, undefined);\n const overflowY = computedStyle.overflowY.toLowerCase();\n\n const largerThanTheDocumentElement =\n window.document.documentElement.scrollWidth < parentElement.scrollWidth ||\n window.document.documentElement.scrollHeight < parentElement.scrollHeight;\n const hasOverflowRules =\n overflowY === 'auto' || overflowY === 'hidden' || overflowY === 'scroll';\n\n if (largerThanTheDocumentElement || hasOverflowRules) {\n results.push(parentElement);\n }\n if (computedStyle.position === 'fixed') {\n break;\n }\n\n parentElement = parentElement.parentNode;\n }\n\n results.push(bodyElement);\n\n return results;\n}\n\n/**\n * Confirms offset is fully visible within a parent element.\n */\nexport function isOffsetFullyVisibleWithinParent(\n viewportRuler: ViewportRuler,\n parent: HTMLElement,\n offset: Required<SkyAffixOffset>,\n bufferOffset?: SkyAffixOffset,\n): boolean {\n let parentOffset: Required<SkyAffixOffset>;\n\n if (useViewportForBounds(parent)) {\n const viewportRect = viewportRuler.getViewportRect();\n parentOffset = {\n top: 0,\n left: 0,\n right: viewportRect.width,\n bottom: viewportRect.height,\n };\n } else if (bufferOffset) {\n parentOffset = getElementOffset(parent, bufferOffset);\n } else {\n parentOffset = getVisibleRectForElement(viewportRuler, parent);\n }\n\n return (\n parentOffset.top <= offset.top &&\n parentOffset.right >= offset.right &&\n parentOffset.bottom >= offset.bottom &&\n parentOffset.left <= offset.left\n );\n}\n\nexport function isOffsetPartiallyVisibleWithinParent(\n viewportRuler: ViewportRuler,\n parent: HTMLElement,\n offset: Required<SkyAffixOffset>,\n bufferOffset?: SkyAffixOffset,\n): boolean {\n let parentOffset: Required<SkyAffixOffset>;\n if (useViewportForBounds(parent)) {\n const viewportRect = viewportRuler.getViewportRect();\n parentOffset = {\n top: 0,\n left: 0,\n right: viewportRect.width,\n bottom: viewportRect.height,\n };\n } else if (bufferOffset) {\n parentOffset = getElementOffset(parent, bufferOffset);\n } else {\n parentOffset = getVisibleRectForElement(viewportRuler, parent);\n }\n\n return !(\n parentOffset.top >= offset.bottom ||\n parentOffset.right <= offset.left ||\n parentOffset.bottom <= offset.top ||\n parentOffset.left >= offset.right\n );\n}\n","import { ViewportRuler } from '@angular/cdk/overlay';\nimport { NgZone, Renderer2 } from '@angular/core';\n\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { SkyAffixAutoFitContext } from './affix-auto-fit-context';\nimport { SkyAffixConfig } from './affix-config';\nimport { SkyAffixOffset } from './affix-offset';\nimport { SkyAffixOffsetChange } from './affix-offset-change';\nimport { SkyAffixPlacement } from './affix-placement';\nimport { SkyAffixPlacementChange } from './affix-placement-change';\nimport { AffixRect } from './affix-rect';\nimport { getInversePlacement, getNextPlacement } from './affix-utils';\nimport {\n getElementOffset,\n getOuterRect,\n getOverflowParents,\n getVisibleRectForElement,\n isOffsetFullyVisibleWithinParent,\n isOffsetPartiallyVisibleWithinParent,\n} from './dom-utils';\n\n/**\n * Make specific properties required, so that we don't have to\n * do null checks throughout this file.\n */\ntype AffixConfigOrDefaults = SkyAffixConfig &\n Required<\n Pick<\n SkyAffixConfig,\n | 'autoFitContext'\n | 'enableAutoFit'\n | 'horizontalAlignment'\n | 'isSticky'\n | 'placement'\n >\n >;\n\nconst DEFAULT_AFFIX_CONFIG: AffixConfigOrDefaults = {\n autoFitContext: SkyAffixAutoFitContext.OverflowParent,\n enableAutoFit: false,\n horizontalAlignment: 'center',\n isSticky: false,\n placement: 'above',\n};\n\nexport class SkyAffixer {\n /**\n * Fires when the affixed element's offset changes.\n */\n public get offsetChange(): Observable<SkyAffixOffsetChange> {\n return this.#offsetChangeObs;\n }\n\n /**\n * Fires when the base element's nearest overflow parent is scrolling. This is useful if you need\n * to perform an additional action during the scroll event but don't want to generate another\n * event listener.\n */\n public get overflowScroll(): Observable<void> {\n return this.#overflowScrollObs;\n }\n\n /**\n * Fires when the placement value changes. A `null` value indicates that a suitable\n * placement could not be found.\n */\n public get placementChange(): Observable<SkyAffixPlacementChange> {\n return this.#placementChangeObs;\n }\n\n get #config(): AffixConfigOrDefaults {\n return this.#_config;\n }\n\n set #config(value: SkyAffixConfig | undefined) {\n const merged: AffixConfigOrDefaults = {\n ...DEFAULT_AFFIX_CONFIG,\n ...value,\n };\n\n // Make sure none of the values are undefined.\n let key: keyof typeof merged;\n for (key in merged) {\n if (merged[key] === undefined) {\n (merged as any)[key] = DEFAULT_AFFIX_CONFIG[key];\n }\n }\n\n this.#_config = merged;\n }\n\n #affixedElement: HTMLElement;\n\n #baseElement: HTMLElement | undefined;\n\n #currentOffset: SkyAffixOffset | undefined;\n\n #currentPlacement: SkyAffixPlacement | undefined;\n\n #layoutViewport: HTMLElement;\n\n #offsetChange: Subject<SkyAffixOffsetChange>;\n\n #offsetChangeObs: Observable<SkyAffixOffsetChange>;\n\n #overflowParents: HTMLElement[] = [];\n\n #overflowScroll: Subject<void>;\n\n #overflowScrollObs: Observable<void>;\n\n #placementChange: Subject<SkyAffixPlacementChange>;\n\n #placementChangeObs: Observable<SkyAffixPlacementChange>;\n\n #renderer: Renderer2;\n\n #scrollChange = new Subject<void>();\n\n #viewportListeners: Subscription | undefined;\n\n #viewportRuler: ViewportRuler;\n\n #zone: NgZone;\n\n #_config: AffixConfigOrDefaults = DEFAULT_AFFIX_CONFIG;\n\n #scrollChangeListener: () => void = () => this.#scrollChange.next();\n\n constructor(\n affixedElement: HTMLElement,\n renderer: Renderer2,\n viewportRuler: ViewportRuler,\n zone: NgZone,\n layoutViewport: HTMLElement,\n ) {\n this.#affixedElement = affixedElement;\n this.#renderer = renderer;\n this.#layoutViewport = layoutViewport;\n this.#viewportRuler = viewportRuler;\n this.#zone = zone;\n\n this.#offsetChange = new Subject<SkyAffixOffsetChange>();\n this.#overflowScroll = new Subject<void>();\n this.#placementChange = new Subject<SkyAffixPlacementChange>();\n\n this.#offsetChangeObs = this.#offsetChange.asObservable();\n this.#overflowScrollObs = this.#overflowScroll.asObservable();\n this.#placementChangeObs = this.#placementChange.asObservable();\n }\n\n /**\n * Affixes an element to a base element.\n * @param baseElement The base element.\n * @param config Configuration for the affix action.\n */\n public affixTo(baseElement: HTMLElement, config?: SkyAffixConfig): void {\n this.#reset();\n\n this.#config = config;\n this.#baseElement = baseElement;\n this.#overflowParents = getOverflowParents(baseElement);\n\n this.#affix();\n\n if (this.#config.isSticky) {\n this.#addViewportListeners();\n }\n }\n\n public getConfig(): SkyAffixConfig {\n return this.#config;\n }\n\n /**\n * Re-runs the affix calculation.\n */\n public reaffix(): void {\n // Reset current placement to preferred placement.\n this.#currentPlacement = this.#config.placement;\n this.#affix();\n }\n\n /**\n * Destroys the affixer.\n */\n public destroy(): void {\n this.#reset();\n this.#placementChange.complete();\n this.#offsetChange.complete();\n this.#overflowScroll.complete();\n this.#scrollChange.complete();\n }\n\n #affix(): void {\n const offset = this.#getOffset();\n\n const offsetParentRect = this.#getOffsetParentRect();\n offset.top = offset.top - offsetParentRect.top;\n offset.left = offset.left - offsetParentRect.left;\n offset.bottom = offset.bottom - offsetParentRect.top;\n offset.right = offset.right - offsetParentRect.left;\n\n if (this.#isNewOffset(offset)) {\n this.#renderer.setStyle(this.#affixedElement, 'top', `${offset.top}px`);\n this.#renderer.setStyle(this.#affixedElement, 'left', `${offset.left}px`);\n\n this.#offsetChange.next({ offset });\n }\n }\n\n #getOffsetParentRect(): AffixRect {\n // Firefox sets the offsetParent to document.body if the element uses fixed positioning.\n if (\n this.#config.position === 'absolute' &&\n this.#affixedElement.offsetParent\n ) {\n return getOuterRect(this.#affixedElement.offsetParent as HTMLElement);\n } else {\n const layoutRect = getOuterRect(this.#layoutViewport);\n return {\n top: layoutRect.top,\n left: layoutRect.left,\n height: layoutRect.height,\n width: layoutRect.width,\n bottom: layoutRect.top - layoutRect.height,\n right: layoutRect.left - layoutRect.width,\n };\n }\n }\n\n #getOffset(): Required<SkyAffixOffset> {\n const parent = this.#getAutoFitContextParent();\n\n const maxAttempts = 4;\n let attempts = 0;\n\n let isAffixedElementFullyVisible = false;\n let offset: Required<SkyAffixOffset>;\n let placement = this.#config.placement;\n\n do {\n offset = this.#getPreferredOffset(placement);\n isAffixedElementFullyVisible = isOffsetFullyVisibleWithinParent(\n this.#viewportRuler,\n parent,\n offset,\n this.#config.autoFitOverflowOffset,\n );\n\n if (!this.#config.enableAutoFit) {\n break;\n }\n\n if (!isAffixedElementFullyVisible) {\n placement =\n attempts % 2 === 0\n ? getInversePlacement(placement)\n : getNextPlacement(placement);\n }\n\n attempts++;\n } while (!isAffixedElementFullyVisible && attempts < maxAttempts);\n\n if (isAffixedElementFullyVisible) {\n if (this.#isBaseElementVisible()) {\n this.#notifyPlacementChange(placement);\n } else {\n this.#notifyPlacementChange(null);\n }\n\n return offset;\n }\n\n if (this.#config.enableAutoFit) {\n this.#notifyPlacementChange(null);\n }\n\n // No suitable placement was found, so revert to preferred placement.\n return this.#getPreferredOffset(this.#config.placement);\n }\n\n #getPreferredOffset(placement: SkyAffixPlacement): Required<SkyAffixOffset> {\n if (!this.#baseElement) {\n return { top: 0, left: 0, bottom: 0, right: 0 };\n }\n\n const affixedRect = getOuterRect(this.#affixedElement);\n const baseRect = this.#baseElement.getBoundingClientRect();\n\n const horizontalAlignment = this.#config.horizontalAlignment;\n const verticalAlignment = this.#config.verticalAlignment;\n const enableAutoFit = this.#config.enableAutoFit;\n\n let top: number;\n let left: number;\n\n if (placement === 'above' || placement === 'below') {\n if (placement === 'above') {\n top = baseRect.top - affixedRect.height;\n\n switch (verticalAlignment) {\n case 'top':\n top = top + affixedRect.height;\n break;\n case 'middle':\n top = top + affixedRect.height / 2;\n break;\n case 'bottom':\n default:\n break;\n }\n } else {\n top = baseRect.bottom;\n\n switch (verticalAlignment) {\n case 'top':\n default:\n break;\n case 'middle':\n top = top - affixedRect.height / 2;\n break;\n case 'bottom':\n top = top - affixedRect.height;\n break;\n }\n }\n\n switch (horizontalAlignment) {\n case 'left':\n left = baseRect.left;\n break;\n\n case 'center':\n default:\n left = baseRect.left + baseRect.width / 2 - affixedRect.width / 2;\n break;\n\n case 'right':\n left = baseRect.right - affixedRect.width;\n break;\n }\n } else {\n if (placement === 'left') {\n left = baseRect.left - affixedRect.width;\n } else {\n left = baseRect.right;\n }\n\n switch (verticalAlignment) {\n case 'top':\n top = baseRect.top;\n break;\n\n case 'middle':\n default:\n top = baseRect.top + baseRect.height / 2 - affixedRect.height / 2;\n break;\n\n case 'bottom':\n top = baseRect.bottom - affixedRect.height;\n break;\n }\n }\n\n const offset: Required<SkyAffixOffset> = { top, left, bottom: 0, right: 0 };\n\n if (enableAutoFit) {\n const adjustments = this.#adjustOffsetToOverflowParent(\n { top, left },\n placement,\n this.#baseElement,\n );\n offset.top = adjustments.top;\n offset.left = adjustments.left;\n }\n\n offset.bottom = offset.top + affixedRect.height;\n offset.right = offset.left + affixedRect.width;\n\n return offset;\n }\n\n /**\n * Slightly adjust the offset to fit within the scroll parent's boundaries if\n * the affixed element would otherwise be clipped.\n */\n #adjustOffsetToOverflowParent(\n offset: { top: number; left: number },\n placement: SkyAffixPlacement,\n baseElement: HTMLElement,\n ): { top: number; left: number } {\n const affixedRect = getOuterRect(this.#affixedElement);\n const baseRect = baseElement.getBoundingClientRect();\n\n const parent = this.#getAutoFitContextParent();\n let parentOffset: Required<SkyAffixOffset>;\n if (this.#config.autoFitContext === SkyAffixAutoFitContext.OverflowParent) {\n if (this.#config.autoFitOverflowOffset) {\n // When the config contains a specific offset.\n parentOffset = getElementOffset(\n parent,\n this.#config.autoFitOverflowOffset,\n );\n } else if (\n isOffsetFullyVisibleWithinParent(this.#viewportRuler, parent, baseRect)\n ) {\n // When the base element is fully visible within the parent, aim for the visible portion of the parent element.\n parentOffset = getVisibleRectForElement(this.#viewportRuler, parent);\n } else {\n // Anywhere in the parent element.\n parentOffset = getOuterRect(parent);\n }\n } else {\n const viewportRect = this.#viewportRuler.getViewportRect();\n parentOffset = {\n top: -viewportRect.top,\n left: -viewportRect.left,\n bottom: viewportRect.height + viewportRect.top,\n right: viewportRect.width + viewportRect.left,\n };\n }\n\n // A pixel value representing the leeway between the edge of the overflow parent and the edge\n // of the base element before it disappears from view.\n // If the visible portion of the base element is less than this pixel value, the auto-fit\n // functionality attempts to find another placement.\n const defaultPixelTolerance = 40;\n let pixelTolerance: number;\n\n const originalOffsetTop = offset.top;\n const originalOffsetLeft = offset.left;\n\n switch (placement) {\n case 'above':\n case 'below':\n // Keep the affixed element within the overflow parent.\n if (offset.left < parentOffset.left) {\n offset.left = parentOffset.left;\n } else if (offset.left + affixedRect.width > parentOffset.right) {\n offset.left = parentOffset.right - affixedRect.width;\n }\n\n // Use a smaller pixel tolerance if the base element width is less than the default.\n pixelTolerance = Math.min(defaultPixelTolerance, baseRect.width);\n\n // Make sure the affixed element never detaches from the base element.\n if (\n offset.left + pixelTolerance > baseRect.right ||\n offset.left + affixedRect.width - pixelTolerance < baseRect.left\n ) {\n offset.left = originalOffsetLeft;\n }\n\n break;\n\n case 'left':\n case 'right':\n // Keep the affixed element within the overflow parent.\n if (offset.top < parentOffset.top) {\n offset.top = parentOffset.top;\n } else if (offset.top + affixedRect.height > parentOffset.bottom) {\n offset.top = parentOffset.bottom - affixedRect.height;\n }\n\n // Use a smaller pixel tolerance if the base element height is less than the default.\n pixelTolerance = Math.min(defaultPixelTolerance, baseRect.height);\n\n // Make sure the affixed element never detaches from the base element.\n if (\n offset.top + pixelTolerance > baseRect.bottom ||\n offset.top + affixedRect.height - pixelTolerance < baseRect.top\n ) {\n offset.top = originalOffsetTop;\n }\n\n break;\n }\n\n return offset;\n }\n\n #getImmediateOverflowParent(): HTMLElement {\n return this.#overflowParents[0];\n }\n\n #getAutoFitContextParent(): HTMLElement {\n const bodyElement = this.#overflowParents[this.#overflowParents.length - 1];\n\n return this.#config.autoFitContext === SkyAffixAutoFitContext.OverflowParent\n ? this.#getImmediateOverflowParent()\n : bodyElement;\n }\n\n #notifyPlacementChange(placement: SkyAffixPlacement | null): void {\n if (this.#currentPlacement !== placement) {\n this.#currentPlacement = placement ?? undefined;\n this.#placementChange.next({\n placement,\n });\n }\n }\n\n #reset(): void {\n this.#removeViewportListeners();\n\n this.#overflowParents = [];\n\n this.#config =\n this.#baseElement =\n this.#currentPlacement =\n this.#currentOffset =\n undefined;\n }\n\n #isNewOffset(offset: SkyAffixOffset): boolean {\n if (this.#currentOffset === undefined) {\n this.#currentOffset = offset;\n return true;\n }\n\n if (\n this.#currentOffset.top === offset.top &&\n this.#currentOffset.left === offset.left\n ) {\n return false;\n }\n\n this.#currentOffset = offset;\n\n return true;\n }\n\n #isBaseElementVisible(): boolean {\n // Can't get here if the base element is undefined.\n /* istanbul ignore if */\n if (!this.#baseElement) {\n return false;\n }\n\n const baseRect = this.#baseElement.getBoundingClientRect();\n\n return isOffsetPartiallyVisibleWithinParent(\n this.#viewportRuler,\n this.#getImmediateOverflowParent(),\n {\n top: baseRect.top,\n left: baseRect.left,\n right: baseRect.right,\n bottom: baseRect.bottom,\n },\n this.#config.autoFitOverflowOffset,\n );\n }\n\n #addViewportListeners(): void {\n this.#viewportListeners = new Subscription();\n\n // Resize and orientation changes.\n this.#viewportListeners.add(\n this.#viewportRuler.change().subscribe(() => {\n this.#affix();\n }),\n );\n\n this.#viewportListeners.add(\n this.#scrollChange.subscribe(() => {\n this.#affix();\n this.#overflowScroll.next();\n }),\n );\n\n // Listen for scroll events on the window, visual viewport, and any overflow parents.\n // https://developer.chrome.com/blog/visual-viewport-api/#events-only-fire-when-the-visual-viewport-changes\n this.#zone.runOutsideAngular(() => {\n [window, window.visualViewport, ...this.#overflowParents].forEach(\n (parentElement) => {\n parentElement?.addEventListener('scroll', this.#scrollChangeListener);\n },\n );\n });\n }\n\n #removeViewportListeners(): void {\n this.#viewportListeners?.unsubscribe();\n\n this.#zone.runOutsideAngular(() => {\n [window, window.visualViewport, ...this.#overflowParents].forEach(\n (parentElement) => {\n parentElement?.removeEventListener(\n 'scroll',\n this.#scrollChangeListener,\n );\n },\n );\n });\n }\n}\n","import { ViewportRuler } from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ElementRef,\n Injectable,\n NgZone,\n OnDestroy,\n RendererFactory2,\n inject,\n} from '@angular/core';\n\nimport { SkyAffixer } from './affixer';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAffixService implements OnDestroy {\n readonly #renderer = inject(RendererFactory2).createRenderer(undefined, null);\n\n readonly #viewportRuler = inject(ViewportRuler);\n\n readonly #zone = inject(NgZone);\n\n readonly #layoutViewport = this.#createLayoutViewportShim(inject(DOCUMENT));\n\n public ngOnDestroy(): void {\n this.#renderer.removeChild(\n this.#layoutViewport.parentNode,\n this.#layoutViewport,\n );\n }\n\n /**\n * Creates an instance of [[SkyAffixer]].\n * @param affixed The element to be affixed.\n */\n public createAffixer(affixed: ElementRef): SkyAffixer {\n return new SkyAffixer(\n affixed.nativeElement,\n this.#renderer,\n this.#viewportRuler,\n this.#zone,\n this.#layoutViewport,\n );\n }\n\n /**\n * Create a layout viewport element that can be used to determine the relative position\n * of the visual viewport. Inspired by\n * https://github.com/WICG/visual-viewport/blob/gh-pages/examples/fixed-to-viewport.html\n */\n #createLayoutViewportShim(doc: Document): HTMLElement {\n const layoutViewportElement = this.#renderer.createElement('div');\n this.#renderer.addClass(\n layoutViewportElement,\n 'sky-affix-layout-viewport-shim',\n );\n this.#renderer.setStyle(layoutViewportElement, 'width', '100%');\n this.#renderer.setStyle(layoutViewportElement, 'height', '100%');\n this.#renderer.setStyle(layoutViewportElement, 'position', 'fixed');\n this.#renderer.setStyle(layoutViewportElement, 'top', '0');\n this.#renderer.setStyle(layoutViewportElement, 'left', '0');\n this.#renderer.setStyle(layoutViewportElement, 'visibility', 'hidden');\n this.#renderer.setStyle(layoutViewportElement, 'pointerEvents', 'none');\n this.#renderer.appendChild(doc.body, layoutViewportElement);\n\n return layoutViewportElement;\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAffixAutoFitContext } from './affix-auto-fit-context';\nimport { SkyAffixHorizontalAlignment } from './affix-horizontal-alignment';\nimport { SkyAffixOffset } from './affix-offset';\nimport { SkyAffixOffsetChange } from './affix-offset-change';\nimport { SkyAffixPlacement } from './affix-placement';\nimport { SkyAffixPlacementChange } from './affix-placement-change';\nimport { SkyAffixPosition } from './affix-position';\nimport { SkyAffixVerticalAlignment } from './affix-vertical-alignment';\nimport { SkyAffixService } from './affix.service';\nimport { SkyAffixer } from './affixer';\n\n/**\n * Affixes the host element to a base element.\n */\n@Directive({\n selector: '[skyAffixTo]',\n standalone: false,\n})\nexport class SkyAffixDirective implements OnInit, OnChanges, OnDestroy {\n /**\n * The base element to affix the host element.\n */\n @Input()\n public skyAffixTo: HTMLElement | undefined;\n\n /**\n * Sets the `autoFitContext` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixAutoFitContext: SkyAffixAutoFitContext | undefined;\n\n /**\n * Sets the `autoFitOverflowOffset` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixAutoFitOverflowOffset: SkyAffixOffset | undefined;\n\n /**\n * Sets the `enableAutoFit` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixEnableAutoFit: boolean | undefined;\n\n /**\n * Sets the `horizontalAlignment` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixHorizontalAlignment: SkyAffixHorizontalAlignment | undefined;\n\n /**\n * Sets the `isSticky` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixIsSticky: boolean | undefined;\n\n /**\n * Sets the `placement` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixPlacement: SkyAffixPlacement | undefined;\n\n /**\n * Sets the `position` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixPosition: SkyAffixPosition | undefined;\n\n /**\n * Sets the `verticalAlignment` property of [[SkyAffixConfig]].\n */\n @Input()\n public affixVerticalAlignment: SkyAffixVerticalAlignment | undefined;\n\n /**\n * Fires when the affixed element's offset changes.\n */\n @Output()\n public affixOffsetChange = new EventEmitter<SkyAffixOffsetChange>();\n\n /**\n * Fires when the affixed element's overflow container is scrolled.\n */\n @Output()\n public affixOverflowScroll = new EventEmitter<void>();\n\n /**\n * Fires when the placement value changes.\n */\n @Output()\n public affixPlacementChange = new EventEmitter<SkyAffixPlacementChange>();\n\n #affixer: SkyAffixer | undefined;\n\n #affixService: SkyAffixService;\n\n #elementRef: ElementRef;\n\n #ngUnsubscribe = new Subject<void>();\n\n constructor(elementRef: ElementRef, affixService: SkyAffixService) {\n this.#elementRef = elementRef;\n this.#affixService = affixService;\n }\n\n public ngOnInit(): void {\n this.#affixer = this.#affixService.createAffixer(this.#elementRef);\n\n this.#affixer.offsetChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change) => this.affixOffsetChange.emit(change));\n\n this.#affixer.overflowScroll\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change) => this.affixOverflowScroll.emit(change));\n\n this.#affixer.placementChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change) => this.affixPlacementChange.emit(change));\n\n this.#updateAlignment();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n /* istanbul ignore else */\n if (\n changes['affixAutoFitContext'] ||\n changes['affixAutoFitOverflowOffset'] ||\n changes['affixEnableAutoFit'] ||\n changes['affixHorizontalAlignment'] ||\n changes['affixIsSticky'] ||\n changes['affixPlacement'] ||\n changes['affixPosition'] ||\n changes['affixVerticalAlignment']\n ) {\n this.#updateAlignment();\n }\n }\n\n public ngOnDestroy(): void {\n this.affixOffsetChange.complete();\n this.affixOverflowScroll.complete();\n this.affixPlacementChange.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n /*istanbul ignore else*/\n if (this.#affixer) {\n this.#affixer.destroy();\n this.#affixer = undefined;\n }\n }\n\n #updateAlignment(): void {\n if (this.skyAffixTo && this.#affixer) {\n this.#affixer.affixTo(this.skyAffixTo, {\n autoFitContext: this.affixAutoFitContext,\n autoFitOverflowOffset: this.affixAutoFitOverflowOffset,\n enableAutoFit: this.affixEnableAutoFit,\n horizontalAlignment: this.affixHorizontalAlignment,\n isSticky: this.affixIsSticky,\n placement: this.affixPlacement,\n position: this.affixPosition,\n verticalAlignment: this.affixVerticalAlignment,\n });\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SkyAffixDirective } from './affix.directive';\n\n@NgModule({\n imports: [CommonModule],\n exports: [SkyAffixDirective],\n declarations: [SkyAffixDirective],\n})\nexport class SkyAffixModule {}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyContentInfo } from './content-info';\n\n/**\n * @internal\n * An API to provide information about a parent component's content to child components.\n * For example, toolbar can use this to provide its child components with a list\n * descriptor they can use to construct aria labels, or tree view can provide the node\n * name to its context menus.\n */\n@Injectable()\nexport class SkyContentInfoProvider {\n #contentInfo = new ReplaySubject<SkyContentInfo>(1);\n #currentValue: SkyContentInfo = {};\n\n public patchInfo(value: SkyContentInfo): void {\n const newValue = {\n ...this.#currentValue,\n ...value,\n };\n\n this.#currentValue = newValue;\n this.#contentInfo.next(newValue);\n }\n\n public getInfo(): Observable<SkyContentInfo> {\n return this.#contentInfo.asObservable();\n }\n}\n","import { Observable, ReplaySubject } from 'rxjs';\n\n/**\n * @internal\n * An API to provide default Angular component input values to child components.\n */\nexport class SkyDefaultInputProvider {\n #props: Record<string, Record<string, ReplaySubject<unknown>>> = {};\n\n public setValue<T>(componentName: string, inputName: string, value: T): void {\n const subject = this.#getSubject(componentName, inputName);\n subject.next(value);\n }\n\n public getValue<T>(\n componentName: string,\n inputName: string,\n ): Observable<T> | undefined {\n const inputDefault = this.#getSubject(componentName, inputName);\n return inputDefault.asObservable() as Observable<T>;\n }\n\n #getSubject(\n componentName: string,\n inputName: string,\n ): ReplaySubject<unknown> {\n const componentSubjects = this.#props[componentName] || {};\n const inputSubject = componentSubjects[inputName];\n\n if (!inputSubject) {\n componentSubjects[inputName] = new ReplaySubject(1);\n this.#props[componentName] = componentSubjects;\n }\n\n return componentSubjects[inputName];\n }\n}\n","import { Observable, Subject } from 'rxjs';\n\n/**\n * Represents a single item added to the dock.\n */\nexport class SkyDockItem<T> {\n /**\n * An event that emits when the item is removed from the dock.\n */\n public get destroyed(): Observable<void> {\n return this.#destroyedObs;\n }\n\n #destroyed = new Subject<void>();\n\n #destroyedObs: Observable<void>;\n\n /**\n * @param componentInstance The item's component instance.\n * @param stackOrder The assigned stack order of the docked item.\n */\n constructor(\n public readonly componentInstance: T,\n public readonly stackOrder: number,\n ) {\n this.#destroyedObs = this.#destroyed.asObservable();\n }\n\n /**\n * Removes the item from the dock.\n */\n public destroy(): void {\n this.#destroyed.next();\n this.#destroyed.complete();\n }\n}\n","/**\n * The location on the page where the dock component should be rendered.\n */\nexport enum SkyDockLocation {\n /**\n * Renders the dock component before a given element.\n */\n BeforeElement,\n\n /**\n * Renders the dock component as the last element inside the BODY element.\n */\n BodyBottom,\n\n /**\n * Renders the dock component as the last element inside a given element.\n */\n ElementBottom,\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyDockModule` is no longer needed and can be removed from your application.\n * @internal\n */\n@NgModule({})\nexport class SkyDockModule {}\n","/**\n * The location on the page where the dynamic component should be rendered.\n */\nexport enum SkyDynamicComponentLocation {\n /**\n * Renders the dynamic component before a given element.\n */\n BeforeElement,\n\n /**\n * Renders the dynamic component as the last element inside the BODY element.\n */\n BodyBottom,\n\n /**\n * Renders the dynamic component as the first element inside the BODY element.\n */\n BodyTop,\n\n /**\n * Renders the dynamic component as the last element inside a given element.\n */\n ElementBottom,\n\n /**\n * Renders the dynamic component as the first element inside a given element.\n */\n ElementTop,\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * @internal\n */\nexport function getWindow(): any {\n return window;\n}\n\n/**\n * The application window reference service references the global window variable.\n * After users inject SkyAppWindowRef into a component, they can use the service to interact with\n * window properties and event handlers by referencing its nativeWindow property.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppWindowRef {\n /**\n * The global `window` variable.\n */\n public get nativeWindow(): any {\n return getWindow();\n }\n}\n","import {\n ApplicationRef,\n ComponentRef,\n EmbeddedViewRef,\n EnvironmentInjector,\n Injectable,\n Renderer2,\n RendererFactory2,\n Type,\n createComponent,\n createEnvironmentInjector,\n inject,\n} from '@angular/core';\n\nimport { SkyAppWindowRef } from '../window/window-ref';\n\nimport { SkyDynamicComponentLocation } from './dynamic-component-location';\nimport { SkyDynamicComponentOptions } from './dynamic-component-options';\n\n/**\n * Angular service for creating and rendering a dynamic component.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyDynamicComponentService {\n #applicationRef: ApplicationRef;\n\n #renderer: Renderer2;\n\n #windowRef: SkyAppWindowRef;\n\n #environmentInjector = inject(EnvironmentInjector);\n\n constructor(\n applicationRef: ApplicationRef,\n windowRef: SkyAppWindowRef,\n rendererFactory: RendererFactory2,\n ) {\n this.#applicationRef = applicationRef;\n this.#windowRef = windowRef;\n\n // Based on suggestions from https://github.com/angular/angular/issues/17824\n // for accessing an instance of Renderer2 in a service since Renderer2 can't\n // be injected into a service. Passing undefined for both parameters results\n // in the default renderer which is what we want here.\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n /**\n * Creates an instance of the specified component and adds it to the specified location\n * on the page.\n */\n public createComponent<T>(\n componentType: Type<T>,\n options: SkyDynamicComponentOptions = {\n location: SkyDynamicComponentLocation.BodyBottom,\n },\n ): ComponentRef<T> {\n const environmentInjector = createEnvironmentInjector(\n options.providers ?? [],\n options.environmentInjector ?? this.#environmentInjector,\n );\n\n let componentRef: ComponentRef<T>;\n\n if (options.viewContainerRef) {\n componentRef = options.viewContainerRef.createComponent(componentType, {\n environmentInjector,\n });\n } else {\n componentRef = createComponent<T>(componentType, {\n environmentInjector,\n });\n\n this.#applicationRef.attachView(componentRef.hostView);\n\n this.#insertComponentAtLocation(componentRef, options);\n }\n\n if (options.className) {\n const el = this.#getRootNode(componentRef);\n this.#renderer.addClass(el, options.className);\n }\n\n return componentRef;\n }\n\n #insertComponentAtLocation(\n componentRef: ComponentRef<unknown>,\n options: SkyDynamicComponentOptions,\n ): void {\n const el = this.#getRootNode(componentRef);\n\n const bodyEl = this.#windowRef.nativeWindow.document.body;\n\n switch (options.location) {\n case SkyDynamicComponentLocation.BeforeElement:\n if (!options.referenceEl) {\n throw new Error(\n '[SkyDynamicComponentService] Could not create a component at location `SkyDynamicComponentLocation.BeforeElement` because a reference element was not provided.',\n );\n }\n\n this.#renderer.insertBefore(\n options.referenceEl.parentElement,\n el,\n options.referenceEl,\n );\n break;\n case SkyDynamicComponentLocation.ElementTop:\n if (!options.referenceEl) {\n throw new Error(\n '[SkyDynamicComponentService] Could not create a component at location `SkyDynamicComponentLocation.ElementTop` because a reference element was not provided.',\n );\n }\n\n this.#renderer.insertBefore(\n options.referenceEl,\n el,\n options.referenceEl.firstChild,\n );\n break;\n case SkyDynamicComponentLocation.ElementBottom:\n this.#renderer.appendChild(options.referenceEl, el);\n break;\n case SkyDynamicComponentLocation.BodyTop:\n this.#renderer.insertBefore(bodyEl, el, bodyEl.firstChild);\n break;\n default:\n this.#renderer.appendChild(bodyEl, el);\n break;\n }\n }\n\n /**\n * Removes a component ref from the page\n * @param componentRef Component ref for the component being removed\n */\n public removeComponent<T>(componentRef: ComponentRef<T> | undefined): void {\n if (!componentRef) {\n return;\n }\n\n if (!this.#applicationRef.destroyed) {\n this.#applicationRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n }\n\n #getRootNode<T>(componentRef: ComponentRef<T>): any {\n // Technique for retrieving the component's root node taken from here:\n // https://malcoded.com/posts/angular-dynamic-components\n return (componentRef.hostView as EmbeddedViewRef<T>).rootNodes[0];\n }\n}\n\n/**\n * Angular service for creating and rendering a dynamic component.\n * @internal\n * @deprecated Use `SkyDynamicComponentService` to create a standalone component instead.\n */\n@Injectable({\n providedIn: 'any',\n})\nexport class SkyDynamicComponentLegacyService extends SkyDynamicComponentService {}\n","import { Injectable } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyMutationObserverService {\n public create(callback: MutationCallback): MutationObserver {\n return new MutationObserver(callback);\n }\n}\n","import {\n ElementRef,\n Injectable,\n OnDestroy,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\n\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyDockDomAdapterService implements OnDestroy {\n #currentDockHeight: number | undefined;\n\n #mutationSvc: SkyMutationObserverService;\n\n #ngUnsubscribe = new Subject<void>();\n\n #observer: MutationObserver | undefined;\n\n #renderer: Renderer2;\n\n #styleElement: HTMLStyleElement | undefined;\n\n constructor(\n mutationSvc: SkyMutationObserverService,\n rendererFactory: RendererFactory2,\n ) {\n this.#mutationSvc = mutationSvc;\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n public ngOnDestroy(): void {\n if (this.#observer) {\n this.#observer.disconnect();\n }\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n if (this.#styleElement) {\n this.#destroyStyleElement();\n }\n\n this.#currentDockHeight = this.#observer = this.#styleElement = undefined;\n }\n\n public setSticky(elementRef: ElementRef): void {\n this.#renderer.addClass(elementRef.nativeElement, 'sky-dock-sticky');\n }\n\n public setZIndex(zIndex: number, elementRef: ElementRef): void {\n this.#renderer.setStyle(elementRef.nativeElement, 'z-index', zIndex);\n }\n\n public unbindDock(elementRef: ElementRef): void {\n this.#renderer.addClass(elementRef.nativeElement, 'sky-dock-unbound');\n }\n\n public watchDomChanges(elementRef: ElementRef): void {\n this.#observer = this.#mutationSvc.create(() => {\n this.#adjustBodyStyles(elementRef);\n });\n\n this.#observer.observe(elementRef.nativeElement, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n\n observableFromEvent(window, 'resize')\n .pipe(debounceTime(250), takeUntil(this.#ngUnsubscribe))\n .subscribe(() => this.#adjustBodyStyles(elementRef));\n }\n\n #adjustBodyStyles(elementRef: ElementRef): void {\n const dockHeight = elementRef.nativeElement.getBoundingClientRect().height;\n if (dockHeight === this.#currentDockHeight) {\n return;\n }\n\n // Create a style element to avoid overwriting any existing inline body styles.\n const styleElement = this.#renderer.createElement('style');\n const textNode = this.#renderer.createText(\n `body { margin-bottom: ${dockHeight}px; --sky-dock-height: ${dockHeight}px; }`,\n );\n\n // Apply a `data-` attribute to make unit testing easier.\n this.#renderer.setAttribute(\n styleElement,\n 'data-test-selector',\n 'sky-layout-dock-bottom-styles',\n );\n\n this.#renderer.appendChild(styleElement, textNode);\n this.#renderer.appendChild(document.head, styleElement);\n\n if (this.#styleElement) {\n this.#destroyStyleElement();\n }\n\n this.#currentDockHeight = dockHeight;\n this.#styleElement = styleElement;\n }\n\n #destroyStyleElement(): void {\n this.#renderer.removeChild(document.head, this.#styleElement);\n }\n}\n","/**\n * @internal\n */\nexport function sortByStackOrder(a: any, b: any): number {\n if (a.stackOrder > b.stackOrder) {\n return -1;\n }\n\n if (a.stackOrder < b.stackOrder) {\n return 1;\n }\n\n return 0;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EnvironmentInjector,\n Type,\n ViewChild,\n ViewContainerRef,\n inject,\n} from '@angular/core';\n\nimport { SkyDynamicComponentService } from '../dynamic-component/dynamic-component.service';\n\nimport { SkyDockDomAdapterService } from './dock-dom-adapter.service';\nimport { SkyDockInsertComponentConfig } from './dock-insert-component-config';\nimport { SkyDockItemReference } from './dock-item-reference';\nimport { SkyDockLocation } from './dock-location';\nimport { SkyDockOptions } from './dock-options';\nimport { sortByStackOrder } from './sort-by-stack-order';\n\n/**\n * @internal\n */\n@Component({\n standalone: true,\n selector: 'sky-dock',\n templateUrl: './dock.component.html',\n styleUrls: ['./dock.component.scss'],\n providers: [SkyDockDomAdapterService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyDockComponent {\n @ViewChild('target', {\n read: ViewContainerRef,\n static: true,\n })\n public target: ViewContainerRef | undefined;\n\n #itemRefs: SkyDockItemReference<unknown>[] = [];\n\n #options: SkyDockOptions | undefined;\n\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #domAdapter = inject(SkyDockDomAdapterService);\n readonly #dynamicComponentSvc = inject(SkyDynamicComponentService);\n readonly #elementRef = inject(ElementRef);\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n public insertComponent<T>(\n component: Type<T>,\n config: SkyDockInsertComponentConfig = {},\n ): SkyDockItemReference<T> {\n /*istanbul ignore if: untestable*/\n if (!this.target) {\n throw Error(\n '[SkyDockComponent] Could not insert the component because the target element could not be found.',\n );\n }\n\n const componentRef = this.#dynamicComponentSvc.createComponent(component, {\n environmentInjector: this.#environmentInjector,\n providers: config.providers,\n viewContainerRef: this.target,\n });\n\n const stackOrder =\n config.stackOrder !== null && config.stackOrder !== undefined\n ? config.stackOrder\n : this.#getHighestStackOrder();\n\n this.#itemRefs.push({\n componentRef,\n stackOrder,\n });\n\n this.#sortItemsByStackOrder();\n\n this.#changeDetector.markForCheck();\n\n return {\n componentRef,\n stackOrder,\n };\n }\n\n public removeItem(item: SkyDockItemReference<any>): void {\n /*istanbul ignore if: untestable*/\n if (!this.target) {\n throw Error(\n '[SkyDockComponent] Could not remove the item because the target element could not be found.',\n );\n }\n\n const viewRef = item.componentRef.hostView;\n this.target.remove(this.target.indexOf(viewRef));\n\n const found = this.#itemRefs.find(\n (i) => i.componentRef.hostView === viewRef,\n );\n\n if (found) {\n this.#itemRefs.splice(this.#itemRefs.indexOf(found), 1);\n }\n }\n\n public setOptions(options: SkyDockOptions | undefined): void {\n this.#options = options;\n\n switch (this.#options?.location) {\n case SkyDockLocation.BeforeElement:\n this.#domAdapter.unbindDock(this.#elementRef);\n break;\n case SkyDockLocation.ElementBottom:\n this.#domAdapter.setSticky(this.#elementRef);\n break;\n case SkyDockLocation.BodyBottom:\n default:\n this.#domAdapter.watchDomChanges(this.#elementRef);\n break;\n }\n\n if (this.#options?.zIndex) {\n this.#domAdapter.setZIndex(this.#options.zIndex, this.#elementRef);\n }\n }\n\n #sortItemsByStackOrder(): void {\n if (this.target) {\n this.#itemRefs.sort(sortByStackOrder);\n\n // Reassign the correct index for each view.\n for (let i = 0, len = this.#itemRefs.length; i < len; i++) {\n const item = this.#itemRefs[i];\n this.target.move(item.componentRef.hostView, i);\n }\n }\n }\n\n #getHighestStackOrder(): number {\n if (this.#itemRefs.length === 0) {\n return 0;\n }\n\n return this.#itemRefs[0].stackOrder + 1;\n }\n}\n","<ng-container #target />\n","import { ComponentRef, Injectable, Type, inject } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\n\nimport { SkyDynamicComponentLocation } from '../dynamic-component/dynamic-component-location';\nimport { SkyDynamicComponentOptions } from '../dynamic-component/dynamic-component-options';\nimport { SkyDynamicComponentService } from '../dynamic-component/dynamic-component.service';\n\nimport { SkyDockInsertComponentConfig } from './dock-insert-component-config';\nimport { SkyDockItem } from './dock-item';\nimport { SkyDockLocation } from './dock-location';\nimport { SkyDockOptions } from './dock-options';\nimport { SkyDockComponent } from './dock.component';\nimport { sortByStackOrder } from './sort-by-stack-order';\n\n/**\n * This service docks components to specific areas on the page.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyDockService {\n private static dockRef: ComponentRef<SkyDockComponent> | undefined;\n private static _items: SkyDockItem<any>[] = [];\n\n /**\n * Returns all docked items.\n */\n public get items(): SkyDockItem<any>[] {\n return SkyDockService._items;\n }\n\n readonly #dynamicComponentSvc = inject(SkyDynamicComponentService);\n #subscription: Subscription | undefined;\n\n #options: SkyDockOptions | undefined;\n\n /**\n * Docks a component to the bottom of the page.\n * @param component The component to dock.\n * @param config Options that affect the docking action.\n */\n public insertComponent<T>(\n component: Type<T>,\n config?: SkyDockInsertComponentConfig,\n ): SkyDockItem<T> {\n this.#subscription ??= new Subscription();\n const dockRef = (SkyDockService.dockRef =\n SkyDockService.dockRef || this.#createDock());\n\n const itemRef = dockRef.instance.insertComponent(component, config);\n const item = new SkyDockItem(\n itemRef.componentRef.instance,\n itemRef.stackOrder,\n );\n\n this.#subscription?.add(\n item.destroyed.subscribe(() => {\n dockRef.instance.removeItem(itemRef);\n SkyDockService._items.splice(SkyDockService._items.indexOf(item), 1);\n if (SkyDockService._items.length === 0) {\n this.#destroyDock();\n }\n }),\n );\n\n SkyDockService._items.push(item);\n SkyDockService._items.sort(sortByStackOrder);\n\n return item;\n }\n\n /**\n * Sets options for the positioning and styling of the dock component. Since the dock service is a\n * singleton instance, these options will be applied to all components inserted into the dock. In\n * order to create a separate dock with different options, consumers should provide a different\n * instance of the dock service.\n * @param options The options for positioning and styling\n */\n public setDockOptions(options: SkyDockOptions): void {\n this.#options = options;\n }\n\n #createDock(): ComponentRef<SkyDockComponent> {\n let dockOptions: SkyDynamicComponentOptions | undefined;\n\n if (this.#options) {\n let dynamicLocation: SkyDynamicComponentLocation;\n switch (this.#options.location) {\n case SkyDockLocation.BeforeElement:\n dynamicLocation = SkyDynamicComponentLocation.BeforeElement;\n break;\n case SkyDockLocation.ElementBottom:\n dynamicLocation = SkyDynamicComponentLocation.ElementBottom;\n break;\n default:\n dynamicLocation = SkyDynamicComponentLocation.BodyTop;\n break;\n }\n\n dockOptions = {\n location: dynamicLocation,\n referenceEl: this.#options.referenceEl,\n };\n }\n\n const dockRef = this.#dynamicComponentSvc.createComponent(\n SkyDockComponent,\n dockOptions,\n );\n\n dockRef.instance.setOptions(this.#options);\n\n return dockRef;\n }\n\n #destroyDock(): void {\n this.#subscription?.unsubscribe();\n this.#subscription = undefined;\n this.#dynamicComponentSvc.removeComponent(SkyDockService.dockRef);\n SkyDockService.dockRef = undefined;\n }\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * Provides services required to create dynamic components on the page.\n * @deprecated The `SkyDynamicComponentService` no longer needs the `SkyDynamicComponentModule`.\n * The `SkyDynamicComponentModule` can be removed from your project.\n */\n@NgModule({})\nexport class SkyDynamicComponentModule {}\n","import { Injectable } from '@angular/core';\n\n/**\n * Wraps the FileReader API so it can be mocked in tests.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyFileReaderService {\n public async readAsDataURL(file: File): Promise<string> {\n return await new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.addEventListener('load', (event) => {\n resolve(event.target?.result as string);\n });\n\n reader.addEventListener('error', () => {\n reject(file);\n });\n\n reader.addEventListener('abort', () => {\n reject(file);\n });\n\n reader.readAsDataURL(file);\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppFormat {\n public formatText(format: string, ...args: any[]): string {\n return String(format).replace(\n /\\{(\\d+)\\}/g,\n function (match, capture): string {\n return args[parseInt(capture, 10)];\n },\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyHelpGlobalOptions } from './help-global-options';\n\n/**\n * Injection token for specifying and retrieving global help options.\n */\nexport const SKY_HELP_GLOBAL_OPTIONS = new InjectionToken<SkyHelpGlobalOptions>(\n 'SkyHelpGlobalOptions',\n);\n","import { Injectable } from '@angular/core';\n\nimport { Observable, of } from 'rxjs';\n\nimport { SkyHelpOpenArgs } from './help-open-args';\nimport { SkyHelpUpdateArgs } from './help-update-args';\n\n/**\n * Provides methods for opening and updating a globally accessible help dialog.\n */\n@Injectable()\nexport abstract class SkyHelpService {\n /**\n * Emits when the help widget ready state changes.\n */\n public get widgetReadyStateChange(): Observable<boolean> {\n return of(false);\n }\n\n /**\n * Opens a globally accessible help dialog.\n * @param args The options for opening the help dialog.\n */\n public abstract openHelp(args?: SkyHelpOpenArgs): void;\n\n /**\n * Updates a globally accessible help dialog.\n * @param args The options for updating the help dialog.\n */\n public abstract updateHelp(args: SkyHelpUpdateArgs): void;\n}\n","import { Injectable } from '@angular/core';\n\nlet idIndex = 0;\n\n/**\n * Generates unique IDs to be used with HTML elements.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyIdService {\n public generateId(): string {\n idIndex++;\n\n // Include timestamp and an incrementing index to guarantee unique IDs both during the application\n // lifecycle as well as across sessions, since browsers will try to apply autocomplete options to\n // elements with the same ID across sessions.\n return `sky-id-gen__${new Date().getTime()}__${idIndex}`;\n }\n}\n","import { Directive, ElementRef, Renderer2 } from '@angular/core';\n\nimport { SkyIdService } from './id.service';\n\n/**\n * Sets the element's `id` attribute to a unique ID. To reference this unique ID on other elements,\n * such as in a `label` element's `for` attribute, assign this directive to a template reference\n * variable, then use its `id` property.\n */\n@Directive({\n selector: '[skyId]',\n exportAs: 'skyId',\n standalone: false,\n})\nexport class SkyIdDirective {\n public get id(): string {\n return this.#_id;\n }\n\n #_id: string;\n\n constructor(elRef: ElementRef, renderer: Renderer2, idSvc: SkyIdService) {\n // Generate and apply the ID before the template is rendered\n // to avoid a changed-after-checked error.\n const id = idSvc.generateId();\n\n renderer.setAttribute(elRef.nativeElement, 'id', id);\n\n this.#_id = id;\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyIdDirective } from './id.directive';\n\n@NgModule({\n declarations: [SkyIdDirective],\n exports: [SkyIdDirective],\n})\nexport class SkyIdModule {}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { SkyLayoutHostForChildArgs } from './layout-host-for-child-args';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyLayoutHostService {\n public get hostLayoutForChild(): Observable<SkyLayoutHostForChildArgs> {\n return this.#hostLayoutForChildObs;\n }\n\n #hostLayoutForChild = new Subject<SkyLayoutHostForChildArgs>();\n #hostLayoutForChildObs = this.#hostLayoutForChild.asObservable();\n\n public setHostLayoutForChild(layout: SkyLayoutHostForChildArgs): void {\n this.#hostLayoutForChild.next(layout);\n }\n}\n","import {\n Directive,\n ElementRef,\n RendererFactory2,\n effect,\n inject,\n input,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { SkyLayoutHostService } from './layout-host.service';\n\nconst LAYOUT_FOR_CHILD_CLASS_PREFIX = 'sky-layout-host-for-child-';\nconst LAYOUT_CLASS_PREFIX = 'sky-layout-host-';\n\n/**\n * @internal\n */\n@Directive({\n selector: '[skyLayoutHost]',\n standalone: true,\n providers: [SkyLayoutHostService],\n})\nexport class SkyLayoutHostDirective<T = 'none' | 'fit'> {\n readonly #elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly #layoutForChild = toSignal(\n inject(SkyLayoutHostService).hostLayoutForChild,\n );\n readonly #renderer = inject(RendererFactory2).createRenderer(null, null);\n\n public readonly layout = input<T>();\n\n constructor() {\n effect(() => {\n const cssClass = [`${LAYOUT_CLASS_PREFIX}${this.layout() ?? 'none'}`];\n const layoutForChild = this.#layoutForChild()?.layout;\n if (layoutForChild) {\n cssClass.push(`${LAYOUT_FOR_CHILD_CLASS_PREFIX}${layoutForChild}`);\n }\n const classList = this.#elementRef.nativeElement.classList.values();\n for (const className of classList) {\n if (\n className.startsWith(LAYOUT_CLASS_PREFIX) &&\n !cssClass.includes(className)\n ) {\n this.#renderer.removeClass(this.#elementRef.nativeElement, className);\n }\n }\n for (const className of cssClass) {\n this.#renderer.addClass(this.#elementRef.nativeElement, className);\n }\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, NgZone, OnDestroy, inject } from '@angular/core';\n\nimport { ReplaySubject } from 'rxjs';\n\nimport { SkyIdService } from '../id/id.service';\n\nimport { SkyLiveAnnouncerArgs } from './types/live-announcer-args';\n\n/**\n * Allows for announcing messages to screen reader users through the use of a common `aria-live` element.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyLiveAnnouncerService implements OnDestroy {\n public announcerElementChanged = new ReplaySubject<HTMLElement | undefined>(\n 1,\n );\n\n #announcerElement: HTMLElement | undefined;\n #document = inject(DOCUMENT);\n #idService = inject(SkyIdService);\n #durationTimeout: number | undefined;\n #ngZone = inject(NgZone);\n\n constructor() {\n this.#announcerElement = this.#createLiveElement();\n this.announcerElementChanged.next(this.#announcerElement);\n }\n\n /**\n * Announces a message to screen readers.\n * @param message Message to be announced to the screen reader.\n * @param args Options for the announcement of the message.\n */\n public announce(message: string, args?: SkyLiveAnnouncerArgs): void {\n /* safety-check */\n /* istanbul ignore if */\n if (!this.#announcerElement) {\n this.#announcerElement = this.#createLiveElement();\n this.announcerElementChanged.next(this.#announcerElement);\n }\n\n const politeness = args?.politeness ?? 'polite';\n this.#announcerElement.setAttribute('aria-live', politeness);\n\n this.clear();\n clearTimeout(this.#durationTimeout);\n\n this.#announcerElement.textContent = message;\n this.#ngZone.runOutsideAngular(() => {\n this.#durationTimeout = setTimeout(\n () => this.clear(),\n args?.duration ?? this.#calculateDefaultDurationFromString(message),\n ) as unknown as number;\n });\n }\n\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n public clear(): void {\n if (this.#announcerElement) {\n this.#announcerElement.textContent = '';\n }\n }\n\n /**\n * @internal\n */\n public ngOnDestroy(): void {\n this.#announcerElement?.remove();\n this.#announcerElement = undefined;\n this.announcerElementChanged.next(undefined);\n clearTimeout(this.#durationTimeout);\n }\n\n #calculateDefaultDurationFromString(message: string): number {\n // Research suggests normal WPM is 110 for english. Lowering here to be conservative.\n const baseWordsPerMinute = 80;\n const minuteInMilliseconds = 60000;\n const numberOfWords = message.split(' ').length;\n\n const baseTime =\n (numberOfWords / baseWordsPerMinute) * minuteInMilliseconds;\n\n // Add 50% to time to account for exceptionally slow screen reader settings and/or speech settings that leave long pauses between words.\n return baseTime * 1.5;\n }\n\n #createLiveElement(): HTMLElement {\n const elementClass = 'sky-live-announcer-element';\n const previousElements = Array.from<Element>(\n this.#document.getElementsByClassName(elementClass),\n );\n const liveEl = this.#document.createElement('div');\n\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (const previousElement of previousElements) {\n previousElement.remove();\n }\n\n liveEl.classList.add(elementClass);\n liveEl.classList.add('sky-screen-reader-only');\n\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n liveEl.id = this.#idService.generateId();\n\n this.#document.body.appendChild(liveEl);\n\n return liveEl;\n }\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyLogService` no longer needs the `SkyLogModule`.\n * The `SkyLogModule` can be removed from your project.\n */\n@NgModule({})\nexport class SkyLogModule {}\n","/**\n * @internal\n */\nexport enum SkyLogLevel {\n Info = 1,\n Warn = 2,\n Error = 3,\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyLogLevel } from './log-level';\n\n/**\n * @internal\n */\nexport const SKY_LOG_LEVEL = new InjectionToken<SkyLogLevel>('SkyLogLevel');\n","import { Inject, Injectable, Optional } from '@angular/core';\n\nimport { SkyAppFormat } from '../format/app-format';\n\nimport { SkyLogDeprecatedArgs } from './types/log-deprecation-args';\nimport { SkyLogLevel } from './types/log-level';\nimport { SKY_LOG_LEVEL } from './types/log-level-token';\n\nconst previousWarnings = new Set<string>();\n\n/**\n * Logs information to the console based on the application's log level as\n * provided by the `SKY_LOG_LEVEL` injection token. If no token is provided,\n * only `error` logs will be shown.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyLogService {\n #applicationLogLevel: SkyLogLevel;\n\n #formatter: SkyAppFormat;\n\n constructor(\n formatter: SkyAppFormat,\n @Optional()\n @Inject(SKY_LOG_LEVEL)\n applicationLogLevel?: SkyLogLevel,\n ) {\n this.#formatter = formatter;\n this.#applicationLogLevel = applicationLogLevel ?? SkyLogLevel.Error;\n }\n\n /**\n * Clears previously-logged messages. Primarily used for unit\n * testing this service.\n */\n public static clearPreviousLogs(): void {\n previousWarnings.clear();\n }\n\n /**\n * Logs a deprecation warning for a class, property, function, etc. This will\n * be logged as a console warning unless a different log level is given in the\n * `args` parameter.\n * @param name The name of the deprecated class, property, function, etc.\n * @param args Information about the deprecation and replacement recommendations.\n */\n public deprecated(name: string, args?: SkyLogDeprecatedArgs): void {\n const logLevel = args?.logLevel ?? SkyLogLevel.Warn;\n\n name = this.#convertStringToCode(name);\n\n if (this.#canLog(logLevel)) {\n const messageParts = [];\n\n if (args?.deprecationMajorVersion) {\n messageParts.push(\n this.#formatter.formatText(\n '{0} is deprecated starting in SKY UX {1}.',\n name,\n args.deprecationMajorVersion.toLocaleString(),\n ),\n );\n } else {\n messageParts.push(\n this.#formatter.formatText('{0} is deprecated.', name),\n );\n }\n\n if (args?.removalMajorVersion) {\n messageParts.push(\n this.#formatter.formatText(\n 'We will remove it in version {0}.',\n args.removalMajorVersion.toLocaleString(),\n ),\n );\n } else {\n messageParts.push('We will remove it in a future major version.');\n }\n\n if (args?.replacementRecommendation) {\n messageParts.push(args.replacementRecommendation);\n }\n\n if (args?.moreInfoUrl) {\n messageParts.push(\n this.#formatter.formatText(\n 'For more information, see {0}.',\n args.moreInfoUrl,\n ),\n );\n }\n\n this.#logBasedOnLevel(logLevel, messageParts.join(' '));\n }\n }\n\n /**\n * Logs a console error if the application's log level is `SkyLogLevel.Error`.\n * @param message The error message\n * @param params Optional parameters for the error message.\n */\n public error(message: string, params?: unknown[]): void {\n if (this.#canLog(SkyLogLevel.Error)) {\n this.#logWithParams('error', message, params);\n }\n }\n\n /**\n * Logs console information if the application's log level is `SkyLogLevel.Info` or above.\n * @param message The informational message\n * @param params Optional parameters for the informational message.\n */\n public info(message: string, params?: unknown[]): void {\n if (this.#canLog(SkyLogLevel.Info)) {\n this.#logWithParams('log', message, params);\n }\n }\n\n /**\n * Logs a console warning if the application's log level is `SkyLogLevel.Warn` or above.\n * @param message The warning message\n * @param params Optional parameters for the warning message.\n */\n public warn(message: string, params?: unknown[]): void {\n if (this.#canLog(SkyLogLevel.Warn)) {\n const messageKey = this.#buildMessageKey(message, params);\n\n // Only log each warning once per application instance to avoid drowning out other\n // important messages in the console.\n if (!previousWarnings.has(message)) {\n this.#logWithParams('warn', message, params);\n previousWarnings.add(messageKey);\n }\n }\n }\n\n #convertStringToCode(typeString: string): string {\n if (typeString.charAt(0) !== '`' && typeString.charAt(-1) !== '`') {\n typeString = '`' + typeString + '`';\n }\n return typeString;\n }\n\n #canLog(intendedLogLevel: SkyLogLevel): boolean {\n return intendedLogLevel >= this.#applicationLogLevel;\n }\n\n #logBasedOnLevel(\n logLevel: SkyLogLevel,\n message: string,\n params?: unknown[],\n ): void {\n switch (logLevel) {\n case SkyLogLevel.Info:\n this.info(message, params);\n break;\n case SkyLogLevel.Warn:\n this.warn(message, params);\n break;\n case SkyLogLevel.Error:\n this.error(message, params);\n break;\n }\n }\n\n #logWithParams(\n logMethod: 'log' | 'warn' | 'error',\n message: string,\n params: unknown[] | undefined,\n ): void {\n if (params) {\n console[logMethod](message, ...params);\n } else {\n console[logMethod](message);\n }\n }\n\n #buildMessageKey(message: string, params?: unknown[]): string {\n let key = message;\n\n if (params?.length) {\n key = `${key} ${params.join(' ')}`;\n }\n\n return key;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyBreakpointObserver } from './breakpoint-observer';\n\n/**\n * Used to override a breakpoint observer for specific execution contexts.\n * @internal\n */\nexport const SKY_BREAKPOINT_OBSERVER =\n new InjectionToken<SkyBreakpointObserver>('SKY_BREAKPOINT_OBSERVER');\n","import {\n ApplicationRef,\n ElementRef,\n Injectable,\n NgZone,\n OnDestroy,\n inject,\n} from '@angular/core';\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n distinctUntilChanged,\n filter,\n map,\n observeOn,\n shareReplay,\n takeUntil,\n} from 'rxjs';\n\nimport { SkyAppWindowRef } from '../window/window-ref';\n\nconst errorTest =\n /ResizeObserver loop completed with undelivered notifications/i;\nlet errorLogRegistered = false;\nlet originalOnError:\n | ((event: string | Event) => boolean | undefined)\n | undefined = undefined;\n\nconst errorHandler = (event: ErrorEvent): boolean | undefined => {\n if (errorTest.test(event.message)) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n return false;\n }\n return undefined;\n};\n\nconst onError = (event: string | ErrorEvent): boolean | undefined => {\n const message = typeof event === 'string' ? event : event.message;\n // This is necessary to prevent the test runner from failing on errors, but challenging to reliably test.\n /* istanbul ignore next */\n if (errorTest.test(message)) {\n if (event instanceof ErrorEvent) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n }\n return false;\n }\n return originalOnError?.call(window, event);\n};\n\n/**\n * Service to create rxjs observables for changes to the content box dimensions of elements.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyResizeObserverService implements OnDestroy {\n readonly #ngUnsubscribe = new Subject<void>();\n readonly #zone = inject(NgZone);\n readonly #resizeObserver = this.#zone.runOutsideAngular(\n () =>\n new ResizeObserver((entries) =>\n this.#zone.run(() => this.#resizeSubject.next(entries)),\n ),\n );\n readonly #resizeSubject = new Subject<ResizeObserverEntry[]>();\n readonly #tracking = new Map<Element, Observable<ResizeObserverEntry>>();\n readonly #window = inject(SkyAppWindowRef);\n\n constructor() {\n this.#expectWindowError();\n // Because the resize observer is a native browser API, it does not shut down\n // synchronously when the service is destroyed. Leave the error handling\n // accommodation in place until the application is destroyed. This also works\n // for the test runner.\n inject(ApplicationRef).onDestroy(() => this.#resetWindowError());\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#resizeObserver.disconnect();\n }\n\n /**\n * Create rxjs observable to get size changes for an element ref.\n */\n public observe(element: ElementRef): Observable<ResizeObserverEntry> {\n const checkTracking = this.#tracking.has(element.nativeElement);\n\n if (!checkTracking) {\n this.#tracking.set(\n element.nativeElement,\n new Observable<ResizeObserverEntry[]>((observer) => {\n const subscription = this.#resizeSubject.subscribe(observer);\n this.#resizeObserver?.observe(element.nativeElement);\n return (): void => {\n this.#resizeObserver?.unobserve(element.nativeElement);\n subscription.unsubscribe();\n this.#tracking.delete(element.nativeElement);\n };\n }).pipe(\n filter(Boolean),\n filter((entries) =>\n entries.some((entry) => entry.target === element.nativeElement),\n ),\n map(\n (entries) =>\n entries.find(\n (entry) => entry.target === element.nativeElement,\n ) as ResizeObserverEntry,\n ),\n // Ignore subpixel changes.\n distinctUntilChanged(\n (a, b) =>\n Math.round(a.contentRect.width) ===\n Math.round(b.contentRect.width) &&\n Math.round(a.contentRect.height) ===\n Math.round(b.contentRect.height),\n ),\n // Emit the last value for late subscribers. Track references so it\n // un-observes when all subscribers are gone.\n shareReplay({ bufferSize: 1, refCount: true }),\n // Only emit prior to an animation frame to prevent layout thrashing.\n observeOn(animationFrameScheduler),\n takeUntil(this.#ngUnsubscribe),\n ),\n );\n }\n\n return this.#tracking.get(\n element.nativeElement,\n ) as Observable<ResizeObserverEntry>;\n }\n\n #expectWindowError(): void {\n if (!errorLogRegistered) {\n errorLogRegistered = true;\n // ResizeObserver throws an error when it is disconnected while it is\n // still observing an element. When an element is no longer observed, this\n // is not a concern.\n this.#zone.runOutsideAngular(() =>\n this.#window.nativeWindow.addEventListener('error', errorHandler),\n );\n }\n if (this.#window.nativeWindow.onerror !== onError) {\n originalOnError = this.#window.nativeWindow.onerror;\n this.#window.nativeWindow.onerror = onError;\n }\n }\n\n #resetWindowError(): void {\n this.#window.nativeWindow.removeEventListener('error', errorHandler);\n if (originalOnError) {\n this.#window.nativeWindow.onerror = originalOnError;\n originalOnError = undefined;\n }\n errorLogRegistered = false;\n }\n}\n","import {\n ElementRef,\n Injectable,\n OnDestroy,\n afterNextRender,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyResizeObserverService } from '../resize-observer/resize-observer.service';\n\nimport { SkyBreakpoint } from './breakpoint';\nimport { SkyBreakpointObserver } from './breakpoint-observer';\n\nconst QUERIES: [SkyBreakpoint, (width: number) => boolean][] = [\n ['xs', (width): boolean => width > 0 && width <= 767],\n ['sm', (width): boolean => width > 767 && width <= 991],\n ['md', (width): boolean => width > 991 && width <= 1199],\n ['lg', (width): boolean => width > 1199],\n];\n\n/**\n * Emits when the width of the host container changes.\n * @internal\n */\n@Injectable()\nexport class SkyContainerBreakpointObserver\n implements OnDestroy, SkyBreakpointObserver\n{\n readonly #elementRef = inject(ElementRef);\n readonly #resizeObserver = inject(SkyResizeObserverService);\n\n public get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#breakpointChangeObs;\n }\n\n #breakpoint: SkyBreakpoint | undefined;\n readonly #breakpointChange = new ReplaySubject<SkyBreakpoint>(1);\n readonly #breakpointChangeObs = this.#breakpointChange.asObservable();\n\n constructor() {\n this.#resizeObserver\n .observe(this.#elementRef)\n .pipe(takeUntilDestroyed())\n .subscribe((entry) => {\n this.#checkBreakpoint(entry.contentRect.width);\n });\n\n afterNextRender(() => {\n this.#checkWidth();\n });\n }\n\n public ngOnDestroy(): void {\n this.destroy();\n }\n\n public destroy(): void {\n this.#breakpointChange.complete();\n }\n\n #checkBreakpoint(width: number): void {\n for (const [breakpoint, check] of QUERIES) {\n if (breakpoint !== this.#breakpoint && check(width)) {\n this.#breakpoint = breakpoint;\n this.#notifyBreakpointChange(breakpoint);\n break;\n }\n }\n }\n\n #checkWidth(): void {\n const width =\n (this.#elementRef.nativeElement as HTMLElement).offsetWidth ?? 0;\n\n this.#checkBreakpoint(width);\n }\n\n #notifyBreakpointChange(breakpoint: SkyBreakpoint): void {\n this.#breakpointChange.next(breakpoint);\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyBreakpoint } from './breakpoint';\nimport { SkyBreakpointObserver } from './breakpoint-observer';\n\nconst QUERIES = new Map<SkyBreakpoint, string>([\n ['xs', '(max-width: 767px)'],\n ['sm', '(min-width: 768px) and (max-width: 991px)'],\n ['md', '(min-width: 992px) and (max-width: 1199px)'],\n ['lg', '(min-width: 1200px)'],\n]);\n\n/**\n * Emits when the viewport width changes.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyMediaBreakpointObserver\n implements OnDestroy, SkyBreakpointObserver\n{\n public get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#breakpointChangeObs;\n }\n\n readonly #breakpointChange = new ReplaySubject<SkyBreakpoint>(1);\n readonly #breakpointChangeObs = this.#breakpointChange.asObservable();\n\n #listeners = new Map<MediaQueryList, (evt: MediaQueryListEvent) => void>();\n\n constructor() {\n for (const [breakpoint, query] of QUERIES.entries()) {\n const mq = matchMedia(query);\n\n const listener = (evt: MediaQueryListEvent): void => {\n if (evt.matches) {\n this.#notifyBreakpointChange(breakpoint);\n }\n };\n\n mq.addEventListener('change', listener);\n\n if (mq.matches) {\n this.#notifyBreakpointChange(breakpoint);\n }\n\n this.#listeners.set(mq, listener);\n }\n }\n\n public ngOnDestroy(): void {\n this.destroy();\n }\n\n public destroy(): void {\n this.#breakpointChange.complete();\n\n for (const [query, listener] of this.#listeners.entries()) {\n query.removeEventListener('change', listener);\n }\n\n this.#listeners.clear();\n }\n\n #notifyBreakpointChange(breakpoint: SkyBreakpoint): void {\n this.#breakpointChange.next(breakpoint);\n }\n}\n","import { Injectable, NgZone, OnDestroy, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { Observable, Subscription, map } from 'rxjs';\n\nimport { SkyBreakpoint } from '../breakpoint-observer/breakpoint';\nimport { toSkyMediaBreakpoints } from '../breakpoint-observer/breakpoint-utils';\nimport { SkyMediaBreakpointObserver } from '../breakpoint-observer/media-breakpoint-observer';\n\nimport { SkyMediaBreakpoints } from './media-breakpoints';\nimport { SkyMediaQueryListener } from './media-query-listener';\n\nconst DEFAULT_BREAKPOINT = SkyMediaBreakpoints.md;\n\n/**\n * Utility used to subscribe to viewport and container breakpoint changes.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyMediaQueryService implements OnDestroy {\n readonly #breakpointObserver = inject(SkyMediaBreakpointObserver);\n\n /**\n * Emits when the breakpoint changes.\n */\n public get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#breakpointObserver.breakpointChange;\n }\n\n /**\n * The size for the `xs` breakpoint.\n * @default \"(max-width: 767px)\"\n */\n public static xs = '(max-width: 767px)';\n\n /**\n * The size for the `sm` breakpoint.\n * @default \"(min-width: 768px) and (max-width: 991px)\"\n */\n public static sm = '(min-width: 768px) and (max-width: 991px)';\n\n /**\n * The size for the `md` breakpoint.\n * @default \"(min-width: 992px) and (max-width: 1199px)\"\n */\n public static md = '(min-width: 992px) and (max-width: 1199px)';\n\n /**\n * The size for the `lg` breakpoint.\n * @default \"(min-width: 1200px)\"\n */\n public static lg = '(min-width: 1200px)';\n\n /**\n * Returns the current breakpoint.\n * @deprecated Subscribe to the `breakpointChange` observable instead.\n */\n public get current(): SkyMediaBreakpoints {\n return this.#currentBreakpoint();\n }\n\n #currentBreakpoint = toSignal(\n this.#breakpointObserver.breakpointChange.pipe(\n map((breakpoint) => toSkyMediaBreakpoints(breakpoint)),\n ),\n {\n initialValue: DEFAULT_BREAKPOINT,\n },\n );\n\n // Keep NgZone as a constructor param so that consumer mocks don't encounter typing errors.\n constructor(_zone?: NgZone) {}\n\n public ngOnDestroy(): void {\n this.destroy();\n }\n\n /**\n * @internal\n */\n public destroy(): void {\n this.#breakpointObserver.destroy();\n }\n\n /**\n * Subscribes to screen size changes.\n * @param listener Specifies a function that is called when breakpoints change.\n * @deprecated Subscribe to the `breakpointChange` observable instead.\n */\n public subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.#breakpointObserver.breakpointChange.subscribe({\n next: (breakpoint: SkyBreakpoint) => {\n listener(toSkyMediaBreakpoints(breakpoint));\n },\n });\n }\n}\n","import { Provider, Type, inject } from '@angular/core';\n\nimport { SkyMediaQueryService } from '../media-query/media-query.service';\n\nimport { SkyBreakpointObserver } from './breakpoint-observer';\nimport { SKY_BREAKPOINT_OBSERVER } from './breakpoint-observer.token';\nimport { SkyMediaBreakpointObserver } from './media-breakpoint-observer';\n\n/**\n * Overrides the default media breakpoint observer with the given observer.\n * @internal\n */\nexport function provideSkyBreakpointObserver(\n observer: Type<SkyBreakpointObserver>,\n): Provider[] {\n return [\n SkyMediaQueryService,\n observer,\n {\n provide: SkyMediaBreakpointObserver,\n useFactory(): SkyBreakpointObserver {\n return (\n // Yield to the injection token, if it's defined.\n inject(SKY_BREAKPOINT_OBSERVER, { optional: true }) ??\n inject(observer)\n );\n },\n },\n ];\n}\n","import { Directive, ElementRef, Injector, inject } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { SkyCoreAdapterService } from '../adapter-service/adapter.service';\nimport { SkyMediaQueryService } from '../media-query/media-query.service';\n\nimport { SkyBreakpoint } from './breakpoint';\nimport { SkyContainerBreakpointObserver } from './container-breakpoint-observer';\nimport { provideSkyBreakpointObserver } from './provide-breakpoint-observer';\n\n/**\n * Overrides the `SkyMediaQueryService` to emit breakpoint changes when the host\n * container is resized. This directive also adds SKY UX CSS classes to the\n * host element to allow for responsive styles.\n */\n@Directive({\n exportAs: 'skyResponsiveHost',\n providers: [provideSkyBreakpointObserver(SkyContainerBreakpointObserver)],\n selector: '[skyResponsiveHost]',\n standalone: true,\n})\nexport class SkyResponsiveHostDirective {\n readonly #injector = inject(Injector);\n readonly #mediaSvc = inject(SkyMediaQueryService);\n\n /**\n * Emits when the breakpoint changes.\n */\n public get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#mediaSvc.breakpointChange;\n }\n\n /**\n * The injector of the responsive host. Useful when displaying child components\n * via `ngTemplateOutlet`.\n * @example```\n * <my-container #responsiveHost=\"skyResponsiveHost\">\n * <ng-container\n * [ngTemplateOutlet]=\"myTemplate\"\n * [ngTemplateOutletInjector]=\"responsiveHost.injector\"\n * />\n * </my-container>\n * ```\n */\n public get injector(): Injector {\n return this.#injector;\n }\n\n constructor() {\n const adapter = inject(SkyCoreAdapterService);\n const elementRef = inject(ElementRef);\n\n this.breakpointChange.subscribe((breakpoint) => {\n adapter.setResponsiveContainerClass(elementRef, breakpoint);\n });\n }\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyMediaQueryService` no longer needs the `SkyMediaQueryModule`.\n * The `SkyMediaQueryModule` can be removed from your project.\n */\n@NgModule({})\nexport class SkyMediaQueryModule {}\n","/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-core' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n skyux_numeric_billions_symbol: { message: 'B' },\n skyux_numeric_millions_symbol: { message: 'M' },\n skyux_numeric_thousands_symbol: { message: 'K' },\n skyux_numeric_trillions_symbol: { message: 'T' },\n },\n 'FR-CA': {\n skyux_numeric_billions_symbol: { message: 'G' },\n skyux_numeric_millions_symbol: { message: 'M' },\n skyux_numeric_thousands_symbol: { message: 'K' },\n skyux_numeric_trillions_symbol: { message: 'T' },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyCoreResourcesModule {}\n","import { SkyAppFormat } from '../format/app-format';\nimport { SkyLogService } from '../log/log.service';\n\n/**\n * Provides arguments for the number to format.\n */\nexport interface SkyNumericOptions {\n /**\n * Specifies the maximum number of digits after the decimal separator.\n */\n digits?: number;\n\n /**\n * Specifies how to format the number. Options are `currency` or `number`.\n */\n format?: string;\n\n /**\n * Specifies the format of the currency.\n */\n currencySign?: 'accounting' | 'standard';\n\n /**\n * Specifies the display of the currency. Defaults to 'symbol'.\n */\n currencyDisplay?: 'code' | 'symbol' | 'narrowSymbol' | 'name';\n\n /**\n * Specifies the ISO4217 currency code to use for currency formatting.\n */\n iso?: string;\n\n /**\n * Specifies the locale code to use when formatting.\n */\n locale?: string;\n\n /**\n * Specifies the minimum number of digits after the decimal separator. This property only applies\n * when the `truncate` property is set to `false`. If `digits` specifies a maximum number of\n * digits, then `minDigits` must be less than that value.\n */\n minDigits?: number;\n\n /**\n * Indicates whether to shorten numbers to rounded numbers and abbreviation characters\n * such as K for thousands, M for millions, B for billions, and T for trillions.\n */\n truncate?: boolean;\n\n /**\n * Specifies the minimum value at which numbers are shortened to rounded numbers and abbreviation characters. Values less than `1000` are not truncated.\n */\n truncateAfter?: number;\n}\n\n/**\n * Provides arguments for the number to format.\n * @deprecated Use the `SkyNumericOptions` interface instead.\n * @internal\n */\nexport class NumericOptions implements SkyNumericOptions {\n public digits?: number = 1;\n\n public format?: string = 'number';\n\n public currencySign?: 'accounting' | 'standard' = 'standard';\n\n public currencyDisplay?: 'code' | 'symbol' | 'narrowSymbol' | 'name';\n\n public iso?: string = 'USD';\n\n public locale?: string;\n\n public minDigits?: number;\n\n public truncate?: boolean = true;\n\n public truncateAfter?: number = 1000;\n\n constructor() {\n const logService = new SkyLogService(new SkyAppFormat());\n\n logService.deprecated('NumericOptions', {\n deprecationMajorVersion: 7,\n moreInfoUrl: 'https://developer.blackbaud.com/skyux/components/numeric',\n replacementRecommendation:\n 'Use the `SkyNumericOptions` interface instead.',\n });\n }\n}\n","/* eslint-disable eqeqeq */\n// This file is mostly ported from the Angular 4.x NumberPipe in order to maintain the old\n// behavior of using the `Intl` API for formatting numbers rather than having to register every\n// supported locale.\n// https://github.com/angular/angular/blob/4.4.x/packages/common/src/pipes/number_pipe.ts\nimport { SkyIntlNumberFormatStyle, SkyIntlNumberFormatter } from '@skyux/i18n';\n\nfunction isNumeric(value: any): boolean {\n return !isNaN(value - parseFloat(value));\n}\n\nfunction parseIntAutoRadix(text: string): number {\n const result: number = parseInt(text, 10);\n\n /* istanbul ignore next */\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n\n return result;\n}\n\nexport class SkyNumberFormatUtility {\n private static _NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\n\n public static formatNumber(\n locale: string,\n value: number | string,\n style: SkyIntlNumberFormatStyle,\n digits?: string | null,\n currency: string | null = null,\n currencyDisplay: 'code' | 'symbol' | 'narrowSymbol' | 'name' = 'code',\n currencySign?: 'accounting' | 'standard',\n ): string | null {\n if (value == null) {\n return null;\n }\n\n // Convert strings to numbers\n value = typeof value === 'string' && isNumeric(value) ? +value : value;\n if (typeof value !== 'number') {\n throw Error(`SkyInvalidPipeArgument: '${value}'`);\n }\n\n let minInt: number | undefined = undefined;\n let minFraction: number | undefined = undefined;\n let maxFraction: number | undefined = undefined;\n if (style !== SkyIntlNumberFormatStyle.Currency) {\n // rely on Intl default for currency\n minInt = 1;\n minFraction = 0;\n maxFraction = 3;\n }\n\n if (digits) {\n const parts = digits.match(this._NUMBER_FORMAT_REGEXP);\n\n if (parts === null) {\n throw new Error(`${digits} is not a valid digit info for number pipes`);\n }\n\n /* istanbul ignore else */\n if (parts[1] != null) {\n // min integer digits\n minInt = parseIntAutoRadix(parts[1]);\n }\n\n /* istanbul ignore else */\n if (parts[3] != null) {\n // min fraction digits\n minFraction = parseIntAutoRadix(parts[3]);\n }\n\n /* istanbul ignore else */\n if (parts[5] != null) {\n // max fraction digits\n maxFraction = parseIntAutoRadix(parts[5]);\n }\n }\n\n return SkyIntlNumberFormatter.format(value as number, locale, style, {\n minimumIntegerDigits: minInt,\n minimumFractionDigits: minFraction,\n maximumFractionDigits: maxFraction,\n currency: currency,\n currencyDisplay: currencyDisplay,\n currencySign: currencySign,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SkyIntlNumberFormatStyle, SkyLibResourcesService } from '@skyux/i18n';\n\nimport { SkyNumberFormatUtility } from '../shared/number-format/number-format-utility';\n\nimport { SkyNumericSymbol } from './numeric-symbol';\nimport { SkyNumericOptions } from './numeric.options';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyNumericService {\n /**\n * The browser's current locale.\n * @internal\n */\n public currentLocale = 'en-US';\n\n /**\n * @internal\n */\n public shortSymbol = '';\n\n #resourcesSvc: SkyLibResourcesService;\n\n #symbolIndex: SkyNumericSymbol[];\n\n constructor(resourcesSvc: SkyLibResourcesService) {\n this.#resourcesSvc = resourcesSvc;\n\n this.#symbolIndex = [\n { value: 1e12, label: this.#getSymbol('skyux_numeric_trillions_symbol') },\n { value: 1e9, label: this.#getSymbol('skyux_numeric_billions_symbol') },\n { value: 1e6, label: this.#getSymbol('skyux_numeric_millions_symbol') },\n { value: 1e3, label: this.#getSymbol('skyux_numeric_thousands_symbol') },\n ];\n }\n\n /**\n * Formats a number based on the provided options.\n * @param value The number to format.\n * @param options Format options.\n */\n public formatNumber(\n value: number | undefined | null,\n options: SkyNumericOptions,\n ): string {\n if (value === undefined || value === null || isNaN(value)) {\n return '';\n }\n\n const numericOptions: SkyNumericOptions = {\n digits: 0,\n format: 'number',\n currencySign: 'standard',\n iso: 'USD',\n truncateAfter: 1000,\n ...options,\n };\n\n const decimalPlaceRegExp = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n const locale = numericOptions.locale || this.currentLocale;\n const digits = numericOptions.digits || 0;\n\n // Get the symbol for the number after rounding, since rounding could push the number\n // into a different symbol range.\n let roundedNumber = this.#roundNumber(value, digits);\n const roundedNumberAbs = Math.abs(roundedNumber);\n\n let suffix = '';\n\n for (let i = 0; i < this.#symbolIndex.length; i++) {\n let symbol = this.#symbolIndex[i];\n\n if (\n numericOptions.truncate &&\n numericOptions.truncateAfter !== undefined &&\n roundedNumberAbs >= numericOptions.truncateAfter &&\n roundedNumberAbs >= symbol.value\n ) {\n roundedNumber = this.#roundNumber(value / symbol.value, digits);\n\n if (Math.abs(roundedNumber) === 1000 && i > 0) {\n // Rounding caused the number to cross into the range of the next symbol.\n symbol = this.#symbolIndex[i - 1];\n roundedNumber /= 1000;\n }\n\n suffix = symbol.label;\n\n break;\n }\n }\n\n let output: string =\n roundedNumber.toString().replace(decimalPlaceRegExp, '$1') + suffix;\n\n this.#storeShortenSymbol(output);\n\n let digitsFormatted: string | undefined;\n let isDecimal = false;\n\n // Checks the string entered for format. Using toLowerCase to ignore case.\n switch (numericOptions.format?.toLowerCase()) {\n // In a case where a decimal value was not shortened and\n // the digit input is 2 or higher, it forces 2 digits.\n // For example, this prevents a value like $15.50 from displaying as $15.5.\n // Note: This will need to be reviewed if we support currencies with\n // three decimal digits.\n case 'currency':\n isDecimal = value % 1 !== 0;\n\n if (numericOptions.minDigits) {\n digitsFormatted = `1.${numericOptions.minDigits}-${digits}`;\n } else if (isDecimal && digits >= 2) {\n digitsFormatted = `1.2-${digits}`;\n } else {\n digitsFormatted = `1.0-${digits}`;\n }\n\n output = SkyNumberFormatUtility.formatNumber(\n locale,\n parseFloat(output),\n SkyIntlNumberFormatStyle.Currency,\n digitsFormatted,\n numericOptions.iso,\n numericOptions.currencyDisplay ?? 'symbol',\n numericOptions.currencySign,\n ) as string;\n // ^^^^^^ Result can't be null since the sanitized input is always a number.\n break;\n\n // The following is a catch-all to ensure that if\n // anything but currency (or a future option) are entered,\n // it will be treated like a number.\n default:\n // Ensures localization of the number to ensure comma and\n // decimal separator\n if (numericOptions.minDigits) {\n digitsFormatted = `1.${numericOptions.minDigits}-${digits}`;\n } else if (numericOptions.truncate) {\n digitsFormatted = `1.0-${digits}`;\n } else {\n digitsFormatted = `1.${digits}-${digits}`;\n }\n\n output = SkyNumberFormatUtility.formatNumber(\n locale,\n parseFloat(output),\n SkyIntlNumberFormatStyle.Decimal,\n digitsFormatted,\n ) as string;\n // ^^^^^^ Result can't be null since the sanitized input is always a number.\n break;\n }\n\n if (numericOptions.truncate) {\n output = this.#replaceShortenSymbol(output);\n }\n\n return output;\n }\n\n /**\n * Rounds a given number\n *\n * JS's limitation - numbers bigger than Number.MIN_SAFE_INTEGER or Number.MAX_SAFE_INTEGER\n * are not guaranteed to be represented or rounded correctly\n * @param value - value to round\n * @param precision - what precision to round with, defaults to 0 decimal places\n */\n #roundNumber(value: number, precision: number): number {\n if (precision < 0) {\n throw new Error('SkyInvalidArgument: precision must be >= 0');\n }\n\n /* Sanity check - ignoring coverage but should not ignore if we make this method public */\n /* istanbul ignore next */\n if (isNaN(value) || value === null) {\n return 0;\n }\n\n const scaledValue: number = this.#scaleNumberByPowerOfTen(\n value,\n precision,\n true,\n );\n const scaledRoundedValue: number = Math.round(scaledValue);\n const unscaledRoundedValue: number = this.#scaleNumberByPowerOfTen(\n scaledRoundedValue,\n precision,\n false,\n );\n\n return unscaledRoundedValue;\n }\n\n /**\n * Scales a given number by a power of 10\n * @param value - value to scale\n * @param scalar - 10^scalar\n * @param scaleUp - whether to increase or decrease the value\n */\n #scaleNumberByPowerOfTen(\n value: number,\n scalar: number,\n scaleUp: boolean,\n ): number {\n const valueStr: string = value.toString().toLowerCase();\n const isExponentFormat: boolean = valueStr.includes('e');\n\n if (isExponentFormat) {\n const [base, exp] = valueStr.split('e');\n const newExp = scaleUp ? Number(exp) + scalar : Number(exp) - scalar;\n return Number(`${base}e${newExp}`);\n } else {\n const e = scaleUp ? 'e' : 'e-';\n return Number(`${value}${e}${scalar}`);\n }\n }\n\n /**\n * Stores the symbol added from shortening to reapply later.\n * @param value The string to derive the shorten symbol from.\n */\n #storeShortenSymbol(value: string): void {\n const symbols: string[] = this.#symbolIndex.map((s) => s.label);\n const regexp = new RegExp(symbols.join('|'), 'ig');\n const match = value.match(regexp);\n this.shortSymbol = match ? match.toString() : '';\n }\n\n /**\n * Must have previously called storeShortenSymbol to have something to replace.\n * Finds the last number in the formatted number, gets the index of the position\n * after that character and re-inserts the symbol.\n * Works regardless of currency symbol position.\n * @param value The string to modify.\n */\n #replaceShortenSymbol(value: string): string {\n const result = /(\\d)(?!.*\\d)/g.exec(value);\n /*istanbul ignore else*/\n if (result) {\n const pos = result.index + result.length;\n const output =\n value.substring(0, pos) + this.shortSymbol + value.substring(pos);\n\n return output;\n } else {\n return value;\n }\n }\n\n #getSymbol(key: string): string {\n // TODO: Need to implement the async `getString` method in a breaking change.\n return this.#resourcesSvc.getStringForLocale({ locale: 'en_US' }, key);\n }\n}\n","import {\n ChangeDetectorRef,\n OnDestroy,\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { SkyAppLocaleProvider } from '@skyux/i18n';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NumericOptions, SkyNumericOptions } from './numeric.options';\nimport { SkyNumericService } from './numeric.service';\n\n/**\n * Shortens numbers to rounded numbers and abbreviation characters such as K for thousands,\n * M for millions, B for billions, and T for trillions. The pipe also formats for currency.\n * Be sure you have a space after the two curly brackets opening the pipe and\n * a space before the two curly brackets closing the pipe or it will not work.\n */\n@Pipe({\n name: 'skyNumeric',\n pure: false,\n standalone: false,\n})\nexport class SkyNumericPipe implements PipeTransform, OnDestroy {\n #cacheKey: string | undefined;\n\n #changeDetector: ChangeDetectorRef;\n\n #formattedValue: string | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #numericSvc: SkyNumericService;\n\n #providerLocale: string | undefined;\n\n constructor(\n localeProvider: SkyAppLocaleProvider,\n numericSvc: SkyNumericService,\n changeDetector: ChangeDetectorRef,\n ) {\n this.#numericSvc = numericSvc;\n this.#changeDetector = changeDetector;\n\n localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#providerLocale = localeInfo.locale;\n numericSvc.currentLocale = this.#providerLocale;\n this.#changeDetector.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n /**\n * Formats a number based on the provided options.\n */\n public transform(\n value: number | undefined | null,\n config?: SkyNumericOptions,\n ): string {\n if (value === undefined || value === null || isNaN(value)) {\n return '';\n }\n\n const newCacheKey =\n (config ? JSON.stringify(config, Object.keys(config).sort()) : '') +\n `${value}_${config?.locale || this.#providerLocale}`;\n\n /* If the value and locale are the same as the last transform then return the previous value\n instead of reformatting. */\n if (this.#formattedValue && this.#cacheKey === newCacheKey) {\n return this.#formattedValue;\n }\n\n const options = new NumericOptions();\n\n // The default number of digits is `1`. When truncate is disabled, set digits\n // to `0` to avoid the unnecessary addition of `.0` at the end of the formatted number.\n if (config && config.truncate === false && config.digits === undefined) {\n options.digits = 0;\n }\n\n // If the minimum digits is less than the set maximum digits then throw an error\n if (\n config &&\n config.minDigits &&\n config.digits &&\n config.minDigits > config.digits\n ) {\n throw new Error(\n 'The `digits` property must be greater than or equal to the `minDigits` property',\n );\n\n // If there is a minimum digits given but not a maximum then default the maximum to the minimum\n } else if (config && config.minDigits && !config.digits) {\n options.digits = config.minDigits;\n }\n\n Object.assign(options, config);\n\n // Assign properties for proper result caching.\n this.#cacheKey = newCacheKey;\n\n this.#formattedValue = this.#numericSvc.formatNumber(value, options);\n return this.#formattedValue;\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyCoreResourcesModule } from '../shared/sky-core-resources.module';\n\nimport { SkyNumericPipe } from './numeric.pipe';\n\n@NgModule({\n declarations: [SkyNumericPipe],\n providers: [SkyNumericPipe],\n imports: [SkyCoreResourcesModule],\n exports: [SkyNumericPipe],\n})\nexport class SkyNumericModule {}\n","import { ComponentRef, StaticProvider, TemplateRef, Type } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { SkyOverlayConfig } from './overlay-config';\nimport { SkyOverlayComponent } from './overlay.component';\n\n/**\n * Represents a new overlay instance. It is used to manage the \"closed\" state of the overlay,\n * and access any public members on the appended content component instance.\n */\nexport class SkyOverlayInstance {\n /**\n * Emits when the overlay is clicked (but not its content).\n */\n public get backdropClick(): Observable<void> {\n return this.#backdropClickObs;\n }\n\n /**\n * Emits after the overlay is closed.\n */\n public get closed(): Observable<void> {\n return this.#closedObs;\n }\n\n public id: string;\n\n #backdropClick: Subject<void>;\n\n #backdropClickObs: Observable<void>;\n\n #closed: Subject<void>;\n\n #closedObs: Observable<void>;\n\n constructor(\n /**\n * The configuration for the overlay.\n */\n public readonly config: SkyOverlayConfig,\n public readonly componentRef: ComponentRef<SkyOverlayComponent>,\n ) {\n this.id = this.componentRef.instance.id;\n\n this.componentRef.instance.closed.subscribe(() => {\n this.#closed.next();\n this.#closed.complete();\n this.#backdropClick.complete();\n });\n\n this.componentRef.instance.backdropClick.subscribe(() => {\n this.#backdropClick.next();\n });\n\n this.#backdropClick = new Subject<void>();\n this.#closed = new Subject<void>();\n\n this.#backdropClickObs = this.#backdropClick.asObservable();\n this.#closedObs = this.#closed.asObservable();\n }\n\n /**\n * Creates and attaches a component to the overlay.\n * @param component The component to attach.\n * @param providers Custom providers to apply to the component.\n */\n public attachComponent<C>(\n component: Type<C>,\n providers?: StaticProvider[],\n ): C {\n const componentRef = this.componentRef.instance.attachComponent(\n component,\n providers,\n );\n return componentRef.instance;\n }\n\n /**\n * Attaches a `TemplateRef` to the overlay.\n * @param templateRef The `TemplateRef` to attach.\n * @param context The context to provide to the template.\n */\n public attachTemplate<T>(templateRef: TemplateRef<T>, context?: T): void {\n this.componentRef.instance.attachTemplate(templateRef, context);\n }\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyOverlayModule` is no longer needed and can be removed from your application.\n * @internal\n */\n@NgModule({})\nexport class SkyOverlayModule {}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyOverlayAdapterService {\n #renderer: Renderer2;\n\n #styleElement: HTMLStyleElement | undefined;\n\n constructor(rendererFactory: RendererFactory2) {\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n public restrictBodyScroll(): void {\n // Create a style element to avoid overwriting any existing inline body styles.\n const styleElement = this.#renderer.createElement('style');\n const textNode = this.#renderer.createText('body { overflow: hidden }');\n\n // Apply a `data-` attribute to make unit testing easier.\n this.#renderer.setAttribute(\n styleElement,\n 'data-test-selector',\n 'sky-overlay-restrict-scroll-styles',\n );\n\n this.#renderer.appendChild(styleElement, textNode);\n this.#renderer.appendChild(document.head, styleElement);\n\n if (this.#styleElement) {\n this.#destroyStyleElement();\n }\n\n this.#styleElement = styleElement;\n }\n\n public releaseBodyScroll(): void {\n this.#destroyStyleElement();\n }\n\n #destroyStyleElement(): void {\n /* istanbul ignore else */\n if (\n this.#styleElement &&\n this.#styleElement.parentElement === document.head\n ) {\n this.#renderer.removeChild(document.head, this.#styleElement);\n }\n }\n\n public addAriaHiddenToSiblings(\n overlayElementRef: ElementRef,\n ): Map<Element, string | null> {\n const overlayElement = overlayElementRef.nativeElement;\n const hostSiblings = overlayElement.parentElement.children;\n\n const siblingAriaHiddenCache = new Map<Element, string | null>();\n\n for (const element of hostSiblings) {\n if (\n element !== overlayElement &&\n !element.hasAttribute('aria-live') &&\n element.nodeName.toLowerCase() !== 'script' &&\n element.nodeName.toLowerCase() !== 'style'\n ) {\n // preserve previous aria-hidden status of elements outside of modal host\n siblingAriaHiddenCache.set(\n element,\n element.getAttribute('aria-hidden'),\n );\n element.setAttribute('aria-hidden', 'true');\n }\n }\n\n return siblingAriaHiddenCache;\n }\n\n public restoreAriaHiddenForSiblings(\n siblingAriaHiddenCache: Map<Element, string | null>,\n ): void {\n siblingAriaHiddenCache.forEach((previousValue, element) => {\n // if element had aria-hidden status prior, restore status\n if (element.parentElement) {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n }\n });\n\n siblingAriaHiddenCache.clear();\n }\n}\n","import { SkyOverlayConfig } from './overlay-config';\n\n/**\n * Contextual information for each overlay.\n * @internal\n */\nexport class SkyOverlayContext {\n constructor(public readonly config: SkyOverlayConfig) {}\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyStackingContext } from './stacking-context';\n\n/**\n * @internal\n */\nexport const SKY_STACKING_CONTEXT = new InjectionToken<SkyStackingContext>(\n 'SkyStackingContext',\n);\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n EnvironmentInjector,\n HostBinding,\n OnDestroy,\n OnInit,\n StaticProvider,\n TemplateRef,\n Type,\n ViewChild,\n ViewContainerRef,\n createEnvironmentInjector,\n inject,\n} from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\n\nimport {\n BehaviorSubject,\n Observable,\n ReplaySubject,\n Subject,\n Subscription,\n fromEvent,\n} from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyCoreAdapterService } from '../adapter-service/adapter.service';\nimport { SkyIdService } from '../id/id.service';\nimport { SKY_STACKING_CONTEXT } from '../stacking-context/stacking-context-token';\n\nimport { SkyOverlayAdapterService } from './overlay-adapter.service';\nimport { SkyOverlayConfig } from './overlay-config';\nimport { SkyOverlayContext } from './overlay-context';\nimport { SkyOverlayPosition } from './overlay-position';\n\nconst POSITION_DEFAULT: SkyOverlayPosition = 'fixed';\n\n/**\n * Omnibar is 1000.\n * See: https://github.com/blackbaud/auth-client/blob/master/src/omnibar/omnibar.ts#L139\n * ---\n * Modals start their z-indexes at 1040. However, each modal's z-index is a multiple of 10, so it\n * will be difficult to reliably predict a z-index that will always appear above all other\n * layers. Starting the z-index for overlays at a number much greater than modals will accommodate\n * the most reasonable of scenarios.\n * See: https://github.com/blackbaud/skyux-modals/blob/master/src/app/public/modules/modal/modal-host.service.ts#L22\n * (NOTE: It should be noted that modals do not use the overlay service, which is something we\n * should do in the near future to make sure z-indexes are predictable across all component\n * libraries.)\n */\nlet uniqueZIndex = 5000;\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-overlay',\n templateUrl: './overlay.component.html',\n styleUrls: ['./overlay.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n})\nexport class SkyOverlayComponent implements OnInit, OnDestroy {\n public wrapperClass = '';\n\n public get backdropClick(): Observable<void> {\n return this.#backdropClickObs;\n }\n\n public get closed(): Observable<void> {\n return this.#closedObs;\n }\n\n public enablePointerEvents = false;\n\n @HostBinding('id')\n public id: string;\n\n public showBackdrop = false;\n\n public zIndex = `${++uniqueZIndex}`;\n\n protected clipPath$ = new ReplaySubject<string | undefined>(1);\n\n protected position = POSITION_DEFAULT;\n\n @ViewChild('overlayContentRef', {\n read: ElementRef,\n static: true,\n })\n public overlayContentRef: ElementRef | undefined;\n\n @ViewChild('overlayRef', {\n read: ElementRef,\n static: true,\n })\n public overlayRef: ElementRef | undefined;\n\n @ViewChild('target', {\n read: ViewContainerRef,\n static: true,\n })\n public targetRef: ViewContainerRef | undefined;\n\n #backdropClick: Subject<void>;\n\n #backdropClickObs: Observable<void>;\n\n #closed: Subject<void>;\n\n #closedObs: Observable<void>;\n\n #ngUnsubscribe = new Subject<void>();\n\n #routerSubscription: Subscription | undefined;\n\n #siblingAriaHiddenCache = new Map<Element, string | null>();\n\n readonly #adapter = inject(SkyOverlayAdapterService);\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #context = inject(SkyOverlayContext);\n readonly #coreAdapter = inject(SkyCoreAdapterService);\n readonly #elementRef = inject(ElementRef);\n readonly #environmentInjector = inject(EnvironmentInjector);\n readonly #idSvc = inject(SkyIdService);\n readonly #router = inject(Router, { optional: true });\n\n constructor() {\n this.id = this.#idSvc.generateId();\n\n this.#backdropClick = new Subject<void>();\n this.#closed = new Subject<void>();\n\n this.#backdropClickObs = this.#backdropClick.asObservable();\n this.#closedObs = this.#closed.asObservable();\n }\n\n public ngOnInit(): void {\n this.#applyConfig(this.#context.config);\n\n setTimeout(() => {\n this.#addBackdropClickListener();\n });\n\n if (this.#context.config.closeOnNavigation) {\n this.#addRouteListener();\n }\n\n if (this.#context.config.hideOthersFromScreenReaders) {\n this.#siblingAriaHiddenCache = this.#adapter.addAriaHiddenToSiblings(\n this.#elementRef,\n );\n }\n }\n\n public ngOnDestroy(): void {\n this.#removeRouteListener();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n this.#backdropClick.complete();\n\n this.#adapter.restoreAriaHiddenForSiblings(this.#siblingAriaHiddenCache);\n\n this.#closed.next();\n this.#closed.complete();\n }\n\n public attachComponent<C>(\n component: Type<C>,\n providers: StaticProvider[] = [],\n ): ComponentRef<C> {\n /*istanbul ignore if: untestable*/\n if (!this.targetRef) {\n throw new Error(\n '[SkyOverlayComponent] Could not attach the component because the target element could not be found.',\n );\n }\n\n this.targetRef.clear();\n\n const environmentInjector = createEnvironmentInjector(\n [\n {\n provide: SKY_STACKING_CONTEXT,\n useValue: {\n zIndex: new BehaviorSubject(parseInt(this.zIndex, 10))\n .asObservable()\n .pipe(takeUntil(this.#ngUnsubscribe)),\n },\n },\n ...providers,\n ],\n this.#environmentInjector,\n );\n\n const componentRef = this.targetRef.createComponent<C>(component, {\n environmentInjector,\n });\n\n // Run an initial change detection cycle after the component has been created.\n componentRef.changeDetectorRef.detectChanges();\n\n return componentRef;\n }\n\n public attachTemplate<T>(\n templateRef: TemplateRef<T>,\n context: T,\n ): EmbeddedViewRef<T> {\n /*istanbul ignore if: untestable*/\n if (!this.targetRef) {\n throw new Error(\n '[SkyOverlayComponent] Could not attach the template because the target element could not be found.',\n );\n }\n\n this.targetRef.clear();\n\n return this.targetRef.createEmbeddedView(templateRef, context, {\n injector: this.#environmentInjector,\n });\n }\n\n public updateClipPath(clipPath: string | undefined): void {\n this.clipPath$.next(clipPath);\n }\n\n #applyConfig(config: SkyOverlayConfig): void {\n this.wrapperClass = config.wrapperClass || '';\n this.showBackdrop = !!config.showBackdrop;\n this.enablePointerEvents = !!config.enablePointerEvents;\n this.position = config.position || POSITION_DEFAULT;\n this.#changeDetector.markForCheck();\n }\n\n #addBackdropClickListener(): void {\n fromEvent<MouseEvent>(window.document, 'click')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event) => {\n if (event.target && this.overlayContentRef && this.overlayRef) {\n const isChild = this.overlayContentRef.nativeElement.contains(\n event.target,\n );\n\n const isAbove = this.#coreAdapter.isTargetAboveElement(\n event.target,\n this.overlayRef.nativeElement,\n );\n\n /* istanbul ignore else */\n if (!isChild && !isAbove) {\n this.#backdropClick.next();\n if (this.#context.config.enableClose) {\n this.#closed.next();\n }\n }\n }\n });\n }\n\n #addRouteListener(): void {\n /*istanbul ignore else*/\n if (this.#router) {\n this.#routerSubscription = this.#router.events.subscribe((event) => {\n /* istanbul ignore else */\n if (event instanceof NavigationStart) {\n this.#closed.next();\n }\n });\n }\n }\n\n #removeRouteListener(): void {\n if (this.#routerSubscription) {\n this.#routerSubscription.unsubscribe();\n this.#routerSubscription = undefined;\n }\n }\n}\n","<div\n #overlayRef\n [class]=\"'sky-overlay-position-' + position + ' ' + wrapperClass\"\n [style.z-index]=\"zIndex\"\n [style.clip-path]=\"clipPath$ | async\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n>\n <div #overlayContentRef class=\"sky-overlay-content\">\n <ng-template #target />\n </div>\n @if (showBackdrop) {\n <div class=\"sky-overlay-backdrop\"></div>\n }\n</div>\n","import {\n ApplicationRef,\n ComponentRef,\n EnvironmentInjector,\n Injectable,\n inject,\n} from '@angular/core';\n\nimport {\n SkyDynamicComponentLegacyService,\n SkyDynamicComponentService,\n} from '../dynamic-component/dynamic-component.service';\n\nimport { SkyOverlayAdapterService } from './overlay-adapter.service';\nimport { SkyOverlayConfig } from './overlay-config';\nimport { SkyOverlayContext } from './overlay-context';\nimport { SkyOverlayInstance } from './overlay-instance';\nimport { SkyOverlayComponent } from './overlay.component';\n\n/**\n * This service is used to create new overlays.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyOverlayService {\n private static overlays: SkyOverlayInstance[] = [];\n\n readonly #adapter = inject(SkyOverlayAdapterService);\n readonly #applicationRef = inject(ApplicationRef);\n readonly #dynamicComponentSvc: SkyDynamicComponentService;\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n constructor(dynamicComponentSvc: SkyDynamicComponentService) {\n this.#dynamicComponentSvc = dynamicComponentSvc;\n }\n\n /**\n * Creates an empty overlay. Use the returned `SkyOverlayInstance` to append content.\n * @param config Configuration for the overlay.\n */\n public create(config?: SkyOverlayConfig): SkyOverlayInstance {\n const settings = this.#prepareConfig(config);\n\n if (settings.enableScroll === false) {\n this.#adapter.restrictBodyScroll();\n }\n\n const componentRef = this.#createOverlay(settings);\n const instance = new SkyOverlayInstance(settings, componentRef);\n\n instance.closed.subscribe(() => {\n // Only execute the service's close method if the instance still exists.\n // This is needed to address a race condition if the deprecated instance.close method is used instead.\n if (SkyOverlayService.overlays.indexOf(instance) > -1) {\n this.close(instance);\n }\n });\n\n SkyOverlayService.overlays.push(instance);\n\n return instance;\n }\n\n /**\n * Closes (and destroys) an overlay instance.\n * @param instance The instance to close.\n */\n public close(instance: SkyOverlayInstance): void {\n this.#destroyOverlay(instance);\n this.#applicationRef.detachView(instance.componentRef.hostView);\n instance.componentRef.destroy();\n\n // In some cases, Angular keeps dynamically-generated component's nodes in the DOM during\n // unit tests. This can make querying difficult because the older DOM nodes still exist and\n // produce inconsistent results.\n // Angular Material's overlay appears to do the same thing:\n // https://github.com/angular/components/blob/master/src/cdk/portal/dom-portal-outlet.ts#L143-L145\n // (Ignoring coverage since this branch will only be hit by consumer unit tests.)\n const componentElement = instance.componentRef.location.nativeElement;\n /* istanbul ignore if */\n if (componentElement.parentNode !== null) {\n componentElement.parentNode.removeChild(componentElement);\n }\n }\n\n /**\n * Closes all overlay instances.\n */\n public closeAll(): void {\n // The `close` event handler for each instance alters the array's length asynchronously,\n // so the only \"safe\" index to call is zero.\n while (SkyOverlayService.overlays.length > 0) {\n this.close(SkyOverlayService.overlays[0]);\n }\n }\n\n #createOverlay(config: SkyOverlayConfig): ComponentRef<SkyOverlayComponent> {\n return this.#dynamicComponentSvc.createComponent(SkyOverlayComponent, {\n environmentInjector: this.#environmentInjector,\n providers: [\n {\n provide: SkyOverlayContext,\n useValue: new SkyOverlayContext(config),\n },\n ],\n });\n }\n\n #prepareConfig(config: SkyOverlayConfig = {}): SkyOverlayConfig {\n const defaults: SkyOverlayConfig = {\n closeOnNavigation: true,\n enableClose: false,\n enablePointerEvents: false,\n enableScroll: true,\n showBackdrop: false,\n wrapperClass: '',\n };\n\n return { ...defaults, ...config };\n }\n\n #destroyOverlay(instance: SkyOverlayInstance): void {\n SkyOverlayService.overlays.splice(\n SkyOverlayService.overlays.indexOf(instance),\n 1,\n );\n\n if (instance.config.enableScroll === false) {\n // Only release the body scroll if no other overlay wishes it to be disabled.\n const anotherOverlayDisablesScroll = SkyOverlayService.overlays.some(\n (o) => !o.config.enableScroll,\n );\n if (!anotherOverlayDisablesScroll) {\n this.#adapter.releaseBodyScroll();\n }\n }\n }\n}\n\n/**\n * This service is used to create new overlays.\n * @internal\n * @deprecated Use `SkyOverlayService` to open a standalone component instead.\n */\n@Injectable({\n providedIn: 'any',\n})\nexport class SkyOverlayLegacyService extends SkyOverlayService {\n /* istanbul ignore next */\n constructor(dynamicComponentSvc: SkyDynamicComponentLegacyService) {\n super(dynamicComponentSvc);\n }\n}\n","import { OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { SkyAppLocaleProvider, SkyIntlNumberFormatStyle } from '@skyux/i18n';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyNumberFormatUtility } from '../shared/number-format/number-format-utility';\n\n@Pipe({\n name: 'skyPercent',\n pure: false,\n standalone: false,\n})\nexport class SkyPercentPipe implements OnDestroy, PipeTransform {\n public get defaultLocale(): string {\n return this.#defaultLocale;\n }\n\n #defaultFormat = '1.0-2';\n\n #defaultLocale = 'en-US';\n\n #format: string | undefined;\n\n #formattedValue = '';\n\n #locale: string | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #value: string | undefined;\n\n constructor(localeProvider: SkyAppLocaleProvider) {\n localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#defaultLocale = localeInfo.locale;\n this.#updateFormattedValue();\n });\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public transform(value: string, format?: string, locale?: string): string {\n this.#value = value;\n this.#format = format;\n this.#locale = locale;\n\n this.#updateFormattedValue();\n\n return this.#formattedValue;\n }\n\n #updateFormattedValue(): void {\n const locale = this.#locale || this.#defaultLocale;\n const format = this.#format || this.#defaultFormat;\n\n this.#formattedValue = this.#value\n ? (SkyNumberFormatUtility.formatNumber(\n locale,\n this.#value,\n SkyIntlNumberFormatStyle.Percent,\n format,\n ) as string)\n : '';\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyCoreResourcesModule } from '../shared/sky-core-resources.module';\n\nimport { SkyPercentPipe } from './percent.pipe';\n\n@NgModule({\n declarations: [SkyPercentPipe],\n providers: [SkyPercentPipe],\n imports: [SkyCoreResourcesModule],\n exports: [SkyPercentPipe],\n})\nexport class SkyPercentPipeModule {}\n","import { ElementRef, Injectable, OnDestroy, inject } from '@angular/core';\n\nimport { Observable, ReplaySubject, Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyBreakpoint } from '../breakpoint-observer/breakpoint';\nimport { toSkyBreakpoint } from '../breakpoint-observer/breakpoint-utils';\nimport { SkyMediaBreakpoints } from '../media-query/media-breakpoints';\nimport { SkyMediaQueryListener } from '../media-query/media-query-listener';\nimport { SkyMediaQueryService } from '../media-query/media-query.service';\n\nimport { SkyResizeObserverService } from './resize-observer.service';\n\nconst DEFAULT_BREAKPOINT = SkyMediaBreakpoints.md;\n\n/**\n * Acts like `SkyMediaQueryService` for a container element, emitting the same responsive breakpoints.\n * @deprecated Use the `SkyResponsiveHostDirective` instead.\n */\n@Injectable()\nexport class SkyResizeObserverMediaQueryService\n extends SkyMediaQueryService\n implements OnDestroy\n{\n /**\n * Emits when the breakpoint changes.\n */\n public override get breakpointChange(): Observable<SkyBreakpoint> {\n return this.#breakpointChangeObs;\n }\n\n /**\n * Returns the current breakpoint.\n * @deprecated Subscribe to the `breakpointChange` observable instead.\n */\n public override get current(): SkyMediaBreakpoints {\n return this.#currentBreakpoint;\n }\n\n #breakpointChange = new ReplaySubject<SkyBreakpoint>(1);\n #breakpointChangeObs = this.#breakpointChange.asObservable();\n\n #breakpoints: {\n check: (width: number) => boolean;\n name: SkyMediaBreakpoints;\n }[] = [\n {\n check: (width: number): boolean => width > 0 && width <= 767,\n name: SkyMediaBreakpoints.xs,\n },\n {\n check: (width: number): boolean => width > 767 && width <= 991,\n name: SkyMediaBreakpoints.sm,\n },\n {\n check: (width: number): boolean => width > 991 && width <= 1199,\n name: SkyMediaBreakpoints.md,\n },\n {\n check: (width: number): boolean => width > 1199,\n name: SkyMediaBreakpoints.lg,\n },\n ];\n\n #currentBreakpoint: SkyMediaBreakpoints = DEFAULT_BREAKPOINT;\n\n #currentBreakpointObs = new ReplaySubject<SkyMediaBreakpoints>(1);\n\n #ngUnsubscribe = new Subject<void>();\n\n #resizeObserverSvc = inject(SkyResizeObserverService);\n\n #target: ElementRef | undefined;\n\n public override ngOnDestroy(): void {\n this.unobserve();\n\n this.#target = undefined;\n this.#currentBreakpointObs.complete();\n this.#breakpointChange.complete();\n }\n\n /**\n * @internal\n */\n public override destroy(): void {\n this.ngOnDestroy();\n }\n\n /**\n * Sets the container element to watch. The `SkyResizeObserverMediaQueryService` will only observe one element at a\n * time. Any previous subscriptions will be unsubscribed when a new element is observed.\n */\n public observe(\n element: ElementRef,\n options?: {\n updateResponsiveClasses?: boolean;\n },\n ): SkyResizeObserverMediaQueryService {\n if (this.#target) {\n if (this.#target === element) {\n return this;\n }\n\n this.unobserve();\n }\n\n this.#target = element;\n\n this.#checkWidth(element, options?.updateResponsiveClasses);\n\n this.#resizeObserverSvc\n .observe(element)\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n const breakpoint = this.#checkBreakpoint(value.contentRect.width);\n if (breakpoint) {\n this.#updateBreakpoint(breakpoint, options?.updateResponsiveClasses);\n }\n });\n return this;\n }\n\n /**\n * Stop watching the container element and remove any added classes.\n */\n public unobserve(): void {\n this.#removeResponsiveClasses();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n /**\n * Subscribes to element size changes that cross breakpoints.\n */\n public override subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.#currentBreakpointObs\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n listener(value);\n });\n }\n\n #updateBreakpoint(\n breakpoint: SkyMediaBreakpoints,\n updateResponsiveClasses?: boolean,\n ): void {\n if (updateResponsiveClasses) {\n this.#updateResponsiveClasses(this.current, breakpoint);\n }\n\n if (this.current !== breakpoint) {\n this.#currentBreakpointObs.next(breakpoint);\n const breakpointType = toSkyBreakpoint(breakpoint);\n this.#breakpointChange.next(breakpointType);\n }\n this.#currentBreakpoint = breakpoint;\n }\n\n #updateResponsiveClasses(\n oldBreakpoint: SkyMediaBreakpoints,\n newBreakpoint: SkyMediaBreakpoints,\n ): void {\n const oldClass = this.#getClassForBreakpoint(oldBreakpoint);\n const newClass = this.#getClassForBreakpoint(newBreakpoint);\n\n const targetClassList = this.#target?.nativeElement?.classList;\n\n targetClassList?.remove(oldClass);\n targetClassList?.add(newClass);\n }\n\n #removeResponsiveClasses(): void {\n for (const breakpoint of Object.values(SkyMediaBreakpoints)) {\n if (typeof breakpoint === 'number') {\n const className = this.#getClassForBreakpoint(breakpoint);\n\n this.#target?.nativeElement?.classList?.remove(className);\n }\n }\n }\n\n #getClassForBreakpoint(breakpoint: SkyMediaBreakpoints): string {\n return `sky-responsive-container-${SkyMediaBreakpoints[breakpoint]}`;\n }\n\n #checkBreakpoint(width: number): SkyMediaBreakpoints | undefined {\n const breakpoint = this.#breakpoints.find((breakpoint) =>\n breakpoint.check(width),\n );\n\n return breakpoint ? breakpoint.name : undefined;\n }\n\n #checkWidth(el: ElementRef, updateResponsiveClasses?: boolean): void {\n const width = (el.nativeElement as HTMLElement).offsetWidth || 0;\n const breakpoint = this.#checkBreakpoint(width);\n\n if (breakpoint) {\n this.#updateBreakpoint(breakpoint, updateResponsiveClasses);\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n Renderer2,\n inject,\n} from '@angular/core';\n\nconst SCREEN_READER_LABELS_CONTAINER_ID = 'sky-screen-reader-labels-container';\n\n/**\n * Adds the element to a screen reader only section of the body.\n * This prevents components' DOM from including text only intended for screen readers.\n *\n * @internal\n */\n@Directive({\n selector: '[skyScreenReaderLabel]',\n standalone: true,\n})\nexport class SkyScreenReaderLabelDirective implements OnDestroy {\n public ngOnDestroy(): void {\n this.#removeLabelEl();\n }\n\n /**\n * Indicates if the label should be created in the DOM.\n * @default false\n */\n @Input()\n public set createLabel(value: boolean | undefined) {\n this.#_createLabel = value ?? false;\n this.#updateLabelEl();\n }\n\n public get createLabel(): boolean {\n return this.#_createLabel;\n }\n\n readonly #elementRef = inject(ElementRef);\n readonly #renderer = inject(Renderer2);\n #_createLabel = false;\n\n #updateLabelEl(): void {\n if (this.createLabel) {\n const containerEl = this.#getContainerEl() || this.#createContainerEl();\n\n this.#renderer.appendChild(containerEl, this.#elementRef.nativeElement);\n } else {\n this.#removeLabelEl();\n }\n }\n\n #getContainerEl(): HTMLElement | null {\n return document.getElementById(SCREEN_READER_LABELS_CONTAINER_ID);\n }\n\n #createContainerEl(): HTMLElement {\n const el = document.createElement('div');\n el.id = SCREEN_READER_LABELS_CONTAINER_ID;\n el.style.display = 'none';\n\n this.#renderer.appendChild(document.body, el);\n\n return el;\n }\n\n #removeLabelEl(): void {\n const containerEl = this.#getContainerEl();\n\n this.#elementRef.nativeElement.remove();\n\n if (containerEl && containerEl.childNodes.length === 0) {\n containerEl.remove();\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n Output,\n inject,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\n\nimport { SkyScrollShadowEventArgs } from './scroll-shadow-event-args';\n\ninterface BoxShadowInfo {\n colorParts: string;\n lengths: string;\n opacity: number;\n}\n\n/**\n * Raises an event when the box shadow for a component's header or footer should be adjusted\n * based on the scroll position of the host element.\n * @internal\n */\n@Directive({\n standalone: true,\n selector: '[skyScrollShadow]',\n})\nexport class SkyScrollShadowDirective implements OnDestroy {\n @Input()\n public set skyScrollShadowEnabled(value: boolean) {\n this.#_enabled = value;\n\n if (value) {\n this.#initMutationObserver();\n } else {\n this.#emitShadow({\n bottomShadow: 'none',\n topShadow: 'none',\n });\n\n this.#destroyMutationObserver();\n }\n }\n\n public get skyScrollShadowEnabled(): boolean {\n return this.#_enabled;\n }\n\n @Output()\n public skyScrollShadow = new EventEmitter<SkyScrollShadowEventArgs>();\n\n #currentShadow: SkyScrollShadowEventArgs | undefined;\n #boxShadows: BoxShadowInfo[] | 'none' | undefined;\n\n #mutationObserver: MutationObserver | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n readonly #elRef = inject(ElementRef);\n readonly #mutationObserverSvc = inject(SkyMutationObserverService);\n readonly #ngZone = inject(NgZone);\n\n #_enabled = false;\n\n @HostListener('window:resize')\n public windowResize(): void {\n this.#checkForShadow();\n }\n\n @HostListener('scroll')\n public scroll(): void {\n this.#checkForShadow();\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n this.#destroyMutationObserver();\n }\n\n #initMutationObserver(): void {\n if (!this.#mutationObserver) {\n const el = this.#elRef.nativeElement;\n\n // MutationObserver is patched by Zone.js and therefore becomes part of the\n // Angular change detection cycle, but this can lead to infinite loops in some\n // scenarios. This will keep MutationObserver from triggering change detection.\n this.#ngZone.runOutsideAngular(() => {\n this.#mutationObserver = this.#mutationObserverSvc.create(() => {\n this.#checkForShadow();\n });\n\n this.#mutationObserver.observe(el, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n });\n }\n }\n\n #destroyMutationObserver(): void {\n if (this.#mutationObserver) {\n this.#mutationObserver.disconnect();\n this.#mutationObserver = undefined;\n }\n }\n\n #checkForShadow(): void {\n if (this.skyScrollShadowEnabled) {\n const el: Element = this.#elRef.nativeElement;\n\n const topShadow = this.#buildShadowStyle(el.scrollTop);\n\n const bottomShadow = this.#buildShadowStyle(\n el.scrollHeight - el.scrollTop - el.clientHeight,\n );\n\n this.#emitShadow({\n bottomShadow,\n topShadow,\n });\n }\n }\n\n #splitBoxShadowDetails(boxShadow: string): BoxShadowInfo | undefined {\n const colorRegex =\n /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([\\d.]+))?\\s*\\)/;\n const match = boxShadow.match(colorRegex);\n\n if (match) {\n const colorParts = `${match[1]}, ${match[2]}, ${match[3]}`; // Extract RGB values as a comma-separated string\n const opacity = match[4] ? parseFloat(match[4]) : 1; // Use the captured opacity or default to 1\n const lengths = boxShadow.replace(match[0], '').trim(); // Remove the color from the rest\n\n return { colorParts, opacity, lengths };\n }\n\n /* istanbul ignore next */\n return;\n }\n\n #formatBoxShadows(boxShadowString: string): BoxShadowInfo[] {\n const boxShadows: BoxShadowInfo[] = [];\n let currentShadow = '';\n let openParentheses = 0;\n\n for (const char of boxShadowString) {\n if (char === ',' && openParentheses === 0) {\n const details = this.#splitBoxShadowDetails(currentShadow.trim());\n if (details) {\n boxShadows.push(details);\n }\n\n currentShadow = '';\n } else {\n currentShadow += char;\n if (char === '(') {\n openParentheses++;\n } else if (char === ')') {\n openParentheses--;\n }\n }\n }\n\n if (currentShadow.trim()) {\n const details = this.#splitBoxShadowDetails(currentShadow.trim());\n if (details) {\n boxShadows.push(details);\n }\n }\n\n return boxShadows;\n }\n\n #getBoxShadowInfo(): BoxShadowInfo[] {\n const elStyles = window.getComputedStyle(this.#elRef.nativeElement);\n const boxShadowStyle = elStyles.getPropertyValue(\n '--sky-elevation-overflow',\n );\n\n // Creating a temporary element and setting box shadow converts the color in the box shadows to rgba or rgb\n const tempEl = document.createElement('div');\n tempEl.style.setProperty('box-shadow', boxShadowStyle);\n\n const convertedBoxShadows = tempEl.style.getPropertyValue('box-shadow');\n const boxShadows = this.#formatBoxShadows(convertedBoxShadows);\n\n return boxShadows;\n }\n\n #buildShadowStyle(pixelsFromEnd: number): string {\n if (!this.#boxShadows) {\n const boxShadowInfo = this.#getBoxShadowInfo();\n if (boxShadowInfo.length > 0) {\n this.#boxShadows = boxShadowInfo;\n } else {\n this.#boxShadows = 'none';\n }\n }\n\n const boxShadowStyles: string[] = [];\n\n if (this.#boxShadows === 'none' || pixelsFromEnd === 0) {\n return 'none';\n } else {\n for (const shadow of this.#boxShadows) {\n const { colorParts, lengths, opacity } = shadow;\n // Progressively darken the shadow until the user scrolls 30 pixels from the top or bottom\n // of the scrollable element, with a max opacity of 0.3.\n const adjustedOpacity = Math.min(pixelsFromEnd / 30, 1) * opacity;\n const adjustedShadow = `${lengths} rgba(${colorParts}, ${adjustedOpacity})`;\n boxShadowStyles.push(adjustedShadow);\n }\n return boxShadowStyles.join(', ');\n }\n }\n\n #emitShadow(shadow: SkyScrollShadowEventArgs): void {\n if (\n !this.#currentShadow ||\n this.#currentShadow.bottomShadow !== shadow.bottomShadow ||\n this.#currentShadow.topShadow !== shadow.topShadow\n ) {\n this.skyScrollShadow.emit(shadow);\n this.#currentShadow = shadow;\n }\n }\n}\n","import { ElementRef, Injectable, NgZone, Optional } from '@angular/core';\n\nimport {\n Observable,\n Subject,\n Subscriber,\n Subscription,\n animationFrameScheduler,\n combineLatestWith,\n concat,\n debounceTime,\n fromEvent,\n map,\n observeOn,\n of,\n switchMap,\n takeUntil,\n} from 'rxjs';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\nimport { SkyResizeObserverService } from '../resize-observer/resize-observer.service';\nimport { SkyAppWindowRef } from '../window/window-ref';\n\nfunction notifySubscribers(\n subscribers: Subscriber<unknown>[],\n item?: unknown,\n): void {\n for (const subscriber of subscribers) {\n subscriber.next(item);\n }\n}\n\ntype HostRect = Pick<DOMRect, 'top' | 'left' | 'right' | 'bottom'>;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyScrollableHostService {\n readonly #mutationObserverSvc: SkyMutationObserverService;\n readonly #windowRef: SkyAppWindowRef;\n readonly #resizeObserverSvc: SkyResizeObserverService | undefined;\n readonly #zone: NgZone | undefined;\n\n constructor(\n mutationObserverSvc: SkyMutationObserverService,\n windowRef: SkyAppWindowRef,\n @Optional() resizeObserverSvc?: SkyResizeObserverService,\n @Optional() zone?: NgZone,\n ) {\n this.#mutationObserverSvc = mutationObserverSvc;\n this.#resizeObserverSvc = resizeObserverSvc;\n this.#windowRef = windowRef;\n this.#zone = zone;\n }\n\n /**\n * Returns the given element's current scrollable host\n * @param elementRef The element whose scrollable host is being requested\n * @returns The current scrollable host\n */\n public getScrollableHost(elementRef: ElementRef): HTMLElement | Window {\n return this.#findScrollableHost(elementRef.nativeElement);\n }\n\n /**\n * Returns an observable which emits the given element's current scrollable host\n * @param elementRef The element whose scrollable host is being requested\n * @returns An observable which emits the current scrollable host element.\n * @internal\n */\n public watchScrollableHost(\n elementRef: ElementRef,\n ): Observable<HTMLElement | Window> {\n const subscribers: Subscriber<HTMLElement | Window>[] = [];\n\n let parentMutationObserver: MutationObserver;\n let documentHiddenElementMutationObserver: MutationObserver;\n\n return new Observable((subscriber) => {\n subscribers.push(subscriber);\n\n let scrollableHost: HTMLElement | Window | undefined =\n this.#findScrollableHost(elementRef.nativeElement);\n\n // Setup mutation observers only once, for all subscribers.\n if (subscribers.length === 1) {\n parentMutationObserver = this.#mutationObserverSvc.create(() => {\n const newScrollableHost = this.#findScrollableHost(\n elementRef.nativeElement,\n );\n\n // Reset observer if scrollable host changes.\n if (\n newScrollableHost !== scrollableHost &&\n this.#isElementVisible(elementRef)\n ) {\n scrollableHost = newScrollableHost;\n\n this.#observeForScrollableHostChanges(\n scrollableHost,\n parentMutationObserver,\n );\n\n notifySubscribers(subscribers, scrollableHost);\n }\n });\n\n this.#observeForScrollableHostChanges(\n scrollableHost,\n parentMutationObserver,\n );\n\n documentHiddenElementMutationObserver =\n this.#mutationObserverSvc.create(() => {\n if (scrollableHost && !this.#isElementVisible(elementRef)) {\n // If the scrollable host is not visible, set it to undefined and unsubscribe from its mutation changes.\n // Then, observe the document element so that a new scrollable host can be found.\n scrollableHost = undefined;\n\n this.#observeForScrollableHostChanges(\n scrollableHost,\n parentMutationObserver,\n );\n\n notifySubscribers(subscribers, scrollableHost);\n }\n });\n\n this.#observeDocumentHiddenElementChanges(\n documentHiddenElementMutationObserver,\n );\n }\n\n // Emit the scrollable host to the subscriber.\n subscriber.next(scrollableHost);\n\n // Teardown callback for the subscription.\n subscriber.add(() => {\n const subIndex = subscribers.indexOf(subscriber);\n\n /* istanbul ignore else */\n if (subIndex >= 0) {\n subscribers.splice(subIndex, 1);\n }\n\n if (subscribers.length === 0) {\n documentHiddenElementMutationObserver.disconnect();\n parentMutationObserver.disconnect();\n }\n });\n });\n }\n\n /**\n * Returns an observable which emits whenever the element's scrollable host emits a scroll event. The observable will always emit the scroll events from the elements current scrollable host and will update based on any scrollable host changes. The observable will also emit once whenever the scrollable host changes.\n * @param elementRef The element whose scrollable host scroll events are being requested\n * @returns An observable which emits when the elements scrollable host is scrolled or is changed\n */\n public watchScrollableHostScrollEvents(\n elementRef: ElementRef,\n ): Observable<void> {\n const subscribers: Subscriber<void>[] = [];\n\n let scrollableHost: HTMLElement | Window;\n\n let newScrollableHostObservable = new Subject<void>();\n let scrollableHostSubscription: Subscription;\n let scrollEventSubscription: Subscription;\n\n return new Observable((subscriber) => {\n subscribers.push(subscriber);\n\n // Setup mutation observers only once, for all subscribers.\n if (subscribers.length === 1) {\n scrollableHostSubscription = this.watchScrollableHost(\n elementRef,\n ).subscribe((newScrollableHost) => {\n newScrollableHostObservable.next();\n newScrollableHostObservable.complete();\n\n if (scrollableHost && scrollableHost !== newScrollableHost) {\n notifySubscribers(subscribers);\n }\n\n scrollableHost = newScrollableHost;\n newScrollableHostObservable = new Subject();\n\n // Only subscribe to scroll events if the host element is defined.\n /* istanbul ignore else */\n if (newScrollableHost) {\n scrollEventSubscription = fromEvent(newScrollableHost, 'scroll')\n .pipe(takeUntil(newScrollableHostObservable))\n .subscribe(() => {\n notifySubscribers(subscribers);\n });\n }\n });\n }\n\n // Teardown callback for the subscription.\n subscriber.add(() => {\n const subIndex = subscribers.indexOf(subscriber);\n\n /* istanbul ignore else */\n if (subIndex >= 0) {\n subscribers.splice(subIndex, 1);\n }\n\n if (subscribers.length === 0) {\n scrollableHostSubscription.unsubscribe();\n scrollEventSubscription.unsubscribe();\n newScrollableHostObservable.complete();\n }\n });\n });\n }\n\n public watchScrollableHostClipPathChanges(\n elementRef: ElementRef,\n additionalContainers: Observable<ElementRef[]> = of([]),\n ): Observable<string> {\n if (!this.#resizeObserverSvc) {\n return of('none');\n }\n\n const watch = (): Observable<string> =>\n this.watchScrollableHost(elementRef).pipe(\n combineLatestWith(additionalContainers),\n switchMap(([scrollableHost, additionalHosts]) => {\n const resizeObserverSvc = this.#resizeObserverSvc;\n if (\n !resizeObserverSvc ||\n ((!scrollableHost ||\n scrollableHost === this.#windowRef.nativeWindow) &&\n additionalHosts.length === 0)\n ) {\n return of('none');\n }\n\n const hostsParents: HTMLElement[] = additionalHosts\n .map((container) => container.nativeElement?.offsetParent)\n .filter(Boolean);\n const inputs = [\n of(undefined),\n fromEvent(this.#windowRef.nativeWindow, 'resize'),\n fromEvent(this.#windowRef.nativeWindow, 'scroll'),\n ...additionalHosts.map((container) =>\n resizeObserverSvc.observe(container),\n ),\n fromEvent(hostsParents, 'scroll'),\n ...hostsParents.map((hostsParent) =>\n resizeObserverSvc.observe({\n nativeElement: hostsParent,\n }),\n ),\n ];\n let getHostRect: () => HostRect;\n if (\n scrollableHost &&\n scrollableHost !== this.#windowRef.nativeWindow\n ) {\n inputs.push(\n resizeObserverSvc.observe({ nativeElement: scrollableHost }),\n );\n getHostRect = (): HostRect =>\n (scrollableHost as HTMLElement).getBoundingClientRect();\n } else {\n getHostRect = (): HostRect => ({\n top: 0,\n left: 0,\n right: this.#windowRef.nativeWindow.innerWidth,\n bottom: this.#windowRef.nativeWindow.innerHeight,\n });\n }\n return concat(inputs).pipe(\n observeOn(animationFrameScheduler),\n debounceTime(0),\n map(() => {\n const viewportSize = this.#getViewportSize();\n let { top, left, right, bottom } = getHostRect();\n for (const container of additionalHosts) {\n if (container.nativeElement?.offsetParent) {\n const containerRect =\n container.nativeElement.getBoundingClientRect();\n top = Math.max(top, containerRect.top);\n left = Math.max(left, containerRect.left);\n right = Math.min(right, containerRect.right);\n bottom = Math.min(bottom, containerRect.bottom);\n }\n }\n top = Math.max(0, top);\n left = Math.max(0, left);\n return `inset(${top}px ${viewportSize.width - right}px ${viewportSize.height - bottom}px ${left}px)`;\n }),\n );\n }),\n );\n /* istanbul ignore else */\n if (this.#zone) {\n return this.#zone.runOutsideAngular(watch);\n } else {\n return watch();\n }\n }\n\n #findScrollableHost(element: HTMLElement | undefined): HTMLElement | Window {\n const regex = /(auto|scroll)/;\n const windowObj = this.#windowRef.nativeWindow;\n const bodyObj = windowObj.document.body;\n\n if (!element) {\n return windowObj;\n }\n\n let style = windowObj.getComputedStyle(element);\n let parent = element;\n\n do {\n parent = parent.parentNode as HTMLElement;\n\n // Return `window` if the parent element has been removed from the DOM.\n if (!(parent instanceof HTMLElement)) {\n return windowObj;\n }\n\n style = windowObj.getComputedStyle(parent);\n } while (\n !regex.test(style.overflow) &&\n !regex.test(style.overflowY) &&\n parent !== bodyObj\n );\n\n if (parent === bodyObj) {\n return windowObj;\n }\n\n return parent;\n }\n\n #observeDocumentHiddenElementChanges(\n mutationObserver: MutationObserver,\n ): void {\n mutationObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class', 'style', 'hidden'],\n childList: true,\n subtree: true,\n });\n }\n\n #observeForScrollableHostChanges(\n element: HTMLElement | Window | undefined,\n mutationObserver: MutationObserver,\n ): void {\n mutationObserver.disconnect();\n\n const target =\n element instanceof HTMLElement ? element : document.documentElement;\n\n mutationObserver.observe(target, {\n attributes: true,\n attributeFilter: ['class', 'style'],\n childList: true,\n subtree: true,\n });\n }\n\n /**\n * Determines if an element is \"visible\" in the DOM.\n * @see https://stackoverflow.com/a/11639664/6178885\n */\n #isElementVisible(elementRef: ElementRef): boolean {\n return !!elementRef.nativeElement?.offsetParent;\n }\n\n #getViewportSize(): { width: number; height: number } {\n const win = this.#windowRef.nativeWindow;\n const docElem = win.document.documentElement;\n\n return {\n width: docElem.clientWidth,\n height: docElem.clientHeight,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\n\nimport { SkyAppSetTitleArgs } from './set-title-args';\n\n/**\n * Provides a method for setting a formatted title on the current window.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppTitleService {\n #title: Title;\n\n constructor(title: Title) {\n this.#title = title;\n }\n\n /**\n * Sets the title on the current window.\n * @param args An array of title parts. The parts will be concatenated with a hyphen between\n * each part.\n */\n public setTitle(args: SkyAppSetTitleArgs | undefined): void {\n if (args?.titleParts) {\n this.#title.setTitle(args.titleParts.join(' - '));\n }\n }\n}\n","import { Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\n\n/**\n * Trims whitespace in each text node that is a direct descendent of the current element.\n */\n@Directive({\n selector: '[skyTrim]',\n standalone: false,\n})\nexport class SkyTrimDirective implements OnInit, OnDestroy {\n #elRef: ElementRef;\n\n #obs: MutationObserver;\n\n constructor(elRef: ElementRef, mutationObs: SkyMutationObserverService) {\n this.#elRef = elRef;\n\n this.#obs = mutationObs.create((mutations: MutationRecord[]) => {\n const nodes: Node[] = [];\n\n // Only trim white space inside direct descendants of the current element.\n for (const mutation of mutations) {\n if (mutation.target.parentNode === elRef.nativeElement) {\n nodes.push(mutation.target);\n }\n }\n\n this.#trim(nodes);\n });\n\n this.#observe();\n }\n\n public ngOnInit(): void {\n const el = this.#elRef.nativeElement as Element;\n this.#trim(Array.from(el.childNodes));\n }\n\n public ngOnDestroy(): void {\n this.#disconnect();\n }\n\n #observe(): void {\n this.#obs.observe(this.#elRef.nativeElement, {\n characterData: true,\n subtree: true,\n });\n }\n\n #disconnect(): void {\n this.#obs.disconnect();\n }\n\n #trim(nodes: Node[]): void {\n // Suspend the MutationObserver so altering the text content of each node\n // doesn't retrigger the observe callback.\n this.#disconnect();\n\n for (const node of nodes) {\n if (node.nodeType === Node.TEXT_NODE && node.textContent) {\n const textContent = node.textContent;\n const textContentTrimmed = textContent.trim();\n\n if (textContent !== textContentTrimmed) {\n node.textContent = textContentTrimmed;\n }\n }\n }\n\n this.#observe();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyTrimDirective } from './trim.directive';\n\n@NgModule({\n declarations: [SkyTrimDirective],\n exports: [SkyTrimDirective],\n})\nexport class SkyTrimModule {}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, of as observableOf } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyUIConfigService {\n public getConfig(key: string, defaultConfig?: any): Observable<any> {\n return observableOf(defaultConfig);\n }\n\n /* istanbul ignore next */\n public setConfig(key: string, value: any): Observable<any> {\n return observableOf({});\n }\n}\n","import { SkyViewkeeperBoundaryInfo } from './viewkeeper-boundary-info';\nimport { SkyViewkeeperFixedStyles } from './viewkeeper-fixed-styles';\nimport { SkyViewkeeperOffset } from './viewkeeper-offset';\nimport { SkyViewkeeperOptions } from './viewkeeper-options';\n\nconst CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';\nconst CLS_VIEWKEEPER_FIXED_NOT_LAST = 'sky-viewkeeper-fixed-not-last';\nconst CLS_VIEWKEEPER_BOUNDARY = 'sky-viewkeeper-boundary';\nconst EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';\n\nlet nextIdIndex: number;\n\nfunction nextId(): string {\n nextIdIndex = (nextIdIndex || 0) + 1;\n\n return 'viewkeeper-' + nextIdIndex;\n}\n\nfunction getOffset(\n el: HTMLElement,\n scrollableHost?: HTMLElement,\n): SkyViewkeeperOffset {\n const rect = el.getBoundingClientRect();\n const parent = scrollableHost ? scrollableHost : document.documentElement;\n\n return {\n top: rect.top + parent.scrollTop,\n left: rect.left + parent.scrollLeft,\n };\n}\n\nfunction px(value: number | string): string {\n let pxValue = value ? value.toString() : '';\n\n if (typeof value === 'number') {\n pxValue = value + 'px';\n }\n\n return pxValue;\n}\n\nfunction setElPosition(\n el: HTMLElement,\n left: number | string,\n top: number | string,\n width: number | string,\n marginTop: number | string,\n marginTopProperty: string | undefined,\n clipTop: number | string,\n clipLeft: number | string,\n): void {\n el.style.top = px(top);\n el.style.left = px(left);\n el.style.marginTop = marginTopProperty\n ? `calc(${px(marginTop)} + var(${marginTopProperty}, 0))`\n : px(marginTop);\n el.style.clipPath =\n clipTop || clipLeft ? `inset(${px(clipTop)} 0 0 ${px(clipLeft)})` : 'none';\n\n /*istanbul ignore else*/\n /* sanity check */\n if (width !== null) {\n el.style.width = px(width);\n }\n}\n\nfunction getHeightWithMargin(el: HTMLElement): number {\n const computedStyle = getComputedStyle(el);\n\n return (\n el.offsetHeight +\n parseInt(computedStyle.marginTop, 10) +\n parseInt(computedStyle.marginBottom, 10)\n );\n}\n\nfunction createCustomEvent(name: any): CustomEvent<any> {\n const evt = document.createEvent('CustomEvent');\n\n evt.initCustomEvent(name, false, false, undefined);\n\n return evt;\n}\n\nexport class SkyViewkeeper {\n #boundaryEl: HTMLElement | undefined;\n\n #el: HTMLElement | undefined;\n\n #id: string;\n\n #setWidth: boolean;\n\n #verticalOffset: number;\n\n #verticalOffsetEl: HTMLElement | undefined;\n\n #viewportMarginTop = 0;\n\n #viewportMarginProperty: `--${string}` | undefined;\n\n #currentElFixedLeft: number | undefined;\n\n #currentElFixedTop: number | undefined;\n\n #currentElFixedWidth: number | undefined;\n\n #currentElClipLeft: number | undefined;\n\n #currentElClipTop: number | undefined;\n\n #isDestroyed = false;\n\n #scrollableHost: HTMLElement | undefined;\n\n #syncElPositionHandler: () => void;\n\n #intersectionObserver: IntersectionObserver | undefined;\n\n #spacerResizeObserver: ResizeObserver | undefined;\n\n constructor(options: SkyViewkeeperOptions) {\n options = options || /* istanbul ignore next */ {};\n\n this.#el = options.el;\n this.#boundaryEl = options.boundaryEl;\n\n if (!this.#el) {\n throw new Error('[SkyViewkeeper] The option `el` is required.');\n }\n\n if (!this.#boundaryEl) {\n throw new Error('[SkyViewkeeper] The option `boundaryEl` is required.');\n }\n\n const el = this.#el;\n const boundaryEl = this.#boundaryEl;\n\n this.#setWidth = !!options.setWidth;\n this.#id = nextId();\n this.#scrollableHost = options.scrollableHost;\n this.#verticalOffset = options.verticalOffset || 0;\n this.#verticalOffsetEl = options.verticalOffsetEl;\n\n // Only set viewport margin if the scrollable host is undefined.\n if (!this.#scrollableHost) {\n this.#viewportMarginTop = options.viewportMarginTop ?? 0;\n this.#viewportMarginProperty = options.viewportMarginProperty;\n }\n\n this.#syncElPositionHandler = (): void =>\n this.syncElPosition(el, boundaryEl);\n\n if (this.#verticalOffsetEl) {\n this.#verticalOffsetEl.addEventListener(\n EVT_AFTER_VIEWKEEPER_SYNC,\n this.#syncElPositionHandler,\n );\n }\n\n window.addEventListener('scroll', this.#syncElPositionHandler, true);\n window.addEventListener('resize', this.#syncElPositionHandler);\n window.addEventListener('orientationchange', this.#syncElPositionHandler);\n\n this.#boundaryEl.classList.add(CLS_VIEWKEEPER_BOUNDARY);\n\n this.syncElPosition(el, boundaryEl);\n }\n\n public syncElPosition(el: HTMLElement, boundaryEl: HTMLElement): void {\n const verticalOffset = this.#calculateVerticalOffset();\n\n // When the element isn't visible, its size can't be calculated, so don't attempt syncing position in this case.\n if (this.#isDestroyed || (el.offsetWidth === 0 && el.offsetHeight === 0)) {\n return;\n }\n\n const boundaryInfo = this.#getBoundaryInfo(el, boundaryEl);\n const fixedStyles = this.#getFixedStyles(boundaryInfo, verticalOffset);\n\n const doFixEl = this.#shouldFixEl(el, boundaryInfo, verticalOffset);\n\n if (this.#needsUpdating(doFixEl, fixedStyles)) {\n if (doFixEl) {\n this.#fixEl(el, boundaryInfo, fixedStyles);\n this.#verticalOffsetEl?.classList.add(CLS_VIEWKEEPER_FIXED_NOT_LAST);\n } else {\n this.#unfixEl(el);\n this.#verticalOffsetEl?.classList.remove(CLS_VIEWKEEPER_FIXED_NOT_LAST);\n }\n }\n\n const evt = createCustomEvent(EVT_AFTER_VIEWKEEPER_SYNC);\n\n el.dispatchEvent(evt);\n }\n\n public destroy(): void {\n if (!this.#isDestroyed) {\n this.#intersectionObserver?.disconnect();\n window.removeEventListener('scroll', this.#syncElPositionHandler, true);\n window.removeEventListener('resize', this.#syncElPositionHandler);\n window.removeEventListener(\n 'orientationchange',\n this.#syncElPositionHandler,\n );\n\n if (this.#el) {\n this.#unfixEl(this.#el);\n }\n\n this.#verticalOffsetEl?.removeEventListener(\n EVT_AFTER_VIEWKEEPER_SYNC,\n this.#syncElPositionHandler,\n );\n this.#verticalOffsetEl?.classList.remove(CLS_VIEWKEEPER_FIXED_NOT_LAST);\n\n this.#spacerResizeObserver?.disconnect();\n this.#boundaryEl?.classList.remove(CLS_VIEWKEEPER_BOUNDARY);\n\n this.#el =\n this.#boundaryEl =\n this.#verticalOffsetEl =\n this.#intersectionObserver =\n this.#spacerResizeObserver =\n undefined;\n\n this.#isDestroyed = true;\n }\n }\n\n #getSpacerId(): string {\n return this.#id + '-spacer';\n }\n\n #unfixEl(el: HTMLElement): void {\n const spacerEl = document.getElementById(this.#getSpacerId());\n\n if (spacerEl) {\n this.#spacerResizeObserver?.unobserve(spacerEl);\n\n /*istanbul ignore else*/\n if (spacerEl.parentElement) {\n spacerEl.parentElement.removeChild(spacerEl);\n }\n }\n\n el.classList.remove(CLS_VIEWKEEPER_FIXED);\n\n this.#currentElFixedLeft =\n this.#currentElFixedTop =\n this.#currentElFixedWidth =\n undefined;\n\n let width = '';\n\n if (this.#setWidth) {\n width = 'auto';\n }\n\n setElPosition(el, '', '', width, '', '', 0, 0);\n }\n\n #calculateVerticalOffset(): number {\n let offset = this.#verticalOffset;\n\n if (this.#verticalOffsetEl) {\n const verticalOffsetElTopStyle = this.#verticalOffsetEl.style.top;\n const verticalOffsetElTop = parseInt(verticalOffsetElTopStyle, 10) || 0;\n\n offset += this.#verticalOffsetEl.offsetHeight + verticalOffsetElTop;\n } else if (this.#scrollableHost) {\n offset += this.#scrollableHost.getBoundingClientRect().top;\n }\n\n return offset;\n }\n\n #shouldFixEl(\n el: HTMLElement,\n boundaryInfo: SkyViewkeeperBoundaryInfo,\n verticalOffset: number,\n ): boolean {\n let anchorTop: number;\n\n if (boundaryInfo.spacerEl) {\n anchorTop = getOffset(boundaryInfo.spacerEl, this.#scrollableHost).top;\n } else {\n anchorTop = getOffset(el, this.#scrollableHost).top;\n }\n\n let viewportMarginTop = this.#viewportMarginTop;\n const viewportMarginProperty =\n this.#viewportMarginProperty &&\n getComputedStyle(document.body).getPropertyValue(\n this.#viewportMarginProperty,\n );\n if (viewportMarginProperty) {\n viewportMarginTop += parseInt(viewportMarginProperty, 10);\n }\n\n const doFixEl =\n boundaryInfo.scrollTop + verticalOffset + viewportMarginTop > anchorTop;\n\n return doFixEl;\n }\n\n #getFixedStyles(\n boundaryInfo: SkyViewkeeperBoundaryInfo,\n verticalOffset: number,\n ): SkyViewkeeperFixedStyles {\n // If the element needs to be fixed, this will calculate its position. The position\n // will be 0 (fully visible) unless the user is scrolling the boundary out of view.\n // In that case, the element should begin to scroll out of view with the\n // rest of the boundary by setting its top position to a negative value.\n const elTop =\n boundaryInfo.boundaryBottom -\n boundaryInfo.elHeight -\n boundaryInfo.scrollTop;\n const elClipTop = elTop < verticalOffset ? verticalOffset - elTop : 0;\n const elFixedTop = Math.min(elTop, verticalOffset);\n\n const elFixedWidth = boundaryInfo.boundaryEl.getBoundingClientRect().width;\n const elFixedLeft =\n boundaryInfo.boundaryOffset.left - boundaryInfo.scrollLeft;\n const elClipLeft = elFixedLeft < 0 ? 0 - elFixedLeft : 0;\n\n return {\n elFixedLeft,\n elFixedTop,\n elFixedWidth,\n elClipLeft,\n elClipTop,\n };\n }\n\n #needsUpdating(\n doFixEl: boolean,\n fixedStyles: SkyViewkeeperFixedStyles,\n ): boolean {\n if (\n (doFixEl &&\n this.#currentElFixedLeft === fixedStyles.elFixedLeft &&\n this.#currentElFixedTop === fixedStyles.elFixedTop &&\n this.#currentElClipLeft === fixedStyles.elClipLeft &&\n this.#currentElClipTop === fixedStyles.elClipTop &&\n this.#currentElFixedWidth === fixedStyles.elFixedWidth) ||\n (!doFixEl &&\n !(\n this.#currentElFixedLeft !== undefined &&\n this.#currentElFixedLeft !== null\n ))\n ) {\n // The element is either currently fixed and its position and width do not need\n // to change, or the element is not currently fixed and does not need to be fixed.\n // No changes are needed.\n return false;\n }\n\n return true;\n }\n\n #fixEl(\n el: HTMLElement,\n boundaryInfo: SkyViewkeeperBoundaryInfo,\n fixedStyles: SkyViewkeeperFixedStyles,\n ): void {\n /* istanbul ignore else */\n /* sanity check */\n if (!boundaryInfo.spacerEl) {\n const spacerHeight = boundaryInfo.elHeight;\n\n const spacerEl = document.createElement('div');\n spacerEl.id = boundaryInfo.spacerId;\n spacerEl.style.height = px(spacerHeight);\n\n /*istanbul ignore else*/\n if (el.parentNode) {\n el.parentNode.insertBefore(spacerEl, el.nextSibling);\n }\n\n if (!this.#spacerResizeObserver) {\n this.#spacerResizeObserver = new ResizeObserver(() =>\n this.#syncElPositionHandler(),\n );\n }\n\n this.#spacerResizeObserver.observe(spacerEl);\n }\n\n el.classList.add(CLS_VIEWKEEPER_FIXED);\n\n this.#currentElFixedTop = fixedStyles.elFixedTop;\n this.#currentElFixedLeft = fixedStyles.elFixedLeft;\n this.#currentElClipTop = fixedStyles.elClipTop;\n this.#currentElClipLeft = fixedStyles.elClipLeft;\n this.#currentElFixedWidth = fixedStyles.elFixedWidth;\n\n let width = 0;\n\n if (this.#setWidth) {\n width = fixedStyles.elFixedWidth;\n }\n\n setElPosition(\n el,\n fixedStyles.elFixedLeft,\n fixedStyles.elFixedTop,\n width,\n this.#viewportMarginTop,\n this.#viewportMarginProperty,\n fixedStyles.elClipTop,\n fixedStyles.elClipLeft,\n );\n }\n\n #getBoundaryInfo(\n el: HTMLElement,\n boundaryEl: HTMLElement,\n ): SkyViewkeeperBoundaryInfo {\n const spacerId = this.#getSpacerId();\n\n const spacerEl = document.getElementById(spacerId);\n\n const boundaryOffset = getOffset(boundaryEl, this.#scrollableHost);\n const boundaryTop = boundaryOffset.top;\n const boundaryBottom =\n boundaryTop + boundaryEl.getBoundingClientRect().height;\n\n const scrollLeft = this.#scrollableHost\n ? this.#scrollableHost.scrollLeft\n : document.documentElement.scrollLeft;\n const scrollTop = this.#scrollableHost\n ? this.#scrollableHost.scrollTop\n : document.documentElement.scrollTop;\n\n const elHeight = getHeightWithMargin(el);\n\n return {\n boundaryBottom,\n boundaryOffset,\n boundaryEl,\n elHeight,\n scrollLeft,\n scrollTop,\n spacerId,\n spacerEl,\n };\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { SkyViewkeeperOptions } from './viewkeeper-options';\n\n@Injectable()\nexport class SkyViewkeeperHostOptions implements SkyViewkeeperOptions {\n public boundaryEl?: HTMLElement;\n\n public el?: HTMLElement;\n\n public scrollableHost?: HTMLElement;\n\n public setWidth?: boolean;\n\n public verticalOffset?: number;\n\n public verticalOffsetEl?: HTMLElement;\n\n public viewportMarginTop?: number;\n\n public viewportMarginProperty?: `--${string}`;\n}\n","import { Injectable, Optional } from '@angular/core';\n\nimport { SkyViewkeeper } from './viewkeeper';\nimport { SkyViewkeeperHostOptions } from './viewkeeper-host-options';\nimport { SkyViewkeeperOptions } from './viewkeeper-options';\n\n/**\n * Provides methods for creating and destroying viewkeeper instances.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyViewkeeperService {\n #hostOptions: SkyViewkeeperHostOptions | undefined;\n\n constructor(@Optional() hostOptions?: SkyViewkeeperHostOptions) {\n this.#hostOptions = hostOptions;\n }\n\n /**\n *\n * @param options Creates a viewkeeper instance, applying host options where applicable.\n */\n public create(options: SkyViewkeeperOptions): SkyViewkeeper {\n options = Object.assign({}, this.#hostOptions || {}, options);\n\n return new SkyViewkeeper(options);\n }\n\n /**\n * Destroys a viewkeeper instance.\n * @param vk Viewkeeper instance to destroy.\n */\n public destroy(vk: SkyViewkeeper): void {\n vk.destroy();\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n RendererFactory2,\n inject,\n} from '@angular/core';\n\nimport { Subject, animationFrameScheduler, fromEvent, observeOn } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\nimport { SkyScrollableHostService } from '../scrollable-host/scrollable-host.service';\n\nimport { SkyViewkeeper } from './viewkeeper';\nimport { SkyViewkeeperService } from './viewkeeper.service';\n\n@Directive({\n selector: '[skyViewkeeper]',\n standalone: false,\n})\nexport class SkyViewkeeperDirective\n implements OnInit, OnDestroy, AfterViewInit\n{\n @Input()\n public set skyViewkeeper(value: string[] | undefined) {\n this.#_skyViewkeeper = value;\n\n this.#detectElements();\n }\n\n public get skyViewkeeper(): string[] | undefined {\n return this.#_skyViewkeeper;\n }\n\n @Input()\n public skyViewkeeperOmitShadow: string | undefined;\n\n #_skyViewkeeper: string[] | undefined;\n\n #currentViewkeeperEls: HTMLElement[] | undefined;\n\n #el: ElementRef;\n\n #mutationObserverSvc: SkyMutationObserverService;\n\n #observer: MutationObserver | undefined;\n\n #scrollableHostSvc: SkyScrollableHostService | undefined;\n\n #scrollableHostWatchUnsubscribe: Subject<void> | undefined;\n\n #viewkeepers: SkyViewkeeper[] = [];\n\n #viewkeeperSvc: SkyViewkeeperService;\n\n readonly #renderer = inject(RendererFactory2).createRenderer(undefined, null);\n #shadowElement: HTMLElement | undefined;\n\n constructor(\n el: ElementRef,\n mutationObserverSvc: SkyMutationObserverService,\n viewkeeperSvc: SkyViewkeeperService,\n @Optional() scrollableHostSvc?: SkyScrollableHostService,\n ) {\n this.#el = el;\n this.#mutationObserverSvc = mutationObserverSvc;\n this.#viewkeeperSvc = viewkeeperSvc;\n this.#scrollableHostSvc = scrollableHostSvc;\n }\n\n public ngOnInit(): void {\n this.#observer = this.#mutationObserverSvc.create(() =>\n this.#detectElements(),\n );\n\n this.#observer.observe(this.#el.nativeElement, {\n childList: true,\n subtree: true,\n });\n }\n\n public ngOnDestroy(): void {\n this.#observer?.disconnect();\n this.#scrollableHostWatchUnsubscribe?.next();\n this.#scrollableHostWatchUnsubscribe?.complete();\n this.#destroyViewkeepers();\n if (this.#shadowElement) {\n this.#renderer.removeChild(this.#el.nativeElement, this.#shadowElement);\n }\n }\n\n public ngAfterViewInit(): void {\n const shadowElement = this.#renderer.createElement('div');\n shadowElement.classList.add('sky-viewkeeper-shadow');\n if (this.#el.nativeElement.firstChild) {\n this.#renderer.insertBefore(\n this.#el.nativeElement,\n shadowElement,\n this.#el.nativeElement.firstChild,\n );\n } else {\n this.#renderer.appendChild(this.#el.nativeElement, shadowElement);\n }\n this.#shadowElement = shadowElement;\n }\n\n #destroyViewkeepers(): void {\n for (const viewkeeper of this.#viewkeepers) {\n this.#viewkeeperSvc.destroy(viewkeeper);\n }\n\n this.#viewkeepers = [];\n }\n\n #getViewkeeperEls(): HTMLElement[] {\n let viewkeeperEls: HTMLElement[] = [];\n\n if (this.skyViewkeeper) {\n viewkeeperEls = [];\n\n for (const item of this.skyViewkeeper) {\n const matchingEls = Array.from(\n (this.#el.nativeElement as HTMLElement).querySelectorAll(item),\n ) as HTMLElement[];\n\n viewkeeperEls = [...viewkeeperEls, ...matchingEls];\n }\n }\n\n return viewkeeperEls;\n }\n\n #viewkeeperElsChanged(viewkeeperEls: HTMLElement[]): boolean {\n if (!viewkeeperEls !== !this.#currentViewkeeperEls) {\n return true;\n }\n\n if (viewkeeperEls && this.#currentViewkeeperEls) {\n if (viewkeeperEls.length !== this.#currentViewkeeperEls.length) {\n return true;\n }\n\n for (let i = 0, n = viewkeeperEls.length; i < n; i++) {\n if (viewkeeperEls[i] !== this.#currentViewkeeperEls[i]) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n #detectElements(): void {\n const viewkeeperEls = this.#getViewkeeperEls();\n\n if (this.#viewkeeperElsChanged(viewkeeperEls)) {\n this.#scrollableHostWatchUnsubscribe?.next();\n this.#scrollableHostWatchUnsubscribe?.complete();\n this.#scrollableHostWatchUnsubscribe = new Subject();\n\n if (this.#scrollableHostSvc) {\n this.#scrollableHostSvc\n .watchScrollableHost(this.#el)\n .pipe(takeUntil(this.#scrollableHostWatchUnsubscribe))\n .subscribe((scrollableHost) => {\n this.#destroyViewkeepers();\n\n let previousViewkeeperEl: HTMLElement | undefined = undefined;\n\n for (const viewkeeperEl of viewkeeperEls) {\n this.#viewkeepers.push(\n this.#viewkeeperSvc.create({\n boundaryEl: this.#el.nativeElement,\n scrollableHost:\n scrollableHost instanceof HTMLElement\n ? scrollableHost\n : undefined,\n el: viewkeeperEl,\n setWidth: true,\n verticalOffsetEl: previousViewkeeperEl,\n }),\n );\n\n previousViewkeeperEl = viewkeeperEl;\n }\n });\n }\n this.#scrollableHostWatchUnsubscribe.pipe(take(1)).subscribe(() => {\n this.#shadowElement?.classList.remove('sky-viewkeeper-shadow--active');\n });\n fromEvent(viewkeeperEls, 'afterViewkeeperSync')\n .pipe(\n takeUntil(this.#scrollableHostWatchUnsubscribe),\n observeOn(animationFrameScheduler),\n )\n .subscribe(() => {\n const applicable = viewkeeperEls.filter(\n (el) =>\n el.classList.contains('sky-viewkeeper-fixed') &&\n (!this.skyViewkeeperOmitShadow ||\n !el.matches(this.skyViewkeeperOmitShadow)),\n );\n if (applicable.length === 0) {\n this.#shadowElement?.classList.remove(\n 'sky-viewkeeper-shadow--active',\n );\n return;\n }\n this.#shadowElement?.classList.add('sky-viewkeeper-shadow--active');\n const boundingRectangles = applicable.map((el) =>\n el.getBoundingClientRect(),\n );\n const left = boundingRectangles.reduce(\n (num, rect) => Math.min(num, rect.left),\n Number.POSITIVE_INFINITY,\n );\n const right = boundingRectangles.reduce(\n (num, rect) => Math.max(num, rect.right),\n Number.NEGATIVE_INFINITY,\n );\n const top = boundingRectangles.reduce(\n (num, rect) => Math.min(num, rect.top),\n Number.POSITIVE_INFINITY,\n );\n const bottom = boundingRectangles.reduce(\n (num, rect) => Math.max(num, rect.bottom),\n Number.NEGATIVE_INFINITY,\n );\n this.#renderer.setStyle(\n this.#shadowElement,\n 'inset',\n `${top}px ${window.innerWidth - right}px ${window.innerHeight - bottom}px ${left}px`,\n );\n });\n\n this.#currentViewkeeperEls = viewkeeperEls;\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyViewkeeperDirective } from './viewkeeper.directive';\n\n@NgModule({\n declarations: [SkyViewkeeperDirective],\n exports: [SkyViewkeeperDirective],\n})\nexport class SkyViewkeeperModule {}\n","// Taken from Angular's version.ts file.\n// See: https://github.com/angular/angular/blob/16.2.x/packages/core/src/version.ts\n\n/**\n * Represents the version of a package.\n * @internal\n */\nexport class Version {\n public readonly major: string;\n public readonly minor: string;\n public readonly patch: string;\n\n constructor(public readonly full: string) {\n this.major = full.split('.')[0];\n this.minor = full.split('.')[1];\n this.patch = full.split('.').slice(2).join('.');\n }\n}\n\n/**\n * Represents the version of @skyux/core.\n */\nexport const VERSION = new Version('0.0.0-PLACEHOLDER');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SkyAffixService","i1.SkyAppWindowRef","observableFromEvent","i1.SkyMutationObserverService","_a","i1.SkyIdService","takeUntil","QUERIES","DEFAULT_BREAKPOINT","i2.SkyNumericService","i1","i1.SkyDynamicComponentService","i1.SkyDynamicComponentLegacyService","debounceTime","i2.SkyAppWindowRef","i3.SkyResizeObserverService","observableOf","i1.SkyViewkeeperHostOptions","i2.SkyViewkeeperService","i3.SkyScrollableHostService"],"mappings":"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"}
1
+ {"version":3,"file":"skyux-core.mjs","sources":["../tmp-esm2022/lib/modules/adapter-service/adapter.module.js","../tmp-esm2022/lib/modules/breakpoint-observer/breakpoint.js","../tmp-esm2022/lib/modules/media-query/media-breakpoints.js","../tmp-esm2022/lib/modules/breakpoint-observer/breakpoint-utils.js","../tmp-esm2022/lib/modules/adapter-service/adapter.service.js","../tmp-esm2022/lib/modules/affix/affix-auto-fit-context.js","../tmp-esm2022/lib/modules/affix/affix-utils.js","../tmp-esm2022/lib/modules/affix/dom-utils.js","../tmp-esm2022/lib/modules/affix/affixer.js","../tmp-esm2022/lib/modules/affix/affix.service.js","../tmp-esm2022/lib/modules/affix/affix.directive.js","../tmp-esm2022/lib/modules/affix/affix.module.js","../tmp-esm2022/lib/modules/content-info-provider/content-info-provider.js","../tmp-esm2022/lib/modules/default-input-provider/default-input-provider.js","../tmp-esm2022/lib/modules/dock/dock-item.js","../tmp-esm2022/lib/modules/dock/dock-location.js","../tmp-esm2022/lib/modules/dock/dock.module.js","../tmp-esm2022/lib/modules/dynamic-component/dynamic-component-location.js","../tmp-esm2022/lib/modules/window/window-ref.js","../tmp-esm2022/lib/modules/dynamic-component/dynamic-component.service.js","../tmp-esm2022/lib/modules/mutation/mutation-observer-service.js","../tmp-esm2022/lib/modules/dock/dock-dom-adapter.service.js","../tmp-esm2022/lib/modules/dock/sort-by-stack-order.js","../tmp-esm2022/lib/modules/dock/dock.component.js","../tmp-esm2022/lib/modules/dock/dock.service.js","../tmp-esm2022/lib/modules/dynamic-component/dynamic-component.module.js","../tmp-esm2022/lib/modules/file-reader/file-reader.service.js","../tmp-esm2022/lib/modules/format/app-format.js","../tmp-esm2022/lib/modules/help/help-global-options-token.js","../tmp-esm2022/lib/modules/help/help.service.js","../tmp-esm2022/lib/modules/id/id.service.js","../tmp-esm2022/lib/modules/id/id.directive.js","../tmp-esm2022/lib/modules/id/id.module.js","../tmp-esm2022/lib/modules/layout-host/layout-host.service.js","../tmp-esm2022/lib/modules/layout-host/layout-host.directive.js","../tmp-esm2022/lib/modules/live-announcer/live-announcer.service.js","../tmp-esm2022/lib/modules/log/log.module.js","../tmp-esm2022/lib/modules/log/types/log-level.js","../tmp-esm2022/lib/modules/log/types/log-level-token.js","../tmp-esm2022/lib/modules/log/log.service.js","../tmp-esm2022/lib/modules/breakpoint-observer/breakpoint-observer.token.js","../tmp-esm2022/lib/modules/resize-observer/resize-observer.service.js","../tmp-esm2022/lib/modules/breakpoint-observer/container-breakpoint-observer.js","../tmp-esm2022/lib/modules/breakpoint-observer/media-breakpoint-observer.js","../tmp-esm2022/lib/modules/media-query/media-query.service.js","../tmp-esm2022/lib/modules/breakpoint-observer/provide-breakpoint-observer.js","../tmp-esm2022/lib/modules/breakpoint-observer/responsive-host.directive.js","../tmp-esm2022/lib/modules/media-query/media-query.module.js","../tmp-esm2022/lib/modules/shared/sky-core-resources.module.js","../tmp-esm2022/lib/modules/numeric/numeric.options.js","../tmp-esm2022/lib/modules/shared/number-format/number-format-utility.js","../tmp-esm2022/lib/modules/numeric/numeric.service.js","../tmp-esm2022/lib/modules/numeric/numeric.pipe.js","../tmp-esm2022/lib/modules/numeric/numeric.module.js","../tmp-esm2022/lib/modules/overlay/overlay-instance.js","../tmp-esm2022/lib/modules/overlay/overlay.module.js","../tmp-esm2022/lib/modules/overlay/overlay-adapter.service.js","../tmp-esm2022/lib/modules/overlay/overlay-context.js","../tmp-esm2022/lib/modules/stacking-context/stacking-context-token.js","../tmp-esm2022/lib/modules/overlay/overlay.component.js","../tmp-esm2022/lib/modules/overlay/overlay.service.js","../tmp-esm2022/lib/modules/percent-pipe/percent.pipe.js","../tmp-esm2022/lib/modules/percent-pipe/percent-pipe.module.js","../tmp-esm2022/lib/modules/resize-observer/resize-observer-media-query.service.js","../tmp-esm2022/lib/modules/screen-reader-label/screen-reader-label.directive.js","../tmp-esm2022/lib/modules/scroll-shadow/scroll-shadow.directive.js","../tmp-esm2022/lib/modules/scrollable-host/scrollable-host.service.js","../tmp-esm2022/lib/modules/title/title.service.js","../tmp-esm2022/lib/modules/trim/trim.directive.js","../tmp-esm2022/lib/modules/trim/trim.module.js","../tmp-esm2022/lib/modules/ui-config/ui-config.service.js","../tmp-esm2022/lib/modules/viewkeeper/viewkeeper.js","../tmp-esm2022/lib/modules/viewkeeper/viewkeeper-host-options.js","../tmp-esm2022/lib/modules/viewkeeper/viewkeeper.service.js","../tmp-esm2022/lib/modules/viewkeeper/viewkeeper.directive.js","../tmp-esm2022/lib/modules/viewkeeper/viewkeeper.module.js","../tmp-esm2022/version.js","../tmp-esm2022/skyux-core.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated The `SkyCoreAdapterService` no longer needs the `SkyCoreAdapterModule`.\n * The `SkyCoreAdapterModule` can be removed from your project.\n */\nexport class SkyCoreAdapterModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCoreAdapterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCoreAdapterModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCoreAdapterModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCoreAdapterModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvYWRhcHRlci1zZXJ2aWNlL2FkYXB0ZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXpDOzs7R0FHRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7OEdBQXBCLG9CQUFvQjsrR0FBcEIsb0JBQW9COytHQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBRGhDLFFBQVE7bUJBQUMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVGhlIGBTa3lDb3JlQWRhcHRlclNlcnZpY2VgIG5vIGxvbmdlciBuZWVkcyB0aGUgYFNreUNvcmVBZGFwdGVyTW9kdWxlYC5cbiAqIFRoZSBgU2t5Q29yZUFkYXB0ZXJNb2R1bGVgIGNhbiBiZSByZW1vdmVkIGZyb20geW91ciBwcm9qZWN0LlxuICovXG5ATmdNb2R1bGUoe30pXG5leHBvcnQgY2xhc3MgU2t5Q29yZUFkYXB0ZXJNb2R1bGUge31cbiJdfQ==","/**\n * A list of all breakpoints.\n * @internal\n */\nexport const SKY_BREAKPOINTS = ['xs', 'sm', 'md', 'lg'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWtwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9icmVha3BvaW50LW9ic2VydmVyL2JyZWFrcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgbGlzdCBvZiBhbGwgYnJlYWtwb2ludHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFNLWV9CUkVBS1BPSU5UUyA9IFsneHMnLCAnc20nLCAnbWQnLCAnbGcnXSBhcyBjb25zdDtcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiBhIHZpZXdwb3J0IG9yIGNvbnRhaW5lciBicmVha3BvaW50LlxuICovXG5leHBvcnQgdHlwZSBTa3lCcmVha3BvaW50ID0gKHR5cGVvZiBTS1lfQlJFQUtQT0lOVFMpW251bWJlcl07XG4iXX0=","/**\n * Represents all available media breakpoints.\n * @deprecated Use `SkyBreakpoint` instead.\n */\nexport var SkyMediaBreakpoints;\n(function (SkyMediaBreakpoints) {\n /**\n * Screen widths of 767px or less.\n */\n SkyMediaBreakpoints[SkyMediaBreakpoints[\"xs\"] = 1] = \"xs\";\n /**\n * Screen widths of 768px to 991px.\n */\n SkyMediaBreakpoints[SkyMediaBreakpoints[\"sm\"] = 2] = \"sm\";\n /**\n * Screen widths of 992px to 1199px.\n */\n SkyMediaBreakpoints[SkyMediaBreakpoints[\"md\"] = 3] = \"md\";\n /**\n * Screen widths of 1200px or greater.\n */\n SkyMediaBreakpoints[SkyMediaBreakpoints[\"lg\"] = 4] = \"lg\";\n})(SkyMediaBreakpoints || (SkyMediaBreakpoints = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtYnJlYWtwb2ludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvbWVkaWEtcXVlcnkvbWVkaWEtYnJlYWtwb2ludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxDQUFOLElBQVksbUJBb0JYO0FBcEJELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gseURBQU0sQ0FBQTtJQUVOOztPQUVHO0lBQ0gseURBQUUsQ0FBQTtJQUVGOztPQUVHO0lBQ0gseURBQUUsQ0FBQTtJQUVGOztPQUVHO0lBQ0gseURBQUUsQ0FBQTtBQUNKLENBQUMsRUFwQlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQW9COUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcHJlc2VudHMgYWxsIGF2YWlsYWJsZSBtZWRpYSBicmVha3BvaW50cy5cbiAqIEBkZXByZWNhdGVkIFVzZSBgU2t5QnJlYWtwb2ludGAgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGVudW0gU2t5TWVkaWFCcmVha3BvaW50cyB7XG4gIC8qKlxuICAgKiBTY3JlZW4gd2lkdGhzIG9mIDc2N3B4IG9yIGxlc3MuXG4gICAqL1xuICB4cyA9IDEsXG5cbiAgLyoqXG4gICAqIFNjcmVlbiB3aWR0aHMgb2YgNzY4cHggdG8gOTkxcHguXG4gICAqL1xuICBzbSxcblxuICAvKipcbiAgICogU2NyZWVuIHdpZHRocyBvZiA5OTJweCB0byAxMTk5cHguXG4gICAqL1xuICBtZCxcblxuICAvKipcbiAgICogU2NyZWVuIHdpZHRocyBvZiAxMjAwcHggb3IgZ3JlYXRlci5cbiAgICovXG4gIGxnLFxufVxuIl19","import { SkyMediaBreakpoints } from '../media-query/media-breakpoints';\nimport { SKY_BREAKPOINTS } from './breakpoint';\nconst breakpointLookup = new Map([\n [SkyMediaBreakpoints.xs, 'xs'],\n [SkyMediaBreakpoints.sm, 'sm'],\n [SkyMediaBreakpoints.md, 'md'],\n [SkyMediaBreakpoints.lg, 'lg'],\n]);\nconst legacyLookup = new Map([\n ['xs', SkyMediaBreakpoints.xs],\n ['sm', SkyMediaBreakpoints.sm],\n ['md', SkyMediaBreakpoints.md],\n ['lg', SkyMediaBreakpoints.lg],\n]);\n/**\n * Whether the value is of type `SkyBreakpoint`.\n * @internal\n */\nexport function isSkyBreakpoint(value) {\n return (value !== null &&\n value !== undefined &&\n SKY_BREAKPOINTS.includes(value));\n}\n/**\n * Transforms a `SkyMediaBreakpoints` value to `SkyBreakpoint`.\n * @internal\n */\nexport function toSkyBreakpoint(breakpoint) {\n return breakpointLookup.get(breakpoint);\n}\n/**\n * Transforms a `SkyBreakpoint` value to `SkyMediaBreakpoints`.\n * @internal\n */\nexport function toSkyMediaBreakpoints(breakpoint) {\n return legacyLookup.get(breakpoint);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWtwb2ludC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9icmVha3BvaW50LW9ic2VydmVyL2JyZWFrcG9pbnQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGVBQWUsRUFBaUIsTUFBTSxjQUFjLENBQUM7QUFFOUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBcUM7SUFDbkUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO0lBQzlCLENBQUMsbUJBQW1CLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQztJQUM5QixDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUM7SUFDOUIsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO0NBQy9CLENBQUMsQ0FBQztBQUVILE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFxQztJQUMvRCxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7SUFDOUIsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDO0lBQzlCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztJQUM5QixDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7Q0FDL0IsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsS0FBNkQ7SUFFN0QsT0FBTyxDQUNMLEtBQUssS0FBSyxJQUFJO1FBQ2QsS0FBSyxLQUFLLFNBQVM7UUFDbkIsZUFBZSxDQUFDLFFBQVEsQ0FBQyxLQUFzQixDQUFDLENBQ2pELENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsVUFBK0I7SUFFL0IsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFrQixDQUFDO0FBQzNELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLFVBQXlCO0lBRXpCLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQXdCLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNreU1lZGlhQnJlYWtwb2ludHMgfSBmcm9tICcuLi9tZWRpYS1xdWVyeS9tZWRpYS1icmVha3BvaW50cyc7XG5cbmltcG9ydCB7IFNLWV9CUkVBS1BPSU5UUywgU2t5QnJlYWtwb2ludCB9IGZyb20gJy4vYnJlYWtwb2ludCc7XG5cbmNvbnN0IGJyZWFrcG9pbnRMb29rdXAgPSBuZXcgTWFwPFNreU1lZGlhQnJlYWtwb2ludHMsIFNreUJyZWFrcG9pbnQ+KFtcbiAgW1NreU1lZGlhQnJlYWtwb2ludHMueHMsICd4cyddLFxuICBbU2t5TWVkaWFCcmVha3BvaW50cy5zbSwgJ3NtJ10sXG4gIFtTa3lNZWRpYUJyZWFrcG9pbnRzLm1kLCAnbWQnXSxcbiAgW1NreU1lZGlhQnJlYWtwb2ludHMubGcsICdsZyddLFxuXSk7XG5cbmNvbnN0IGxlZ2FjeUxvb2t1cCA9IG5ldyBNYXA8U2t5QnJlYWtwb2ludCwgU2t5TWVkaWFCcmVha3BvaW50cz4oW1xuICBbJ3hzJywgU2t5TWVkaWFCcmVha3BvaW50cy54c10sXG4gIFsnc20nLCBTa3lNZWRpYUJyZWFrcG9pbnRzLnNtXSxcbiAgWydtZCcsIFNreU1lZGlhQnJlYWtwb2ludHMubWRdLFxuICBbJ2xnJywgU2t5TWVkaWFCcmVha3BvaW50cy5sZ10sXG5dKTtcblxuLyoqXG4gKiBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBvZiB0eXBlIGBTa3lCcmVha3BvaW50YC5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTa3lCcmVha3BvaW50KFxuICB2YWx1ZTogU2t5QnJlYWtwb2ludCB8IFNreU1lZGlhQnJlYWtwb2ludHMgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogdmFsdWUgaXMgU2t5QnJlYWtwb2ludCB7XG4gIHJldHVybiAoXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgU0tZX0JSRUFLUE9JTlRTLmluY2x1ZGVzKHZhbHVlIGFzIFNreUJyZWFrcG9pbnQpXG4gICk7XG59XG5cbi8qKlxuICogVHJhbnNmb3JtcyBhIGBTa3lNZWRpYUJyZWFrcG9pbnRzYCB2YWx1ZSB0byBgU2t5QnJlYWtwb2ludGAuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU2t5QnJlYWtwb2ludChcbiAgYnJlYWtwb2ludDogU2t5TWVkaWFCcmVha3BvaW50cyxcbik6IFNreUJyZWFrcG9pbnQge1xuICByZXR1cm4gYnJlYWtwb2ludExvb2t1cC5nZXQoYnJlYWtwb2ludCkgYXMgU2t5QnJlYWtwb2ludDtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm1zIGEgYFNreUJyZWFrcG9pbnRgIHZhbHVlIHRvIGBTa3lNZWRpYUJyZWFrcG9pbnRzYC5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Ta3lNZWRpYUJyZWFrcG9pbnRzKFxuICBicmVha3BvaW50OiBTa3lCcmVha3BvaW50LFxuKTogU2t5TWVkaWFCcmVha3BvaW50cyB7XG4gIHJldHVybiBsZWdhY3lMb29rdXAuZ2V0KGJyZWFrcG9pbnQpIGFzIFNreU1lZGlhQnJlYWtwb2ludHM7XG59XG4iXX0=","import { Injectable, } from '@angular/core';\nimport { SKY_BREAKPOINTS, } from '../breakpoint-observer/breakpoint';\nimport { isSkyBreakpoint, toSkyBreakpoint, } from '../breakpoint-observer/breakpoint-utils';\nimport * as i0 from \"@angular/core\";\nconst SKY_TABBABLE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled])',\n 'button:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '*[contenteditable=true]:not([disabled])',\n '*[tabindex]:not([disabled])',\n].join(', ');\nexport class SkyCoreAdapterService {\n #renderer;\n constructor(rendererFactory) {\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n /**\n * Set the responsive container CSS class for a given element.\n *\n * @param elementRef - The element that will receive the new CSS class.\n * @param breakpoint - The breakpoint to determine which class gets set.\n * For example a breakpoint of \"xs\" will set a CSS class of \"sky-responsive-container-xs\".\n * @deprecated Use the `SkyResponsiveHostDirective` instead.\n */\n setResponsiveContainerClass(elementRef, breakpoint) {\n const nativeEl = elementRef.nativeElement;\n for (const breakpointType of SKY_BREAKPOINTS) {\n this.#renderer.removeClass(nativeEl, `sky-responsive-container-${breakpointType}`);\n }\n if (!isSkyBreakpoint(breakpoint)) {\n breakpoint = toSkyBreakpoint(breakpoint);\n }\n this.#renderer.addClass(nativeEl, `sky-responsive-container-${breakpoint}`);\n }\n /**\n * This method temporarily enables/disables pointer events.\n * This is helpful to prevent iFrames from interfering with drag events.\n *\n * @param enable - Set to `true` to enable pointer events. Set to `false` to disable.\n */\n toggleIframePointerEvents(enable) {\n const iframes = Array.from(document.querySelectorAll('iframe'));\n for (const iframe of iframes) {\n this.#renderer.setStyle(iframe, 'pointer-events', enable ? '' : 'none');\n }\n }\n /**\n * Focuses on the first element found with an `autofocus` attribute inside the supplied `elementRef`.\n *\n * @param elementRef - The element to search within.\n * @return Returns `true` if a child element with autofocus is found.\n */\n applyAutoFocus(elementRef) {\n if (!elementRef) {\n return false;\n }\n const elementWithAutoFocus = elementRef.nativeElement.querySelector('[autofocus]');\n // Child was found with the autofocus property. Set focus and return true.\n if (elementWithAutoFocus) {\n elementWithAutoFocus.focus();\n return true;\n }\n // No children were found with autofocus property. Return false.\n return false;\n }\n /**\n * Sets focus on the first focusable child of the `elementRef` parameter.\n * If no focusable children are found, and `focusOnContainerIfNoChildrenFound` is `true`,\n * focus will be set on the container element.\n *\n * @param elementRef - The element to search within.\n * @param containerSelector - A CSS selector indicating the container that should\n * receive focus if no focusable children are found.\n * @param focusOnContainerIfNoChildrenFound - It set to `true`, the container will\n * receive focus if no focusable children are found.\n */\n getFocusableChildrenAndApplyFocus(elementRef, containerSelector, focusOnContainerIfNoChildrenFound = false) {\n const containerElement = elementRef.nativeElement.querySelector(containerSelector);\n if (containerElement) {\n const focusableChildren = this.getFocusableChildren(containerElement);\n // Focus first focusable child if available. Otherwise, set focus on container.\n if (!this.#focusFirstElement(focusableChildren) &&\n focusOnContainerIfNoChildrenFound) {\n containerElement.focus();\n }\n }\n }\n /**\n * Returns an array of all focusable children of provided `element`.\n *\n * @param element - The HTMLElement to search within.\n * @param options - Options for getting focusable children.\n */\n getFocusableChildren(element, options) {\n if (!element) {\n return [];\n }\n let elements = Array.prototype.slice.call(element.querySelectorAll(SKY_TABBABLE_SELECTOR));\n // Unless ignoreTabIndex = true, filter out elements with tabindex = -1.\n if (!options || !options.ignoreTabIndex) {\n elements = elements.filter((el) => {\n return el.tabIndex !== -1;\n });\n }\n // Unless ignoreVisibility = true, filter out elements that are not visible.\n if (!options || !options.ignoreVisibility) {\n elements = elements.filter((el) => {\n return this.#isVisible(el);\n });\n }\n return elements;\n }\n /**\n * Returns the clientWidth of the provided elementRef.\n * @param elementRef - The element to calculate width from.\n */\n getWidth(elementRef) {\n return elementRef.nativeElement.clientWidth;\n }\n /**\n * Checks if an event target has a higher z-index than a given element.\n * @param target The event target element.\n * @param element The element to test against. A z-index must be explicitly set for this element.\n */\n isTargetAboveElement(target, element) {\n const zIndex = getComputedStyle(element).zIndex;\n let el = target;\n while (el) {\n // Getting the computed style only works for elements that exist in the DOM.\n // In certain scenarios, an element is removed after a click event; by the time the event\n // bubbles up to other elements, however, the element has been removed and the computed style returns empty.\n // In this case, we'll need to check the z-index directly, via the style property.\n const targetZIndex = getComputedStyle(el).zIndex || el.style.zIndex;\n if (targetZIndex !== '' &&\n targetZIndex !== 'auto' &&\n +targetZIndex > +zIndex) {\n return true;\n }\n el = el.parentElement;\n }\n return false;\n }\n /**\n * Remove inline height styles from the provided elements.\n * @param elementRef - The element to search within.\n * @param selector - The CSS selector to use when finding elements for removing height.\n */\n resetHeight(elementRef, selector) {\n const children = Array.from(elementRef.nativeElement.querySelectorAll(selector));\n for (const child of children) {\n this.#renderer.removeStyle(child, 'height');\n }\n }\n /**\n * Sets all element heights to match the height of the tallest element.\n * @param elementRef - The element to search within.\n * @param selector - The CSS selector to use when finding elements for syncing height.\n */\n syncMaxHeight(elementRef, selector) {\n const children = Array.from(elementRef.nativeElement.querySelectorAll(selector));\n /* istanbul ignore else */\n if (children.length > 0) {\n let maxHeight = 0;\n for (const child of children) {\n maxHeight = Math.max(maxHeight, child.offsetHeight);\n }\n for (const child of children) {\n this.#renderer.setStyle(child, 'height', `${maxHeight}px`);\n }\n }\n }\n #focusFirstElement(list) {\n if (list.length > 0) {\n list[0].focus();\n return true;\n }\n return false;\n }\n #isVisible(element) {\n const style = window.getComputedStyle(element);\n const isHidden = style.display === 'none' || style.visibility === 'hidden';\n if (isHidden) {\n return false;\n }\n const hasBounds = !!(element.offsetWidth ||\n element.offsetHeight ||\n element.getClientRects().length);\n return hasBounds;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCoreAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCoreAdapterService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCoreAdapterService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i0.RendererFactory2 }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2FkYXB0ZXItc2VydmljZS9hZGFwdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFVBQVUsR0FHWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsZUFBZSxHQUVoQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLHlDQUF5QyxDQUFDOztBQUtqRCxNQUFNLHFCQUFxQixHQUFHO0lBQzVCLFNBQVM7SUFDVCxZQUFZO0lBQ1osdUJBQXVCO0lBQ3ZCLHdCQUF3QjtJQUN4Qix3QkFBd0I7SUFDeEIsMEJBQTBCO0lBQzFCLFFBQVE7SUFDUixRQUFRO0lBQ1IsT0FBTztJQUNQLHlDQUF5QztJQUN6Qyw2QkFBNkI7Q0FDOUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFLYixNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFNBQVMsQ0FBWTtJQUVyQixZQUFZLGVBQWlDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSwyQkFBMkIsQ0FDaEMsVUFBc0IsRUFDdEIsVUFBK0M7UUFFL0MsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUUxQyxLQUFLLE1BQU0sY0FBYyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUN4QixRQUFRLEVBQ1IsNEJBQTRCLGNBQWMsRUFBRSxDQUM3QyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsVUFB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V0FBVztZQUNuQixPQUFPLENBQUMsWUFBWTtZQUNwQixPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUNoQyxDQUFDO1FBQ0YsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzs4R0E5T1UscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdGFibGUsXG4gIFJlbmRlcmVyMixcbiAgUmVuZGVyZXJGYWN0b3J5Mixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNLWV9CUkVBS1BPSU5UUyxcbiAgU2t5QnJlYWtwb2ludCxcbn0gZnJvbSAnLi4vYnJlYWtwb2ludC1vYnNlcnZlci9icmVha3BvaW50JztcbmltcG9ydCB7XG4gIGlzU2t5QnJlYWtwb2ludCxcbiAgdG9Ta3lCcmVha3BvaW50LFxufSBmcm9tICcuLi9icmVha3BvaW50LW9ic2VydmVyL2JyZWFrcG9pbnQtdXRpbHMnO1xuaW1wb3J0IHsgU2t5TWVkaWFCcmVha3BvaW50cyB9IGZyb20gJy4uL21lZGlhLXF1ZXJ5L21lZGlhLWJyZWFrcG9pbnRzJztcblxuaW1wb3J0IHsgU2t5Rm9jdXNhYmxlQ2hpbGRyZW5PcHRpb25zIH0gZnJvbSAnLi9mb2N1c2FibGUtY2hpbGRyZW4tb3B0aW9ucyc7XG5cbmNvbnN0IFNLWV9UQUJCQUJMRV9TRUxFQ1RPUiA9IFtcbiAgJ2FbaHJlZl0nLFxuICAnYXJlYVtocmVmXScsXG4gICdpbnB1dDpub3QoW2Rpc2FibGVkXSknLFxuICAnYnV0dG9uOm5vdChbZGlzYWJsZWRdKScsXG4gICdzZWxlY3Q6bm90KFtkaXNhYmxlZF0pJyxcbiAgJ3RleHRhcmVhOm5vdChbZGlzYWJsZWRdKScsXG4gICdpZnJhbWUnLFxuICAnb2JqZWN0JyxcbiAgJ2VtYmVkJyxcbiAgJypbY29udGVudGVkaXRhYmxlPXRydWVdOm5vdChbZGlzYWJsZWRdKScsXG4gICcqW3RhYmluZGV4XTpub3QoW2Rpc2FibGVkXSknLFxuXS5qb2luKCcsICcpO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlIHtcbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgY29uc3RydWN0b3IocmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyKSB7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCBudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHJlc3BvbnNpdmUgY29udGFpbmVyIENTUyBjbGFzcyBmb3IgYSBnaXZlbiBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiAtIFRoZSBlbGVtZW50IHRoYXQgd2lsbCByZWNlaXZlIHRoZSBuZXcgQ1NTIGNsYXNzLlxuICAgKiBAcGFyYW0gYnJlYWtwb2ludCAtIFRoZSBicmVha3BvaW50IHRvIGRldGVybWluZSB3aGljaCBjbGFzcyBnZXRzIHNldC5cbiAgICogRm9yIGV4YW1wbGUgYSBicmVha3BvaW50IG9mIFwieHNcIiB3aWxsIHNldCBhIENTUyBjbGFzcyBvZiBcInNreS1yZXNwb25zaXZlLWNvbnRhaW5lci14c1wiLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGBTa3lSZXNwb25zaXZlSG9zdERpcmVjdGl2ZWAgaW5zdGVhZC5cbiAgICovXG4gIHB1YmxpYyBzZXRSZXNwb25zaXZlQ29udGFpbmVyQ2xhc3MoXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBicmVha3BvaW50OiBTa3lCcmVha3BvaW50IHwgU2t5TWVkaWFCcmVha3BvaW50cyxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgbmF0aXZlRWwgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBmb3IgKGNvbnN0IGJyZWFrcG9pbnRUeXBlIG9mIFNLWV9CUkVBS1BPSU5UUykge1xuICAgICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG4gICAgICAgIG5hdGl2ZUVsLFxuICAgICAgICBgc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLSR7YnJlYWtwb2ludFR5cGV9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1NreUJyZWFrcG9pbnQoYnJlYWtwb2ludCkpIHtcbiAgICAgIGJyZWFrcG9pbnQgPSB0b1NreUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7XG4gICAgfVxuXG4gICAgdGhpcy4jcmVuZGVyZXIuYWRkQ2xhc3MobmF0aXZlRWwsIGBza3ktcmVzcG9uc2l2ZS1jb250YWluZXItJHticmVha3BvaW50fWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHRlbXBvcmFyaWx5IGVuYWJsZXMvZGlzYWJsZXMgcG9pbnRlciBldmVudHMuXG4gICAqIFRoaXMgaXMgaGVscGZ1bCB0byBwcmV2ZW50IGlGcmFtZXMgZnJvbSBpbnRlcmZlcmluZyB3aXRoIGRyYWcgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gZW5hYmxlIC0gU2V0IHRvIGB0cnVlYCB0byBlbmFibGUgcG9pbnRlciBldmVudHMuIFNldCB0byBgZmFsc2VgIHRvIGRpc2FibGUuXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlSWZyYW1lUG9pbnRlckV2ZW50cyhlbmFibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBpZnJhbWVzID0gQXJyYXkuZnJvbTxIVE1MRWxlbWVudD4oXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpZnJhbWUnKSxcbiAgICApO1xuICAgIGZvciAoY29uc3QgaWZyYW1lIG9mIGlmcmFtZXMpIHtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKGlmcmFtZSwgJ3BvaW50ZXItZXZlbnRzJywgZW5hYmxlID8gJycgOiAnbm9uZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1c2VzIG9uIHRoZSBmaXJzdCBlbGVtZW50IGZvdW5kIHdpdGggYW4gYGF1dG9mb2N1c2AgYXR0cmlidXRlIGluc2lkZSB0aGUgc3VwcGxpZWQgYGVsZW1lbnRSZWZgLlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiAtIFRoZSBlbGVtZW50IHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIEByZXR1cm4gUmV0dXJucyBgdHJ1ZWAgaWYgYSBjaGlsZCBlbGVtZW50IHdpdGggYXV0b2ZvY3VzIGlzIGZvdW5kLlxuICAgKi9cbiAgcHVibGljIGFwcGx5QXV0b0ZvY3VzKGVsZW1lbnRSZWY/OiBFbGVtZW50UmVmKTogYm9vbGVhbiB7XG4gICAgaWYgKCFlbGVtZW50UmVmKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudFdpdGhBdXRvRm9jdXMgPVxuICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1thdXRvZm9jdXNdJyk7XG5cbiAgICAvLyBDaGlsZCB3YXMgZm91bmQgd2l0aCB0aGUgYXV0b2ZvY3VzIHByb3BlcnR5LiBTZXQgZm9jdXMgYW5kIHJldHVybiB0cnVlLlxuICAgIGlmIChlbGVtZW50V2l0aEF1dG9Gb2N1cykge1xuICAgICAgZWxlbWVudFdpdGhBdXRvRm9jdXMuZm9jdXMoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIE5vIGNoaWxkcmVuIHdlcmUgZm91bmQgd2l0aCBhdXRvZm9jdXMgcHJvcGVydHkuIFJldHVybiBmYWxzZS5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBmb2N1cyBvbiB0aGUgZmlyc3QgZm9jdXNhYmxlIGNoaWxkIG9mIHRoZSBgZWxlbWVudFJlZmAgcGFyYW1ldGVyLlxuICAgKiBJZiBubyBmb2N1c2FibGUgY2hpbGRyZW4gYXJlIGZvdW5kLCBhbmQgYGZvY3VzT25Db250YWluZXJJZk5vQ2hpbGRyZW5Gb3VuZGAgaXMgYHRydWVgLFxuICAgKiBmb2N1cyB3aWxsIGJlIHNldCBvbiB0aGUgY29udGFpbmVyIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIC0gVGhlIGVsZW1lbnQgdG8gc2VhcmNoIHdpdGhpbi5cbiAgICogQHBhcmFtIGNvbnRhaW5lclNlbGVjdG9yIC0gQSBDU1Mgc2VsZWN0b3IgaW5kaWNhdGluZyB0aGUgY29udGFpbmVyIHRoYXQgc2hvdWxkXG4gICAqIHJlY2VpdmUgZm9jdXMgaWYgbm8gZm9jdXNhYmxlIGNoaWxkcmVuIGFyZSBmb3VuZC5cbiAgICogQHBhcmFtIGZvY3VzT25Db250YWluZXJJZk5vQ2hpbGRyZW5Gb3VuZCAtIEl0IHNldCB0byBgdHJ1ZWAsIHRoZSBjb250YWluZXIgd2lsbFxuICAgKiByZWNlaXZlIGZvY3VzIGlmIG5vIGZvY3VzYWJsZSBjaGlsZHJlbiBhcmUgZm91bmQuXG4gICAqL1xuICBwdWJsaWMgZ2V0Rm9jdXNhYmxlQ2hpbGRyZW5BbmRBcHBseUZvY3VzKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgY29udGFpbmVyU2VsZWN0b3I/OiBzdHJpbmcsXG4gICAgZm9jdXNPbkNvbnRhaW5lcklmTm9DaGlsZHJlbkZvdW5kID0gZmFsc2UsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPVxuICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoY29udGFpbmVyU2VsZWN0b3IpO1xuXG4gICAgaWYgKGNvbnRhaW5lckVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGZvY3VzYWJsZUNoaWxkcmVuID0gdGhpcy5nZXRGb2N1c2FibGVDaGlsZHJlbihjb250YWluZXJFbGVtZW50KTtcblxuICAgICAgLy8gRm9jdXMgZmlyc3QgZm9jdXNhYmxlIGNoaWxkIGlmIGF2YWlsYWJsZS4gT3RoZXJ3aXNlLCBzZXQgZm9jdXMgb24gY29udGFpbmVyLlxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy4jZm9jdXNGaXJzdEVsZW1lbnQoZm9jdXNhYmxlQ2hpbGRyZW4pICYmXG4gICAgICAgIGZvY3VzT25Db250YWluZXJJZk5vQ2hpbGRyZW5Gb3VuZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnRhaW5lckVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgZm9jdXNhYmxlIGNoaWxkcmVuIG9mIHByb3ZpZGVkIGBlbGVtZW50YC5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgSFRNTEVsZW1lbnQgdG8gc2VhcmNoIHdpdGhpbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciBnZXR0aW5nIGZvY3VzYWJsZSBjaGlsZHJlbi5cbiAgICovXG4gIHB1YmxpYyBnZXRGb2N1c2FibGVDaGlsZHJlbihcbiAgICBlbGVtZW50PzogSFRNTEVsZW1lbnQsXG4gICAgb3B0aW9ucz86IFNreUZvY3VzYWJsZUNoaWxkcmVuT3B0aW9ucyxcbiAgKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IGVsZW1lbnRzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoXG4gICAgICBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoU0tZX1RBQkJBQkxFX1NFTEVDVE9SKSxcbiAgICApO1xuXG4gICAgLy8gVW5sZXNzIGlnbm9yZVRhYkluZGV4ID0gdHJ1ZSwgZmlsdGVyIG91dCBlbGVtZW50cyB3aXRoIHRhYmluZGV4ID0gLTEuXG4gICAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLmlnbm9yZVRhYkluZGV4KSB7XG4gICAgICBlbGVtZW50cyA9IGVsZW1lbnRzLmZpbHRlcigoZWw6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBlbC50YWJJbmRleCAhPT0gLTE7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBVbmxlc3MgaWdub3JlVmlzaWJpbGl0eSA9IHRydWUsIGZpbHRlciBvdXQgZWxlbWVudHMgdGhhdCBhcmUgbm90IHZpc2libGUuXG4gICAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLmlnbm9yZVZpc2liaWxpdHkpIHtcbiAgICAgIGVsZW1lbnRzID0gZWxlbWVudHMuZmlsdGVyKChlbDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2lzVmlzaWJsZShlbCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbWVudHM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY2xpZW50V2lkdGggb2YgdGhlIHByb3ZpZGVkIGVsZW1lbnRSZWYuXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIC0gVGhlIGVsZW1lbnQgdG8gY2FsY3VsYXRlIHdpZHRoIGZyb20uXG4gICAqL1xuICBwdWJsaWMgZ2V0V2lkdGgoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IG51bWJlciB7XG4gICAgcmV0dXJuIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYW4gZXZlbnQgdGFyZ2V0IGhhcyBhIGhpZ2hlciB6LWluZGV4IHRoYW4gYSBnaXZlbiBlbGVtZW50LlxuICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSBldmVudCB0YXJnZXQgZWxlbWVudC5cbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gdGVzdCBhZ2FpbnN0LiBBIHotaW5kZXggbXVzdCBiZSBleHBsaWNpdGx5IHNldCBmb3IgdGhpcyBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGlzVGFyZ2V0QWJvdmVFbGVtZW50KFxuICAgIHRhcmdldDogRXZlbnRUYXJnZXQsXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHpJbmRleCA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuekluZGV4O1xuXG4gICAgbGV0IGVsID0gdGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgd2hpbGUgKGVsKSB7XG4gICAgICAvLyBHZXR0aW5nIHRoZSBjb21wdXRlZCBzdHlsZSBvbmx5IHdvcmtzIGZvciBlbGVtZW50cyB0aGF0IGV4aXN0IGluIHRoZSBET00uXG4gICAgICAvLyBJbiBjZXJ0YWluIHNjZW5hcmlvcywgYW4gZWxlbWVudCBpcyByZW1vdmVkIGFmdGVyIGEgY2xpY2sgZXZlbnQ7IGJ5IHRoZSB0aW1lIHRoZSBldmVudFxuICAgICAgLy8gYnViYmxlcyB1cCB0byBvdGhlciBlbGVtZW50cywgaG93ZXZlciwgdGhlIGVsZW1lbnQgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgdGhlIGNvbXB1dGVkIHN0eWxlIHJldHVybnMgZW1wdHkuXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHotaW5kZXggZGlyZWN0bHksIHZpYSB0aGUgc3R5bGUgcHJvcGVydHkuXG4gICAgICBjb25zdCB0YXJnZXRaSW5kZXggPSBnZXRDb21wdXRlZFN0eWxlKGVsKS56SW5kZXggfHwgZWwuc3R5bGUuekluZGV4O1xuICAgICAgaWYgKFxuICAgICAgICB0YXJnZXRaSW5kZXggIT09ICcnICYmXG4gICAgICAgIHRhcmdldFpJbmRleCAhPT0gJ2F1dG8nICYmXG4gICAgICAgICt0YXJnZXRaSW5kZXggPiArekluZGV4XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGVsID0gZWwucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGlubGluZSBoZWlnaHQgc3R5bGVzIGZyb20gdGhlIHByb3ZpZGVkIGVsZW1lbnRzLlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiAtIFRoZSBlbGVtZW50IHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIEBwYXJhbSBzZWxlY3RvciAtIFRoZSBDU1Mgc2VsZWN0b3IgdG8gdXNlIHdoZW4gZmluZGluZyBlbGVtZW50cyBmb3IgcmVtb3ZpbmcgaGVpZ2h0LlxuICAgKi9cbiAgcHVibGljIHJlc2V0SGVpZ2h0KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb208SFRNTEVsZW1lbnQ+KFxuICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpLFxuICAgICk7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlU3R5bGUoY2hpbGQsICdoZWlnaHQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbGwgZWxlbWVudCBoZWlnaHRzIHRvIG1hdGNoIHRoZSBoZWlnaHQgb2YgdGhlIHRhbGxlc3QgZWxlbWVudC5cbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgLSBUaGUgZWxlbWVudCB0byBzZWFyY2ggd2l0aGluLlxuICAgKiBAcGFyYW0gc2VsZWN0b3IgLSBUaGUgQ1NTIHNlbGVjdG9yIHRvIHVzZSB3aGVuIGZpbmRpbmcgZWxlbWVudHMgZm9yIHN5bmNpbmcgaGVpZ2h0LlxuICAgKi9cbiAgcHVibGljIHN5bmNNYXhIZWlnaHQoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgc2VsZWN0b3I6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJvbTxIVE1MRWxlbWVudD4oXG4gICAgICBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvciksXG4gICAgKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBsZXQgbWF4SGVpZ2h0ID0gMDtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgbWF4SGVpZ2h0ID0gTWF0aC5tYXgobWF4SGVpZ2h0LCBjaGlsZC5vZmZzZXRIZWlnaHQpO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZShjaGlsZCwgJ2hlaWdodCcsIGAke21heEhlaWdodH1weGApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNmb2N1c0ZpcnN0RWxlbWVudChsaXN0OiBIVE1MRWxlbWVudFtdKTogYm9vbGVhbiB7XG4gICAgaWYgKGxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgbGlzdFswXS5mb2N1cygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gICNpc1Zpc2libGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAgIGNvbnN0IGlzSGlkZGVuID0gc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnIHx8IHN0eWxlLnZpc2liaWxpdHkgPT09ICdoaWRkZW4nO1xuICAgIGlmIChpc0hpZGRlbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc0JvdW5kcyA9ICEhKFxuICAgICAgZWxlbWVudC5vZmZzZXRXaWR0aCB8fFxuICAgICAgZWxlbWVudC5vZmZzZXRIZWlnaHQgfHxcbiAgICAgIGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGhcbiAgICApO1xuICAgIHJldHVybiBoYXNCb3VuZHM7XG4gIH1cbn1cbiJdfQ==","export var SkyAffixAutoFitContext;\n(function (SkyAffixAutoFitContext) {\n /**\n * Auto-fit functionality will respect the nearest overflow parent element's dimensions.\n */\n SkyAffixAutoFitContext[SkyAffixAutoFitContext[\"OverflowParent\"] = 0] = \"OverflowParent\";\n /**\n * Auto-fit functionality will respect the browser viewport dimensions.\n */\n SkyAffixAutoFitContext[SkyAffixAutoFitContext[\"Viewport\"] = 1] = \"Viewport\";\n})(SkyAffixAutoFitContext || (SkyAffixAutoFitContext = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXgtYXV0by1maXQtY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9hZmZpeC9hZmZpeC1hdXRvLWZpdC1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLHNCQVVYO0FBVkQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCx1RkFBa0IsQ0FBQTtJQUVsQjs7T0FFRztJQUNILDJFQUFZLENBQUE7QUFDZCxDQUFDLEVBVlcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQVVqQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFNreUFmZml4QXV0b0ZpdENvbnRleHQge1xuICAvKipcbiAgICogQXV0by1maXQgZnVuY3Rpb25hbGl0eSB3aWxsIHJlc3BlY3QgdGhlIG5lYXJlc3Qgb3ZlcmZsb3cgcGFyZW50IGVsZW1lbnQncyBkaW1lbnNpb25zLlxuICAgKi9cbiAgT3ZlcmZsb3dQYXJlbnQgPSAwLFxuXG4gIC8qKlxuICAgKiBBdXRvLWZpdCBmdW5jdGlvbmFsaXR5IHdpbGwgcmVzcGVjdCB0aGUgYnJvd3NlciB2aWV3cG9ydCBkaW1lbnNpb25zLlxuICAgKi9cbiAgVmlld3BvcnQgPSAxLFxufVxuIl19","export function getNextPlacement(placement) {\n const placements = ['above', 'right', 'below', 'left'];\n let index = placements.indexOf(placement) + 1;\n if (index >= placements.length) {\n index = 0;\n }\n return placements[index];\n}\nexport function getInversePlacement(placement) {\n const pairings = {\n above: 'below',\n below: 'above',\n right: 'left',\n left: 'right',\n };\n return pairings[placement];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXgtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvYWZmaXgvYWZmaXgtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixTQUE0QjtJQUU1QixNQUFNLFVBQVUsR0FBd0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU1RSxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QyxJQUFJLEtBQUssSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDL0IsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxTQUE0QjtJQUU1QixNQUFNLFFBQVEsR0FBc0M7UUFDbEQsS0FBSyxFQUFFLE9BQU87UUFDZCxLQUFLLEVBQUUsT0FBTztRQUNkLEtBQUssRUFBRSxNQUFNO1FBQ2IsSUFBSSxFQUFFLE9BQU87S0FDZCxDQUFDO0lBRUYsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNreUFmZml4UGxhY2VtZW50IH0gZnJvbSAnLi9hZmZpeC1wbGFjZW1lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV4dFBsYWNlbWVudChcbiAgcGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudCxcbik6IFNreUFmZml4UGxhY2VtZW50IHtcbiAgY29uc3QgcGxhY2VtZW50czogU2t5QWZmaXhQbGFjZW1lbnRbXSA9IFsnYWJvdmUnLCAncmlnaHQnLCAnYmVsb3cnLCAnbGVmdCddO1xuXG4gIGxldCBpbmRleCA9IHBsYWNlbWVudHMuaW5kZXhPZihwbGFjZW1lbnQpICsgMTtcbiAgaWYgKGluZGV4ID49IHBsYWNlbWVudHMubGVuZ3RoKSB7XG4gICAgaW5kZXggPSAwO1xuICB9XG5cbiAgcmV0dXJuIHBsYWNlbWVudHNbaW5kZXhdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW52ZXJzZVBsYWNlbWVudChcbiAgcGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudCxcbik6IFNreUFmZml4UGxhY2VtZW50IHtcbiAgY29uc3QgcGFpcmluZ3M6IFJlY29yZDxzdHJpbmcsIFNreUFmZml4UGxhY2VtZW50PiA9IHtcbiAgICBhYm92ZTogJ2JlbG93JyxcbiAgICBiZWxvdzogJ2Fib3ZlJyxcbiAgICByaWdodDogJ2xlZnQnLFxuICAgIGxlZnQ6ICdyaWdodCcsXG4gIH07XG5cbiAgcmV0dXJuIHBhaXJpbmdzW3BsYWNlbWVudF07XG59XG4iXX0=","function useViewportForBounds(element) {\n return 'BODY' === element.tagName;\n}\n/**\n * Returns the offset values of a given element.\n * @param element The HTML element.\n * @param bufferOffset An optional offset to add/subtract to the element's actual offset.\n */\nexport function getElementOffset(element, bufferOffset) {\n const bufferOffsetBottom = bufferOffset?.bottom || 0;\n const bufferOffsetLeft = bufferOffset?.left || 0;\n const bufferOffsetRight = bufferOffset?.right || 0;\n const bufferOffsetTop = bufferOffset?.top || 0;\n let top;\n let left;\n let right;\n let bottom;\n const clientRect = element.getBoundingClientRect();\n left = clientRect.left;\n top = clientRect.top;\n right = clientRect.right;\n bottom = clientRect.bottom;\n bottom -= bufferOffsetBottom;\n left += bufferOffsetLeft;\n right -= bufferOffsetRight;\n top += bufferOffsetTop;\n return {\n bottom,\n left,\n right,\n top,\n };\n}\n/**\n * Returns an AffixRect that represents the outer dimensions of a given element.\n */\nexport function getOuterRect(element) {\n const rect = element.getBoundingClientRect();\n const computedStyle = window.getComputedStyle(element, undefined);\n const marginTop = parseFloat(computedStyle.marginTop);\n const marginLeft = parseFloat(computedStyle.marginLeft);\n const marginRight = parseFloat(computedStyle.marginRight);\n const marginBottom = parseFloat(computedStyle.marginBottom);\n return {\n top: rect.top - marginTop,\n left: rect.left - marginLeft,\n bottom: rect.top + rect.height + marginBottom,\n right: rect.left + rect.width + marginLeft + marginRight,\n width: rect.width + marginLeft + marginRight,\n height: rect.height + marginTop + marginBottom,\n };\n}\n/**\n * Returns the visible rect for a given element.\n */\nexport function getVisibleRectForElement(viewportRuler, element) {\n const elementRect = getOuterRect(element);\n const viewportRect = viewportRuler.getViewportRect();\n const visibleRect = {\n top: Math.max(elementRect.top, 0),\n left: Math.max(elementRect.left, 0),\n bottom: Math.min(elementRect.bottom, viewportRect.height),\n right: Math.min(elementRect.right, viewportRect.width),\n };\n return {\n ...visibleRect,\n width: visibleRect.right - visibleRect.left,\n height: visibleRect.bottom - visibleRect.top,\n };\n}\nexport function getOverflowParents(child) {\n const bodyElement = window.document.body;\n const results = [];\n let parentElement = child?.parentNode;\n while (parentElement !== undefined && parentElement instanceof HTMLElement) {\n if (parentElement.matches('body')) {\n break;\n }\n const computedStyle = window.getComputedStyle(parentElement, undefined);\n const overflowY = computedStyle.overflowY.toLowerCase();\n const largerThanTheDocumentElement = window.document.documentElement.scrollWidth < parentElement.scrollWidth ||\n window.document.documentElement.scrollHeight < parentElement.scrollHeight;\n const hasOverflowRules = overflowY === 'auto' || overflowY === 'hidden' || overflowY === 'scroll';\n if (largerThanTheDocumentElement || hasOverflowRules) {\n results.push(parentElement);\n }\n if (computedStyle.position === 'fixed') {\n break;\n }\n parentElement = parentElement.parentNode;\n }\n results.push(bodyElement);\n return results;\n}\n/**\n * Confirms offset is fully visible within a parent element.\n */\nexport function isOffsetFullyVisibleWithinParent(viewportRuler, parent, offset, bufferOffset) {\n let parentOffset;\n if (useViewportForBounds(parent)) {\n const viewportRect = viewportRuler.getViewportRect();\n parentOffset = {\n top: 0,\n left: 0,\n right: viewportRect.width,\n bottom: viewportRect.height,\n };\n }\n else if (bufferOffset) {\n parentOffset = getElementOffset(parent, bufferOffset);\n }\n else {\n parentOffset = getVisibleRectForElement(viewportRuler, parent);\n }\n return (parentOffset.top <= offset.top &&\n parentOffset.right >= offset.right &&\n parentOffset.bottom >= offset.bottom &&\n parentOffset.left <= offset.left);\n}\nexport function isOffsetPartiallyVisibleWithinParent(viewportRuler, parent, offset, bufferOffset) {\n let parentOffset;\n if (useViewportForBounds(parent)) {\n const viewportRect = viewportRuler.getViewportRect();\n parentOffset = {\n top: 0,\n left: 0,\n right: viewportRect.width,\n bottom: viewportRect.height,\n };\n }\n else if (bufferOffset) {\n parentOffset = getElementOffset(parent, bufferOffset);\n }\n else {\n parentOffset = getVisibleRectForElement(viewportRuler, parent);\n }\n return !(parentOffset.top >= offset.bottom ||\n parentOffset.right <= offset.left ||\n parentOffset.bottom <= offset.top ||\n parentOffset.left >= offset.right);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2FmZml4L2RvbS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxTQUFTLG9CQUFvQixDQUFDLE9BQW9CO0lBQ2hELE9BQU8sTUFBTSxLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUM7QUFDcEMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLE9BQW9CLEVBQ3BCLFlBQTZCO0lBRTdCLE1BQU0sa0JBQWtCLEdBQUcsWUFBWSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDckQsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNqRCxNQUFNLGlCQUFpQixHQUFHLFlBQVksRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ25ELE1BQU0sZUFBZSxHQUFHLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBRS9DLElBQUksR0FBVyxDQUFDO0lBQ2hCLElBQUksSUFBWSxDQUFDO0lBQ2pCLElBQUksS0FBYSxDQUFDO0lBQ2xCLElBQUksTUFBYyxDQUFDO0lBRW5CLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ25ELElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3JCLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQ3pCLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0lBRTNCLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQztJQUM3QixJQUFJLElBQUksZ0JBQWdCLENBQUM7SUFDekIsS0FBSyxJQUFJLGlCQUFpQixDQUFDO0lBQzNCLEdBQUcsSUFBSSxlQUFlLENB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LENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxHQUFHO1FBQ2pDLFlBQVksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FDbEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3cG9ydFJ1bGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG5pbXBvcnQgeyBTa3lBZmZpeE9mZnNldCB9IGZyb20gJy4vYWZmaXgtb2Zmc2V0JztcbmltcG9ydCB7IEFmZml4UmVjdCB9IGZyb20gJy4vYWZmaXgtcmVjdCc7XG5cbmZ1bmN0aW9uIHVzZVZpZXdwb3J0Rm9yQm91bmRzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiAnQk9EWScgPT09IGVsZW1lbnQudGFnTmFtZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvZmZzZXQgdmFsdWVzIG9mIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBIVE1MIGVsZW1lbnQuXG4gKiBAcGFyYW0gYnVmZmVyT2Zmc2V0IEFuIG9wdGlvbmFsIG9mZnNldCB0byBhZGQvc3VidHJhY3QgdG8gdGhlIGVsZW1lbnQncyBhY3R1YWwgb2Zmc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudE9mZnNldChcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGJ1ZmZlck9mZnNldD86IFNreUFmZml4T2Zmc2V0LFxuKTogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+IHtcbiAgY29uc3QgYnVmZmVyT2Zmc2V0Qm90dG9tID0gYnVmZmVyT2Zmc2V0Py5ib3R0b20gfHwgMDtcbiAgY29uc3QgYnVmZmVyT2Zmc2V0TGVmdCA9IGJ1ZmZlck9mZnNldD8ubGVmdCB8fCAwO1xuICBjb25zdCBidWZmZXJPZmZzZXRSaWdodCA9IGJ1ZmZlck9mZnNldD8ucmlnaHQgfHwgMDtcbiAgY29uc3QgYnVmZmVyT2Zmc2V0VG9wID0gYnVmZmVyT2Zmc2V0Py50b3AgfHwgMDtcblxuICBsZXQgdG9wOiBudW1iZXI7XG4gIGxldCBsZWZ0OiBudW1iZXI7XG4gIGxldCByaWdodDogbnVtYmVyO1xuICBsZXQgYm90dG9tOiBudW1iZXI7XG5cbiAgY29uc3QgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGxlZnQgPSBjbGllbnRSZWN0LmxlZnQ7XG4gIHRvcCA9IGNsaWVudFJlY3QudG9wO1xuICByaWdodCA9IGNsaWVudFJlY3QucmlnaHQ7XG4gIGJvdHRvbSA9IGNsaWVudFJlY3QuYm90dG9tO1xuXG4gIGJvdHRvbSAtPSBidWZmZXJPZmZzZXRCb3R0b207XG4gIGxlZnQgKz0gYnVmZmVyT2Zmc2V0TGVmdDtcbiAgcmlnaHQgLT0gYnVmZmVyT2Zmc2V0UmlnaHQ7XG4gIHRvcCArPSBidWZmZXJPZmZzZXRUb3A7XG5cbiAgcmV0dXJuIHtcbiAgICBib3R0b20sXG4gICAgbGVmdCxcbiAgICByaWdodCxcbiAgICB0b3AsXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBBZmZpeFJlY3QgdGhhdCByZXByZXNlbnRzIHRoZSBvdXRlciBkaW1lbnNpb25zIG9mIGEgZ2l2ZW4gZWxlbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE91dGVyUmVjdChlbGVtZW50OiBIVE1MRWxlbWVudCk6IFJlcXVpcmVkPEFmZml4UmVjdD4ge1xuICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIHVuZGVmaW5lZCk7XG4gIGNvbnN0IG1hcmdpblRvcCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5tYXJnaW5Ub3ApO1xuICBjb25zdCBtYXJnaW5MZWZ0ID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLm1hcmdpbkxlZnQpO1xuICBjb25zdCBtYXJnaW5SaWdodCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5tYXJnaW5SaWdodCk7XG4gIGNvbnN0IG1hcmdpbkJvdHRvbSA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20pO1xuXG4gIHJldHVybiB7XG4gICAgdG9wOiByZWN0LnRvcCAtIG1hcmdpblRvcCxcbiAgICBsZWZ0OiByZWN0LmxlZnQgLSBtYXJnaW5MZWZ0LFxuICAgIGJvdHRvbTogcmVjdC50b3AgKyByZWN0LmhlaWdodCArIG1hcmdpbkJvdHRvbSxcbiAgICByaWdodDogcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCArIG1hcmdpbkxlZnQgKyBtYXJnaW5SaWdodCxcbiAgICB3aWR0aDogcmVjdC53aWR0aCArIG1hcmdpbkxlZnQgKyBtYXJnaW5SaWdodCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0ICsgbWFyZ2luVG9wICsgbWFyZ2luQm90dG9tLFxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHZpc2libGUgcmVjdCBmb3IgYSBnaXZlbiBlbGVtZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzaWJsZVJlY3RGb3JFbGVtZW50KFxuICB2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyLFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbik6IFJlcXVpcmVkPEFmZml4UmVjdD4ge1xuICBjb25zdCBlbGVtZW50UmVjdCA9IGdldE91dGVyUmVjdChlbGVtZW50KTtcbiAgY29uc3Qgdmlld3BvcnRSZWN0ID0gdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFJlY3QoKTtcblxuICBjb25zdCB2aXNpYmxlUmVjdCA9IHtcbiAgICB0b3A6IE1hdGgubWF4KGVsZW1lbnRSZWN0LnRvcCwgMCksXG4gICAgbGVmdDogTWF0aC5tYXgoZWxlbWVudFJlY3QubGVmdCwgMCksXG4gICAgYm90dG9tOiBNYXRoLm1pbihlbGVtZW50UmVjdC5ib3R0b20sIHZpZXdwb3J0UmVjdC5oZWlnaHQpLFxuICAgIHJpZ2h0OiBNYXRoLm1pbihlbGVtZW50UmVjdC5yaWdodCwgdmlld3BvcnRSZWN0LndpZHRoKSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIC4uLnZpc2libGVSZWN0LFxuICAgIHdpZHRoOiB2aXNpYmxlUmVjdC5yaWdodCAtIHZpc2libGVSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiB2aXNpYmxlUmVjdC5ib3R0b20gLSB2aXNpYmxlUmVjdC50b3AsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPdmVyZmxvd1BhcmVudHMoY2hpbGQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnRbXSB7XG4gIGNvbnN0IGJvZHlFbGVtZW50ID0gd2luZG93LmRvY3VtZW50LmJvZHk7XG4gIGNvbnN0IHJlc3VsdHMgPSBbXTtcblxuICBsZXQgcGFyZW50RWxlbWVudCA9IGNoaWxkPy5wYXJlbnROb2RlO1xuXG4gIHdoaWxlIChwYXJlbnRFbGVtZW50ICE9PSB1bmRlZmluZWQgJiYgcGFyZW50RWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgaWYgKHBhcmVudEVsZW1lbnQubWF0Y2hlcygnYm9keScpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFyZW50RWxlbWVudCwgdW5kZWZpbmVkKTtcbiAgICBjb25zdCBvdmVyZmxvd1kgPSBjb21wdXRlZFN0eWxlLm92ZXJmbG93WS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgY29uc3QgbGFyZ2VyVGhhblRoZURvY3VtZW50RWxlbWVudCA9XG4gICAgICB3aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFdpZHRoIDwgcGFyZW50RWxlbWVudC5zY3JvbGxXaWR0aCB8fFxuICAgICAgd2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQgPCBwYXJlbnRFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICBjb25zdCBoYXNPdmVyZmxvd1J1bGVzID1cbiAgICAgIG92ZXJmbG93WSA9PT0gJ2F1dG8nIHx8IG92ZXJmbG93WSA9PT0gJ2hpZGRlbicgfHwgb3ZlcmZsb3dZID09PSAnc2Nyb2xsJztcblxuICAgIGlmIChsYXJnZXJUaGFuVGhlRG9jdW1lbnRFbGVtZW50IHx8IGhhc092ZXJmbG93UnVsZXMpIHtcbiAgICAgIHJlc3VsdHMucHVzaChwYXJlbnRFbGVtZW50KTtcbiAgICB9XG4gICAgaWYgKGNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHBhcmVudEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LnBhcmVudE5vZGU7XG4gIH1cblxuICByZXN1bHRzLnB1c2goYm9keUVsZW1lbnQpO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG4vKipcbiAqIENvbmZpcm1zIG9mZnNldCBpcyBmdWxseSB2aXNpYmxlIHdpdGhpbiBhIHBhcmVudCBlbGVtZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPZmZzZXRGdWxseVZpc2libGVXaXRoaW5QYXJlbnQoXG4gIHZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsXG4gIHBhcmVudDogSFRNTEVsZW1lbnQsXG4gIG9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+LFxuICBidWZmZXJPZmZzZXQ/OiBTa3lBZmZpeE9mZnNldCxcbik6IGJvb2xlYW4ge1xuICBsZXQgcGFyZW50T2Zmc2V0OiBSZXF1aXJlZDxTa3lBZmZpeE9mZnNldD47XG5cbiAgaWYgKHVzZVZpZXdwb3J0Rm9yQm91bmRzKHBhcmVudCkpIHtcbiAgICBjb25zdCB2aWV3cG9ydFJlY3QgPSB2aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0UmVjdCgpO1xuICAgIHBhcmVudE9mZnNldCA9IHtcbiAgICAgIHRvcDogMCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICByaWdodDogdmlld3BvcnRSZWN0LndpZHRoLFxuICAgICAgYm90dG9tOiB2aWV3cG9ydFJlY3QuaGVpZ2h0LFxuICAgIH07XG4gIH0gZWxzZSBpZiAoYnVmZmVyT2Zmc2V0KSB7XG4gICAgcGFyZW50T2Zmc2V0ID0gZ2V0RWxlbWVudE9mZnNldChwYXJlbnQsIGJ1ZmZlck9mZnNldCk7XG4gIH0gZWxzZSB7XG4gICAgcGFyZW50T2Zmc2V0ID0gZ2V0VmlzaWJsZVJlY3RGb3JFbGVtZW50KHZpZXdwb3J0UnVsZXIsIHBhcmVudCk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIHBhcmVudE9mZnNldC50b3AgPD0gb2Zmc2V0LnRvcCAmJlxuICAgIHBhcmVudE9mZnNldC5yaWdodCA+PSBvZmZzZXQucmlnaHQgJiZcbiAgICBwYXJlbnRPZmZzZXQuYm90dG9tID49IG9mZnNldC5ib3R0b20gJiZcbiAgICBwYXJlbnRPZmZzZXQubGVmdCA8PSBvZmZzZXQubGVmdFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNPZmZzZXRQYXJ0aWFsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICB2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyLFxuICBwYXJlbnQ6IEhUTUxFbGVtZW50LFxuICBvZmZzZXQ6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PixcbiAgYnVmZmVyT2Zmc2V0PzogU2t5QWZmaXhPZmZzZXQsXG4pOiBib29sZWFuIHtcbiAgbGV0IHBhcmVudE9mZnNldDogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+O1xuICBpZiAodXNlVmlld3BvcnRGb3JCb3VuZHMocGFyZW50KSkge1xuICAgIGNvbnN0IHZpZXdwb3J0UmVjdCA9IHZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRSZWN0KCk7XG4gICAgcGFyZW50T2Zmc2V0ID0ge1xuICAgICAgdG9wOiAwLFxuICAgICAgbGVmdDogMCxcbiAgICAgIHJpZ2h0OiB2aWV3cG9ydFJlY3Qud2lkdGgsXG4gICAgICBib3R0b206IHZpZXdwb3J0UmVjdC5oZWlnaHQsXG4gICAgfTtcbiAgfSBlbHNlIGlmIChidWZmZXJPZmZzZXQpIHtcbiAgICBwYXJlbnRPZmZzZXQgPSBnZXRFbGVtZW50T2Zmc2V0KHBhcmVudCwgYnVmZmVyT2Zmc2V0KTtcbiAgfSBlbHNlIHtcbiAgICBwYXJlbnRPZmZzZXQgPSBnZXRWaXNpYmxlUmVjdEZvckVsZW1lbnQodmlld3BvcnRSdWxlciwgcGFyZW50KTtcbiAgfVxuXG4gIHJldHVybiAhKFxuICAgIHBhcmVudE9mZnNldC50b3AgPj0gb2Zmc2V0LmJvdHRvbSB8fFxuICAgIHBhcmVudE9mZnNldC5yaWdodCA8PSBvZmZzZXQubGVmdCB8fFxuICAgIHBhcmVudE9mZnNldC5ib3R0b20gPD0gb2Zmc2V0LnRvcCB8fFxuICAgIHBhcmVudE9mZnNldC5sZWZ0ID49IG9mZnNldC5yaWdodFxuICApO1xufVxuIl19","import { Subject, Subscription } from 'rxjs';\nimport { SkyAffixAutoFitContext } from './affix-auto-fit-context';\nimport { getInversePlacement, getNextPlacement } from './affix-utils';\nimport { getElementOffset, getOuterRect, getOverflowParents, getVisibleRectForElement, isOffsetFullyVisibleWithinParent, isOffsetPartiallyVisibleWithinParent, } from './dom-utils';\nconst DEFAULT_AFFIX_CONFIG = {\n autoFitContext: SkyAffixAutoFitContext.OverflowParent,\n enableAutoFit: false,\n horizontalAlignment: 'center',\n isSticky: false,\n placement: 'above',\n};\nexport class SkyAffixer {\n /**\n * Fires when the affixed element's offset changes.\n */\n get offsetChange() {\n return this.#offsetChangeObs;\n }\n /**\n * Fires when the base element's nearest overflow parent is scrolling. This is useful if you need\n * to perform an additional action during the scroll event but don't want to generate another\n * event listener.\n */\n get overflowScroll() {\n return this.#overflowScrollObs;\n }\n /**\n * Fires when the placement value changes. A `null` value indicates that a suitable\n * placement could not be found.\n */\n get placementChange() {\n return this.#placementChangeObs;\n }\n get #config() {\n return this.#_config;\n }\n set #config(value) {\n const merged = {\n ...DEFAULT_AFFIX_CONFIG,\n ...value,\n };\n // Make sure none of the values are undefined.\n let key;\n for (key in merged) {\n if (merged[key] === undefined) {\n merged[key] = DEFAULT_AFFIX_CONFIG[key];\n }\n }\n this.#_config = merged;\n }\n #affixedElement;\n #baseElement;\n #currentOffset;\n #currentPlacement;\n #layoutViewport;\n #offsetChange;\n #offsetChangeObs;\n #overflowParents = [];\n #overflowScroll;\n #overflowScrollObs;\n #placementChange;\n #placementChangeObs;\n #renderer;\n #scrollChange = new Subject();\n #viewportListeners;\n #viewportRuler;\n #zone;\n #_config = DEFAULT_AFFIX_CONFIG;\n #scrollChangeListener = () => this.#scrollChange.next();\n constructor(affixedElement, renderer, viewportRuler, zone, layoutViewport) {\n this.#affixedElement = affixedElement;\n this.#renderer = renderer;\n this.#layoutViewport = layoutViewport;\n this.#viewportRuler = viewportRuler;\n this.#zone = zone;\n this.#offsetChange = new Subject();\n this.#overflowScroll = new Subject();\n this.#placementChange = new Subject();\n this.#offsetChangeObs = this.#offsetChange.asObservable();\n this.#overflowScrollObs = this.#overflowScroll.asObservable();\n this.#placementChangeObs = this.#placementChange.asObservable();\n }\n /**\n * Affixes an element to a base element.\n * @param baseElement The base element.\n * @param config Configuration for the affix action.\n */\n affixTo(baseElement, config) {\n this.#reset();\n this.#config = config;\n this.#baseElement = baseElement;\n this.#overflowParents = getOverflowParents(baseElement);\n this.#affix();\n if (this.#config.isSticky) {\n this.#addViewportListeners();\n }\n }\n getConfig() {\n return this.#config;\n }\n /**\n * Re-runs the affix calculation.\n */\n reaffix() {\n // Reset current placement to preferred placement.\n this.#currentPlacement = this.#config.placement;\n this.#affix();\n }\n /**\n * Destroys the affixer.\n */\n destroy() {\n this.#reset();\n this.#placementChange.complete();\n this.#offsetChange.complete();\n this.#overflowScroll.complete();\n this.#scrollChange.complete();\n }\n #affix() {\n const offset = this.#getOffset();\n const offsetParentRect = this.#getOffsetParentRect();\n offset.top = offset.top - offsetParentRect.top;\n offset.left = offset.left - offsetParentRect.left;\n offset.bottom = offset.bottom - offsetParentRect.top;\n offset.right = offset.right - offsetParentRect.left;\n if (this.#isNewOffset(offset)) {\n this.#renderer.setStyle(this.#affixedElement, 'top', `${offset.top}px`);\n this.#renderer.setStyle(this.#affixedElement, 'left', `${offset.left}px`);\n this.#offsetChange.next({ offset });\n }\n }\n #getOffsetParentRect() {\n // Firefox sets the offsetParent to document.body if the element uses fixed positioning.\n if (this.#config.position === 'absolute' &&\n this.#affixedElement.offsetParent) {\n return getOuterRect(this.#affixedElement.offsetParent);\n }\n else {\n const layoutRect = getOuterRect(this.#layoutViewport);\n return {\n top: layoutRect.top,\n left: layoutRect.left,\n height: layoutRect.height,\n width: layoutRect.width,\n bottom: layoutRect.top - layoutRect.height,\n right: layoutRect.left - layoutRect.width,\n };\n }\n }\n #getOffset() {\n const parent = this.#getAutoFitContextParent();\n const maxAttempts = 4;\n let attempts = 0;\n let isAffixedElementFullyVisible = false;\n let offset;\n let placement = this.#config.placement;\n do {\n offset = this.#getPreferredOffset(placement);\n isAffixedElementFullyVisible = isOffsetFullyVisibleWithinParent(this.#viewportRuler, parent, offset, this.#config.autoFitOverflowOffset);\n if (!this.#config.enableAutoFit) {\n break;\n }\n if (!isAffixedElementFullyVisible) {\n placement =\n attempts % 2 === 0\n ? getInversePlacement(placement)\n : getNextPlacement(placement);\n }\n attempts++;\n } while (!isAffixedElementFullyVisible && attempts < maxAttempts);\n if (isAffixedElementFullyVisible) {\n if (this.#isBaseElementVisible()) {\n this.#notifyPlacementChange(placement);\n }\n else {\n this.#notifyPlacementChange(null);\n }\n return offset;\n }\n if (this.#config.enableAutoFit) {\n this.#notifyPlacementChange(null);\n }\n // No suitable placement was found, so revert to preferred placement.\n return this.#getPreferredOffset(this.#config.placement);\n }\n #getPreferredOffset(placement) {\n if (!this.#baseElement) {\n return { top: 0, left: 0, bottom: 0, right: 0 };\n }\n const affixedRect = getOuterRect(this.#affixedElement);\n const baseRect = this.#baseElement.getBoundingClientRect();\n const horizontalAlignment = this.#config.horizontalAlignment;\n const verticalAlignment = this.#config.verticalAlignment;\n const enableAutoFit = this.#config.enableAutoFit;\n let top;\n let left;\n if (placement === 'above' || placement === 'below') {\n if (placement === 'above') {\n top = baseRect.top - affixedRect.height;\n switch (verticalAlignment) {\n case 'top':\n top = top + affixedRect.height;\n break;\n case 'middle':\n top = top + affixedRect.height / 2;\n break;\n case 'bottom':\n default:\n break;\n }\n }\n else {\n top = baseRect.bottom;\n switch (verticalAlignment) {\n case 'top':\n default:\n break;\n case 'middle':\n top = top - affixedRect.height / 2;\n break;\n case 'bottom':\n top = top - affixedRect.height;\n break;\n }\n }\n switch (horizontalAlignment) {\n case 'left':\n left = baseRect.left;\n break;\n case 'center':\n default:\n left = baseRect.left + baseRect.width / 2 - affixedRect.width / 2;\n break;\n case 'right':\n left = baseRect.right - affixedRect.width;\n break;\n }\n }\n else {\n if (placement === 'left') {\n left = baseRect.left - affixedRect.width;\n }\n else {\n left = baseRect.right;\n }\n switch (verticalAlignment) {\n case 'top':\n top = baseRect.top;\n break;\n case 'middle':\n default:\n top = baseRect.top + baseRect.height / 2 - affixedRect.height / 2;\n break;\n case 'bottom':\n top = baseRect.bottom - affixedRect.height;\n break;\n }\n }\n const offset = { top, left, bottom: 0, right: 0 };\n if (enableAutoFit) {\n const adjustments = this.#adjustOffsetToOverflowParent({ top, left }, placement, this.#baseElement);\n offset.top = adjustments.top;\n offset.left = adjustments.left;\n }\n offset.bottom = offset.top + affixedRect.height;\n offset.right = offset.left + affixedRect.width;\n return offset;\n }\n /**\n * Slightly adjust the offset to fit within the scroll parent's boundaries if\n * the affixed element would otherwise be clipped.\n */\n #adjustOffsetToOverflowParent(offset, placement, baseElement) {\n const affixedRect = getOuterRect(this.#affixedElement);\n const baseRect = baseElement.getBoundingClientRect();\n const parent = this.#getAutoFitContextParent();\n let parentOffset;\n if (this.#config.autoFitContext === SkyAffixAutoFitContext.OverflowParent) {\n if (this.#config.autoFitOverflowOffset) {\n // When the config contains a specific offset.\n parentOffset = getElementOffset(parent, this.#config.autoFitOverflowOffset);\n }\n else if (isOffsetFullyVisibleWithinParent(this.#viewportRuler, parent, baseRect)) {\n // When the base element is fully visible within the parent, aim for the visible portion of the parent element.\n parentOffset = getVisibleRectForElement(this.#viewportRuler, parent);\n }\n else {\n // Anywhere in the parent element.\n parentOffset = getOuterRect(parent);\n }\n }\n else {\n const viewportRect = this.#viewportRuler.getViewportRect();\n parentOffset = {\n top: -viewportRect.top,\n left: -viewportRect.left,\n bottom: viewportRect.height + viewportRect.top,\n right: viewportRect.width + viewportRect.left,\n };\n }\n // A pixel value representing the leeway between the edge of the overflow parent and the edge\n // of the base element before it disappears from view.\n // If the visible portion of the base element is less than this pixel value, the auto-fit\n // functionality attempts to find another placement.\n const defaultPixelTolerance = 40;\n let pixelTolerance;\n const originalOffsetTop = offset.top;\n const originalOffsetLeft = offset.left;\n switch (placement) {\n case 'above':\n case 'below':\n // Keep the affixed element within the overflow parent.\n if (offset.left < parentOffset.left) {\n offset.left = parentOffset.left;\n }\n else if (offset.left + affixedRect.width > parentOffset.right) {\n offset.left = parentOffset.right - affixedRect.width;\n }\n // Use a smaller pixel tolerance if the base element width is less than the default.\n pixelTolerance = Math.min(defaultPixelTolerance, baseRect.width);\n // Make sure the affixed element never detaches from the base element.\n if (offset.left + pixelTolerance > baseRect.right ||\n offset.left + affixedRect.width - pixelTolerance < baseRect.left) {\n offset.left = originalOffsetLeft;\n }\n break;\n case 'left':\n case 'right':\n // Keep the affixed element within the overflow parent.\n if (offset.top < parentOffset.top) {\n offset.top = parentOffset.top;\n }\n else if (offset.top + affixedRect.height > parentOffset.bottom) {\n offset.top = parentOffset.bottom - affixedRect.height;\n }\n // Use a smaller pixel tolerance if the base element height is less than the default.\n pixelTolerance = Math.min(defaultPixelTolerance, baseRect.height);\n // Make sure the affixed element never detaches from the base element.\n if (offset.top + pixelTolerance > baseRect.bottom ||\n offset.top + affixedRect.height - pixelTolerance < baseRect.top) {\n offset.top = originalOffsetTop;\n }\n break;\n }\n return offset;\n }\n #getImmediateOverflowParent() {\n return this.#overflowParents[0];\n }\n #getAutoFitContextParent() {\n const bodyElement = this.#overflowParents[this.#overflowParents.length - 1];\n return this.#config.autoFitContext === SkyAffixAutoFitContext.OverflowParent\n ? this.#getImmediateOverflowParent()\n : bodyElement;\n }\n #notifyPlacementChange(placement) {\n if (this.#currentPlacement !== placement) {\n this.#currentPlacement = placement ?? undefined;\n this.#placementChange.next({\n placement,\n });\n }\n }\n #reset() {\n this.#removeViewportListeners();\n this.#overflowParents = [];\n this.#config =\n this.#baseElement =\n this.#currentPlacement =\n this.#currentOffset =\n undefined;\n }\n #isNewOffset(offset) {\n if (this.#currentOffset === undefined) {\n this.#currentOffset = offset;\n return true;\n }\n if (this.#currentOffset.top === offset.top &&\n this.#currentOffset.left === offset.left) {\n return false;\n }\n this.#currentOffset = offset;\n return true;\n }\n #isBaseElementVisible() {\n // Can't get here if the base element is undefined.\n /* istanbul ignore if */\n if (!this.#baseElement) {\n return false;\n }\n const baseRect = this.#baseElement.getBoundingClientRect();\n return isOffsetPartiallyVisibleWithinParent(this.#viewportRuler, this.#getImmediateOverflowParent(), {\n top: baseRect.top,\n left: baseRect.left,\n right: baseRect.right,\n bottom: baseRect.bottom,\n }, this.#config.autoFitOverflowOffset);\n }\n #addViewportListeners() {\n this.#viewportListeners = new Subscription();\n // Resize and orientation changes.\n this.#viewportListeners.add(this.#viewportRuler.change().subscribe(() => {\n this.#affix();\n }));\n this.#viewportListeners.add(this.#scrollChange.subscribe(() => {\n this.#affix();\n this.#overflowScroll.next();\n }));\n // Listen for scroll events on the window, visual viewport, and any overflow parents.\n // https://developer.chrome.com/blog/visual-viewport-api/#events-only-fire-when-the-visual-viewport-changes\n this.#zone.runOutsideAngular(() => {\n [window, window.visualViewport, ...this.#overflowParents].forEach((parentElement) => {\n parentElement?.addEventListener('scroll', this.#scrollChangeListener);\n });\n });\n }\n #removeViewportListeners() {\n this.#viewportListeners?.unsubscribe();\n this.#zone.runOutsideAngular(() => {\n [window, window.visualViewport, ...this.#overflowParents].forEach((parentElement) => {\n parentElement?.removeEventListener('scroll', this.#scrollChangeListener);\n });\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXhlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9hZmZpeC9hZmZpeGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBT2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLGdDQUFnQyxFQUNoQyxvQ0FBb0MsR0FDckMsTUFBTSxhQUFhLENBQUM7QUFrQnJCLE1BQU0sb0JBQW9CLEdBQTBCO0lBQ2xELGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxjQUFjO0lBQ3JELGFBQWEsRUFBRSxLQUFLO0lBQ3BCLG1CQUFtQixFQUFFLFFBQVE7SUFDN0IsUUFBUSxFQUFFLEtBQUs7SUFDZixTQUFTLEVBQUUsT0FBTztDQUNuQixDQUFDO0FBRUYsTUFBTSxPQUFPLFVBQVU7SUFDckI7O09BRUc7SUFDSCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFpQztRQUMzQyxNQUFN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QUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FDL0QsQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDaEIsYUFBYSxFQUFFLG1CQUFtQixDQUNoQyxRQUFRLEVBQ1IsSUFBSSxDQUFDLHFCQUFxQixDQUMzQixDQUFDO1lBQ0osQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBOZ1pvbmUsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5QWZmaXhBdXRvRml0Q29udGV4dCB9IGZyb20gJy4vYWZmaXgtYXV0by1maXQtY29udGV4dCc7XG5pbXBvcnQgeyBTa3lBZmZpeENvbmZpZyB9IGZyb20gJy4vYWZmaXgtY29uZmlnJztcbmltcG9ydCB7IFNreUFmZml4T2Zmc2V0IH0gZnJvbSAnLi9hZmZpeC1vZmZzZXQnO1xuaW1wb3J0IHsgU2t5QWZmaXhPZmZzZXRDaGFuZ2UgfSBmcm9tICcuL2FmZml4LW9mZnNldC1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5QWZmaXhQbGFjZW1lbnQgfSBmcm9tICcuL2FmZml4LXBsYWNlbWVudCc7XG5pbXBvcnQgeyBTa3lBZmZpeFBsYWNlbWVudENoYW5nZSB9IGZyb20gJy4vYWZmaXgtcGxhY2VtZW50LWNoYW5nZSc7XG5pbXBvcnQgeyBBZmZpeFJlY3QgfSBmcm9tICcuL2FmZml4LXJlY3QnO1xuaW1wb3J0IHsgZ2V0SW52ZXJzZVBsYWNlbWVudCwgZ2V0TmV4dFBsYWNlbWVudCB9IGZyb20gJy4vYWZmaXgtdXRpbHMnO1xuaW1wb3J0IHtcbiAgZ2V0RWxlbWVudE9mZnNldCxcbiAgZ2V0T3V0ZXJSZWN0LFxuICBnZXRPdmVyZmxvd1BhcmVudHMsXG4gIGdldFZpc2libGVSZWN0Rm9yRWxlbWVudCxcbiAgaXNPZmZzZXRGdWxseVZpc2libGVXaXRoaW5QYXJlbnQsXG4gIGlzT2Zmc2V0UGFydGlhbGx5VmlzaWJsZVdpdGhpblBhcmVudCxcbn0gZnJvbSAnLi9kb20tdXRpbHMnO1xuXG4vKipcbiAqIE1ha2Ugc3BlY2lmaWMgcHJvcGVydGllcyByZXF1aXJlZCwgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvXG4gKiBkbyBudWxsIGNoZWNrcyB0aHJvdWdob3V0IHRoaXMgZmlsZS5cbiAqL1xudHlwZSBBZmZpeENvbmZpZ09yRGVmYXVsdHMgPSBTa3lBZmZpeENvbmZpZyAmXG4gIFJlcXVpcmVkPFxuICAgIFBpY2s8XG4gICAgICBTa3lBZmZpeENvbmZpZyxcbiAgICAgIHwgJ2F1dG9GaXRDb250ZXh0J1xuICAgICAgfCAnZW5hYmxlQXV0b0ZpdCdcbiAgICAgIHwgJ2hvcml6b250YWxBbGlnbm1lbnQnXG4gICAgICB8ICdpc1N0aWNreSdcbiAgICAgIHwgJ3BsYWNlbWVudCdcbiAgICA+XG4gID47XG5cbmNvbnN0IERFRkFVTFRfQUZGSVhfQ09ORklHOiBBZmZpeENvbmZpZ09yRGVmYXVsdHMgPSB7XG4gIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0Lk92ZXJmbG93UGFyZW50LFxuICBlbmFibGVBdXRvRml0OiBmYWxzZSxcbiAgaG9yaXpvbnRhbEFsaWdubWVudDogJ2NlbnRlcicsXG4gIGlzU3RpY2t5OiBmYWxzZSxcbiAgcGxhY2VtZW50OiAnYWJvdmUnLFxufTtcblxuZXhwb3J0IGNsYXNzIFNreUFmZml4ZXIge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYWZmaXhlZCBlbGVtZW50J3Mgb2Zmc2V0IGNoYW5nZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IG9mZnNldENoYW5nZSgpOiBPYnNlcnZhYmxlPFNreUFmZml4T2Zmc2V0Q2hhbmdlPiB7XG4gICAgcmV0dXJuIHRoaXMuI29mZnNldENoYW5nZU9icztcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBiYXNlIGVsZW1lbnQncyBuZWFyZXN0IG92ZXJmbG93IHBhcmVudCBpcyBzY3JvbGxpbmcuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBuZWVkXG4gICAqIHRvIHBlcmZvcm0gYW4gYWRkaXRpb25hbCBhY3Rpb24gZHVyaW5nIHRoZSBzY3JvbGwgZXZlbnQgYnV0IGRvbid0IHdhbnQgdG8gZ2VuZXJhdGUgYW5vdGhlclxuICAgKiBldmVudCBsaXN0ZW5lci5cbiAgICovXG4gIHB1YmxpYyBnZXQgb3ZlcmZsb3dTY3JvbGwoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuI292ZXJmbG93U2Nyb2xsT2JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHBsYWNlbWVudCB2YWx1ZSBjaGFuZ2VzLiBBIGBudWxsYCB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCBhIHN1aXRhYmxlXG4gICAqIHBsYWNlbWVudCBjb3VsZCBub3QgYmUgZm91bmQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBsYWNlbWVudENoYW5nZSgpOiBPYnNlcnZhYmxlPFNreUFmZml4UGxhY2VtZW50Q2hhbmdlPiB7XG4gICAgcmV0dXJuIHRoaXMuI3BsYWNlbWVudENoYW5nZU9icztcbiAgfVxuXG4gIGdldCAjY29uZmlnKCk6IEFmZml4Q29uZmlnT3JEZWZhdWx0cyB7XG4gICAgcmV0dXJuIHRoaXMuI19jb25maWc7XG4gIH1cblxuICBzZXQgI2NvbmZpZyh2YWx1ZTogU2t5QWZmaXhDb25maWcgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtZXJnZWQ6IEFmZml4Q29uZmlnT3JEZWZhdWx0cyA9IHtcbiAgICAgIC4uLkRFRkFVTFRfQUZGSVhfQ09ORklHLFxuICAgICAgLi4udmFsdWUsXG4gICAgfTtcblxuICAgIC8vIE1ha2Ugc3VyZSBub25lIG9mIHRoZSB2YWx1ZXMgYXJlIHVuZGVmaW5lZC5cbiAgICBsZXQga2V5OiBrZXlvZiB0eXBlb2YgbWVyZ2VkO1xuICAgIGZvciAoa2V5IGluIG1lcmdlZCkge1xuICAgICAgaWYgKG1lcmdlZFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgKG1lcmdlZCBhcyBhbnkpW2tleV0gPSBERUZBVUxUX0FGRklYX0NPTkZJR1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuI19jb25maWcgPSBtZXJnZWQ7XG4gIH1cblxuICAjYWZmaXhlZEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gICNiYXNlRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRPZmZzZXQ6IFNreUFmZml4T2Zmc2V0IHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50UGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudCB8IHVuZGVmaW5lZDtcblxuICAjbGF5b3V0Vmlld3BvcnQ6IEhUTUxFbGVtZW50O1xuXG4gICNvZmZzZXRDaGFuZ2U6IFN1YmplY3Q8U2t5QWZmaXhPZmZzZXRDaGFuZ2U+O1xuXG4gICNvZmZzZXRDaGFuZ2VPYnM6IE9ic2VydmFibGU8U2t5QWZmaXhPZmZzZXRDaGFuZ2U+O1xuXG4gICNvdmVyZmxvd1BhcmVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICAjb3ZlcmZsb3dTY3JvbGw6IFN1YmplY3Q8dm9pZD47XG5cbiAgI292ZXJmbG93U2Nyb2xsT2JzOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gICNwbGFjZW1lbnRDaGFuZ2U6IFN1YmplY3Q8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+O1xuXG4gICNwbGFjZW1lbnRDaGFuZ2VPYnM6IE9ic2VydmFibGU8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+O1xuXG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gICNzY3JvbGxDaGFuZ2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICN2aWV3cG9ydExpc3RlbmVyczogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICN2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyO1xuXG4gICN6b25lOiBOZ1pvbmU7XG5cbiAgI19jb25maWc6IEFmZml4Q29uZmlnT3JEZWZhdWx0cyA9IERFRkFVTFRfQUZGSVhfQ09ORklHO1xuXG4gICNzY3JvbGxDaGFuZ2VMaXN0ZW5lcjogKCkgPT4gdm9pZCA9ICgpID0+IHRoaXMuI3Njcm9sbENoYW5nZS5uZXh0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYWZmaXhlZEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlcixcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgbGF5b3V0Vmlld3BvcnQ6IEhUTUxFbGVtZW50LFxuICApIHtcbiAgICB0aGlzLiNhZmZpeGVkRWxlbWVudCA9IGFmZml4ZWRFbGVtZW50O1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgdGhpcy4jbGF5b3V0Vmlld3BvcnQgPSBsYXlvdXRWaWV3cG9ydDtcbiAgICB0aGlzLiN2aWV3cG9ydFJ1bGVyID0gdmlld3BvcnRSdWxlcjtcbiAgICB0aGlzLiN6b25lID0gem9uZTtcblxuICAgIHRoaXMuI29mZnNldENoYW5nZSA9IG5ldyBTdWJqZWN0PFNreUFmZml4T2Zmc2V0Q2hhbmdlPigpO1xuICAgIHRoaXMuI292ZXJmbG93U2Nyb2xsID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLiNwbGFjZW1lbnRDaGFuZ2UgPSBuZXcgU3ViamVjdDxTa3lBZmZpeFBsYWNlbWVudENoYW5nZT4oKTtcblxuICAgIHRoaXMuI29mZnNldENoYW5nZU9icyA9IHRoaXMuI29mZnNldENoYW5nZS5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLiNvdmVyZmxvd1Njcm9sbE9icyA9IHRoaXMuI292ZXJmbG93U2Nyb2xsLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuI3BsYWNlbWVudENoYW5nZU9icyA9IHRoaXMuI3BsYWNlbWVudENoYW5nZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZmZpeGVzIGFuIGVsZW1lbnQgdG8gYSBiYXNlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSBiYXNlRWxlbWVudCBUaGUgYmFzZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBhZmZpeCBhY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgYWZmaXhUbyhiYXNlRWxlbWVudDogSFRNTEVsZW1lbnQsIGNvbmZpZz86IFNreUFmZml4Q29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzZXQoKTtcblxuICAgIHRoaXMuI2NvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLiNiYXNlRWxlbWVudCA9IGJhc2VFbGVtZW50O1xuICAgIHRoaXMuI292ZXJmbG93UGFyZW50cyA9IGdldE92ZXJmbG93UGFyZW50cyhiYXNlRWxlbWVudCk7XG5cbiAgICB0aGlzLiNhZmZpeCgpO1xuXG4gICAgaWYgKHRoaXMuI2NvbmZpZy5pc1N0aWNreSkge1xuICAgICAgdGhpcy4jYWRkVmlld3BvcnRMaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29uZmlnKCk6IFNreUFmZml4Q29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy4jY29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlLXJ1bnMgdGhlIGFmZml4IGNhbGN1bGF0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWZmaXgoKTogdm9pZCB7XG4gICAgLy8gUmVzZXQgY3VycmVudCBwbGFjZW1lbnQgdG8gcHJlZmVycmVkIHBsYWNlbWVudC5cbiAgICB0aGlzLiNjdXJyZW50UGxhY2VtZW50ID0gdGhpcy4jY29uZmlnLnBsYWNlbWVudDtcbiAgICB0aGlzLiNhZmZpeCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSBhZmZpeGVyLlxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzZXQoKTtcbiAgICB0aGlzLiNwbGFjZW1lbnRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLiNvZmZzZXRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLiNvdmVyZmxvd1Njcm9sbC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3Njcm9sbENoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgI2FmZml4KCk6IHZvaWQge1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuI2dldE9mZnNldCgpO1xuXG4gICAgY29uc3Qgb2Zmc2V0UGFyZW50UmVjdCA9IHRoaXMuI2dldE9mZnNldFBhcmVudFJlY3QoKTtcbiAgICBvZmZzZXQudG9wID0gb2Zmc2V0LnRvcCAtIG9mZnNldFBhcmVudFJlY3QudG9wO1xuICAgIG9mZnNldC5sZWZ0ID0gb2Zmc2V0LmxlZnQgLSBvZmZzZXRQYXJlbnRSZWN0LmxlZnQ7XG4gICAgb2Zmc2V0LmJvdHRvbSA9IG9mZnNldC5ib3R0b20gLSBvZmZzZXRQYXJlbnRSZWN0LnRvcDtcbiAgICBvZmZzZXQucmlnaHQgPSBvZmZzZXQucmlnaHQgLSBvZmZzZXRQYXJlbnRSZWN0LmxlZnQ7XG5cbiAgICBpZiAodGhpcy4jaXNOZXdPZmZzZXQob2Zmc2V0KSkge1xuICAgICAgdGhpcy4jcmVuZGVyZXIuc2V0U3R5bGUodGhpcy4jYWZmaXhlZEVsZW1lbnQsICd0b3AnLCBgJHtvZmZzZXQudG9wfXB4YCk7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZSh0aGlzLiNhZmZpeGVkRWxlbWVudCwgJ2xlZnQnLCBgJHtvZmZzZXQubGVmdH1weGApO1xuXG4gICAgICB0aGlzLiNvZmZzZXRDaGFuZ2UubmV4dCh7IG9mZnNldCB9KTtcbiAgICB9XG4gIH1cblxuICAjZ2V0T2Zmc2V0UGFyZW50UmVjdCgpOiBBZmZpeFJlY3Qge1xuICAgIC8vIEZpcmVmb3ggc2V0cyB0aGUgb2Zmc2V0UGFyZW50IHRvIGRvY3VtZW50LmJvZHkgaWYgdGhlIGVsZW1lbnQgdXNlcyBmaXhlZCBwb3NpdGlvbmluZy5cbiAgICBpZiAoXG4gICAgICB0aGlzLiNjb25maWcucG9zaXRpb24gPT09ICdhYnNvbHV0ZScgJiZcbiAgICAgIHRoaXMuI2FmZml4ZWRFbGVtZW50Lm9mZnNldFBhcmVudFxuICAgICkge1xuICAgICAgcmV0dXJuIGdldE91dGVyUmVjdCh0aGlzLiNhZmZpeGVkRWxlbWVudC5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXlvdXRSZWN0ID0gZ2V0T3V0ZXJSZWN0KHRoaXMuI2xheW91dFZpZXdwb3J0KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvcDogbGF5b3V0UmVjdC50b3AsXG4gICAgICAgIGxlZnQ6IGxheW91dFJlY3QubGVmdCxcbiAgICAgICAgaGVpZ2h0OiBsYXlvdXRSZWN0LmhlaWdodCxcbiAgICAgICAgd2lkdGg6IGxheW91dFJlY3Qud2lkdGgsXG4gICAgICAgIGJvdHRvbTogbGF5b3V0UmVjdC50b3AgLSBsYXlvdXRSZWN0LmhlaWdodCxcbiAgICAgICAgcmlnaHQ6IGxheW91dFJlY3QubGVmdCAtIGxheW91dFJlY3Qud2lkdGgsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gICNnZXRPZmZzZXQoKTogUmVxdWlyZWQ8U2t5QWZmaXhPZmZzZXQ+IHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLiNnZXRBdXRvRml0Q29udGV4dFBhcmVudCgpO1xuXG4gICAgY29uc3QgbWF4QXR0ZW1wdHMgPSA0O1xuICAgIGxldCBhdHRlbXB0cyA9IDA7XG5cbiAgICBsZXQgaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSA9IGZhbHNlO1xuICAgIGxldCBvZmZzZXQ6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PjtcbiAgICBsZXQgcGxhY2VtZW50ID0gdGhpcy4jY29uZmlnLnBsYWNlbWVudDtcblxuICAgIGRvIHtcbiAgICAgIG9mZnNldCA9IHRoaXMuI2dldFByZWZlcnJlZE9mZnNldChwbGFjZW1lbnQpO1xuICAgICAgaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSA9IGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICAgICAgICB0aGlzLiN2aWV3cG9ydFJ1bGVyLFxuICAgICAgICBwYXJlbnQsXG4gICAgICAgIG9mZnNldCxcbiAgICAgICAgdGhpcy4jY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldCxcbiAgICAgICk7XG5cbiAgICAgIGlmICghdGhpcy4jY29uZmlnLmVuYWJsZUF1dG9GaXQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSkge1xuICAgICAgICBwbGFjZW1lbnQgPVxuICAgICAgICAgIGF0dGVtcHRzICUgMiA9PT0gMFxuICAgICAgICAgICAgPyBnZXRJbnZlcnNlUGxhY2VtZW50KHBsYWNlbWVudClcbiAgICAgICAgICAgIDogZ2V0TmV4dFBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBhdHRlbXB0cysrO1xuICAgIH0gd2hpbGUgKCFpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlICYmIGF0dGVtcHRzIDwgbWF4QXR0ZW1wdHMpO1xuXG4gICAgaWYgKGlzQWZmaXhlZEVsZW1lbnRGdWxseVZpc2libGUpIHtcbiAgICAgIGlmICh0aGlzLiNpc0Jhc2VFbGVtZW50VmlzaWJsZSgpKSB7XG4gICAgICAgIHRoaXMuI25vdGlmeVBsYWNlbWVudENoYW5nZShwbGFjZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jbm90aWZ5UGxhY2VtZW50Q2hhbmdlKG51bGwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLiNjb25maWcuZW5hYmxlQXV0b0ZpdCkge1xuICAgICAgdGhpcy4jbm90aWZ5UGxhY2VtZW50Q2hhbmdlKG51bGwpO1xuICAgIH1cblxuICAgIC8vIE5vIHN1aXRhYmxlIHBsYWNlbWVudCB3YXMgZm91bmQsIHNvIHJldmVydCB0byBwcmVmZXJyZWQgcGxhY2VtZW50LlxuICAgIHJldHVybiB0aGlzLiNnZXRQcmVmZXJyZWRPZmZzZXQodGhpcy4jY29uZmlnLnBsYWNlbWVudCk7XG4gIH1cblxuICAjZ2V0UHJlZmVycmVkT2Zmc2V0KHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQpOiBSZXF1aXJlZDxTa3lBZmZpeE9mZnNldD4ge1xuICAgIGlmICghdGhpcy4jYmFzZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7IHRvcDogMCwgbGVmdDogMCwgYm90dG9tOiAwLCByaWdodDogMCB9O1xuICAgIH1cblxuICAgIGNvbnN0IGFmZml4ZWRSZWN0ID0gZ2V0T3V0ZXJSZWN0KHRoaXMuI2FmZml4ZWRFbGVtZW50KTtcbiAgICBjb25zdCBiYXNlUmVjdCA9IHRoaXMuI2Jhc2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgaG9yaXpvbnRhbEFsaWdubWVudCA9IHRoaXMuI2NvbmZpZy5ob3Jpem9udGFsQWxpZ25tZW50O1xuICAgIGNvbnN0IHZlcnRpY2FsQWxpZ25tZW50ID0gdGhpcy4jY29uZmlnLnZlcnRpY2FsQWxpZ25tZW50O1xuICAgIGNvbnN0IGVuYWJsZUF1dG9GaXQgPSB0aGlzLiNjb25maWcuZW5hYmxlQXV0b0ZpdDtcblxuICAgIGxldCB0b3A6IG51bWJlcjtcbiAgICBsZXQgbGVmdDogbnVtYmVyO1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gJ2Fib3ZlJyB8fCBwbGFjZW1lbnQgPT09ICdiZWxvdycpIHtcbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdhYm92ZScpIHtcbiAgICAgICAgdG9wID0gYmFzZVJlY3QudG9wIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuXG4gICAgICAgIHN3aXRjaCAodmVydGljYWxBbGlnbm1lbnQpIHtcbiAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgdG9wID0gdG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbWlkZGxlJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCArIGFmZml4ZWRSZWN0LmhlaWdodCAvIDI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9wID0gYmFzZVJlY3QuYm90dG9tO1xuXG4gICAgICAgIHN3aXRjaCAodmVydGljYWxBbGlnbm1lbnQpIHtcbiAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgICAgICAgdG9wID0gdG9wIC0gYWZmaXhlZFJlY3QuaGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICB0b3AgPSB0b3AgLSBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGhvcml6b250YWxBbGlnbm1lbnQpIHtcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgbGVmdCA9IGJhc2VSZWN0LmxlZnQ7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBsZWZ0ID0gYmFzZVJlY3QubGVmdCArIGJhc2VSZWN0LndpZHRoIC8gMiAtIGFmZml4ZWRSZWN0LndpZHRoIC8gMjtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgbGVmdCA9IGJhc2VSZWN0LnJpZ2h0IC0gYWZmaXhlZFJlY3Qud2lkdGg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdsZWZ0Jykge1xuICAgICAgICBsZWZ0ID0gYmFzZVJlY3QubGVmdCAtIGFmZml4ZWRSZWN0LndpZHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVmdCA9IGJhc2VSZWN0LnJpZ2h0O1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgdG9wID0gYmFzZVJlY3QudG9wO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdG9wID0gYmFzZVJlY3QudG9wICsgYmFzZVJlY3QuaGVpZ2h0IC8gMiAtIGFmZml4ZWRSZWN0LmhlaWdodCAvIDI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICB0b3AgPSBiYXNlUmVjdC5ib3R0b20gLSBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgb2Zmc2V0OiBSZXF1aXJlZDxTa3lBZmZpeE9mZnNldD4gPSB7IHRvcCwgbGVmdCwgYm90dG9tOiAwLCByaWdodDogMCB9O1xuXG4gICAgaWYgKGVuYWJsZUF1dG9GaXQpIHtcbiAgICAgIGNvbnN0IGFkanVzdG1lbnRzID0gdGhpcy4jYWRqdXN0T2Zmc2V0VG9PdmVyZmxvd1BhcmVudChcbiAgICAgICAgeyB0b3AsIGxlZnQgfSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICB0aGlzLiNiYXNlRWxlbWVudCxcbiAgICAgICk7XG4gICAgICBvZmZzZXQudG9wID0gYWRqdXN0bWVudHMudG9wO1xuICAgICAgb2Zmc2V0LmxlZnQgPSBhZGp1c3RtZW50cy5sZWZ0O1xuICAgIH1cblxuICAgIG9mZnNldC5ib3R0b20gPSBvZmZzZXQudG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgIG9mZnNldC5yaWdodCA9IG9mZnNldC5sZWZ0ICsgYWZmaXhlZFJlY3Qud2lkdGg7XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNsaWdodGx5IGFkanVzdCB0aGUgb2Zmc2V0IHRvIGZpdCB3aXRoaW4gdGhlIHNjcm9sbCBwYXJlbnQncyBib3VuZGFyaWVzIGlmXG4gICAqIHRoZSBhZmZpeGVkIGVsZW1lbnQgd291bGQgb3RoZXJ3aXNlIGJlIGNsaXBwZWQuXG4gICAqL1xuICAjYWRqdXN0T2Zmc2V0VG9PdmVyZmxvd1BhcmVudChcbiAgICBvZmZzZXQ6IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9LFxuICAgIHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQsXG4gICAgYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICApOiB7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfSB7XG4gICAgY29uc3QgYWZmaXhlZFJlY3QgPSBnZXRPdXRlclJlY3QodGhpcy4jYWZmaXhlZEVsZW1lbnQpO1xuICAgIGNvbnN0IGJhc2VSZWN0ID0gYmFzZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLiNnZXRBdXRvRml0Q29udGV4dFBhcmVudCgpO1xuICAgIGxldCBwYXJlbnRPZmZzZXQ6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PjtcbiAgICBpZiAodGhpcy4jY29uZmlnLmF1dG9GaXRDb250ZXh0ID09PSBTa3lBZmZpeEF1dG9GaXRDb250ZXh0Lk92ZXJmbG93UGFyZW50KSB7XG4gICAgICBpZiAodGhpcy4jY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldCkge1xuICAgICAgICAvLyBXaGVuIHRoZSBjb25maWcgY29udGFpbnMgYSBzcGVjaWZpYyBvZmZzZXQuXG4gICAgICAgIHBhcmVudE9mZnNldCA9IGdldEVsZW1lbnRPZmZzZXQoXG4gICAgICAgICAgcGFyZW50LFxuICAgICAgICAgIHRoaXMuI2NvbmZpZy5hdXRvRml0T3ZlcmZsb3dPZmZzZXQsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBpc09mZnNldEZ1bGx5VmlzaWJsZVdpdGhpblBhcmVudCh0aGlzLiN2aWV3cG9ydFJ1bGVyLCBwYXJlbnQsIGJhc2VSZWN0KVxuICAgICAgKSB7XG4gICAgICAgIC8vIFdoZW4gdGhlIGJhc2UgZWxlbWVudCBpcyBmdWxseSB2aXNpYmxlIHdpdGhpbiB0aGUgcGFyZW50LCBhaW0gZm9yIHRoZSB2aXNpYmxlIHBvcnRpb24gb2YgdGhlIHBhcmVudCBlbGVtZW50LlxuICAgICAgICBwYXJlbnRPZmZzZXQgPSBnZXRWaXNpYmxlUmVjdEZvckVsZW1lbnQodGhpcy4jdmlld3BvcnRSdWxlciwgcGFyZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFueXdoZXJlIGluIHRoZSBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgcGFyZW50T2Zmc2V0ID0gZ2V0T3V0ZXJSZWN0KHBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZpZXdwb3J0UmVjdCA9IHRoaXMuI3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRSZWN0KCk7XG4gICAgICBwYXJlbnRPZmZzZXQgPSB7XG4gICAgICAgIHRvcDogLXZpZXdwb3J0UmVjdC50b3AsXG4gICAgICAgIGxlZnQ6IC12aWV3cG9ydFJlY3QubGVmdCxcbiAgICAgICAgYm90dG9tOiB2aWV3cG9ydFJlY3QuaGVpZ2h0ICsgdmlld3BvcnRSZWN0LnRvcCxcbiAgICAgICAgcmlnaHQ6IHZpZXdwb3J0UmVjdC53aWR0aCArIHZpZXdwb3J0UmVjdC5sZWZ0LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBBIHBpeGVsIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgbGVld2F5IGJldHdlZW4gdGhlIGVkZ2Ugb2YgdGhlIG92ZXJmbG93IHBhcmVudCBhbmQgdGhlIGVkZ2VcbiAgICAvLyBvZiB0aGUgYmFzZSBlbGVtZW50IGJlZm9yZSBpdCBkaXNhcHBlYXJzIGZyb20gdmlldy5cbiAgICAvLyBJZiB0aGUgdmlzaWJsZSBwb3J0aW9uIG9mIHRoZSBiYXNlIGVsZW1lbnQgaXMgbGVzcyB0aGFuIHRoaXMgcGl4ZWwgdmFsdWUsIHRoZSBhdXRvLWZpdFxuICAgIC8vIGZ1bmN0aW9uYWxpdHkgYXR0ZW1wdHMgdG8gZmluZCBhbm90aGVyIHBsYWNlbWVudC5cbiAgICBjb25zdCBkZWZhdWx0UGl4ZWxUb2xlcmFuY2UgPSA0MDtcbiAgICBsZXQgcGl4ZWxUb2xlcmFuY2U6IG51bWJlcjtcblxuICAgIGNvbnN0IG9yaWdpbmFsT2Zmc2V0VG9wID0gb2Zmc2V0LnRvcDtcbiAgICBjb25zdCBvcmlnaW5hbE9mZnNldExlZnQgPSBvZmZzZXQubGVmdDtcblxuICAgIHN3aXRjaCAocGxhY2VtZW50KSB7XG4gICAgICBjYXNlICdhYm92ZSc6XG4gICAgICBjYXNlICdiZWxvdyc6XG4gICAgICAgIC8vIEtlZXAgdGhlIGFmZml4ZWQgZWxlbWVudCB3aXRoaW4gdGhlIG92ZXJmbG93IHBhcmVudC5cbiAgICAgICAgaWYgKG9mZnNldC5sZWZ0IDwgcGFyZW50T2Zmc2V0LmxlZnQpIHtcbiAgICAgICAgICBvZmZzZXQubGVmdCA9IHBhcmVudE9mZnNldC5sZWZ0O1xuICAgICAgICB9IGVsc2UgaWYgKG9mZnNldC5sZWZ0ICsgYWZmaXhlZFJlY3Qud2lkdGggPiBwYXJlbnRPZmZzZXQucmlnaHQpIHtcbiAgICAgICAgICBvZmZzZXQubGVmdCA9IHBhcmVudE9mZnNldC5yaWdodCAtIGFmZml4ZWRSZWN0LndpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlIGEgc21hbGxlciBwaXhlbCB0b2xlcmFuY2UgaWYgdGhlIGJhc2UgZWxlbWVudCB3aWR0aCBpcyBsZXNzIHRoYW4gdGhlIGRlZmF1bHQuXG4gICAgICAgIHBpeGVsVG9sZXJhbmNlID0gTWF0aC5taW4oZGVmYXVsdFBpeGVsVG9sZXJhbmNlLCBiYXNlUmVjdC53aWR0aCk7XG5cbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBhZmZpeGVkIGVsZW1lbnQgbmV2ZXIgZGV0YWNoZXMgZnJvbSB0aGUgYmFzZSBlbGVtZW50LlxuICAgICAgICBpZiAoXG4gICAgICAgICAgb2Zmc2V0LmxlZnQgKyBwaXhlbFRvbGVyYW5jZSA+IGJhc2VSZWN0LnJpZ2h0IHx8XG4gICAgICAgICAgb2Zmc2V0LmxlZnQgKyBhZmZpeGVkUmVjdC53aWR0aCAtIHBpeGVsVG9sZXJhbmNlIDwgYmFzZVJlY3QubGVmdFxuICAgICAgICApIHtcbiAgICAgICAgICBvZmZzZXQubGVmdCA9IG9yaWdpbmFsT2Zmc2V0TGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgLy8gS2VlcCB0aGUgYWZmaXhlZCBlbGVtZW50IHdpdGhpbiB0aGUgb3ZlcmZsb3cgcGFyZW50LlxuICAgICAgICBpZiAob2Zmc2V0LnRvcCA8IHBhcmVudE9mZnNldC50b3ApIHtcbiAgICAgICAgICBvZmZzZXQudG9wID0gcGFyZW50T2Zmc2V0LnRvcDtcbiAgICAgICAgfSBlbHNlIGlmIChvZmZzZXQudG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0ID4gcGFyZW50T2Zmc2V0LmJvdHRvbSkge1xuICAgICAgICAgIG9mZnNldC50b3AgPSBwYXJlbnRPZmZzZXQuYm90dG9tIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlIGEgc21hbGxlciBwaXhlbCB0b2xlcmFuY2UgaWYgdGhlIGJhc2UgZWxlbWVudCBoZWlnaHQgaXMgbGVzcyB0aGFuIHRoZSBkZWZhdWx0LlxuICAgICAgICBwaXhlbFRvbGVyYW5jZSA9IE1hdGgubWluKGRlZmF1bHRQaXhlbFRvbGVyYW5jZSwgYmFzZVJlY3QuaGVpZ2h0KTtcblxuICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGFmZml4ZWQgZWxlbWVudCBuZXZlciBkZXRhY2hlcyBmcm9tIHRoZSBiYXNlIGVsZW1lbnQuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBvZmZzZXQudG9wICsgcGl4ZWxUb2xlcmFuY2UgPiBiYXNlUmVjdC5ib3R0b20gfHxcbiAgICAgICAgICBvZmZzZXQudG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0IC0gcGl4ZWxUb2xlcmFuY2UgPCBiYXNlUmVjdC50b3BcbiAgICAgICAgKSB7XG4gICAgICAgICAgb2Zmc2V0LnRvcCA9IG9yaWdpbmFsT2Zmc2V0VG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxuXG4gICNnZXRJbW1lZGlhdGVPdmVyZmxvd1BhcmVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuI292ZXJmbG93UGFyZW50c1swXTtcbiAgfVxuXG4gICNnZXRBdXRvRml0Q29udGV4dFBhcmVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgYm9keUVsZW1lbnQgPSB0aGlzLiNvdmVyZmxvd1BhcmVudHNbdGhpcy4jb3ZlcmZsb3dQYXJlbnRzLmxlbmd0aCAtIDFdO1xuXG4gICAgcmV0dXJuIHRoaXMuI2NvbmZpZy5hdXRvRml0Q29udGV4dCA9PT0gU2t5QWZmaXhBdXRvRml0Q29udGV4dC5PdmVyZmxvd1BhcmVudFxuICAgICAgPyB0aGlzLiNnZXRJbW1lZGlhdGVPdmVyZmxvd1BhcmVudCgpXG4gICAgICA6IGJvZHlFbGVtZW50O1xuICB9XG5cbiAgI25vdGlmeVBsYWNlbWVudENoYW5nZShwbGFjZW1lbnQ6IFNreUFmZml4UGxhY2VtZW50IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNjdXJyZW50UGxhY2VtZW50ICE9PSBwbGFjZW1lbnQpIHtcbiAgICAgIHRoaXMuI2N1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPz8gdW5kZWZpbmVkO1xuICAgICAgdGhpcy4jcGxhY2VtZW50Q2hhbmdlLm5leHQoe1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy4jcmVtb3ZlVmlld3BvcnRMaXN0ZW5lcnMoKTtcblxuICAgIHRoaXMuI292ZXJmbG93UGFyZW50cyA9IFtdO1xuXG4gICAgdGhpcy4jY29uZmlnID1cbiAgICAgIHRoaXMuI2Jhc2VFbGVtZW50ID1cbiAgICAgIHRoaXMuI2N1cnJlbnRQbGFjZW1lbnQgPVxuICAgICAgdGhpcy4jY3VycmVudE9mZnNldCA9XG4gICAgICAgIHVuZGVmaW5lZDtcbiAgfVxuXG4gICNpc05ld09mZnNldChvZmZzZXQ6IFNreUFmZml4T2Zmc2V0KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuI2N1cnJlbnRPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy4jY3VycmVudE9mZnNldCA9IG9mZnNldDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuI2N1cnJlbnRPZmZzZXQudG9wID09PSBvZmZzZXQudG9wICYmXG4gICAgICB0aGlzLiNjdXJyZW50T2Zmc2V0LmxlZnQgPT09IG9mZnNldC5sZWZ0XG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy4jY3VycmVudE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgI2lzQmFzZUVsZW1lbnRWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIC8vIENhbid0IGdldCBoZXJlIGlmIHRoZSBiYXNlIGVsZW1lbnQgaXMgdW5kZWZpbmVkLlxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghdGhpcy4jYmFzZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlUmVjdCA9IHRoaXMuI2Jhc2VFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgcmV0dXJuIGlzT2Zmc2V0UGFydGlhbGx5VmlzaWJsZVdpdGhpblBhcmVudChcbiAgICAgIHRoaXMuI3ZpZXdwb3J0UnVsZXIsXG4gICAgICB0aGlzLiNnZXRJbW1lZGlhdGVPdmVyZmxvd1BhcmVudCgpLFxuICAgICAge1xuICAgICAgICB0b3A6IGJhc2VSZWN0LnRvcCxcbiAgICAgICAgbGVmdDogYmFzZVJlY3QubGVmdCxcbiAgICAgICAgcmlnaHQ6IGJhc2VSZWN0LnJpZ2h0LFxuICAgICAgICBib3R0b206IGJhc2VSZWN0LmJvdHRvbSxcbiAgICAgIH0sXG4gICAgICB0aGlzLiNjb25maWcuYXV0b0ZpdE92ZXJmbG93T2Zmc2V0LFxuICAgICk7XG4gIH1cblxuICAjYWRkVmlld3BvcnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvLyBSZXNpemUgYW5kIG9yaWVudGF0aW9uIGNoYW5nZXMuXG4gICAgdGhpcy4jdmlld3BvcnRMaXN0ZW5lcnMuYWRkKFxuICAgICAgdGhpcy4jdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNhZmZpeCgpO1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuI3ZpZXdwb3J0TGlzdGVuZXJzLmFkZChcbiAgICAgIHRoaXMuI3Njcm9sbENoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNhZmZpeCgpO1xuICAgICAgICB0aGlzLiNvdmVyZmxvd1Njcm9sbC5uZXh0KCk7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgLy8gTGlzdGVuIGZvciBzY3JvbGwgZXZlbnRzIG9uIHRoZSB3aW5kb3csIHZpc3VhbCB2aWV3cG9ydCwgYW5kIGFueSBvdmVyZmxvdyBwYXJlbnRzLlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vYmxvZy92aXN1YWwtdmlld3BvcnQtYXBpLyNldmVudHMtb25seS1maXJlLXdoZW4tdGhlLXZpc3VhbC12aWV3cG9ydC1jaGFuZ2VzXG4gICAgdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBbd2luZG93LCB3aW5kb3cudmlzdWFsVmlld3BvcnQsIC4uLnRoaXMuI292ZXJmbG93UGFyZW50c10uZm9yRWFjaChcbiAgICAgICAgKHBhcmVudEVsZW1lbnQpID0+IHtcbiAgICAgICAgICBwYXJlbnRFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLiNzY3JvbGxDaGFuZ2VMaXN0ZW5lcik7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgI3JlbW92ZVZpZXdwb3J0TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuI3ZpZXdwb3J0TGlzdGVuZXJzPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBbd2luZG93LCB3aW5kb3cudmlzdWFsVmlld3BvcnQsIC4uLnRoaXMuI292ZXJmbG93UGFyZW50c10uZm9yRWFjaChcbiAgICAgICAgKHBhcmVudEVsZW1lbnQpID0+IHtcbiAgICAgICAgICBwYXJlbnRFbGVtZW50Py5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgJ3Njcm9sbCcsXG4gICAgICAgICAgICB0aGlzLiNzY3JvbGxDaGFuZ2VMaXN0ZW5lcixcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufVxuIl19","import { ViewportRuler } from '@angular/cdk/overlay';\nimport { DOCUMENT, Injectable, NgZone, RendererFactory2, inject, } from '@angular/core';\nimport { SkyAffixer } from './affixer';\nimport * as i0 from \"@angular/core\";\nexport class SkyAffixService {\n #renderer = inject(RendererFactory2).createRenderer(undefined, null);\n #viewportRuler = inject(ViewportRuler);\n #zone = inject(NgZone);\n #layoutViewport = this.#createLayoutViewportShim(inject(DOCUMENT));\n ngOnDestroy() {\n this.#renderer.removeChild(this.#layoutViewport.parentNode, this.#layoutViewport);\n }\n /**\n * Creates an instance of [[SkyAffixer]].\n * @param affixed The element to be affixed.\n */\n createAffixer(affixed) {\n return new SkyAffixer(affixed.nativeElement, this.#renderer, this.#viewportRuler, this.#zone, this.#layoutViewport);\n }\n /**\n * Create a layout viewport element that can be used to determine the relative position\n * of the visual viewport. Inspired by\n * https://github.com/WICG/visual-viewport/blob/gh-pages/examples/fixed-to-viewport.html\n */\n #createLayoutViewportShim(doc) {\n const layoutViewportElement = this.#renderer.createElement('div');\n this.#renderer.addClass(layoutViewportElement, 'sky-affix-layout-viewport-shim');\n this.#renderer.setStyle(layoutViewportElement, 'width', '100%');\n this.#renderer.setStyle(layoutViewportElement, 'height', '100%');\n this.#renderer.setStyle(layoutViewportElement, 'position', 'fixed');\n this.#renderer.setStyle(layoutViewportElement, 'top', '0');\n this.#renderer.setStyle(layoutViewportElement, 'left', '0');\n this.#renderer.setStyle(layoutViewportElement, 'visibility', 'hidden');\n this.#renderer.setStyle(layoutViewportElement, 'pointerEvents', 'none');\n this.#renderer.appendChild(doc.body, layoutViewportElement);\n return layoutViewportElement;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAffixService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAffixService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAffixService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9hZmZpeC9hZmZpeC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsUUFBUSxFQUVSLFVBQVUsRUFDVixNQUFNLEVBRU4sZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUt2QyxNQUFNLE9BQU8sZUFBZTtJQUNqQixTQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUVyRSxjQUFjLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRXZDLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdkIsZUFBZSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVyRSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FDckIsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSSxhQUFhLENBQUMsT0FBbUI7UUFDdEMsT0FBTyxJQUFJLFVBQVUsQ0FDbkIsT0FBTyxDQUFDLGFBQWEsRUFDckIsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHlCQUF5QixDQUFDLEdBQWE7UUFDckMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDckIscUJBQXFCLEVBQ3JCLGdDQUFnQyxDQUNqQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUU1RCxPQUFPLHFCQUFxQixDQUFDO0lBQy9CLENBQUM7OEdBbkRVLGVBQWU7a0hBQWYsZUFBZSxjQUZkLE1BQU07OzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmlld3BvcnRSdWxlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gIERPQ1VNRU5ULFxuICBFbGVtZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXJGYWN0b3J5MixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5QWZmaXhlciB9IGZyb20gJy4vYWZmaXhlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBZmZpeFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICByZWFkb25seSAjcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5MikuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCBudWxsKTtcblxuICByZWFkb25seSAjdmlld3BvcnRSdWxlciA9IGluamVjdChWaWV3cG9ydFJ1bGVyKTtcblxuICByZWFkb25seSAjem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHJlYWRvbmx5ICNsYXlvdXRWaWV3cG9ydCA9IHRoaXMuI2NyZWF0ZUxheW91dFZpZXdwb3J0U2hpbShpbmplY3QoRE9DVU1FTlQpKTtcblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2hpbGQoXG4gICAgICB0aGlzLiNsYXlvdXRWaWV3cG9ydC5wYXJlbnROb2RlLFxuICAgICAgdGhpcy4jbGF5b3V0Vmlld3BvcnQsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFtbU2t5QWZmaXhlcl1dLlxuICAgKiBAcGFyYW0gYWZmaXhlZCBUaGUgZWxlbWVudCB0byBiZSBhZmZpeGVkLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUFmZml4ZXIoYWZmaXhlZDogRWxlbWVudFJlZik6IFNreUFmZml4ZXIge1xuICAgIHJldHVybiBuZXcgU2t5QWZmaXhlcihcbiAgICAgIGFmZml4ZWQubmF0aXZlRWxlbWVudCxcbiAgICAgIHRoaXMuI3JlbmRlcmVyLFxuICAgICAgdGhpcy4jdmlld3BvcnRSdWxlcixcbiAgICAgIHRoaXMuI3pvbmUsXG4gICAgICB0aGlzLiNsYXlvdXRWaWV3cG9ydCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGxheW91dCB2aWV3cG9ydCBlbGVtZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSByZWxhdGl2ZSBwb3NpdGlvblxuICAgKiBvZiB0aGUgdmlzdWFsIHZpZXdwb3J0LiBJbnNwaXJlZCBieVxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vV0lDRy92aXN1YWwtdmlld3BvcnQvYmxvYi9naC1wYWdlcy9leGFtcGxlcy9maXhlZC10by12aWV3cG9ydC5odG1sXG4gICAqL1xuICAjY3JlYXRlTGF5b3V0Vmlld3BvcnRTaGltKGRvYzogRG9jdW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgbGF5b3V0Vmlld3BvcnRFbGVtZW50ID0gdGhpcy4jcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy4jcmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICBsYXlvdXRWaWV3cG9ydEVsZW1lbnQsXG4gICAgICAnc2t5LWFmZml4LWxheW91dC12aWV3cG9ydC1zaGltJyxcbiAgICApO1xuICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKGxheW91dFZpZXdwb3J0RWxlbWVudCwgJ3dpZHRoJywgJzEwMCUnKTtcbiAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZShsYXlvdXRWaWV3cG9ydEVsZW1lbnQsICdoZWlnaHQnLCAnMTAwJScpO1xuICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKGxheW91dFZpZXdwb3J0RWxlbWVudCwgJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0U3R5bGUobGF5b3V0Vmlld3BvcnRFbGVtZW50LCAndG9wJywgJzAnKTtcbiAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZShsYXlvdXRWaWV3cG9ydEVsZW1lbnQsICdsZWZ0JywgJzAnKTtcbiAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZShsYXlvdXRWaWV3cG9ydEVsZW1lbnQsICd2aXNpYmlsaXR5JywgJ2hpZGRlbicpO1xuICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKGxheW91dFZpZXdwb3J0RWxlbWVudCwgJ3BvaW50ZXJFdmVudHMnLCAnbm9uZScpO1xuICAgIHRoaXMuI3JlbmRlcmVyLmFwcGVuZENoaWxkKGRvYy5ib2R5LCBsYXlvdXRWaWV3cG9ydEVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIGxheW91dFZpZXdwb3J0RWxlbWVudDtcbiAgfVxufVxuIl19","import { Directive, EventEmitter, Input, Output, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./affix.service\";\n/**\n * Affixes the host element to a base element.\n */\nexport class SkyAffixDirective {\n #affixer;\n #affixService;\n #elementRef;\n #ngUnsubscribe;\n constructor(elementRef, affixService) {\n /**\n * Fires when the affixed element's offset changes.\n */\n this.affixOffsetChange = new EventEmitter();\n /**\n * Fires when the affixed element's overflow container is scrolled.\n */\n this.affixOverflowScroll = new EventEmitter();\n /**\n * Fires when the placement value changes.\n */\n this.affixPlacementChange = new EventEmitter();\n this.#ngUnsubscribe = new Subject();\n this.#elementRef = elementRef;\n this.#affixService = affixService;\n }\n ngOnInit() {\n this.#affixer = this.#affixService.createAffixer(this.#elementRef);\n this.#affixer.offsetChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change) => this.affixOffsetChange.emit(change));\n this.#affixer.overflowScroll\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change) => this.affixOverflowScroll.emit(change));\n this.#affixer.placementChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change) => this.affixPlacementChange.emit(change));\n this.#updateAlignment();\n }\n ngOnChanges(changes) {\n /* istanbul ignore else */\n if (changes['affixAutoFitContext'] ||\n changes['affixAutoFitOverflowOffset'] ||\n changes['affixEnableAutoFit'] ||\n changes['affixHorizontalAlignment'] ||\n changes['affixIsSticky'] ||\n changes['affixPlacement'] ||\n changes['affixPosition'] ||\n changes['affixVerticalAlignment']) {\n this.#updateAlignment();\n }\n }\n ngOnDestroy() {\n this.affixOffsetChange.complete();\n this.affixOverflowScroll.complete();\n this.affixPlacementChange.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n /*istanbul ignore else*/\n if (this.#affixer) {\n this.#affixer.destroy();\n this.#affixer = undefined;\n }\n }\n #updateAlignment() {\n if (this.skyAffixTo && this.#affixer) {\n this.#affixer.affixTo(this.skyAffixTo, {\n autoFitContext: this.affixAutoFitContext,\n autoFitOverflowOffset: this.affixAutoFitOverflowOffset,\n enableAutoFit: this.affixEnableAutoFit,\n horizontalAlignment: this.affixHorizontalAlignment,\n isSticky: this.affixIsSticky,\n placement: this.affixPlacement,\n position: this.affixPosition,\n verticalAlignment: this.affixVerticalAlignment,\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAffixDirective, deps: [{ token: i0.ElementRef }, { token: i1.SkyAffixService }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyAffixDirective, isStandalone: false, selector: \"[skyAffixTo]\", inputs: { skyAffixTo: \"skyAffixTo\", affixAutoFitContext: \"affixAutoFitContext\", affixAutoFitOverflowOffset: \"affixAutoFitOverflowOffset\", affixEnableAutoFit: \"affixEnableAutoFit\", affixHorizontalAlignment: \"affixHorizontalAlignment\", affixIsSticky: \"affixIsSticky\", affixPlacement: \"affixPlacement\", affixPosition: \"affixPosition\", affixVerticalAlignment: \"affixVerticalAlignment\" }, outputs: { affixOffsetChange: \"affixOffsetChange\", affixOverflowScroll: \"affixOverflowScroll\", affixPlacementChange: \"affixPlacementChange\" }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAffixDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[skyAffixTo]',\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SkyAffixService }], propDecorators: { skyAffixTo: [{\n type: Input\n }], affixAutoFitContext: [{\n type: Input\n }], affixAutoFitOverflowOffset: [{\n type: Input\n }], affixEnableAutoFit: [{\n type: Input\n }], affixHorizontalAlignment: [{\n type: Input\n }], affixIsSticky: [{\n type: Input\n }], affixPlacement: [{\n type: Input\n }], affixPosition: [{\n type: Input\n }], affixVerticalAlignment: [{\n type: Input\n }], affixOffsetChange: [{\n type: Output\n }], affixOverflowScroll: [{\n type: Output\n }], affixPlacementChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2FmZml4L2FmZml4LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFhM0M7O0dBRUc7QUFLSCxNQUFNLE9BQU8saUJBQWlCO0lBeUU1QixRQUFRLENBQXlCO0lBRWpDLGFBQWEsQ0FBa0I7SUFFL0IsV0FBVyxDQUFhO0lBRXhCLGNBQWMsQ0FBdUI7SUFFckMsWUFBWSxVQUFzQixFQUFFLFlBQTZCO1FBMUJqRTs7V0FFRztRQUVJLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBRXBFOztXQUVHO1FBRUksd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV0RDs7V0FFRztRQUVJLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUEyQixDQUFDO1FBUTFFLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUduQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5FLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWTthQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENB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O2dCQU9DLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFPQyx3QkFBd0I7c0JBRDlCLEtBQUs7Z0JBT0MsYUFBYTtzQkFEbkIsS0FBSztnQkFPQyxjQUFjO3NCQURwQixLQUFLO2dCQU9DLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0Msc0JBQXNCO3NCQUQ1QixLQUFLO2dCQU9DLGlCQUFpQjtzQkFEdkIsTUFBTTtnQkFPQSxtQkFBbUI7c0JBRHpCLE1BQU07Z0JBT0Esb0JBQW9CO3NCQUQxQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUFmZml4QXV0b0ZpdENvbnRleHQgfSBmcm9tICcuL2FmZml4LWF1dG8tZml0LWNvbnRleHQnO1xuaW1wb3J0IHsgU2t5QWZmaXhIb3Jpem9udGFsQWxpZ25tZW50IH0gZnJvbSAnLi9hZmZpeC1ob3Jpem9udGFsLWFsaWdubWVudCc7XG5pbXBvcnQgeyBTa3lBZmZpeE9mZnNldCB9IGZyb20gJy4vYWZmaXgtb2Zmc2V0JztcbmltcG9ydCB7IFNreUFmZml4T2Zmc2V0Q2hhbmdlIH0gZnJvbSAnLi9hZmZpeC1vZmZzZXQtY2hhbmdlJztcbmltcG9ydCB7IFNreUFmZml4UGxhY2VtZW50IH0gZnJvbSAnLi9hZmZpeC1wbGFjZW1lbnQnO1xuaW1wb3J0IHsgU2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2UgfSBmcm9tICcuL2FmZml4LXBsYWNlbWVudC1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5QWZmaXhQb3NpdGlvbiB9IGZyb20gJy4vYWZmaXgtcG9zaXRpb24nO1xuaW1wb3J0IHsgU2t5QWZmaXhWZXJ0aWNhbEFsaWdubWVudCB9IGZyb20gJy4vYWZmaXgtdmVydGljYWwtYWxpZ25tZW50JztcbmltcG9ydCB7IFNreUFmZml4U2VydmljZSB9IGZyb20gJy4vYWZmaXguc2VydmljZSc7XG5pbXBvcnQgeyBTa3lBZmZpeGVyIH0gZnJvbSAnLi9hZmZpeGVyJztcblxuLyoqXG4gKiBBZmZpeGVzIHRoZSBob3N0IGVsZW1lbnQgdG8gYSBiYXNlIGVsZW1lbnQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lBZmZpeFRvXScsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBZmZpeERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVGhlIGJhc2UgZWxlbWVudCB0byBhZmZpeCB0aGUgaG9zdCBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNreUFmZml4VG86IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgYXV0b0ZpdENvbnRleHRgIHByb3BlcnR5IG9mIFtbU2t5QWZmaXhDb25maWddXS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhZmZpeEF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgYXV0b0ZpdE92ZXJmbG93T2Zmc2V0YCBwcm9wZXJ0eSBvZiBbW1NreUFmZml4Q29uZmlnXV0uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWZmaXhBdXRvRml0T3ZlcmZsb3dPZmZzZXQ6IFNreUFmZml4T2Zmc2V0IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgZW5hYmxlQXV0b0ZpdGAgcHJvcGVydHkgb2YgW1tTa3lBZmZpeENvbmZpZ11dLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFmZml4RW5hYmxlQXV0b0ZpdDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYGhvcml6b250YWxBbGlnbm1lbnRgIHByb3BlcnR5IG9mIFtbU2t5QWZmaXhDb25maWddXS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhZmZpeEhvcml6b250YWxBbGlnbm1lbnQ6IFNreUFmZml4SG9yaXpvbnRhbEFsaWdubWVudCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYGlzU3RpY2t5YCBwcm9wZXJ0eSBvZiBbW1NreUFmZml4Q29uZmlnXV0uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWZmaXhJc1N0aWNreTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYHBsYWNlbWVudGAgcHJvcGVydHkgb2YgW1tTa3lBZmZpeENvbmZpZ11dLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFmZml4UGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYHBvc2l0aW9uYCBwcm9wZXJ0eSBvZiBbW1NreUFmZml4Q29uZmlnXV0uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWZmaXhQb3NpdGlvbjogU2t5QWZmaXhQb3NpdGlvbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYHZlcnRpY2FsQWxpZ25tZW50YCBwcm9wZXJ0eSBvZiBbW1NreUFmZml4Q29uZmlnXV0uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWZmaXhWZXJ0aWNhbEFsaWdubWVudDogU2t5QWZmaXhWZXJ0aWNhbEFsaWdubWVudCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYWZmaXhlZCBlbGVtZW50J3Mgb2Zmc2V0IGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGFmZml4T2Zmc2V0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lBZmZpeE9mZnNldENoYW5nZT4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYWZmaXhlZCBlbGVtZW50J3Mgb3ZlcmZsb3cgY29udGFpbmVyIGlzIHNjcm9sbGVkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhZmZpeE92ZXJmbG93U2Nyb2xsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBwbGFjZW1lbnQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWZmaXhQbGFjZW1lbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUFmZml4UGxhY2VtZW50Q2hhbmdlPigpO1xuXG4gICNhZmZpeGVyOiBTa3lBZmZpeGVyIHwgdW5kZWZpbmVkO1xuXG4gICNhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZTtcblxuICAjZWxlbWVudFJlZjogRWxlbWVudFJlZjtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2UpIHtcbiAgICB0aGlzLiNlbGVtZW50UmVmID0gZWxlbWVudFJlZjtcbiAgICB0aGlzLiNhZmZpeFNlcnZpY2UgPSBhZmZpeFNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jYWZmaXhlciA9IHRoaXMuI2FmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKHRoaXMuI2VsZW1lbnRSZWYpO1xuXG4gICAgdGhpcy4jYWZmaXhlci5vZmZzZXRDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4gdGhpcy5hZmZpeE9mZnNldENoYW5nZS5lbWl0KGNoYW5nZSkpO1xuXG4gICAgdGhpcy4jYWZmaXhlci5vdmVyZmxvd1Njcm9sbFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB0aGlzLmFmZml4T3ZlcmZsb3dTY3JvbGwuZW1pdChjaGFuZ2UpKTtcblxuICAgIHRoaXMuI2FmZml4ZXIucGxhY2VtZW50Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHRoaXMuYWZmaXhQbGFjZW1lbnRDaGFuZ2UuZW1pdChjaGFuZ2UpKTtcblxuICAgIHRoaXMuI3VwZGF0ZUFsaWdubWVudCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXNbJ2FmZml4QXV0b0ZpdENvbnRleHQnXSB8fFxuICAgICAgY2hhbmdlc1snYWZmaXhBdXRvRml0T3ZlcmZsb3dPZmZzZXQnXSB8fFxuICAgICAgY2hhbmdlc1snYWZmaXhFbmFibGVBdXRvRml0J10gfHxcbiAgICAgIGNoYW5nZXNbJ2FmZml4SG9yaXpvbnRhbEFsaWdubWVudCddIHx8XG4gICAgICBjaGFuZ2VzWydhZmZpeElzU3RpY2t5J10gfHxcbiAgICAgIGNoYW5nZXNbJ2FmZml4UGxhY2VtZW50J10gfHxcbiAgICAgIGNoYW5nZXNbJ2FmZml4UG9zaXRpb24nXSB8fFxuICAgICAgY2hhbmdlc1snYWZmaXhWZXJ0aWNhbEFsaWdubWVudCddXG4gICAgKSB7XG4gICAgICB0aGlzLiN1cGRhdGVBbGlnbm1lbnQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hZmZpeE9mZnNldENoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuYWZmaXhPdmVyZmxvd1Njcm9sbC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuYWZmaXhQbGFjZW1lbnRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG5cbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jYWZmaXhlcikge1xuICAgICAgdGhpcy4jYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLiNhZmZpeGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVBbGlnbm1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2t5QWZmaXhUbyAmJiB0aGlzLiNhZmZpeGVyKSB7XG4gICAgICB0aGlzLiNhZmZpeGVyLmFmZml4VG8odGhpcy5za3lBZmZpeFRvLCB7XG4gICAgICAgIGF1dG9GaXRDb250ZXh0OiB0aGlzLmFmZml4QXV0b0ZpdENvbnRleHQsXG4gICAgICAgIGF1dG9GaXRPdmVyZmxvd09mZnNldDogdGhpcy5hZmZpeEF1dG9GaXRPdmVyZmxvd09mZnNldCxcbiAgICAgICAgZW5hYmxlQXV0b0ZpdDogdGhpcy5hZmZpeEVuYWJsZUF1dG9GaXQsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6IHRoaXMuYWZmaXhIb3Jpem9udGFsQWxpZ25tZW50LFxuICAgICAgICBpc1N0aWNreTogdGhpcy5hZmZpeElzU3RpY2t5LFxuICAgICAgICBwbGFjZW1lbnQ6IHRoaXMuYWZmaXhQbGFjZW1lbnQsXG4gICAgICAgIHBvc2l0aW9uOiB0aGlzLmFmZml4UG9zaXRpb24sXG4gICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiB0aGlzLmFmZml4VmVydGljYWxBbGlnbm1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyAffixDirective } from './affix.directive';\nimport * as i0 from \"@angular/core\";\nexport class SkyAffixModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAffixModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAffixModule, declarations: [SkyAffixDirective], imports: [CommonModule], exports: [SkyAffixDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAffixModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAffixModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [SkyAffixDirective],\n declarations: [SkyAffixDirective],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2FmZml4L2FmZml4Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFPdEQsTUFBTSxPQUFPLGNBQWM7OEdBQWQsY0FBYzsrR0FBZCxjQUFjLGlCQUZWLGlCQUFpQixhQUZ0QixZQUFZLGFBQ1osaUJBQWlCOytHQUdoQixjQUFjLFlBSmYsWUFBWTs7MkZBSVgsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUM1QixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5QWZmaXhEaXJlY3RpdmUgfSBmcm9tICcuL2FmZml4LmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbU2t5QWZmaXhEaXJlY3RpdmVdLFxuICBkZWNsYXJhdGlvbnM6IFtTa3lBZmZpeERpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUFmZml4TW9kdWxlIHt9XG4iXX0=","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n * An API to provide information about a parent component's content to child components.\n * For example, toolbar can use this to provide its child components with a list\n * descriptor they can use to construct aria labels, or tree view can provide the node\n * name to its context menus.\n */\nexport class SkyContentInfoProvider {\n #contentInfo = new ReplaySubject(1);\n #currentValue = {};\n patchInfo(value) {\n const newValue = {\n ...this.#currentValue,\n ...value,\n };\n this.#currentValue = newValue;\n this.#contentInfo.next(newValue);\n }\n getInfo() {\n return this.#contentInfo.asObservable();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyContentInfoProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyContentInfoProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyContentInfoProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1pbmZvLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2NvbnRlbnQtaW5mby1wcm92aWRlci9jb250ZW50LWluZm8tcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUlqRDs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQVksR0FBRyxJQUFJLGFBQWEsQ0FBaUIsQ0FBQyxDQUFDLENBQUM7SUFDcEQsYUFBYSxHQUFtQixFQUFFLENBQUM7SUFFNUIsU0FBUyxDQUFDLEtBQXFCO1FBQ3BDLE1BQU0sUUFBUSxHQUFHO1lBQ2YsR0FBRyxJQUFJLENBQUMsYUFBYTtZQUNyQixHQUFHLEtBQUs7U0FDVCxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQzs4R0FoQlUsc0JBQXNCO2tIQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5Q29udGVudEluZm8gfSBmcm9tICcuL2NvbnRlbnQtaW5mbyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBBbiBBUEkgdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcmVudCBjb21wb25lbnQncyBjb250ZW50IHRvIGNoaWxkIGNvbXBvbmVudHMuXG4gKiBGb3IgZXhhbXBsZSwgdG9vbGJhciBjYW4gdXNlIHRoaXMgdG8gcHJvdmlkZSBpdHMgY2hpbGQgY29tcG9uZW50cyB3aXRoIGEgbGlzdFxuICogZGVzY3JpcHRvciB0aGV5IGNhbiB1c2UgdG8gY29uc3RydWN0IGFyaWEgbGFiZWxzLCBvciB0cmVlIHZpZXcgY2FuIHByb3ZpZGUgdGhlIG5vZGVcbiAqIG5hbWUgdG8gaXRzIGNvbnRleHQgbWVudXMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lDb250ZW50SW5mb1Byb3ZpZGVyIHtcbiAgI2NvbnRlbnRJbmZvID0gbmV3IFJlcGxheVN1YmplY3Q8U2t5Q29udGVudEluZm8+KDEpO1xuICAjY3VycmVudFZhbHVlOiBTa3lDb250ZW50SW5mbyA9IHt9O1xuXG4gIHB1YmxpYyBwYXRjaEluZm8odmFsdWU6IFNreUNvbnRlbnRJbmZvKTogdm9pZCB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB7XG4gICAgICAuLi50aGlzLiNjdXJyZW50VmFsdWUsXG4gICAgICAuLi52YWx1ZSxcbiAgICB9O1xuXG4gICAgdGhpcy4jY3VycmVudFZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy4jY29udGVudEluZm8ubmV4dChuZXdWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SW5mbygpOiBPYnNlcnZhYmxlPFNreUNvbnRlbnRJbmZvPiB7XG4gICAgcmV0dXJuIHRoaXMuI2NvbnRlbnRJbmZvLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG59XG4iXX0=","import { ReplaySubject } from 'rxjs';\n/**\n * @internal\n * An API to provide default Angular component input values to child components.\n */\nexport class SkyDefaultInputProvider {\n #props = {};\n setValue(componentName, inputName, value) {\n const subject = this.#getSubject(componentName, inputName);\n subject.next(value);\n }\n getValue(componentName, inputName) {\n const inputDefault = this.#getSubject(componentName, inputName);\n return inputDefault.asObservable();\n }\n #getSubject(componentName, inputName) {\n const componentSubjects = this.#props[componentName] || {};\n const inputSubject = componentSubjects[inputName];\n if (!inputSubject) {\n componentSubjects[inputName] = new ReplaySubject(1);\n this.#props[componentName] = componentSubjects;\n }\n return componentSubjects[inputName];\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1pbnB1dC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9kZWZhdWx0LWlucHV0LXByb3ZpZGVyL2RlZmF1bHQtaW5wdXQtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVqRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLE1BQU0sR0FBMkQsRUFBRSxDQUFDO0lBRTdELFFBQVEsQ0FBSSxhQUFxQixFQUFFLFNBQWlCLEVBQUUsS0FBUTtRQUNuRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMzRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxRQUFRLENBQ2IsYUFBcUIsRUFDckIsU0FBaUI7UUFFakIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEUsT0FBTyxZQUFZLENBQUMsWUFBWSxFQUFtQixDQUFDO0lBQ3RELENBQUM7SUFFRCxXQUFXLENBQ1QsYUFBcUIsRUFDckIsU0FBaUI7UUFFakIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzRCxNQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztRQUNqRCxDQUFDO1FBRUQsT0FBTyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBBbiBBUEkgdG8gcHJvdmlkZSBkZWZhdWx0IEFuZ3VsYXIgY29tcG9uZW50IGlucHV0IHZhbHVlcyB0byBjaGlsZCBjb21wb25lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5RGVmYXVsdElucHV0UHJvdmlkZXIge1xuICAjcHJvcHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFJlcGxheVN1YmplY3Q8dW5rbm93bj4+PiA9IHt9O1xuXG4gIHB1YmxpYyBzZXRWYWx1ZTxUPihjb21wb25lbnROYW1lOiBzdHJpbmcsIGlucHV0TmFtZTogc3RyaW5nLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIGNvbnN0IHN1YmplY3QgPSB0aGlzLiNnZXRTdWJqZWN0KGNvbXBvbmVudE5hbWUsIGlucHV0TmFtZSk7XG4gICAgc3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZTxUPihcbiAgICBjb21wb25lbnROYW1lOiBzdHJpbmcsXG4gICAgaW5wdXROYW1lOiBzdHJpbmcsXG4gICk6IE9ic2VydmFibGU8VD4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlucHV0RGVmYXVsdCA9IHRoaXMuI2dldFN1YmplY3QoY29tcG9uZW50TmFtZSwgaW5wdXROYW1lKTtcbiAgICByZXR1cm4gaW5wdXREZWZhdWx0LmFzT2JzZXJ2YWJsZSgpIGFzIE9ic2VydmFibGU8VD47XG4gIH1cblxuICAjZ2V0U3ViamVjdChcbiAgICBjb21wb25lbnROYW1lOiBzdHJpbmcsXG4gICAgaW5wdXROYW1lOiBzdHJpbmcsXG4gICk6IFJlcGxheVN1YmplY3Q8dW5rbm93bj4ge1xuICAgIGNvbnN0IGNvbXBvbmVudFN1YmplY3RzID0gdGhpcy4jcHJvcHNbY29tcG9uZW50TmFtZV0gfHwge307XG4gICAgY29uc3QgaW5wdXRTdWJqZWN0ID0gY29tcG9uZW50U3ViamVjdHNbaW5wdXROYW1lXTtcblxuICAgIGlmICghaW5wdXRTdWJqZWN0KSB7XG4gICAgICBjb21wb25lbnRTdWJqZWN0c1tpbnB1dE5hbWVdID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG4gICAgICB0aGlzLiNwcm9wc1tjb21wb25lbnROYW1lXSA9IGNvbXBvbmVudFN1YmplY3RzO1xuICAgIH1cblxuICAgIHJldHVybiBjb21wb25lbnRTdWJqZWN0c1tpbnB1dE5hbWVdO1xuICB9XG59XG4iXX0=","import { Subject } from 'rxjs';\n/**\n * Represents a single item added to the dock.\n */\nexport class SkyDockItem {\n /**\n * An event that emits when the item is removed from the dock.\n */\n get destroyed() {\n return this.#destroyedObs;\n }\n #destroyed = new Subject();\n #destroyedObs;\n /**\n * @param componentInstance The item's component instance.\n * @param stackOrder The assigned stack order of the docked item.\n */\n constructor(componentInstance, stackOrder) {\n this.componentInstance = componentInstance;\n this.stackOrder = stackOrder;\n this.#destroyedObs = this.#destroyed.asObservable();\n }\n /**\n * Removes the item from the dock.\n */\n destroy() {\n this.#destroyed.next();\n this.#destroyed.complete();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2RvY2svZG9jay1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUN0Qjs7T0FFRztJQUNILElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELFVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRWpDLGFBQWEsQ0FBbUI7SUFFaEM7OztPQUdHO0lBQ0gsWUFDa0IsaUJBQW9CLEVBQ3BCLFVBQWtCO1FBRGxCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBRztRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBRWxDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIGl0ZW0gYWRkZWQgdG8gdGhlIGRvY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lEb2NrSXRlbTxUPiB7XG4gIC8qKlxuICAgKiBBbiBldmVudCB0aGF0IGVtaXRzIHdoZW4gdGhlIGl0ZW0gaXMgcmVtb3ZlZCBmcm9tIHRoZSBkb2NrLlxuICAgKi9cbiAgcHVibGljIGdldCBkZXN0cm95ZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuI2Rlc3Ryb3llZE9icztcbiAgfVxuXG4gICNkZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNkZXN0cm95ZWRPYnM6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBjb21wb25lbnRJbnN0YW5jZSBUaGUgaXRlbSdzIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHN0YWNrT3JkZXIgVGhlIGFzc2lnbmVkIHN0YWNrIG9yZGVyIG9mIHRoZSBkb2NrZWQgaXRlbS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBjb21wb25lbnRJbnN0YW5jZTogVCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhY2tPcmRlcjogbnVtYmVyLFxuICApIHtcbiAgICB0aGlzLiNkZXN0cm95ZWRPYnMgPSB0aGlzLiNkZXN0cm95ZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgaXRlbSBmcm9tIHRoZSBkb2NrLlxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jZGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLiNkZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19","/**\n * The location on the page where the dock component should be rendered.\n */\nexport var SkyDockLocation;\n(function (SkyDockLocation) {\n /**\n * Renders the dock component before a given element.\n */\n SkyDockLocation[SkyDockLocation[\"BeforeElement\"] = 0] = \"BeforeElement\";\n /**\n * Renders the dock component as the last element inside the BODY element.\n */\n SkyDockLocation[SkyDockLocation[\"BodyBottom\"] = 1] = \"BodyBottom\";\n /**\n * Renders the dock component as the last element inside a given element.\n */\n SkyDockLocation[SkyDockLocation[\"ElementBottom\"] = 2] = \"ElementBottom\";\n})(SkyDockLocation || (SkyDockLocation = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1sb2NhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9kb2NrL2RvY2stbG9jYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxlQWVYO0FBZkQsV0FBWSxlQUFlO0lBQ3pCOztPQUVHO0lBQ0gsdUVBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsaUVBQVUsQ0FBQTtJQUVWOztPQUVHO0lBQ0gsdUVBQWEsQ0FBQTtBQUNmLENBQUMsRUFmVyxlQUFlLEtBQWYsZUFBZSxRQWUxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGxvY2F0aW9uIG9uIHRoZSBwYWdlIHdoZXJlIHRoZSBkb2NrIGNvbXBvbmVudCBzaG91bGQgYmUgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBlbnVtIFNreURvY2tMb2NhdGlvbiB7XG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBkb2NrIGNvbXBvbmVudCBiZWZvcmUgYSBnaXZlbiBlbGVtZW50LlxuICAgKi9cbiAgQmVmb3JlRWxlbWVudCxcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgZG9jayBjb21wb25lbnQgYXMgdGhlIGxhc3QgZWxlbWVudCBpbnNpZGUgdGhlIEJPRFkgZWxlbWVudC5cbiAgICovXG4gIEJvZHlCb3R0b20sXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGRvY2sgY29tcG9uZW50IGFzIHRoZSBsYXN0IGVsZW1lbnQgaW5zaWRlIGEgZ2l2ZW4gZWxlbWVudC5cbiAgICovXG4gIEVsZW1lbnRCb3R0b20sXG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated The `SkyDockModule` is no longer needed and can be removed from your application.\n * @internal\n */\nexport class SkyDockModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDockModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDockModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDockModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvZG9jay9kb2NrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV6Qzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sYUFBYTs4R0FBYixhQUFhOytHQUFiLGFBQWE7K0dBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsUUFBUTttQkFBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBUaGUgYFNreURvY2tNb2R1bGVgIGlzIG5vIGxvbmdlciBuZWVkZWQgYW5kIGNhbiBiZSByZW1vdmVkIGZyb20geW91ciBhcHBsaWNhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG5ATmdNb2R1bGUoe30pXG5leHBvcnQgY2xhc3MgU2t5RG9ja01vZHVsZSB7fVxuIl19","/**\n * The location on the page where the dynamic component should be rendered.\n */\nexport var SkyDynamicComponentLocation;\n(function (SkyDynamicComponentLocation) {\n /**\n * Renders the dynamic component before a given element.\n */\n SkyDynamicComponentLocation[SkyDynamicComponentLocation[\"BeforeElement\"] = 0] = \"BeforeElement\";\n /**\n * Renders the dynamic component as the last element inside the BODY element.\n */\n SkyDynamicComponentLocation[SkyDynamicComponentLocation[\"BodyBottom\"] = 1] = \"BodyBottom\";\n /**\n * Renders the dynamic component as the first element inside the BODY element.\n */\n SkyDynamicComponentLocation[SkyDynamicComponentLocation[\"BodyTop\"] = 2] = \"BodyTop\";\n /**\n * Renders the dynamic component as the last element inside a given element.\n */\n SkyDynamicComponentLocation[SkyDynamicComponentLocation[\"ElementBottom\"] = 3] = \"ElementBottom\";\n /**\n * Renders the dynamic component as the first element inside a given element.\n */\n SkyDynamicComponentLocation[SkyDynamicComponentLocation[\"ElementTop\"] = 4] = \"ElementTop\";\n})(SkyDynamicComponentLocation || (SkyDynamicComponentLocation = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQtbG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQtbG9jYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSwyQkF5Qlg7QUF6QkQsV0FBWSwyQkFBMkI7SUFDckM7O09BRUc7SUFDSCwrRkFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCx5RkFBVSxDQUFBO0lBRVY7O09BRUc7SUFDSCxtRkFBTyxDQUFBO0lBRVA7O09BRUc7SUFDSCwrRkFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCx5RkFBVSxDQUFBO0FBQ1osQ0FBQyxFQXpCVywyQkFBMkIsS0FBM0IsMkJBQTJCLFFBeUJ0QyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGxvY2F0aW9uIG9uIHRoZSBwYWdlIHdoZXJlIHRoZSBkeW5hbWljIGNvbXBvbmVudCBzaG91bGQgYmUgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBlbnVtIFNreUR5bmFtaWNDb21wb25lbnRMb2NhdGlvbiB7XG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBkeW5hbWljIGNvbXBvbmVudCBiZWZvcmUgYSBnaXZlbiBlbGVtZW50LlxuICAgKi9cbiAgQmVmb3JlRWxlbWVudCxcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgZHluYW1pYyBjb21wb25lbnQgYXMgdGhlIGxhc3QgZWxlbWVudCBpbnNpZGUgdGhlIEJPRFkgZWxlbWVudC5cbiAgICovXG4gIEJvZHlCb3R0b20sXG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGR5bmFtaWMgY29tcG9uZW50IGFzIHRoZSBmaXJzdCBlbGVtZW50IGluc2lkZSB0aGUgQk9EWSBlbGVtZW50LlxuICAgKi9cbiAgQm9keVRvcCxcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgZHluYW1pYyBjb21wb25lbnQgYXMgdGhlIGxhc3QgZWxlbWVudCBpbnNpZGUgYSBnaXZlbiBlbGVtZW50LlxuICAgKi9cbiAgRWxlbWVudEJvdHRvbSxcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgZHluYW1pYyBjb21wb25lbnQgYXMgdGhlIGZpcnN0IGVsZW1lbnQgaW5zaWRlIGEgZ2l2ZW4gZWxlbWVudC5cbiAgICovXG4gIEVsZW1lbnRUb3AsXG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport function getWindow() {\n return window;\n}\n/**\n * The application window reference service references the global window variable.\n * After users inject SkyAppWindowRef into a component, they can use the service to interact with\n * window properties and event handlers by referencing its nativeWindow property.\n */\nexport class SkyAppWindowRef {\n /**\n * The global `window` variable.\n */\n get nativeWindow() {\n return getWindow();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppWindowRef, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppWindowRef, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppWindowRef, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy93aW5kb3cvd2luZG93LXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQzs7R0FFRztBQUNILE1BQU0sVUFBVSxTQUFTO0lBQ3ZCLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUFDMUI7O09BRUc7SUFDSCxJQUFXLFlBQVk7UUFDckIsT0FBTyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDOzhHQU5VLGVBQWU7a0hBQWYsZUFBZSxjQUZkLE1BQU07OzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2luZG93KCk6IGFueSB7XG4gIHJldHVybiB3aW5kb3c7XG59XG5cbi8qKlxuICogVGhlIGFwcGxpY2F0aW9uIHdpbmRvdyByZWZlcmVuY2Ugc2VydmljZSByZWZlcmVuY2VzIHRoZSBnbG9iYWwgd2luZG93IHZhcmlhYmxlLlxuICogQWZ0ZXIgdXNlcnMgaW5qZWN0IFNreUFwcFdpbmRvd1JlZiBpbnRvIGEgY29tcG9uZW50LCB0aGV5IGNhbiB1c2UgdGhlIHNlcnZpY2UgdG8gaW50ZXJhY3Qgd2l0aFxuICogd2luZG93IHByb3BlcnRpZXMgYW5kIGV2ZW50IGhhbmRsZXJzIGJ5IHJlZmVyZW5jaW5nIGl0cyBuYXRpdmVXaW5kb3cgcHJvcGVydHkuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBcHBXaW5kb3dSZWYge1xuICAvKipcbiAgICogVGhlIGdsb2JhbCBgd2luZG93YCB2YXJpYWJsZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgbmF0aXZlV2luZG93KCk6IGFueSB7XG4gICAgcmV0dXJuIGdldFdpbmRvdygpO1xuICB9XG59XG4iXX0=","import { EnvironmentInjector, Injectable, createComponent, createEnvironmentInjector, inject, } from '@angular/core';\nimport { SkyDynamicComponentLocation } from './dynamic-component-location';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../window/window-ref\";\n/**\n * Angular service for creating and rendering a dynamic component.\n * @internal\n */\nexport class SkyDynamicComponentService {\n #applicationRef;\n #renderer;\n #windowRef;\n #environmentInjector = inject(EnvironmentInjector);\n constructor(applicationRef, windowRef, rendererFactory) {\n this.#applicationRef = applicationRef;\n this.#windowRef = windowRef;\n // Based on suggestions from https://github.com/angular/angular/issues/17824\n // for accessing an instance of Renderer2 in a service since Renderer2 can't\n // be injected into a service. Passing undefined for both parameters results\n // in the default renderer which is what we want here.\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n /**\n * Creates an instance of the specified component and adds it to the specified location\n * on the page.\n */\n createComponent(componentType, options = {\n location: SkyDynamicComponentLocation.BodyBottom,\n }) {\n const environmentInjector = createEnvironmentInjector(options.providers ?? [], options.environmentInjector ?? this.#environmentInjector);\n let componentRef;\n if (options.viewContainerRef) {\n componentRef = options.viewContainerRef.createComponent(componentType, {\n environmentInjector,\n });\n }\n else {\n componentRef = createComponent(componentType, {\n environmentInjector,\n });\n this.#applicationRef.attachView(componentRef.hostView);\n this.#insertComponentAtLocation(componentRef, options);\n }\n if (options.className) {\n const el = this.#getRootNode(componentRef);\n this.#renderer.addClass(el, options.className);\n }\n return componentRef;\n }\n #insertComponentAtLocation(componentRef, options) {\n const el = this.#getRootNode(componentRef);\n const bodyEl = this.#windowRef.nativeWindow.document.body;\n switch (options.location) {\n case SkyDynamicComponentLocation.BeforeElement:\n if (!options.referenceEl) {\n throw new Error('[SkyDynamicComponentService] Could not create a component at location `SkyDynamicComponentLocation.BeforeElement` because a reference element was not provided.');\n }\n this.#renderer.insertBefore(options.referenceEl.parentElement, el, options.referenceEl);\n break;\n case SkyDynamicComponentLocation.ElementTop:\n if (!options.referenceEl) {\n throw new Error('[SkyDynamicComponentService] Could not create a component at location `SkyDynamicComponentLocation.ElementTop` because a reference element was not provided.');\n }\n this.#renderer.insertBefore(options.referenceEl, el, options.referenceEl.firstChild);\n break;\n case SkyDynamicComponentLocation.ElementBottom:\n this.#renderer.appendChild(options.referenceEl, el);\n break;\n case SkyDynamicComponentLocation.BodyTop:\n this.#renderer.insertBefore(bodyEl, el, bodyEl.firstChild);\n break;\n default:\n this.#renderer.appendChild(bodyEl, el);\n break;\n }\n }\n /**\n * Removes a component ref from the page\n * @param componentRef Component ref for the component being removed\n */\n removeComponent(componentRef) {\n if (!componentRef) {\n return;\n }\n if (!this.#applicationRef.destroyed) {\n this.#applicationRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n }\n #getRootNode(componentRef) {\n // Technique for retrieving the component's root node taken from here:\n // https://malcoded.com/posts/angular-dynamic-components\n return componentRef.hostView.rootNodes[0];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDynamicComponentService, deps: [{ token: i0.ApplicationRef }, { token: i1.SkyAppWindowRef }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDynamicComponentService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDynamicComponentService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i1.SkyAppWindowRef }, { type: i0.RendererFactory2 }] });\n/**\n * Angular service for creating and rendering a dynamic component.\n * @internal\n * @deprecated Use `SkyDynamicComponentService` to create a standalone component instead.\n */\nexport class SkyDynamicComponentLegacyService extends SkyDynamicComponentService {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDynamicComponentLegacyService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDynamicComponentLegacyService, providedIn: 'any' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDynamicComponentLegacyService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'any',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9keW5hbWljLWNvbXBvbmVudC9keW5hbWljLWNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxtQkFBbUIsRUFDbkIsVUFBVSxFQUlWLGVBQWUsRUFDZix5QkFBeUIsRUFDekIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFHM0U7OztHQUdHO0FBSUgsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxlQUFlLENBQWlCO0lBRWhDLFNBQVMsQ0FBWTtJQUVyQixVQUFVLENBQWtCO0lBRTVCLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRW5ELFlBQ0UsY0FBOEIsRUFDOUIsU0FBMEIsRUFDMUIsZUFBaUM7UUFFakMsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFFNUIsNEVBQTRFO1FBQzVFLDRFQUE0RTtRQUM1RSw2RUFBNkU7UUFDN0Usc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGVBQWUsQ0FDcEIsYUFBc0IsRUFDdEIsVUFBc0M7UUFDcEMsUUFBUSxFQUFFLDJCQUEyQixDQUFDLFVBQVU7S0FDakQ7UUFFRCxNQUFNLG1CQUFtQixHQUFHLHlCQUF5QixDQUNuRCxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFDdkIsT0FBTyxDQUFDLG1CQUFtQixJQUFJLElBQUks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UUFDRCxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFlBQVksQ0FBSSxZQUE2QjtRQUMzQyxzRUFBc0U7UUFDdEUsd0RBQXdEO1FBQ3hELE9BQVEsWUFBWSxDQUFDLFFBQStCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7OEdBaklVLDBCQUEwQjtrSEFBMUIsMEJBQTBCLGNBRnpCLE1BQU07OzJGQUVQLDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBcUlEOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsMEJBQTBCOzhHQUFuRSxnQ0FBZ0M7a0hBQWhDLGdDQUFnQyxjQUYvQixLQUFLOzsyRkFFTixnQ0FBZ0M7a0JBSDVDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXBwbGljYXRpb25SZWYsXG4gIENvbXBvbmVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBFbnZpcm9ubWVudEluamVjdG9yLFxuICBJbmplY3RhYmxlLFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG4gIFR5cGUsXG4gIGNyZWF0ZUNvbXBvbmVudCxcbiAgY3JlYXRlRW52aXJvbm1lbnRJbmplY3RvcixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5QXBwV2luZG93UmVmIH0gZnJvbSAnLi4vd2luZG93L3dpbmRvdy1yZWYnO1xuXG5pbXBvcnQgeyBTa3lEeW5hbWljQ29tcG9uZW50TG9jYXRpb24gfSBmcm9tICcuL2R5bmFtaWMtY29tcG9uZW50LWxvY2F0aW9uJztcbmltcG9ydCB7IFNreUR5bmFtaWNDb21wb25lbnRPcHRpb25zIH0gZnJvbSAnLi9keW5hbWljLWNvbXBvbmVudC1vcHRpb25zJztcblxuLyoqXG4gKiBBbmd1bGFyIHNlcnZpY2UgZm9yIGNyZWF0aW5nIGFuZCByZW5kZXJpbmcgYSBkeW5hbWljIGNvbXBvbmVudC5cbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2Uge1xuICAjYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmO1xuXG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gICN3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZjtcblxuICAjZW52aXJvbm1lbnRJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWYsXG4gICAgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyLFxuICApIHtcbiAgICB0aGlzLiNhcHBsaWNhdGlvblJlZiA9IGFwcGxpY2F0aW9uUmVmO1xuICAgIHRoaXMuI3dpbmRvd1JlZiA9IHdpbmRvd1JlZjtcblxuICAgIC8vIEJhc2VkIG9uIHN1Z2dlc3Rpb25zIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTc4MjRcbiAgICAvLyBmb3IgYWNjZXNzaW5nIGFuIGluc3RhbmNlIG9mIFJlbmRlcmVyMiBpbiBhIHNlcnZpY2Ugc2luY2UgUmVuZGVyZXIyIGNhbid0XG4gICAgLy8gYmUgaW5qZWN0ZWQgaW50byBhIHNlcnZpY2UuICBQYXNzaW5nIHVuZGVmaW5lZCBmb3IgYm90aCBwYXJhbWV0ZXJzIHJlc3VsdHNcbiAgICAvLyBpbiB0aGUgZGVmYXVsdCByZW5kZXJlciB3aGljaCBpcyB3aGF0IHdlIHdhbnQgaGVyZS5cbiAgICB0aGlzLiNyZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcih1bmRlZmluZWQsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHNwZWNpZmllZCBjb21wb25lbnQgYW5kIGFkZHMgaXQgdG8gdGhlIHNwZWNpZmllZCBsb2NhdGlvblxuICAgKiBvbiB0aGUgcGFnZS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVDb21wb25lbnQ8VD4oXG4gICAgY29tcG9uZW50VHlwZTogVHlwZTxUPixcbiAgICBvcHRpb25zOiBTa3lEeW5hbWljQ29tcG9uZW50T3B0aW9ucyA9IHtcbiAgICAgIGxvY2F0aW9uOiBTa3lEeW5hbWljQ29tcG9uZW50TG9jYXRpb24uQm9keUJvdHRvbSxcbiAgICB9LFxuICApOiBDb21wb25lbnRSZWY8VD4ge1xuICAgIGNvbnN0IGVudmlyb25tZW50SW5qZWN0b3IgPSBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yKFxuICAgICAgb3B0aW9ucy5wcm92aWRlcnMgPz8gW10sXG4gICAgICBvcHRpb25zLmVudmlyb25tZW50SW5qZWN0b3IgPz8gdGhpcy4jZW52aXJvbm1lbnRJbmplY3RvcixcbiAgICApO1xuXG4gICAgbGV0IGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+O1xuXG4gICAgaWYgKG9wdGlvbnMudmlld0NvbnRhaW5lclJlZikge1xuICAgICAgY29tcG9uZW50UmVmID0gb3B0aW9ucy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlLCB7XG4gICAgICAgIGVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50UmVmID0gY3JlYXRlQ29tcG9uZW50PFQ+KGNvbXBvbmVudFR5cGUsIHtcbiAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLiNhcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG5cbiAgICAgIHRoaXMuI2luc2VydENvbXBvbmVudEF0TG9jYXRpb24oY29tcG9uZW50UmVmLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jbGFzc05hbWUpIHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy4jZ2V0Um9vdE5vZGUoY29tcG9uZW50UmVmKTtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKGVsLCBvcHRpb25zLmNsYXNzTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgfVxuXG4gICNpbnNlcnRDb21wb25lbnRBdExvY2F0aW9uKFxuICAgIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPHVua25vd24+LFxuICAgIG9wdGlvbnM6IFNreUR5bmFtaWNDb21wb25lbnRPcHRpb25zLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuI2dldFJvb3ROb2RlKGNvbXBvbmVudFJlZik7XG5cbiAgICBjb25zdCBib2R5RWwgPSB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHk7XG5cbiAgICBzd2l0Y2ggKG9wdGlvbnMubG9jYXRpb24pIHtcbiAgICAgIGNhc2UgU2t5RHluYW1pY0NvbXBvbmVudExvY2F0aW9uLkJlZm9yZUVsZW1lbnQ6XG4gICAgICAgIGlmICghb3B0aW9ucy5yZWZlcmVuY2VFbCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdbU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2VdIENvdWxkIG5vdCBjcmVhdGUgYSBjb21wb25lbnQgYXQgbG9jYXRpb24gYFNreUR5bmFtaWNDb21wb25lbnRMb2NhdGlvbi5CZWZvcmVFbGVtZW50YCBiZWNhdXNlIGEgcmVmZXJlbmNlIGVsZW1lbnQgd2FzIG5vdCBwcm92aWRlZC4nLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiNyZW5kZXJlci5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgb3B0aW9ucy5yZWZlcmVuY2VFbC5wYXJlbnRFbGVtZW50LFxuICAgICAgICAgIGVsLFxuICAgICAgICAgIG9wdGlvbnMucmVmZXJlbmNlRWwsXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTa3lEeW5hbWljQ29tcG9uZW50TG9jYXRpb24uRWxlbWVudFRvcDpcbiAgICAgICAgaWYgKCFvcHRpb25zLnJlZmVyZW5jZUVsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1tTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZV0gQ291bGQgbm90IGNyZWF0ZSBhIGNvbXBvbmVudCBhdCBsb2NhdGlvbiBgU2t5RHluYW1pY0NvbXBvbmVudExvY2F0aW9uLkVsZW1lbnRUb3BgIGJlY2F1c2UgYSByZWZlcmVuY2UgZWxlbWVudCB3YXMgbm90IHByb3ZpZGVkLicsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuI3JlbmRlcmVyLmluc2VydEJlZm9yZShcbiAgICAgICAgICBvcHRpb25zLnJlZmVyZW5jZUVsLFxuICAgICAgICAgIGVsLFxuICAgICAgICAgIG9wdGlvbnMucmVmZXJlbmNlRWwuZmlyc3RDaGlsZCxcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNreUR5bmFtaWNDb21wb25lbnRMb2NhdGlvbi5FbGVtZW50Qm90dG9tOlxuICAgICAgICB0aGlzLiNyZW5kZXJlci5hcHBlbmRDaGlsZChvcHRpb25zLnJlZmVyZW5jZUVsLCBlbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTa3lEeW5hbWljQ29tcG9uZW50TG9jYXRpb24uQm9keVRvcDpcbiAgICAgICAgdGhpcy4jcmVuZGVyZXIuaW5zZXJ0QmVmb3JlKGJvZHlFbCwgZWwsIGJvZHlFbC5maXJzdENoaWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLiNyZW5kZXJlci5hcHBlbmRDaGlsZChib2R5RWwsIGVsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBjb21wb25lbnQgcmVmIGZyb20gdGhlIHBhZ2VcbiAgICogQHBhcmFtIGNvbXBvbmVudFJlZiBDb21wb25lbnQgcmVmIGZvciB0aGUgY29tcG9uZW50IGJlaW5nIHJlbW92ZWRcbiAgICovXG4gIHB1YmxpYyByZW1vdmVDb21wb25lbnQ8VD4oY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAoIWNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy4jYXBwbGljYXRpb25SZWYuZGVzdHJveWVkKSB7XG4gICAgICB0aGlzLiNhcHBsaWNhdGlvblJlZi5kZXRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgfVxuICAgIGNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gIH1cblxuICAjZ2V0Um9vdE5vZGU8VD4oY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4pOiBhbnkge1xuICAgIC8vIFRlY2huaXF1ZSBmb3IgcmV0cmlldmluZyB0aGUgY29tcG9uZW50J3Mgcm9vdCBub2RlIHRha2VuIGZyb20gaGVyZTpcbiAgICAvLyBodHRwczovL21hbGNvZGVkLmNvbS9wb3N0cy9hbmd1bGFyLWR5bmFtaWMtY29tcG9uZW50c1xuICAgIHJldHVybiAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxUPikucm9vdE5vZGVzWzBdO1xuICB9XG59XG5cbi8qKlxuICogQW5ndWxhciBzZXJ2aWNlIGZvciBjcmVhdGluZyBhbmQgcmVuZGVyaW5nIGEgZHluYW1pYyBjb21wb25lbnQuXG4gKiBAaW50ZXJuYWxcbiAqIEBkZXByZWNhdGVkIFVzZSBgU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2VgIHRvIGNyZWF0ZSBhIHN0YW5kYWxvbmUgY29tcG9uZW50IGluc3RlYWQuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ2FueScsXG59KVxuZXhwb3J0IGNsYXNzIFNreUR5bmFtaWNDb21wb25lbnRMZWdhY3lTZXJ2aWNlIGV4dGVuZHMgU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2Uge31cbiJdfQ==","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyMutationObserverService {\n create(callback) {\n return new MutationObserver(callback);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMutationObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMutationObserverService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMutationObserverService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLDBCQUEwQjtJQUM5QixNQUFNLENBQUMsUUFBMEI7UUFDdEMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBSFUsMEJBQTBCO2tIQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7MkZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIHtcbiAgcHVibGljIGNyZWF0ZShjYWxsYmFjazogTXV0YXRpb25DYWxsYmFjayk6IE11dGF0aW9uT2JzZXJ2ZXIge1xuICAgIHJldHVybiBuZXcgTXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7XG4gIH1cbn1cbiJdfQ==","import { Injectable, } from '@angular/core';\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../mutation/mutation-observer-service\";\n/**\n * @internal\n */\nexport class SkyDockDomAdapterService {\n #currentDockHeight;\n #mutationSvc;\n #ngUnsubscribe = new Subject();\n #observer;\n #renderer;\n #styleElement;\n constructor(mutationSvc, rendererFactory) {\n this.#mutationSvc = mutationSvc;\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n ngOnDestroy() {\n if (this.#observer) {\n this.#observer.disconnect();\n }\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n if (this.#styleElement) {\n this.#destroyStyleElement();\n }\n this.#currentDockHeight = this.#observer = this.#styleElement = undefined;\n }\n setSticky(elementRef) {\n this.#renderer.addClass(elementRef.nativeElement, 'sky-dock-sticky');\n }\n setZIndex(zIndex, elementRef) {\n this.#renderer.setStyle(elementRef.nativeElement, 'z-index', zIndex);\n }\n unbindDock(elementRef) {\n this.#renderer.addClass(elementRef.nativeElement, 'sky-dock-unbound');\n }\n watchDomChanges(elementRef) {\n this.#observer = this.#mutationSvc.create(() => {\n this.#adjustBodyStyles(elementRef);\n });\n this.#observer.observe(elementRef.nativeElement, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n observableFromEvent(window, 'resize')\n .pipe(debounceTime(250), takeUntil(this.#ngUnsubscribe))\n .subscribe(() => this.#adjustBodyStyles(elementRef));\n }\n #adjustBodyStyles(elementRef) {\n const dockHeight = elementRef.nativeElement.getBoundingClientRect().height;\n if (dockHeight === this.#currentDockHeight) {\n return;\n }\n // Create a style element to avoid overwriting any existing inline body styles.\n const styleElement = this.#renderer.createElement('style');\n const textNode = this.#renderer.createText(`body { margin-bottom: ${dockHeight}px; --sky-dock-height: ${dockHeight}px; }`);\n // Apply a `data-` attribute to make unit testing easier.\n this.#renderer.setAttribute(styleElement, 'data-test-selector', 'sky-layout-dock-bottom-styles');\n this.#renderer.appendChild(styleElement, textNode);\n this.#renderer.appendChild(document.head, styleElement);\n if (this.#styleElement) {\n this.#destroyStyleElement();\n }\n this.#currentDockHeight = dockHeight;\n this.#styleElement = styleElement;\n }\n #destroyStyleElement() {\n this.#renderer.removeChild(document.head, this.#styleElement);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDockDomAdapterService, deps: [{ token: i1.SkyMutationObserverService }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDockDomAdapterService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDockDomAdapterService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.SkyMutationObserverService }, { type: i0.RendererFactory2 }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1kb20tYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2RvY2svZG9jay1kb20tYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxVQUFVLEdBSVgsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLElBQUksbUJBQW1CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSXpEOztHQUVHO0FBRUgsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxrQkFBa0IsQ0FBcUI7SUFFdkMsWUFBWSxDQUE2QjtJQUV6QyxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVyQyxTQUFTLENBQStCO0lBRXhDLFNBQVMsQ0FBWTtJQUVyQixhQUFhLENBQStCO0lBRTVDLFlBQ0UsV0FBdUMsRUFDdkMsZUFBaUM7UUFFakMsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFL0IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLG9CQUFvQixFQUFF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O2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lEb2NrRG9tQWRhcHRlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAjY3VycmVudERvY2tIZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjbXV0YXRpb25TdmM6IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjb2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCB1bmRlZmluZWQ7XG5cbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgI3N0eWxlRWxlbWVudDogSFRNTFN0eWxlRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtdXRhdGlvblN2YzogU2t5TXV0YXRpb25PYnNlcnZlclNlcnZpY2UsXG4gICAgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyLFxuICApIHtcbiAgICB0aGlzLiNtdXRhdGlvblN2YyA9IG11dGF0aW9uU3ZjO1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKHVuZGVmaW5lZCwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI29ic2VydmVyKSB7XG4gICAgICB0aGlzLiNvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfVxuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcblxuICAgIGlmICh0aGlzLiNzdHlsZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuI2Rlc3Ryb3lTdHlsZUVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNjdXJyZW50RG9ja0hlaWdodCA9IHRoaXMuI29ic2VydmVyID0gdGhpcy4jc3R5bGVFbGVtZW50ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNldFN0aWNreShlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIuYWRkQ2xhc3MoZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnc2t5LWRvY2stc3RpY2t5Jyk7XG4gIH1cblxuICBwdWJsaWMgc2V0WkluZGV4KHpJbmRleDogbnVtYmVyLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnei1pbmRleCcsIHpJbmRleCk7XG4gIH1cblxuICBwdWJsaWMgdW5iaW5kRG9jayhlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIuYWRkQ2xhc3MoZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnc2t5LWRvY2stdW5ib3VuZCcpO1xuICB9XG5cbiAgcHVibGljIHdhdGNoRG9tQ2hhbmdlcyhlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jb2JzZXJ2ZXIgPSB0aGlzLiNtdXRhdGlvblN2Yy5jcmVhdGUoKCkgPT4ge1xuICAgICAgdGhpcy4jYWRqdXN0Qm9keVN0eWxlcyhlbGVtZW50UmVmKTtcbiAgICB9KTtcblxuICAgIHRoaXMuI29ic2VydmVyLm9ic2VydmUoZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjUwKSwgdGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLiNhZGp1c3RCb2R5U3R5bGVzKGVsZW1lbnRSZWYpKTtcbiAgfVxuXG4gICNhZGp1c3RCb2R5U3R5bGVzKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICBjb25zdCBkb2NrSGVpZ2h0ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICBpZiAoZG9ja0hlaWdodCA9PT0gdGhpcy4jY3VycmVudERvY2tIZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgYSBzdHlsZSBlbGVtZW50IHRvIGF2b2lkIG92ZXJ3cml0aW5nIGFueSBleGlzdGluZyBpbmxpbmUgYm9keSBzdHlsZXMuXG4gICAgY29uc3Qgc3R5bGVFbGVtZW50ID0gdGhpcy4jcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICBjb25zdCB0ZXh0Tm9kZSA9IHRoaXMuI3JlbmRlcmVyLmNyZWF0ZVRleHQoXG4gICAgICBgYm9keSB7IG1hcmdpbi1ib3R0b206ICR7ZG9ja0hlaWdodH1weDsgLS1za3ktZG9jay1oZWlnaHQ6ICR7ZG9ja0hlaWdodH1weDsgfWAsXG4gICAgKTtcblxuICAgIC8vIEFwcGx5IGEgYGRhdGEtYCBhdHRyaWJ1dGUgdG8gbWFrZSB1bml0IHRlc3RpbmcgZWFzaWVyLlxuICAgIHRoaXMuI3JlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgIHN0eWxlRWxlbWVudCxcbiAgICAgICdkYXRhLXRlc3Qtc2VsZWN0b3InLFxuICAgICAgJ3NreS1sYXlvdXQtZG9jay1ib3R0b20tc3R5bGVzJyxcbiAgICApO1xuXG4gICAgdGhpcy4jcmVuZGVyZXIuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50LCB0ZXh0Tm9kZSk7XG4gICAgdGhpcy4jcmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuaGVhZCwgc3R5bGVFbGVtZW50KTtcblxuICAgIGlmICh0aGlzLiNzdHlsZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuI2Rlc3Ryb3lTdHlsZUVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNjdXJyZW50RG9ja0hlaWdodCA9IGRvY2tIZWlnaHQ7XG4gICAgdGhpcy4jc3R5bGVFbGVtZW50ID0gc3R5bGVFbGVtZW50O1xuICB9XG5cbiAgI2Rlc3Ryb3lTdHlsZUVsZW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuaGVhZCwgdGhpcy4jc3R5bGVFbGVtZW50KTtcbiAgfVxufVxuIl19","/**\n * @internal\n */\nexport function sortByStackOrder(a, b) {\n if (a.stackOrder > b.stackOrder) {\n return -1;\n }\n if (a.stackOrder < b.stackOrder) {\n return 1;\n }\n return 0;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1ieS1zdGFjay1vcmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9kb2NrL3NvcnQtYnktc3RhY2stb3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsQ0FBTSxFQUFFLENBQU07SUFDN0MsSUFBSSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELElBQUksQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEMsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRCeVN0YWNrT3JkZXIoYTogYW55LCBiOiBhbnkpOiBudW1iZXIge1xuICBpZiAoYS5zdGFja09yZGVyID4gYi5zdGFja09yZGVyKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgaWYgKGEuc3RhY2tPcmRlciA8IGIuc3RhY2tPcmRlcikge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59XG4iXX0=","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EnvironmentInjector, ViewChild, ViewContainerRef, inject, } from '@angular/core';\nimport { SkyDynamicComponentService } from '../dynamic-component/dynamic-component.service';\nimport { SkyDockDomAdapterService } from './dock-dom-adapter.service';\nimport { SkyDockLocation } from './dock-location';\nimport { sortByStackOrder } from './sort-by-stack-order';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyDockComponent {\n #itemRefs = [];\n #options;\n #changeDetector = inject(ChangeDetectorRef);\n #domAdapter = inject(SkyDockDomAdapterService);\n #dynamicComponentSvc = inject(SkyDynamicComponentService);\n #elementRef = inject(ElementRef);\n #environmentInjector = inject(EnvironmentInjector);\n insertComponent(component, config = {}) {\n /*istanbul ignore if: untestable*/\n if (!this.target) {\n throw Error('[SkyDockComponent] Could not insert the component because the target element could not be found.');\n }\n const componentRef = this.#dynamicComponentSvc.createComponent(component, {\n environmentInjector: this.#environmentInjector,\n providers: config.providers,\n viewContainerRef: this.target,\n });\n const stackOrder = config.stackOrder !== null && config.stackOrder !== undefined\n ? config.stackOrder\n : this.#getHighestStackOrder();\n this.#itemRefs.push({\n componentRef,\n stackOrder,\n });\n this.#sortItemsByStackOrder();\n this.#changeDetector.markForCheck();\n return {\n componentRef,\n stackOrder,\n };\n }\n removeItem(item) {\n /*istanbul ignore if: untestable*/\n if (!this.target) {\n throw Error('[SkyDockComponent] Could not remove the item because the target element could not be found.');\n }\n const viewRef = item.componentRef.hostView;\n this.target.remove(this.target.indexOf(viewRef));\n const found = this.#itemRefs.find((i) => i.componentRef.hostView === viewRef);\n if (found) {\n this.#itemRefs.splice(this.#itemRefs.indexOf(found), 1);\n }\n }\n setOptions(options) {\n this.#options = options;\n switch (this.#options?.location) {\n case SkyDockLocation.BeforeElement:\n this.#domAdapter.unbindDock(this.#elementRef);\n break;\n case SkyDockLocation.ElementBottom:\n this.#domAdapter.setSticky(this.#elementRef);\n break;\n case SkyDockLocation.BodyBottom:\n default:\n this.#domAdapter.watchDomChanges(this.#elementRef);\n break;\n }\n if (this.#options?.zIndex) {\n this.#domAdapter.setZIndex(this.#options.zIndex, this.#elementRef);\n }\n }\n #sortItemsByStackOrder() {\n if (this.target) {\n this.#itemRefs.sort(sortByStackOrder);\n // Reassign the correct index for each view.\n for (let i = 0, len = this.#itemRefs.length; i < len; i++) {\n const item = this.#itemRefs[i];\n this.target.move(item.componentRef.hostView, i);\n }\n }\n }\n #getHighestStackOrder() {\n if (this.#itemRefs.length === 0) {\n return 0;\n }\n return this.#itemRefs[0].stackOrder + 1;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyDockComponent, isStandalone: true, selector: \"sky-dock\", providers: [SkyDockDomAdapterService], viewQueries: [{ propertyName: \"target\", first: true, predicate: [\"target\"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: \"<ng-container #target />\\n\", styles: [\":host{display:flex;flex-direction:column;width:100%}:host:not(.sky-dock-unbound){position:fixed;left:var(--sky-viewport-left, 0);bottom:var(--sky-viewport-bottom, 0);right:var(--sky-viewport-right, 0);width:auto}:host.sky-dock-sticky{position:sticky}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDockComponent, decorators: [{\n type: Component,\n args: [{ standalone: true, selector: 'sky-dock', providers: [SkyDockDomAdapterService], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ng-container #target />\\n\", styles: [\":host{display:flex;flex-direction:column;width:100%}:host:not(.sky-dock-unbound){position:fixed;left:var(--sky-viewport-left, 0);bottom:var(--sky-viewport-bottom, 0);right:var(--sky-viewport-right, 0);width:auto}:host.sky-dock-sticky{position:sticky}\\n\"] }]\n }], propDecorators: { target: [{\n type: ViewChild,\n args: ['target', {\n read: ViewContainerRef,\n static: true,\n }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvZG9jay9kb2NrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9kb2NrL2RvY2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixtQkFBbUIsRUFFbkIsU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFNUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUV6RDs7R0FFRztBQVNILE1BQU0sT0FBTyxnQkFBZ0I7SUFPM0IsU0FBUyxHQUFvQyxFQUFFLENBQUM7SUFFaEQsUUFBUSxDQUE2QjtJQUU1QixlQUFlLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQy9DLG9CQUFvQixHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzFELFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFckQsZUFBZSxDQUNwQixTQUFrQixFQUNsQixTQUF1QyxFQUFF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QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUV0Qyw0Q0FBNEM7WUFDNUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDMUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQzs4R0FqSFUsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsdURBSGhCLENBQUMsd0JBQXdCLENBQUMsdUdBSzdCLGdCQUFnQiwyQ0NsQzFCLDRCQUNBOzsyRkQrQmEsZ0JBQWdCO2tCQVI1QixTQUFTO2lDQUNJLElBQUksWUFDTixVQUFVLGFBR1QsQ0FBQyx3QkFBd0IsQ0FBQyxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTs4QkFPeEMsTUFBTTtzQkFKWixTQUFTO3VCQUFDLFFBQVEsRUFBRTt3QkFDbkIsSUFBSSxFQUFFLGdCQUFnQjt3QkFDdEIsTUFBTSxFQUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgVHlwZSxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uL2R5bmFtaWMtY29tcG9uZW50L2R5bmFtaWMtY29tcG9uZW50LnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTa3lEb2NrRG9tQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL2RvY2stZG9tLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lEb2NrSW5zZXJ0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi9kb2NrLWluc2VydC1jb21wb25lbnQtY29uZmlnJztcbmltcG9ydCB7IFNreURvY2tJdGVtUmVmZXJlbmNlIH0gZnJvbSAnLi9kb2NrLWl0ZW0tcmVmZXJlbmNlJztcbmltcG9ydCB7IFNreURvY2tMb2NhdGlvbiB9IGZyb20gJy4vZG9jay1sb2NhdGlvbic7XG5pbXBvcnQgeyBTa3lEb2NrT3B0aW9ucyB9IGZyb20gJy4vZG9jay1vcHRpb25zJztcbmltcG9ydCB7IHNvcnRCeVN0YWNrT3JkZXIgfSBmcm9tICcuL3NvcnQtYnktc3RhY2stb3JkZXInO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdza3ktZG9jaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2NrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9jay5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTa3lEb2NrRG9tQWRhcHRlclNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RG9ja0NvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ3RhcmdldCcsIHtcbiAgICByZWFkOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIHRhcmdldDogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZDtcblxuICAjaXRlbVJlZnM6IFNreURvY2tJdGVtUmVmZXJlbmNlPHVua25vd24+W10gPSBbXTtcblxuICAjb3B0aW9uczogU2t5RG9ja09wdGlvbnMgfCB1bmRlZmluZWQ7XG5cbiAgcmVhZG9ubHkgI2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcmVhZG9ubHkgI2RvbUFkYXB0ZXIgPSBpbmplY3QoU2t5RG9ja0RvbUFkYXB0ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2R5bmFtaWNDb21wb25lbnRTdmMgPSBpbmplY3QoU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2UpO1xuICByZWFkb25seSAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgI2Vudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG5cbiAgcHVibGljIGluc2VydENvbXBvbmVudDxUPihcbiAgICBjb21wb25lbnQ6IFR5cGU8VD4sXG4gICAgY29uZmlnOiBTa3lEb2NrSW5zZXJ0Q29tcG9uZW50Q29uZmlnID0ge30sXG4gICk6IFNreURvY2tJdGVtUmVmZXJlbmNlPFQ+IHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBpZjogdW50ZXN0YWJsZSovXG4gICAgaWYgKCF0aGlzLnRhcmdldCkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICdbU2t5RG9ja0NvbXBvbmVudF0gQ291bGQgbm90IGluc2VydCB0aGUgY29tcG9uZW50IGJlY2F1c2UgdGhlIHRhcmdldCBlbGVtZW50IGNvdWxkIG5vdCBiZSBmb3VuZC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLiNkeW5hbWljQ29tcG9uZW50U3ZjLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHtcbiAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuI2Vudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IGNvbmZpZy5wcm92aWRlcnMsXG4gICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnRhcmdldCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0YWNrT3JkZXIgPVxuICAgICAgY29uZmlnLnN0YWNrT3JkZXIgIT09IG51bGwgJiYgY29uZmlnLnN0YWNrT3JkZXIgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGNvbmZpZy5zdGFja09yZGVyXG4gICAgICAgIDogdGhpcy4jZ2V0SGlnaGVzdFN0YWNrT3JkZXIoKTtcblxuICAgIHRoaXMuI2l0ZW1SZWZzLnB1c2goe1xuICAgICAgY29tcG9uZW50UmVmLFxuICAgICAgc3RhY2tPcmRlcixcbiAgICB9KTtcblxuICAgIHRoaXMuI3NvcnRJdGVtc0J5U3RhY2tPcmRlcigpO1xuXG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29tcG9uZW50UmVmLFxuICAgICAgc3RhY2tPcmRlcixcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUl0ZW0oaXRlbTogU2t5RG9ja0l0ZW1SZWZlcmVuY2U8YW55Pik6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGlmOiB1bnRlc3RhYmxlKi9cbiAgICBpZiAoIXRoaXMudGFyZ2V0KSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ1tTa3lEb2NrQ29tcG9uZW50XSBDb3VsZCBub3QgcmVtb3ZlIHRoZSBpdGVtIGJlY2F1c2UgdGhlIHRhcmdldCBlbGVtZW50IGNvdWxkIG5vdCBiZSBmb3VuZC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB2aWV3UmVmID0gaXRlbS5jb21wb25lbnRSZWYuaG9zdFZpZXc7XG4gICAgdGhpcy50YXJnZXQucmVtb3ZlKHRoaXMudGFyZ2V0LmluZGV4T2Yodmlld1JlZikpO1xuXG4gICAgY29uc3QgZm91bmQgPSB0aGlzLiNpdGVtUmVmcy5maW5kKFxuICAgICAgKGkpID0+IGkuY29tcG9uZW50UmVmLmhvc3RWaWV3ID09PSB2aWV3UmVmLFxuICAgICk7XG5cbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIHRoaXMuI2l0ZW1SZWZzLnNwbGljZSh0aGlzLiNpdGVtUmVmcy5pbmRleE9mKGZvdW5kKSwgMSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldE9wdGlvbnMob3B0aW9uczogU2t5RG9ja09wdGlvbnMgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLiNvcHRpb25zID0gb3B0aW9ucztcblxuICAgIHN3aXRjaCAodGhpcy4jb3B0aW9ucz8ubG9jYXRpb24pIHtcbiAgICAgIGNhc2UgU2t5RG9ja0xvY2F0aW9uLkJlZm9yZUVsZW1lbnQ6XG4gICAgICAgIHRoaXMuI2RvbUFkYXB0ZXIudW5iaW5kRG9jayh0aGlzLiNlbGVtZW50UmVmKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNreURvY2tMb2NhdGlvbi5FbGVtZW50Qm90dG9tOlxuICAgICAgICB0aGlzLiNkb21BZGFwdGVyLnNldFN0aWNreSh0aGlzLiNlbGVtZW50UmVmKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNreURvY2tMb2NhdGlvbi5Cb2R5Qm90dG9tOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy4jZG9tQWRhcHRlci53YXRjaERvbUNoYW5nZXModGhpcy4jZWxlbWVudFJlZik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICh0aGlzLiNvcHRpb25zPy56SW5kZXgpIHtcbiAgICAgIHRoaXMuI2RvbUFkYXB0ZXIuc2V0WkluZGV4KHRoaXMuI29wdGlvbnMuekluZGV4LCB0aGlzLiNlbGVtZW50UmVmKTtcbiAgICB9XG4gIH1cblxuICAjc29ydEl0ZW1zQnlTdGFja09yZGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgdGhpcy4jaXRlbVJlZnMuc29ydChzb3J0QnlTdGFja09yZGVyKTtcblxuICAgICAgLy8gUmVhc3NpZ24gdGhlIGNvcnJlY3QgaW5kZXggZm9yIGVhY2ggdmlldy5cbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLiNpdGVtUmVmcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy4jaXRlbVJlZnNbaV07XG4gICAgICAgIHRoaXMudGFyZ2V0Lm1vdmUoaXRlbS5jb21wb25lbnRSZWYuaG9zdFZpZXcsIGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNnZXRIaWdoZXN0U3RhY2tPcmRlcigpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLiNpdGVtUmVmcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiNpdGVtUmVmc1swXS5zdGFja09yZGVyICsgMTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAjdGFyZ2V0IC8+XG4iXX0=","var _a;\nimport { Injectable, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { SkyDynamicComponentLocation } from '../dynamic-component/dynamic-component-location';\nimport { SkyDynamicComponentService } from '../dynamic-component/dynamic-component.service';\nimport { SkyDockItem } from './dock-item';\nimport { SkyDockLocation } from './dock-location';\nimport { SkyDockComponent } from './dock.component';\nimport { sortByStackOrder } from './sort-by-stack-order';\nimport * as i0 from \"@angular/core\";\n/**\n * This service docks components to specific areas on the page.\n */\nexport class SkyDockService {\n static { this._items = []; }\n /**\n * Returns all docked items.\n */\n get items() {\n return _a._items;\n }\n #dynamicComponentSvc = inject(SkyDynamicComponentService);\n #subscription;\n #options;\n /**\n * Docks a component to the bottom of the page.\n * @param component The component to dock.\n * @param config Options that affect the docking action.\n */\n insertComponent(component, config) {\n this.#subscription ??= new Subscription();\n const dockRef = (_a.dockRef =\n _a.dockRef || this.#createDock());\n const itemRef = dockRef.instance.insertComponent(component, config);\n const item = new SkyDockItem(itemRef.componentRef.instance, itemRef.stackOrder);\n this.#subscription?.add(item.destroyed.subscribe(() => {\n dockRef.instance.removeItem(itemRef);\n _a._items.splice(_a._items.indexOf(item), 1);\n if (_a._items.length === 0) {\n this.#destroyDock();\n }\n }));\n _a._items.push(item);\n _a._items.sort(sortByStackOrder);\n return item;\n }\n /**\n * Sets options for the positioning and styling of the dock component. Since the dock service is a\n * singleton instance, these options will be applied to all components inserted into the dock. In\n * order to create a separate dock with different options, consumers should provide a different\n * instance of the dock service.\n * @param options The options for positioning and styling\n */\n setDockOptions(options) {\n this.#options = options;\n }\n #createDock() {\n let dockOptions;\n if (this.#options) {\n let dynamicLocation;\n switch (this.#options.location) {\n case SkyDockLocation.BeforeElement:\n dynamicLocation = SkyDynamicComponentLocation.BeforeElement;\n break;\n case SkyDockLocation.ElementBottom:\n dynamicLocation = SkyDynamicComponentLocation.ElementBottom;\n break;\n default:\n dynamicLocation = SkyDynamicComponentLocation.BodyTop;\n break;\n }\n dockOptions = {\n location: dynamicLocation,\n referenceEl: this.#options.referenceEl,\n };\n }\n const dockRef = this.#dynamicComponentSvc.createComponent(SkyDockComponent, dockOptions);\n dockRef.instance.setOptions(this.#options);\n return dockRef;\n }\n #destroyDock() {\n this.#subscription?.unsubscribe();\n this.#subscription = undefined;\n this.#dynamicComponentSvc.removeComponent(_a.dockRef);\n _a.dockRef = undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDockService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDockService, providedIn: 'root' }); }\n}\n_a = SkyDockService;\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDockService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2RvY2svZG9jay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWdCLFVBQVUsRUFBUSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUU5RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUc1RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFekQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sY0FBYzthQUVWLFdBQU0sR0FBdUIsRUFBRSxBQUF6QixDQUEwQjtJQUUvQzs7T0FFRztJQUNILElBQVcsS0FBSztRQUNkLE9BQU8sRUFBYyxDQUFDLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRVEsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDbkUsYUFBYSxDQUEyQjtJQUV4QyxRQUFRLENBQTZCO0lBRXJDOzs7O09BSUc7SUFDSSxlQUFlLENBQ3BCLFNBQWtCLEVBQ2xCLE1BQXFDO1FBRXJDLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQWMsQ0FBQyxPQUFPO1lBQ3JDLEVBQWMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFaEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBVyxDQUMxQixPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFDN0IsT0FBTyxDQUFDLFVBQVUsQ0FDbkIsQ0FBQztRQUVGLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsRUFBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckUsSUFBSSxFQUFjLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsRUFBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsRUFBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU3QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxjQUFjLENBQUMsT0FBdUI7UUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLFdBQW1ELENBQUM7UUFFeEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxlQUE0QyxDQUFDO1lBQ2pELFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsS0FBSyxlQUFlLENBQUMsYUFBYTtvQkFDaEMsZUFBZSxHQUFHLDJCQUEyQixDQUFDLGFBQWEsQ0FBQztvQkFDNUQsTUFBTTtnQkFDUixLQUFLLGVBQWUsQ0FBQyxhQUFhO29CQUNoQyxlQUFlLEdBQUcsMkJBQTJCLENBQUMsYUFBYSxDQUFDO29CQUM1RCxNQUFNO2dCQUNSO29CQUNFLGVBQWUsR0FBRywyQkFBMkIsQ0FBQyxPQUFPLENBQUM7b0JBQ3RELE1BQU07WUFDVixDQUFDO1lBRUQsV0FBVyxHQUFHO2dCQUNaLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO2FBQ3ZDLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FDdkQsZ0JBQWdCLEVBQ2hCLFdBQVcsQ0FDWixDQUFDO1FBRUYsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLEVBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRSxFQUFjLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztJQUNyQyxDQUFDOzhHQXBHVSxjQUFjO2tIQUFkLGNBQWMsY0FGYixNQUFNOzs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIEluamVjdGFibGUsIFR5cGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RHluYW1pY0NvbXBvbmVudExvY2F0aW9uIH0gZnJvbSAnLi4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQtbG9jYXRpb24nO1xuaW1wb3J0IHsgU2t5RHluYW1pY0NvbXBvbmVudE9wdGlvbnMgfSBmcm9tICcuLi9keW5hbWljLWNvbXBvbmVudC9keW5hbWljLWNvbXBvbmVudC1vcHRpb25zJztcbmltcG9ydCB7IFNreUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vZHluYW1pYy1jb21wb25lbnQvZHluYW1pYy1jb21wb25lbnQuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreURvY2tJbnNlcnRDb21wb25lbnRDb25maWcgfSBmcm9tICcuL2RvY2staW5zZXJ0LWNvbXBvbmVudC1jb25maWcnO1xuaW1wb3J0IHsgU2t5RG9ja0l0ZW0gfSBmcm9tICcuL2RvY2staXRlbSc7XG5pbXBvcnQgeyBTa3lEb2NrTG9jYXRpb24gfSBmcm9tICcuL2RvY2stbG9jYXRpb24nO1xuaW1wb3J0IHsgU2t5RG9ja09wdGlvbnMgfSBmcm9tICcuL2RvY2stb3B0aW9ucyc7XG5pbXBvcnQgeyBTa3lEb2NrQ29tcG9uZW50IH0gZnJvbSAnLi9kb2NrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBzb3J0QnlTdGFja09yZGVyIH0gZnJvbSAnLi9zb3J0LWJ5LXN0YWNrLW9yZGVyJztcblxuLyoqXG4gKiBUaGlzIHNlcnZpY2UgZG9ja3MgY29tcG9uZW50cyB0byBzcGVjaWZpYyBhcmVhcyBvbiB0aGUgcGFnZS5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreURvY2tTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgZG9ja1JlZjogQ29tcG9uZW50UmVmPFNreURvY2tDb21wb25lbnQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHN0YXRpYyBfaXRlbXM6IFNreURvY2tJdGVtPGFueT5bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBkb2NrZWQgaXRlbXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGl0ZW1zKCk6IFNreURvY2tJdGVtPGFueT5bXSB7XG4gICAgcmV0dXJuIFNreURvY2tTZXJ2aWNlLl9pdGVtcztcbiAgfVxuXG4gIHJlYWRvbmx5ICNkeW5hbWljQ29tcG9uZW50U3ZjID0gaW5qZWN0KFNreUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlKTtcbiAgI3N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICNvcHRpb25zOiBTa3lEb2NrT3B0aW9ucyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRG9ja3MgYSBjb21wb25lbnQgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZS5cbiAgICogQHBhcmFtIGNvbXBvbmVudCBUaGUgY29tcG9uZW50IHRvIGRvY2suXG4gICAqIEBwYXJhbSBjb25maWcgT3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgZG9ja2luZyBhY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgaW5zZXJ0Q29tcG9uZW50PFQ+KFxuICAgIGNvbXBvbmVudDogVHlwZTxUPixcbiAgICBjb25maWc/OiBTa3lEb2NrSW5zZXJ0Q29tcG9uZW50Q29uZmlnLFxuICApOiBTa3lEb2NrSXRlbTxUPiB7XG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uID8/PSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgY29uc3QgZG9ja1JlZiA9IChTa3lEb2NrU2VydmljZS5kb2NrUmVmID1cbiAgICAgIFNreURvY2tTZXJ2aWNlLmRvY2tSZWYgfHwgdGhpcy4jY3JlYXRlRG9jaygpKTtcblxuICAgIGNvbnN0IGl0ZW1SZWYgPSBkb2NrUmVmLmluc3RhbmNlLmluc2VydENvbXBvbmVudChjb21wb25lbnQsIGNvbmZpZyk7XG4gICAgY29uc3QgaXRlbSA9IG5ldyBTa3lEb2NrSXRlbShcbiAgICAgIGl0ZW1SZWYuY29tcG9uZW50UmVmLmluc3RhbmNlLFxuICAgICAgaXRlbVJlZi5zdGFja09yZGVyLFxuICAgICk7XG5cbiAgICB0aGlzLiNzdWJzY3JpcHRpb24/LmFkZChcbiAgICAgIGl0ZW0uZGVzdHJveWVkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGRvY2tSZWYuaW5zdGFuY2UucmVtb3ZlSXRlbShpdGVtUmVmKTtcbiAgICAgICAgU2t5RG9ja1NlcnZpY2UuX2l0ZW1zLnNwbGljZShTa3lEb2NrU2VydmljZS5faXRlbXMuaW5kZXhPZihpdGVtKSwgMSk7XG4gICAgICAgIGlmIChTa3lEb2NrU2VydmljZS5faXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy4jZGVzdHJveURvY2soKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcblxuICAgIFNreURvY2tTZXJ2aWNlLl9pdGVtcy5wdXNoKGl0ZW0pO1xuICAgIFNreURvY2tTZXJ2aWNlLl9pdGVtcy5zb3J0KHNvcnRCeVN0YWNrT3JkZXIpO1xuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBvcHRpb25zIGZvciB0aGUgcG9zaXRpb25pbmcgYW5kIHN0eWxpbmcgb2YgdGhlIGRvY2sgY29tcG9uZW50LiBTaW5jZSB0aGUgZG9jayBzZXJ2aWNlIGlzIGFcbiAgICogc2luZ2xldG9uIGluc3RhbmNlLCB0aGVzZSBvcHRpb25zIHdpbGwgYmUgYXBwbGllZCB0byBhbGwgY29tcG9uZW50cyBpbnNlcnRlZCBpbnRvIHRoZSBkb2NrLiBJblxuICAgKiBvcmRlciB0byBjcmVhdGUgYSBzZXBhcmF0ZSBkb2NrIHdpdGggZGlmZmVyZW50IG9wdGlvbnMsIGNvbnN1bWVycyBzaG91bGQgcHJvdmlkZSBhIGRpZmZlcmVudFxuICAgKiBpbnN0YW5jZSBvZiB0aGUgZG9jayBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgcG9zaXRpb25pbmcgYW5kIHN0eWxpbmdcbiAgICovXG4gIHB1YmxpYyBzZXREb2NrT3B0aW9ucyhvcHRpb25zOiBTa3lEb2NrT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuI29wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgI2NyZWF0ZURvY2soKTogQ29tcG9uZW50UmVmPFNreURvY2tDb21wb25lbnQ+IHtcbiAgICBsZXQgZG9ja09wdGlvbnM6IFNreUR5bmFtaWNDb21wb25lbnRPcHRpb25zIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHRoaXMuI29wdGlvbnMpIHtcbiAgICAgIGxldCBkeW5hbWljTG9jYXRpb246IFNreUR5bmFtaWNDb21wb25lbnRMb2NhdGlvbjtcbiAgICAgIHN3aXRjaCAodGhpcy4jb3B0aW9ucy5sb2NhdGlvbikge1xuICAgICAgICBjYXNlIFNreURvY2tMb2NhdGlvbi5CZWZvcmVFbGVtZW50OlxuICAgICAgICAgIGR5bmFtaWNMb2NhdGlvbiA9IFNreUR5bmFtaWNDb21wb25lbnRMb2NhdGlvbi5CZWZvcmVFbGVtZW50O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFNreURvY2tMb2NhdGlvbi5FbGVtZW50Qm90dG9tOlxuICAgICAgICAgIGR5bmFtaWNMb2NhdGlvbiA9IFNreUR5bmFtaWNDb21wb25lbnRMb2NhdGlvbi5FbGVtZW50Qm90dG9tO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGR5bmFtaWNMb2NhdGlvbiA9IFNreUR5bmFtaWNDb21wb25lbnRMb2NhdGlvbi5Cb2R5VG9wO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBkb2NrT3B0aW9ucyA9IHtcbiAgICAgICAgbG9jYXRpb246IGR5bmFtaWNMb2NhdGlvbixcbiAgICAgICAgcmVmZXJlbmNlRWw6IHRoaXMuI29wdGlvbnMucmVmZXJlbmNlRWwsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGRvY2tSZWYgPSB0aGlzLiNkeW5hbWljQ29tcG9uZW50U3ZjLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIFNreURvY2tDb21wb25lbnQsXG4gICAgICBkb2NrT3B0aW9ucyxcbiAgICApO1xuXG4gICAgZG9ja1JlZi5pbnN0YW5jZS5zZXRPcHRpb25zKHRoaXMuI29wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGRvY2tSZWY7XG4gIH1cblxuICAjZGVzdHJveURvY2soKTogdm9pZCB7XG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuI3N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLiNkeW5hbWljQ29tcG9uZW50U3ZjLnJlbW92ZUNvbXBvbmVudChTa3lEb2NrU2VydmljZS5kb2NrUmVmKTtcbiAgICBTa3lEb2NrU2VydmljZS5kb2NrUmVmID0gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Provides services required to create dynamic components on the page.\n * @deprecated The `SkyDynamicComponentService` no longer needs the `SkyDynamicComponentModule`.\n * The `SkyDynamicComponentModule` can be removed from your project.\n */\nexport class SkyDynamicComponentModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDynamicComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDynamicComponentModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDynamicComponentModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDynamicComponentModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2R5bmFtaWMtY29tcG9uZW50L2R5bmFtaWMtY29tcG9uZW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV6Qzs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLHlCQUF5Qjs4R0FBekIseUJBQXlCOytHQUF6Qix5QkFBeUI7K0dBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsUUFBUTttQkFBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBQcm92aWRlcyBzZXJ2aWNlcyByZXF1aXJlZCB0byBjcmVhdGUgZHluYW1pYyBjb21wb25lbnRzIG9uIHRoZSBwYWdlLlxuICogQGRlcHJlY2F0ZWQgVGhlIGBTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZWAgbm8gbG9uZ2VyIG5lZWRzIHRoZSBgU2t5RHluYW1pY0NvbXBvbmVudE1vZHVsZWAuXG4gKiBUaGUgYFNreUR5bmFtaWNDb21wb25lbnRNb2R1bGVgIGNhbiBiZSByZW1vdmVkIGZyb20geW91ciBwcm9qZWN0LlxuICovXG5ATmdNb2R1bGUoe30pXG5leHBvcnQgY2xhc3MgU2t5RHluYW1pY0NvbXBvbmVudE1vZHVsZSB7fVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Wraps the FileReader API so it can be mocked in tests.\n * @internal\n */\nexport class SkyFileReaderService {\n async readAsDataURL(file) {\n return await new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener('load', (event) => {\n resolve(event.target?.result);\n });\n reader.addEventListener('error', () => {\n reject(file);\n });\n reader.addEventListener('abort', () => {\n reject(file);\n });\n reader.readAsDataURL(file);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFileReaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFileReaderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFileReaderService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1yZWFkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9maWxlLXJlYWRlci9maWxlLXJlYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOzs7R0FHRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFDeEIsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFVO1FBQ25DLE9BQU8sTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBRWhDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDeEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBZ0IsQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBbkJVLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzJGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogV3JhcHMgdGhlIEZpbGVSZWFkZXIgQVBJIHNvIGl0IGNhbiBiZSBtb2NrZWQgaW4gdGVzdHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreUZpbGVSZWFkZXJTZXJ2aWNlIHtcbiAgcHVibGljIGFzeW5jIHJlYWRBc0RhdGFVUkwoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIHJlc29sdmUoZXZlbnQudGFyZ2V0Py5yZXN1bHQgYXMgc3RyaW5nKTtcbiAgICAgIH0pO1xuXG4gICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoKSA9PiB7XG4gICAgICAgIHJlamVjdChmaWxlKTtcbiAgICAgIH0pO1xuXG4gICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCAoKSA9PiB7XG4gICAgICAgIHJlamVjdChmaWxlKTtcbiAgICAgIH0pO1xuXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICB9KTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SkyAppFormat {\n formatText(format, ...args) {\n return String(format).replace(/\\{(\\d+)\\}/g, function (match, capture) {\n return args[parseInt(capture, 10)];\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppFormat, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppFormat, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppFormat, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWZvcm1hdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9mb3JtYXQvYXBwLWZvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sWUFBWTtJQUNoQixVQUFVLENBQUMsTUFBYyxFQUFFLEdBQUcsSUFBVztRQUM5QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQzNCLFlBQVksRUFDWixVQUFVLEtBQUssRUFBRSxPQUFPO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7OEdBUlUsWUFBWTtrSEFBWixZQUFZLGNBRlgsTUFBTTs7MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBcHBGb3JtYXQge1xuICBwdWJsaWMgZm9ybWF0VGV4dChmb3JtYXQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcoZm9ybWF0KS5yZXBsYWNlKFxuICAgICAgL1xceyhcXGQrKVxcfS9nLFxuICAgICAgZnVuY3Rpb24gKG1hdGNoLCBjYXB0dXJlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbcGFyc2VJbnQoY2FwdHVyZSwgMTApXTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxufVxuIl19","import { InjectionToken } from '@angular/core';\n/**\n * Injection token for specifying and retrieving global help options.\n */\nexport const SKY_HELP_GLOBAL_OPTIONS = new InjectionToken('SkyHelpGlobalOptions');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1nbG9iYWwtb3B0aW9ucy10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9oZWxwL2hlbHAtZ2xvYmFsLW9wdGlvbnMtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUN2RCxzQkFBc0IsQ0FDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUhlbHBHbG9iYWxPcHRpb25zIH0gZnJvbSAnLi9oZWxwLWdsb2JhbC1vcHRpb25zJztcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gZm9yIHNwZWNpZnlpbmcgYW5kIHJldHJpZXZpbmcgZ2xvYmFsIGhlbHAgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IFNLWV9IRUxQX0dMT0JBTF9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPFNreUhlbHBHbG9iYWxPcHRpb25zPihcbiAgJ1NreUhlbHBHbG9iYWxPcHRpb25zJyxcbik7XG4iXX0=","import { Injectable } from '@angular/core';\nimport { of } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * Provides methods for opening and updating a globally accessible help dialog.\n */\nexport class SkyHelpService {\n /**\n * Emits when the help widget ready state changes.\n */\n get widgetReadyStateChange() {\n return of(false);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyHelpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyHelpService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyHelpService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2hlbHAvaGVscC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLdEM7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLGNBQWM7SUFDbEM7O09BRUc7SUFDSCxJQUFXLHNCQUFzQjtRQUMvQixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDOzhHQU5tQixjQUFjO2tIQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUhlbHBPcGVuQXJncyB9IGZyb20gJy4vaGVscC1vcGVuLWFyZ3MnO1xuaW1wb3J0IHsgU2t5SGVscFVwZGF0ZUFyZ3MgfSBmcm9tICcuL2hlbHAtdXBkYXRlLWFyZ3MnO1xuXG4vKipcbiAqIFByb3ZpZGVzIG1ldGhvZHMgZm9yIG9wZW5pbmcgYW5kIHVwZGF0aW5nIGEgZ2xvYmFsbHkgYWNjZXNzaWJsZSBoZWxwIGRpYWxvZy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNreUhlbHBTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGhlbHAgd2lkZ2V0IHJlYWR5IHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHdpZGdldFJlYWR5U3RhdGVDaGFuZ2UoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhIGdsb2JhbGx5IGFjY2Vzc2libGUgaGVscCBkaWFsb2cuXG4gICAqIEBwYXJhbSBhcmdzIFRoZSBvcHRpb25zIGZvciBvcGVuaW5nIHRoZSBoZWxwIGRpYWxvZy5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBvcGVuSGVscChhcmdzPzogU2t5SGVscE9wZW5BcmdzKTogdm9pZDtcblxuICAvKipcbiAgICogVXBkYXRlcyBhIGdsb2JhbGx5IGFjY2Vzc2libGUgaGVscCBkaWFsb2cuXG4gICAqIEBwYXJhbSBhcmdzIFRoZSBvcHRpb25zIGZvciB1cGRhdGluZyB0aGUgaGVscCBkaWFsb2cuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdXBkYXRlSGVscChhcmdzOiBTa3lIZWxwVXBkYXRlQXJncyk6IHZvaWQ7XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nlet idIndex = 0;\n/**\n * Generates unique IDs to be used with HTML elements.\n */\nexport class SkyIdService {\n generateId() {\n idIndex++;\n // Include timestamp and an incrementing index to guarantee unique IDs both during the application\n // lifecycle as well as across sessions, since browsers will try to apply autocomplete options to\n // elements with the same ID across sessions.\n return `sky-id-gen__${new Date().getTime()}__${idIndex}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyIdService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyIdService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyIdService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9pZC9pZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQUVoQjs7R0FFRztBQUlILE1BQU0sT0FBTyxZQUFZO0lBQ2hCLFVBQVU7UUFDZixPQUFPLEVBQUUsQ0FBQztRQUVWLGtHQUFrRztRQUNsRyxpR0FBaUc7UUFDakcsNkNBQTZDO1FBQzdDLE9BQU8sZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDO0lBQzNELENBQUM7OEdBUlUsWUFBWTtrSEFBWixZQUFZLGNBRlgsTUFBTTs7MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmxldCBpZEluZGV4ID0gMDtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgdW5pcXVlIElEcyB0byBiZSB1c2VkIHdpdGggSFRNTCBlbGVtZW50cy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreUlkU2VydmljZSB7XG4gIHB1YmxpYyBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XG4gICAgaWRJbmRleCsrO1xuXG4gICAgLy8gSW5jbHVkZSB0aW1lc3RhbXAgYW5kIGFuIGluY3JlbWVudGluZyBpbmRleCB0byBndWFyYW50ZWUgdW5pcXVlIElEcyBib3RoIGR1cmluZyB0aGUgYXBwbGljYXRpb25cbiAgICAvLyBsaWZlY3ljbGUgYXMgd2VsbCBhcyBhY3Jvc3Mgc2Vzc2lvbnMsIHNpbmNlIGJyb3dzZXJzIHdpbGwgdHJ5IHRvIGFwcGx5IGF1dG9jb21wbGV0ZSBvcHRpb25zIHRvXG4gICAgLy8gZWxlbWVudHMgd2l0aCB0aGUgc2FtZSBJRCBhY3Jvc3Mgc2Vzc2lvbnMuXG4gICAgcmV0dXJuIGBza3ktaWQtZ2VuX18ke25ldyBEYXRlKCkuZ2V0VGltZSgpfV9fJHtpZEluZGV4fWA7XG4gIH1cbn1cbiJdfQ==","import { Directive } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./id.service\";\n/**\n * Sets the element's `id` attribute to a unique ID. To reference this unique ID on other elements,\n * such as in a `label` element's `for` attribute, assign this directive to a template reference\n * variable, then use its `id` property.\n */\nexport class SkyIdDirective {\n get id() {\n return this.#_id;\n }\n #_id;\n constructor(elRef, renderer, idSvc) {\n // Generate and apply the ID before the template is rendered\n // to avoid a changed-after-checked error.\n const id = idSvc.generateId();\n renderer.setAttribute(elRef.nativeElement, 'id', id);\n this.#_id = id;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyIdDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.SkyIdService }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyIdDirective, isStandalone: false, selector: \"[skyId]\", exportAs: [\"skyId\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyIdDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[skyId]',\n exportAs: 'skyId',\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.SkyIdService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2lkL2lkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixNQUFNLGVBQWUsQ0FBQzs7O0FBSWpFOzs7O0dBSUc7QUFNSCxNQUFNLE9BQU8sY0FBYztJQUN6QixJQUFXLEVBQUU7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksQ0FBUztJQUViLFlBQVksS0FBaUIsRUFBRSxRQUFtQixFQUFFLEtBQW1CO1FBQ3JFLDREQUE0RDtRQUM1RCwwQ0FBMEM7UUFDMUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTlCLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDakIsQ0FBQzs4R0FmVSxjQUFjO2tHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBTDFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFFBQVEsRUFBRSxPQUFPO29CQUNqQixVQUFVLEVBQUUsS0FBSztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lJZFNlcnZpY2UgfSBmcm9tICcuL2lkLnNlcnZpY2UnO1xuXG4vKipcbiAqIFNldHMgdGhlIGVsZW1lbnQncyBgaWRgIGF0dHJpYnV0ZSB0byBhIHVuaXF1ZSBJRC4gVG8gcmVmZXJlbmNlIHRoaXMgdW5pcXVlIElEIG9uIG90aGVyIGVsZW1lbnRzLFxuICogc3VjaCBhcyBpbiBhIGBsYWJlbGAgZWxlbWVudCdzIGBmb3JgIGF0dHJpYnV0ZSwgYXNzaWduIHRoaXMgZGlyZWN0aXZlIHRvIGEgdGVtcGxhdGUgcmVmZXJlbmNlXG4gKiB2YXJpYWJsZSwgdGhlbiB1c2UgaXRzIGBpZGAgcHJvcGVydHkuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lJZF0nLFxuICBleHBvcnRBczogJ3NreUlkJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreUlkRGlyZWN0aXZlIHtcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfaWQ7XG4gIH1cblxuICAjX2lkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZWxSZWY6IEVsZW1lbnRSZWYsIHJlbmRlcmVyOiBSZW5kZXJlcjIsIGlkU3ZjOiBTa3lJZFNlcnZpY2UpIHtcbiAgICAvLyBHZW5lcmF0ZSBhbmQgYXBwbHkgdGhlIElEIGJlZm9yZSB0aGUgdGVtcGxhdGUgaXMgcmVuZGVyZWRcbiAgICAvLyB0byBhdm9pZCBhIGNoYW5nZWQtYWZ0ZXItY2hlY2tlZCBlcnJvci5cbiAgICBjb25zdCBpZCA9IGlkU3ZjLmdlbmVyYXRlSWQoKTtcblxuICAgIHJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbFJlZi5uYXRpdmVFbGVtZW50LCAnaWQnLCBpZCk7XG5cbiAgICB0aGlzLiNfaWQgPSBpZDtcbiAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { SkyIdDirective } from './id.directive';\nimport * as i0 from \"@angular/core\";\nexport class SkyIdModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyIdModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyIdModule, declarations: [SkyIdDirective], exports: [SkyIdDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyIdModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyIdModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyIdDirective],\n exports: [SkyIdDirective],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2lkL2lkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFNaEQsTUFBTSxPQUFPLFdBQVc7OEdBQVgsV0FBVzsrR0FBWCxXQUFXLGlCQUhQLGNBQWMsYUFDbkIsY0FBYzsrR0FFYixXQUFXOzsyRkFBWCxXQUFXO2tCQUp2QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUlkRGlyZWN0aXZlIH0gZnJvbSAnLi9pZC5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lJZERpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtTa3lJZERpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUlkTW9kdWxlIHt9XG4iXX0=","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyLayoutHostService {\n get hostLayoutForChild() {\n return this.#hostLayoutForChildObs;\n }\n #hostLayoutForChild = new Subject();\n #hostLayoutForChildObs = this.#hostLayoutForChild.asObservable();\n setHostLayoutForChild(layout) {\n this.#hostLayoutForChild.next(layout);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLayoutHostService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLayoutHostService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLayoutHostService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWhvc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9sYXlvdXQtaG9zdC9sYXlvdXQtaG9zdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxtQkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBNkIsQ0FBQztJQUMvRCxzQkFBc0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFMUQscUJBQXFCLENBQUMsTUFBaUM7UUFDNUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQVZVLG9CQUFvQjtrSEFBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUxheW91dEhvc3RGb3JDaGlsZEFyZ3MgfSBmcm9tICcuL2xheW91dC1ob3N0LWZvci1jaGlsZC1hcmdzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreUxheW91dEhvc3RTZXJ2aWNlIHtcbiAgcHVibGljIGdldCBob3N0TGF5b3V0Rm9yQ2hpbGQoKTogT2JzZXJ2YWJsZTxTa3lMYXlvdXRIb3N0Rm9yQ2hpbGRBcmdzPiB7XG4gICAgcmV0dXJuIHRoaXMuI2hvc3RMYXlvdXRGb3JDaGlsZE9icztcbiAgfVxuXG4gICNob3N0TGF5b3V0Rm9yQ2hpbGQgPSBuZXcgU3ViamVjdDxTa3lMYXlvdXRIb3N0Rm9yQ2hpbGRBcmdzPigpO1xuICAjaG9zdExheW91dEZvckNoaWxkT2JzID0gdGhpcy4jaG9zdExheW91dEZvckNoaWxkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHB1YmxpYyBzZXRIb3N0TGF5b3V0Rm9yQ2hpbGQobGF5b3V0OiBTa3lMYXlvdXRIb3N0Rm9yQ2hpbGRBcmdzKTogdm9pZCB7XG4gICAgdGhpcy4jaG9zdExheW91dEZvckNoaWxkLm5leHQobGF5b3V0KTtcbiAgfVxufVxuIl19","import { Directive, ElementRef, RendererFactory2, effect, inject, input, } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { SkyLayoutHostService } from './layout-host.service';\nimport * as i0 from \"@angular/core\";\nconst LAYOUT_FOR_CHILD_CLASS_PREFIX = 'sky-layout-host-for-child-';\nconst LAYOUT_CLASS_PREFIX = 'sky-layout-host-';\n/**\n * @internal\n */\nexport class SkyLayoutHostDirective {\n #elementRef;\n #layoutForChild;\n #renderer;\n constructor() {\n this.#elementRef = inject(ElementRef);\n this.#layoutForChild = toSignal(inject(SkyLayoutHostService).hostLayoutForChild);\n this.#renderer = inject(RendererFactory2).createRenderer(null, null);\n this.layout = input();\n effect(() => {\n const cssClass = [`${LAYOUT_CLASS_PREFIX}${this.layout() ?? 'none'}`];\n const layoutForChild = this.#layoutForChild()?.layout;\n if (layoutForChild) {\n cssClass.push(`${LAYOUT_FOR_CHILD_CLASS_PREFIX}${layoutForChild}`);\n }\n const classList = this.#elementRef.nativeElement.classList.values();\n for (const className of classList) {\n if (className.startsWith(LAYOUT_CLASS_PREFIX) &&\n !cssClass.includes(className)) {\n this.#renderer.removeClass(this.#elementRef.nativeElement, className);\n }\n }\n for (const className of cssClass) {\n this.#renderer.addClass(this.#elementRef.nativeElement, className);\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLayoutHostDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.5\", type: SkyLayoutHostDirective, isStandalone: true, selector: \"[skyLayoutHost]\", inputs: { layout: { classPropertyName: \"layout\", publicName: \"layout\", isSignal: true, isRequired: false, transformFunction: null } }, providers: [SkyLayoutHostService], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLayoutHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[skyLayoutHost]',\n standalone: true,\n providers: [SkyLayoutHostService],\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWhvc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2xheW91dC1ob3N0L2xheW91dC1ob3N0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUU3RCxNQUFNLDZCQUE2QixHQUFHLDRCQUE0QixDQUFDO0FBQ25FLE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQUM7QUFFL0M7O0dBRUc7QUFNSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ3hCLFdBQVcsQ0FBK0M7SUFDMUQsZUFBZSxDQUV0QjtJQUNPLFNBQVMsQ0FBdUQ7SUFJekU7UUFSUyxnQkFBVyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDMUQsb0JBQWUsR0FBRyxRQUFRLENBQ2pDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLGtCQUFrQixDQUNoRCxDQUFDO1FBQ08sY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFekQsV0FBTSxHQUFHLEtBQUssRUFBSyxDQUFDO1FBR2xDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDdEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sQ0FBQztZQUN0RCxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsNkJBQTZCLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUNyRSxDQUFDO1lBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BFLEtBQUssTUFBTSxTQUFTLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2xDLElBQ0UsU0FBUyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDekMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUM3QixDQUFDO29CQUNELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUN4RSxDQUFDO1lBQ0gsQ0FBQztZQUNELEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBN0JVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHFNQUZ0QixDQUFDLG9CQUFvQixDQUFDOzsyRkFFdEIsc0JBQXNCO2tCQUxsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuaW1wb3J0IHsgU2t5TGF5b3V0SG9zdFNlcnZpY2UgfSBmcm9tICcuL2xheW91dC1ob3N0LnNlcnZpY2UnO1xuXG5jb25zdCBMQVlPVVRfRk9SX0NISUxEX0NMQVNTX1BSRUZJWCA9ICdza3ktbGF5b3V0LWhvc3QtZm9yLWNoaWxkLSc7XG5jb25zdCBMQVlPVVRfQ0xBU1NfUFJFRklYID0gJ3NreS1sYXlvdXQtaG9zdC0nO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5TGF5b3V0SG9zdF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtTa3lMYXlvdXRIb3N0U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUxheW91dEhvc3REaXJlY3RpdmU8VCA9ICdub25lJyB8ICdmaXQnPiB7XG4gIHJlYWRvbmx5ICNlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgI2xheW91dEZvckNoaWxkID0gdG9TaWduYWwoXG4gICAgaW5qZWN0KFNreUxheW91dEhvc3RTZXJ2aWNlKS5ob3N0TGF5b3V0Rm9yQ2hpbGQsXG4gICk7XG4gIHJlYWRvbmx5ICNyZW5kZXJlciA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0ID0gaW5wdXQ8VD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgY3NzQ2xhc3MgPSBbYCR7TEFZT1VUX0NMQVNTX1BSRUZJWH0ke3RoaXMubGF5b3V0KCkgPz8gJ25vbmUnfWBdO1xuICAgICAgY29uc3QgbGF5b3V0Rm9yQ2hpbGQgPSB0aGlzLiNsYXlvdXRGb3JDaGlsZCgpPy5sYXlvdXQ7XG4gICAgICBpZiAobGF5b3V0Rm9yQ2hpbGQpIHtcbiAgICAgICAgY3NzQ2xhc3MucHVzaChgJHtMQVlPVVRfRk9SX0NISUxEX0NMQVNTX1BSRUZJWH0ke2xheW91dEZvckNoaWxkfWApO1xuICAgICAgfVxuICAgICAgY29uc3QgY2xhc3NMaXN0ID0gdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC52YWx1ZXMoKTtcbiAgICAgIGZvciAoY29uc3QgY2xhc3NOYW1lIG9mIGNsYXNzTGlzdCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY2xhc3NOYW1lLnN0YXJ0c1dpdGgoTEFZT1VUX0NMQVNTX1BSRUZJWCkgJiZcbiAgICAgICAgICAhY3NzQ2xhc3MuaW5jbHVkZXMoY2xhc3NOYW1lKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLiNyZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgY2xhc3NOYW1lIG9mIGNzc0NsYXNzKSB7XG4gICAgICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19","import { DOCUMENT, Injectable, NgZone, inject } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { SkyIdService } from '../id/id.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Allows for announcing messages to screen reader users through the use of a common `aria-live` element.\n * @internal\n */\nexport class SkyLiveAnnouncerService {\n #announcerElement;\n #document;\n #idService;\n #durationTimeout;\n #ngZone;\n constructor() {\n this.announcerElementChanged = new ReplaySubject(1);\n this.#document = inject(DOCUMENT);\n this.#idService = inject(SkyIdService);\n this.#ngZone = inject(NgZone);\n this.#announcerElement = this.#createLiveElement();\n this.announcerElementChanged.next(this.#announcerElement);\n }\n /**\n * Announces a message to screen readers.\n * @param message Message to be announced to the screen reader.\n * @param args Options for the announcement of the message.\n */\n announce(message, args) {\n /* safety-check */\n /* istanbul ignore if */\n if (!this.#announcerElement) {\n this.#announcerElement = this.#createLiveElement();\n this.announcerElementChanged.next(this.#announcerElement);\n }\n const politeness = args?.politeness ?? 'polite';\n this.#announcerElement.setAttribute('aria-live', politeness);\n this.clear();\n clearTimeout(this.#durationTimeout);\n this.#announcerElement.textContent = message;\n this.#ngZone.runOutsideAngular(() => {\n this.#durationTimeout = setTimeout(() => this.clear(), args?.duration ?? this.#calculateDefaultDurationFromString(message));\n });\n }\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n clear() {\n if (this.#announcerElement) {\n this.#announcerElement.textContent = '';\n }\n }\n /**\n * @internal\n */\n ngOnDestroy() {\n this.#announcerElement?.remove();\n this.#announcerElement = undefined;\n this.announcerElementChanged.next(undefined);\n clearTimeout(this.#durationTimeout);\n }\n #calculateDefaultDurationFromString(message) {\n // Research suggests normal WPM is 110 for english. Lowering here to be conservative.\n const baseWordsPerMinute = 80;\n const minuteInMilliseconds = 60000;\n const numberOfWords = message.split(' ').length;\n const baseTime = (numberOfWords / baseWordsPerMinute) * minuteInMilliseconds;\n // Add 50% to time to account for exceptionally slow screen reader settings and/or speech settings that leave long pauses between words.\n return baseTime * 1.5;\n }\n #createLiveElement() {\n const elementClass = 'sky-live-announcer-element';\n const previousElements = Array.from(this.#document.getElementsByClassName(elementClass));\n const liveEl = this.#document.createElement('div');\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (const previousElement of previousElements) {\n previousElement.remove();\n }\n liveEl.classList.add(elementClass);\n liveEl.classList.add('sky-screen-reader-only');\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n liveEl.id = this.#idService.generateId();\n this.#document.body.appendChild(liveEl);\n return liveEl;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLiveAnnouncerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLiveAnnouncerService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLiveAnnouncerService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1hbm5vdW5jZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9saXZlLWFubm91bmNlci9saXZlLWFubm91bmNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBSWhEOzs7R0FHRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFLbEMsaUJBQWlCLENBQTBCO0lBQzNDLFNBQVMsQ0FBb0I7SUFDN0IsVUFBVSxDQUF3QjtJQUNsQyxnQkFBZ0IsQ0FBcUI7SUFDckMsT0FBTyxDQUFrQjtJQUV6QjtRQVZPLDRCQUF1QixHQUFHLElBQUksYUFBYSxDQUNoRCxDQUFDLENBQ0YsQ0FBQztRQUdGLGNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsZUFBVSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVsQyxZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBR3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLE9BQWUsRUFBRSxJQUEyQjtRQUMxRCxrQkFBa0I7UUFDbEIsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FB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LFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXhDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OEdBcEdVLHVCQUF1QjtrSEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgSW5qZWN0YWJsZSwgTmdab25lLCBPbkRlc3Ryb3ksIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUlkU2VydmljZSB9IGZyb20gJy4uL2lkL2lkLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTa3lMaXZlQW5ub3VuY2VyQXJncyB9IGZyb20gJy4vdHlwZXMvbGl2ZS1hbm5vdW5jZXItYXJncyc7XG5cbi8qKlxuICogQWxsb3dzIGZvciBhbm5vdW5jaW5nIG1lc3NhZ2VzIHRvIHNjcmVlbiByZWFkZXIgdXNlcnMgdGhyb3VnaCB0aGUgdXNlIG9mIGEgY29tbW9uIGBhcmlhLWxpdmVgIGVsZW1lbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIGFubm91bmNlckVsZW1lbnRDaGFuZ2VkID0gbmV3IFJlcGxheVN1YmplY3Q8SFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ+KFxuICAgIDEsXG4gICk7XG5cbiAgI2Fubm91bmNlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAjZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICAjaWRTZXJ2aWNlID0gaW5qZWN0KFNreUlkU2VydmljZSk7XG4gICNkdXJhdGlvblRpbWVvdXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgI25nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI2Fubm91bmNlckVsZW1lbnQgPSB0aGlzLiNjcmVhdGVMaXZlRWxlbWVudCgpO1xuICAgIHRoaXMuYW5ub3VuY2VyRWxlbWVudENoYW5nZWQubmV4dCh0aGlzLiNhbm5vdW5jZXJFbGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbm5vdW5jZXMgYSBtZXNzYWdlIHRvIHNjcmVlbiByZWFkZXJzLlxuICAgKiBAcGFyYW0gbWVzc2FnZSBNZXNzYWdlIHRvIGJlIGFubm91bmNlZCB0byB0aGUgc2NyZWVuIHJlYWRlci5cbiAgICogQHBhcmFtIGFyZ3MgT3B0aW9ucyBmb3IgdGhlIGFubm91bmNlbWVudCBvZiB0aGUgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyBhbm5vdW5jZShtZXNzYWdlOiBzdHJpbmcsIGFyZ3M/OiBTa3lMaXZlQW5ub3VuY2VyQXJncyk6IHZvaWQge1xuICAgIC8qIHNhZmV0eS1jaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghdGhpcy4jYW5ub3VuY2VyRWxlbWVudCkge1xuICAgICAgdGhpcy4jYW5ub3VuY2VyRWxlbWVudCA9IHRoaXMuI2NyZWF0ZUxpdmVFbGVtZW50KCk7XG4gICAgICB0aGlzLmFubm91bmNlckVsZW1lbnRDaGFuZ2VkLm5leHQodGhpcy4jYW5ub3VuY2VyRWxlbWVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgcG9saXRlbmVzcyA9IGFyZ3M/LnBvbGl0ZW5lc3MgPz8gJ3BvbGl0ZSc7XG4gICAgdGhpcy4jYW5ub3VuY2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGl2ZScsIHBvbGl0ZW5lc3MpO1xuXG4gICAgdGhpcy5jbGVhcigpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLiNkdXJhdGlvblRpbWVvdXQpO1xuXG4gICAgdGhpcy4jYW5ub3VuY2VyRWxlbWVudC50ZXh0Q29udGVudCA9IG1lc3NhZ2U7XG4gICAgdGhpcy4jbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuI2R1cmF0aW9uVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHRoaXMuY2xlYXIoKSxcbiAgICAgICAgYXJncz8uZHVyYXRpb24gPz8gdGhpcy4jY2FsY3VsYXRlRGVmYXVsdER1cmF0aW9uRnJvbVN0cmluZyhtZXNzYWdlKSxcbiAgICAgICkgYXMgdW5rbm93biBhcyBudW1iZXI7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBjdXJyZW50IHRleHQgZnJvbSB0aGUgYW5ub3VuY2VyIGVsZW1lbnQuIENhbiBiZSB1c2VkIHRvIHByZXZlbnRcbiAgICogc2NyZWVuIHJlYWRlcnMgZnJvbSByZWFkaW5nIHRoZSB0ZXh0IG91dCBhZ2FpbiB3aGlsZSB0aGUgdXNlciBpcyBnb2luZ1xuICAgKiB0aHJvdWdoIHRoZSBwYWdlIGxhbmRtYXJrcy5cbiAgICovXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jYW5ub3VuY2VyRWxlbWVudCkge1xuICAgICAgdGhpcy4jYW5ub3VuY2VyRWxlbWVudC50ZXh0Q29udGVudCA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNhbm5vdW5jZXJFbGVtZW50Py5yZW1vdmUoKTtcbiAgICB0aGlzLiNhbm5vdW5jZXJFbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYW5ub3VuY2VyRWxlbWVudENoYW5nZWQubmV4dCh1bmRlZmluZWQpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLiNkdXJhdGlvblRpbWVvdXQpO1xuICB9XG5cbiAgI2NhbGN1bGF0ZURlZmF1bHREdXJhdGlvbkZyb21TdHJpbmcobWVzc2FnZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAvLyBSZXNlYXJjaCBzdWdnZXN0cyBub3JtYWwgV1BNIGlzIDExMCBmb3IgZW5nbGlzaC4gTG93ZXJpbmcgaGVyZSB0byBiZSBjb25zZXJ2YXRpdmUuXG4gICAgY29uc3QgYmFzZVdvcmRzUGVyTWludXRlID0gODA7XG4gICAgY29uc3QgbWludXRlSW5NaWxsaXNlY29uZHMgPSA2MDAwMDtcbiAgICBjb25zdCBudW1iZXJPZldvcmRzID0gbWVzc2FnZS5zcGxpdCgnICcpLmxlbmd0aDtcblxuICAgIGNvbnN0IGJhc2VUaW1lID1cbiAgICAgIChudW1iZXJPZldvcmRzIC8gYmFzZVdvcmRzUGVyTWludXRlKSAqIG1pbnV0ZUluTWlsbGlzZWNvbmRzO1xuXG4gICAgLy8gQWRkIDUwJSB0byB0aW1lIHRvIGFjY291bnQgZm9yIGV4Y2VwdGlvbmFsbHkgc2xvdyBzY3JlZW4gcmVhZGVyIHNldHRpbmdzIGFuZC9vciBzcGVlY2ggc2V0dGluZ3MgdGhhdCBsZWF2ZSBsb25nIHBhdXNlcyBiZXR3ZWVuIHdvcmRzLlxuICAgIHJldHVybiBiYXNlVGltZSAqIDEuNTtcbiAgfVxuXG4gICNjcmVhdGVMaXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgZWxlbWVudENsYXNzID0gJ3NreS1saXZlLWFubm91bmNlci1lbGVtZW50JztcbiAgICBjb25zdCBwcmV2aW91c0VsZW1lbnRzID0gQXJyYXkuZnJvbTxFbGVtZW50PihcbiAgICAgIHRoaXMuI2RvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZWxlbWVudENsYXNzKSxcbiAgICApO1xuICAgIGNvbnN0IGxpdmVFbCA9IHRoaXMuI2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgLy8gUmVtb3ZlIGFueSBvbGQgY29udGFpbmVycy4gVGhpcyBjYW4gaGFwcGVuIHdoZW4gY29taW5nIGluIGZyb20gYSBzZXJ2ZXItc2lkZS1yZW5kZXJlZCBwYWdlLlxuICAgIGZvciAoY29uc3QgcHJldmlvdXNFbGVtZW50IG9mIHByZXZpb3VzRWxlbWVudHMpIHtcbiAgICAgIHByZXZpb3VzRWxlbWVudC5yZW1vdmUoKTtcbiAgICB9XG5cbiAgICBsaXZlRWwuY2xhc3NMaXN0LmFkZChlbGVtZW50Q2xhc3MpO1xuICAgIGxpdmVFbC5jbGFzc0xpc3QuYWRkKCdza3ktc2NyZWVuLXJlYWRlci1vbmx5Jyk7XG5cbiAgICBsaXZlRWwuc2V0QXR0cmlidXRlKCdhcmlhLWF0b21pYycsICd0cnVlJyk7XG4gICAgbGl2ZUVsLnNldEF0dHJpYnV0ZSgnYXJpYS1saXZlJywgJ3BvbGl0ZScpO1xuICAgIGxpdmVFbC5pZCA9IHRoaXMuI2lkU2VydmljZS5nZW5lcmF0ZUlkKCk7XG5cbiAgICB0aGlzLiNkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpdmVFbCk7XG5cbiAgICByZXR1cm4gbGl2ZUVsO1xuICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated The `SkyLogService` no longer needs the `SkyLogModule`.\n * The `SkyLogModule` can be removed from your project.\n */\nexport class SkyLogModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLogModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLogModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLogModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9sb2cvbG9nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV6Qzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sWUFBWTs4R0FBWixZQUFZOytHQUFaLFlBQVk7K0dBQVosWUFBWTs7MkZBQVosWUFBWTtrQkFEeEIsUUFBUTttQkFBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBUaGUgYFNreUxvZ1NlcnZpY2VgIG5vIGxvbmdlciBuZWVkcyB0aGUgYFNreUxvZ01vZHVsZWAuXG4gKiBUaGUgYFNreUxvZ01vZHVsZWAgY2FuIGJlIHJlbW92ZWQgZnJvbSB5b3VyIHByb2plY3QuXG4gKi9cbkBOZ01vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBTa3lMb2dNb2R1bGUge31cbiJdfQ==","/**\n * @internal\n */\nexport var SkyLogLevel;\n(function (SkyLogLevel) {\n SkyLogLevel[SkyLogLevel[\"Info\"] = 1] = \"Info\";\n SkyLogLevel[SkyLogLevel[\"Warn\"] = 2] = \"Warn\";\n SkyLogLevel[SkyLogLevel[\"Error\"] = 3] = \"Error\";\n})(SkyLogLevel || (SkyLogLevel = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWxldmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2xvZy90eXBlcy9sb2ctbGV2ZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3JCLDZDQUFRLENBQUE7SUFDUiw2Q0FBUSxDQUFBO0lBQ1IsK0NBQVMsQ0FBQTtBQUNYLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBlbnVtIFNreUxvZ0xldmVsIHtcbiAgSW5mbyA9IDEsXG4gIFdhcm4gPSAyLFxuICBFcnJvciA9IDMsXG59XG4iXX0=","import { InjectionToken } from '@angular/core';\n/**\n * @internal\n */\nexport const SKY_LOG_LEVEL = new InjectionToken('SkyLogLevel');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWxldmVsLXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2xvZy90eXBlcy9sb2ctbGV2ZWwtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBYyxhQUFhLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUxvZ0xldmVsIH0gZnJvbSAnLi9sb2ctbGV2ZWwnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgU0tZX0xPR19MRVZFTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTa3lMb2dMZXZlbD4oJ1NreUxvZ0xldmVsJyk7XG4iXX0=","import { Inject, Injectable, Optional } from '@angular/core';\nimport { SkyLogLevel } from './types/log-level';\nimport { SKY_LOG_LEVEL } from './types/log-level-token';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../format/app-format\";\nimport * as i2 from \"./types/log-level\";\nconst previousWarnings = new Set();\n/**\n * Logs information to the console based on the application's log level as\n * provided by the `SKY_LOG_LEVEL` injection token. If no token is provided,\n * only `error` logs will be shown.\n * @internal\n */\nexport class SkyLogService {\n #applicationLogLevel;\n #formatter;\n constructor(formatter, applicationLogLevel) {\n this.#formatter = formatter;\n this.#applicationLogLevel = applicationLogLevel ?? SkyLogLevel.Error;\n }\n /**\n * Clears previously-logged messages. Primarily used for unit\n * testing this service.\n */\n static clearPreviousLogs() {\n previousWarnings.clear();\n }\n /**\n * Logs a deprecation warning for a class, property, function, etc. This will\n * be logged as a console warning unless a different log level is given in the\n * `args` parameter.\n * @param name The name of the deprecated class, property, function, etc.\n * @param args Information about the deprecation and replacement recommendations.\n */\n deprecated(name, args) {\n const logLevel = args?.logLevel ?? SkyLogLevel.Warn;\n name = this.#convertStringToCode(name);\n if (this.#canLog(logLevel)) {\n const messageParts = [];\n if (args?.deprecationMajorVersion) {\n messageParts.push(this.#formatter.formatText('{0} is deprecated starting in SKY UX {1}.', name, args.deprecationMajorVersion.toLocaleString()));\n }\n else {\n messageParts.push(this.#formatter.formatText('{0} is deprecated.', name));\n }\n if (args?.removalMajorVersion) {\n messageParts.push(this.#formatter.formatText('We will remove it in version {0}.', args.removalMajorVersion.toLocaleString()));\n }\n else {\n messageParts.push('We will remove it in a future major version.');\n }\n if (args?.replacementRecommendation) {\n messageParts.push(args.replacementRecommendation);\n }\n if (args?.moreInfoUrl) {\n messageParts.push(this.#formatter.formatText('For more information, see {0}.', args.moreInfoUrl));\n }\n this.#logBasedOnLevel(logLevel, messageParts.join(' '));\n }\n }\n /**\n * Logs a console error if the application's log level is `SkyLogLevel.Error`.\n * @param message The error message\n * @param params Optional parameters for the error message.\n */\n error(message, params) {\n if (this.#canLog(SkyLogLevel.Error)) {\n this.#logWithParams('error', message, params);\n }\n }\n /**\n * Logs console information if the application's log level is `SkyLogLevel.Info` or above.\n * @param message The informational message\n * @param params Optional parameters for the informational message.\n */\n info(message, params) {\n if (this.#canLog(SkyLogLevel.Info)) {\n this.#logWithParams('log', message, params);\n }\n }\n /**\n * Logs a console warning if the application's log level is `SkyLogLevel.Warn` or above.\n * @param message The warning message\n * @param params Optional parameters for the warning message.\n */\n warn(message, params) {\n if (this.#canLog(SkyLogLevel.Warn)) {\n const messageKey = this.#buildMessageKey(message, params);\n // Only log each warning once per application instance to avoid drowning out other\n // important messages in the console.\n if (!previousWarnings.has(message)) {\n this.#logWithParams('warn', message, params);\n previousWarnings.add(messageKey);\n }\n }\n }\n #convertStringToCode(typeString) {\n if (typeString.charAt(0) !== '`' && typeString.charAt(-1) !== '`') {\n typeString = '`' + typeString + '`';\n }\n return typeString;\n }\n #canLog(intendedLogLevel) {\n return intendedLogLevel >= this.#applicationLogLevel;\n }\n #logBasedOnLevel(logLevel, message, params) {\n switch (logLevel) {\n case SkyLogLevel.Info:\n this.info(message, params);\n break;\n case SkyLogLevel.Warn:\n this.warn(message, params);\n break;\n case SkyLogLevel.Error:\n this.error(message, params);\n break;\n }\n }\n #logWithParams(logMethod, message, params) {\n if (params) {\n console[logMethod](message, ...params);\n }\n else {\n console[logMethod](message);\n }\n }\n #buildMessageKey(message, params) {\n let key = message;\n if (params?.length) {\n key = `${key} ${params.join(' ')}`;\n }\n return key;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLogService, deps: [{ token: i1.SkyAppFormat }, { token: SKY_LOG_LEVEL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLogService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyLogService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.SkyAppFormat }, { type: i2.SkyLogLevel, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SKY_LOG_LEVEL]\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvbG9nL2xvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUs3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBRXhELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztBQUUzQzs7Ozs7R0FLRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLG9CQUFvQixDQUFjO0lBRWxDLFVBQVUsQ0FBZTtJQUV6QixZQUNFLFNBQXVCLEVBR3ZCLG1CQUFpQztRQUVqQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQztJQUN2RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQjtRQUM3QixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksVUFBVSxDQUFDLElBQVksRUFBRSxJQUEyQjtRQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsUUFBUSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFFcEQsSUFBSSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7WUFFeEIsSUFBSSxJ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Q2IsQ0FBQzs4R0F6S1UsYUFBYSw4Q0FRZCxhQUFhO2tIQVJaLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBUUksUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lBcHBGb3JtYXQgfSBmcm9tICcuLi9mb3JtYXQvYXBwLWZvcm1hdCc7XG5cbmltcG9ydCB7IFNreUxvZ0RlcHJlY2F0ZWRBcmdzIH0gZnJvbSAnLi90eXBlcy9sb2ctZGVwcmVjYXRpb24tYXJncyc7XG5pbXBvcnQgeyBTa3lMb2dMZXZlbCB9IGZyb20gJy4vdHlwZXMvbG9nLWxldmVsJztcbmltcG9ydCB7IFNLWV9MT0dfTEVWRUwgfSBmcm9tICcuL3R5cGVzL2xvZy1sZXZlbC10b2tlbic7XG5cbmNvbnN0IHByZXZpb3VzV2FybmluZ3MgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuLyoqXG4gKiBMb2dzIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlIGJhc2VkIG9uIHRoZSBhcHBsaWNhdGlvbidzIGxvZyBsZXZlbCBhc1xuICogcHJvdmlkZWQgYnkgdGhlIGBTS1lfTE9HX0xFVkVMYCBpbmplY3Rpb24gdG9rZW4uIElmIG5vIHRva2VuIGlzIHByb3ZpZGVkLFxuICogb25seSBgZXJyb3JgIGxvZ3Mgd2lsbCBiZSBzaG93bi5cbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TG9nU2VydmljZSB7XG4gICNhcHBsaWNhdGlvbkxvZ0xldmVsOiBTa3lMb2dMZXZlbDtcblxuICAjZm9ybWF0dGVyOiBTa3lBcHBGb3JtYXQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZm9ybWF0dGVyOiBTa3lBcHBGb3JtYXQsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KFNLWV9MT0dfTEVWRUwpXG4gICAgYXBwbGljYXRpb25Mb2dMZXZlbD86IFNreUxvZ0xldmVsLFxuICApIHtcbiAgICB0aGlzLiNmb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG4gICAgdGhpcy4jYXBwbGljYXRpb25Mb2dMZXZlbCA9IGFwcGxpY2F0aW9uTG9nTGV2ZWwgPz8gU2t5TG9nTGV2ZWwuRXJyb3I7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHByZXZpb3VzbHktbG9nZ2VkIG1lc3NhZ2VzLiBQcmltYXJpbHkgdXNlZCBmb3IgdW5pdFxuICAgKiB0ZXN0aW5nIHRoaXMgc2VydmljZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2xlYXJQcmV2aW91c0xvZ3MoKTogdm9pZCB7XG4gICAgcHJldmlvdXNXYXJuaW5ncy5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGZvciBhIGNsYXNzLCBwcm9wZXJ0eSwgZnVuY3Rpb24sIGV0Yy4gVGhpcyB3aWxsXG4gICAqIGJlIGxvZ2dlZCBhcyBhIGNvbnNvbGUgd2FybmluZyB1bmxlc3MgYSBkaWZmZXJlbnQgbG9nIGxldmVsIGlzIGdpdmVuIGluIHRoZVxuICAgKiBgYXJnc2AgcGFyYW1ldGVyLlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZGVwcmVjYXRlZCBjbGFzcywgcHJvcGVydHksIGZ1bmN0aW9uLCBldGMuXG4gICAqIEBwYXJhbSBhcmdzIEluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXByZWNhdGlvbiBhbmQgcmVwbGFjZW1lbnQgcmVjb21tZW5kYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGRlcHJlY2F0ZWQobmFtZTogc3RyaW5nLCBhcmdzPzogU2t5TG9nRGVwcmVjYXRlZEFyZ3MpOiB2b2lkIHtcbiAgICBjb25zdCBsb2dMZXZlbCA9IGFyZ3M/LmxvZ0xldmVsID8/IFNreUxvZ0xldmVsLldhcm47XG5cbiAgICBuYW1lID0gdGhpcy4jY29udmVydFN0cmluZ1RvQ29kZShuYW1lKTtcblxuICAgIGlmICh0aGlzLiNjYW5Mb2cobG9nTGV2ZWwpKSB7XG4gICAgICBjb25zdCBtZXNzYWdlUGFydHMgPSBbXTtcblxuICAgICAgaWYgKGFyZ3M/LmRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uKSB7XG4gICAgICAgIG1lc3NhZ2VQYXJ0cy5wdXNoKFxuICAgICAgICAgIHRoaXMuI2Zvcm1hdHRlci5mb3JtYXRUZXh0KFxuICAgICAgICAgICAgJ3swfSBpcyBkZXByZWNhdGVkIHN0YXJ0aW5nIGluIFNLWSBVWCB7MX0uJyxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBhcmdzLmRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uLnRvTG9jYWxlU3RyaW5nKCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2VQYXJ0cy5wdXNoKFxuICAgICAgICAgIHRoaXMuI2Zvcm1hdHRlci5mb3JtYXRUZXh0KCd7MH0gaXMgZGVwcmVjYXRlZC4nLCBuYW1lKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3M/LnJlbW92YWxNYWpvclZlcnNpb24pIHtcbiAgICAgICAgbWVzc2FnZVBhcnRzLnB1c2goXG4gICAgICAgICAgdGhpcy4jZm9ybWF0dGVyLmZvcm1hdFRleHQoXG4gICAgICAgICAgICAnV2Ugd2lsbCByZW1vdmUgaXQgaW4gdmVyc2lvbiB7MH0uJyxcbiAgICAgICAgICAgIGFyZ3MucmVtb3ZhbE1ham9yVmVyc2lvbi50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlUGFydHMucHVzaCgnV2Ugd2lsbCByZW1vdmUgaXQgaW4gYSBmdXR1cmUgbWFqb3IgdmVyc2lvbi4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3M/LnJlcGxhY2VtZW50UmVjb21tZW5kYXRpb24pIHtcbiAgICAgICAgbWVzc2FnZVBhcnRzLnB1c2goYXJncy5yZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFyZ3M/Lm1vcmVJbmZvVXJsKSB7XG4gICAgICAgIG1lc3NhZ2VQYXJ0cy5wdXNoKFxuICAgICAgICAgIHRoaXMuI2Zvcm1hdHRlci5mb3JtYXRUZXh0KFxuICAgICAgICAgICAgJ0ZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgezB9LicsXG4gICAgICAgICAgICBhcmdzLm1vcmVJbmZvVXJsLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI2xvZ0Jhc2VkT25MZXZlbChsb2dMZXZlbCwgbWVzc2FnZVBhcnRzLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBjb25zb2xlIGVycm9yIGlmIHRoZSBhcHBsaWNhdGlvbidzIGxvZyBsZXZlbCBpcyBgU2t5TG9nTGV2ZWwuRXJyb3JgLlxuICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZVxuICAgKiBAcGFyYW0gcGFyYW1zIE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgcHVibGljIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogdW5rbm93bltdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2NhbkxvZyhTa3lMb2dMZXZlbC5FcnJvcikpIHtcbiAgICAgIHRoaXMuI2xvZ1dpdGhQYXJhbXMoJ2Vycm9yJywgbWVzc2FnZSwgcGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9ncyBjb25zb2xlIGluZm9ybWF0aW9uIGlmIHRoZSBhcHBsaWNhdGlvbidzIGxvZyBsZXZlbCBpcyBgU2t5TG9nTGV2ZWwuSW5mb2Agb3IgYWJvdmUuXG4gICAqIEBwYXJhbSBtZXNzYWdlIFRoZSBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VcbiAgICogQHBhcmFtIHBhcmFtcyBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgaW5mb3JtYXRpb25hbCBtZXNzYWdlLlxuICAgKi9cbiAgcHVibGljIGluZm8obWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiB1bmtub3duW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jY2FuTG9nKFNreUxvZ0xldmVsLkluZm8pKSB7XG4gICAgICB0aGlzLiNsb2dXaXRoUGFyYW1zKCdsb2cnLCBtZXNzYWdlLCBwYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dzIGEgY29uc29sZSB3YXJuaW5nIGlmIHRoZSBhcHBsaWNhdGlvbidzIGxvZyBsZXZlbCBpcyBgU2t5TG9nTGV2ZWwuV2FybmAgb3IgYWJvdmUuXG4gICAqIEBwYXJhbSBtZXNzYWdlIFRoZSB3YXJuaW5nIG1lc3NhZ2VcbiAgICogQHBhcmFtIHBhcmFtcyBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgd2FybmluZyBtZXNzYWdlLlxuICAgKi9cbiAgcHVibGljIHdhcm4obWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiB1bmtub3duW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jY2FuTG9nKFNreUxvZ0xldmVsLldhcm4pKSB7XG4gICAgICBjb25zdCBtZXNzYWdlS2V5ID0gdGhpcy4jYnVpbGRNZXNzYWdlS2V5KG1lc3NhZ2UsIHBhcmFtcyk7XG5cbiAgICAgIC8vIE9ubHkgbG9nIGVhY2ggd2FybmluZyBvbmNlIHBlciBhcHBsaWNhdGlvbiBpbnN0YW5jZSB0byBhdm9pZCBkcm93bmluZyBvdXQgb3RoZXJcbiAgICAgIC8vIGltcG9ydGFudCBtZXNzYWdlcyBpbiB0aGUgY29uc29sZS5cbiAgICAgIGlmICghcHJldmlvdXNXYXJuaW5ncy5oYXMobWVzc2FnZSkpIHtcbiAgICAgICAgdGhpcy4jbG9nV2l0aFBhcmFtcygnd2FybicsIG1lc3NhZ2UsIHBhcmFtcyk7XG4gICAgICAgIHByZXZpb3VzV2FybmluZ3MuYWRkKG1lc3NhZ2VLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNjb252ZXJ0U3RyaW5nVG9Db2RlKHR5cGVTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVTdHJpbmcuY2hhckF0KDApICE9PSAnYCcgJiYgdHlwZVN0cmluZy5jaGFyQXQoLTEpICE9PSAnYCcpIHtcbiAgICAgIHR5cGVTdHJpbmcgPSAnYCcgKyB0eXBlU3RyaW5nICsgJ2AnO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZVN0cmluZztcbiAgfVxuXG4gICNjYW5Mb2coaW50ZW5kZWRMb2dMZXZlbDogU2t5TG9nTGV2ZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaW50ZW5kZWRMb2dMZXZlbCA+PSB0aGlzLiNhcHBsaWNhdGlvbkxvZ0xldmVsO1xuICB9XG5cbiAgI2xvZ0Jhc2VkT25MZXZlbChcbiAgICBsb2dMZXZlbDogU2t5TG9nTGV2ZWwsXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHBhcmFtcz86IHVua25vd25bXSxcbiAgKTogdm9pZCB7XG4gICAgc3dpdGNoIChsb2dMZXZlbCkge1xuICAgICAgY2FzZSBTa3lMb2dMZXZlbC5JbmZvOlxuICAgICAgICB0aGlzLmluZm8obWVzc2FnZSwgcGFyYW1zKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNreUxvZ0xldmVsLldhcm46XG4gICAgICAgIHRoaXMud2FybihtZXNzYWdlLCBwYXJhbXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU2t5TG9nTGV2ZWwuRXJyb3I6XG4gICAgICAgIHRoaXMuZXJyb3IobWVzc2FnZSwgcGFyYW1zKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgI2xvZ1dpdGhQYXJhbXMoXG4gICAgbG9nTWV0aG9kOiAnbG9nJyB8ICd3YXJuJyB8ICdlcnJvcicsXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHBhcmFtczogdW5rbm93bltdIHwgdW5kZWZpbmVkLFxuICApOiB2b2lkIHtcbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICBjb25zb2xlW2xvZ01ldGhvZF0obWVzc2FnZSwgLi4ucGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZVtsb2dNZXRob2RdKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gICNidWlsZE1lc3NhZ2VLZXkobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiB1bmtub3duW10pOiBzdHJpbmcge1xuICAgIGxldCBrZXkgPSBtZXNzYWdlO1xuXG4gICAgaWYgKHBhcmFtcz8ubGVuZ3RoKSB7XG4gICAgICBrZXkgPSBgJHtrZXl9ICR7cGFyYW1zLmpvaW4oJyAnKX1gO1xuICAgIH1cblxuICAgIHJldHVybiBrZXk7XG4gIH1cbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\n/**\n * Used to override a breakpoint observer for specific execution contexts.\n * @internal\n */\nexport const SKY_BREAKPOINT_OBSERVER = new InjectionToken('SKY_BREAKPOINT_OBSERVER');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWtwb2ludC1vYnNlcnZlci50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9icmVha3BvaW50LW9ic2VydmVyL2JyZWFrcG9pbnQtb2JzZXJ2ZXIudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FDbEMsSUFBSSxjQUFjLENBQXdCLHlCQUF5QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lCcmVha3BvaW50T2JzZXJ2ZXIgfSBmcm9tICcuL2JyZWFrcG9pbnQtb2JzZXJ2ZXInO1xuXG4vKipcbiAqIFVzZWQgdG8gb3ZlcnJpZGUgYSBicmVha3BvaW50IG9ic2VydmVyIGZvciBzcGVjaWZpYyBleGVjdXRpb24gY29udGV4dHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFNLWV9CUkVBS1BPSU5UX09CU0VSVkVSID1cbiAgbmV3IEluamVjdGlvblRva2VuPFNreUJyZWFrcG9pbnRPYnNlcnZlcj4oJ1NLWV9CUkVBS1BPSU5UX09CU0VSVkVSJyk7XG4iXX0=","import { ApplicationRef, Injectable, NgZone, inject, } from '@angular/core';\nimport { Observable, Subject, animationFrameScheduler, distinctUntilChanged, filter, map, observeOn, shareReplay, takeUntil, } from 'rxjs';\nimport { SkyAppWindowRef } from '../window/window-ref';\nimport * as i0 from \"@angular/core\";\nconst errorTest = /ResizeObserver loop completed with undelivered notifications/i;\nlet errorLogRegistered = false;\nlet originalOnError = undefined;\nconst errorHandler = (event) => {\n if (errorTest.test(event.message)) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n return false;\n }\n return undefined;\n};\nconst onError = (event) => {\n const message = typeof event === 'string' ? event : event.message;\n // This is necessary to prevent the test runner from failing on errors, but challenging to reliably test.\n /* istanbul ignore next */\n if (errorTest.test(message)) {\n if (event instanceof ErrorEvent) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n }\n return false;\n }\n return originalOnError?.call(window, event);\n};\n/**\n * Service to create rxjs observables for changes to the content box dimensions of elements.\n */\nexport class SkyResizeObserverService {\n #ngUnsubscribe = new Subject();\n #zone = inject(NgZone);\n #resizeObserver = this.#zone.runOutsideAngular(() => new ResizeObserver((entries) => this.#zone.run(() => this.#resizeSubject.next(entries))));\n #resizeSubject = new Subject();\n #tracking = new Map();\n #window = inject(SkyAppWindowRef);\n constructor() {\n this.#expectWindowError();\n // Because the resize observer is a native browser API, it does not shut down\n // synchronously when the service is destroyed. Leave the error handling\n // accommodation in place until the application is destroyed. This also works\n // for the test runner.\n inject(ApplicationRef).onDestroy(() => this.#resetWindowError());\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#resizeObserver.disconnect();\n }\n /**\n * Create rxjs observable to get size changes for an element ref.\n */\n observe(element) {\n const checkTracking = this.#tracking.has(element.nativeElement);\n if (!checkTracking) {\n this.#tracking.set(element.nativeElement, new Observable((observer) => {\n const subscription = this.#resizeSubject.subscribe(observer);\n this.#resizeObserver?.observe(element.nativeElement);\n return () => {\n this.#resizeObserver?.unobserve(element.nativeElement);\n subscription.unsubscribe();\n this.#tracking.delete(element.nativeElement);\n };\n }).pipe(filter(Boolean), filter((entries) => entries.some((entry) => entry.target === element.nativeElement)), map((entries) => entries.find((entry) => entry.target === element.nativeElement)), \n // Ignore subpixel changes.\n distinctUntilChanged((a, b) => Math.round(a.contentRect.width) ===\n Math.round(b.contentRect.width) &&\n Math.round(a.contentRect.height) ===\n Math.round(b.contentRect.height)), \n // Emit the last value for late subscribers. Track references so it\n // un-observes when all subscribers are gone.\n shareReplay({ bufferSize: 1, refCount: true }), \n // Only emit prior to an animation frame to prevent layout thrashing.\n observeOn(animationFrameScheduler), takeUntil(this.#ngUnsubscribe)));\n }\n return this.#tracking.get(element.nativeElement);\n }\n #expectWindowError() {\n if (!errorLogRegistered) {\n errorLogRegistered = true;\n // ResizeObserver throws an error when it is disconnected while it is\n // still observing an element. When an element is no longer observed, this\n // is not a concern.\n this.#zone.runOutsideAngular(() => this.#window.nativeWindow.addEventListener('error', errorHandler));\n }\n if (this.#window.nativeWindow.onerror !== onError) {\n originalOnError = this.#window.nativeWindow.onerror;\n this.#window.nativeWindow.onerror = onError;\n }\n }\n #resetWindowError() {\n this.#window.nativeWindow.removeEventListener('error', errorHandler);\n if (originalOnError) {\n this.#window.nativeWindow.onerror = originalOnError;\n originalOnError = undefined;\n }\n errorLogRegistered = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyResizeObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyResizeObserverService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyResizeObserverService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvcmVzaXplLW9ic2VydmVyL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBRWQsVUFBVSxFQUNWLE1BQU0sRUFFTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUV2RCxNQUFNLFNBQVMsR0FDYiwrREFBK0QsQ0FBQztBQUNsRSxJQUFJLGtCQUFrQixHQUFHLEtBQUssQ0FBQztBQUMvQixJQUFJLGVBQWUsR0FFSCxTQUFTLENBQUM7QUFFMUIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFpQixFQUF1QixFQUFFO0lBQzlELElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNqQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBMEIsRUFBdUIsRUFBRTtJQUNsRSxNQUFNLE9BQU8sR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FB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QUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUNsRSxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ2xELGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNyRSxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUM7WUFDcEQsZUFBZSxHQUFHLFNBQVMsQ0FBQztRQUM5QixDQUFDO1FBQ0Qsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7OEdBdEdVLHdCQUF3QjtrSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIG9ic2VydmVPbixcbiAgc2hhcmVSZXBsYXksXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUFwcFdpbmRvd1JlZiB9IGZyb20gJy4uL3dpbmRvdy93aW5kb3ctcmVmJztcblxuY29uc3QgZXJyb3JUZXN0ID1cbiAgL1Jlc2l6ZU9ic2VydmVyIGxvb3AgY29tcGxldGVkIHdpdGggdW5kZWxpdmVyZWQgbm90aWZpY2F0aW9ucy9pO1xubGV0IGVycm9yTG9nUmVnaXN0ZXJlZCA9IGZhbHNlO1xubGV0IG9yaWdpbmFsT25FcnJvcjpcbiAgfCAoKGV2ZW50OiBzdHJpbmcgfCBFdmVudCkgPT4gYm9vbGVhbiB8IHVuZGVmaW5lZClcbiAgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbmNvbnN0IGVycm9ySGFuZGxlciA9IChldmVudDogRXJyb3JFdmVudCk6IGJvb2xlYW4gfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoZXJyb3JUZXN0LnRlc3QoZXZlbnQubWVzc2FnZSkpIHtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuY29uc3Qgb25FcnJvciA9IChldmVudDogc3RyaW5nIHwgRXJyb3JFdmVudCk6IGJvb2xlYW4gfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBtZXNzYWdlID0gdHlwZW9mIGV2ZW50ID09PSAnc3RyaW5nJyA/IGV2ZW50IDogZXZlbnQubWVzc2FnZTtcbiAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgdG8gcHJldmVudCB0aGUgdGVzdCBydW5uZXIgZnJvbSBmYWlsaW5nIG9uIGVycm9ycywgYnV0IGNoYWxsZW5naW5nIHRvIHJlbGlhYmx5IHRlc3QuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmIChlcnJvclRlc3QudGVzdChtZXNzYWdlKSkge1xuICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIG9yaWdpbmFsT25FcnJvcj8uY2FsbCh3aW5kb3csIGV2ZW50KTtcbn07XG5cbi8qKlxuICogU2VydmljZSB0byBjcmVhdGUgcnhqcyBvYnNlcnZhYmxlcyBmb3IgY2hhbmdlcyB0byB0aGUgY29udGVudCBib3ggZGltZW5zaW9ucyBvZiBlbGVtZW50cy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVJlc2l6ZU9ic2VydmVyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5ICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcmVhZG9ubHkgI3pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcmVhZG9ubHkgI3Jlc2l6ZU9ic2VydmVyID0gdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcihcbiAgICAoKSA9PlxuICAgICAgbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PlxuICAgICAgICB0aGlzLiN6b25lLnJ1bigoKSA9PiB0aGlzLiNyZXNpemVTdWJqZWN0Lm5leHQoZW50cmllcykpLFxuICAgICAgKSxcbiAgKTtcbiAgcmVhZG9ubHkgI3Jlc2l6ZVN1YmplY3QgPSBuZXcgU3ViamVjdDxSZXNpemVPYnNlcnZlckVudHJ5W10+KCk7XG4gIHJlYWRvbmx5ICN0cmFja2luZyA9IG5ldyBNYXA8RWxlbWVudCwgT2JzZXJ2YWJsZTxSZXNpemVPYnNlcnZlckVudHJ5Pj4oKTtcbiAgcmVhZG9ubHkgI3dpbmRvdyA9IGluamVjdChTa3lBcHBXaW5kb3dSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI2V4cGVjdFdpbmRvd0Vycm9yKCk7XG4gICAgLy8gQmVjYXVzZSB0aGUgcmVzaXplIG9ic2VydmVyIGlzIGEgbmF0aXZlIGJyb3dzZXIgQVBJLCBpdCBkb2VzIG5vdCBzaHV0IGRvd25cbiAgICAvLyBzeW5jaHJvbm91c2x5IHdoZW4gdGhlIHNlcnZpY2UgaXMgZGVzdHJveWVkLiBMZWF2ZSB0aGUgZXJyb3IgaGFuZGxpbmdcbiAgICAvLyBhY2NvbW1vZGF0aW9uIGluIHBsYWNlIHVudGlsIHRoZSBhcHBsaWNhdGlvbiBpcyBkZXN0cm95ZWQuIFRoaXMgYWxzbyB3b3Jrc1xuICAgIC8vIGZvciB0aGUgdGVzdCBydW5uZXIuXG4gICAgaW5qZWN0KEFwcGxpY2F0aW9uUmVmKS5vbkRlc3Ryb3koKCkgPT4gdGhpcy4jcmVzZXRXaW5kb3dFcnJvcigpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSByeGpzIG9ic2VydmFibGUgdG8gZ2V0IHNpemUgY2hhbmdlcyBmb3IgYW4gZWxlbWVudCByZWYuXG4gICAqL1xuICBwdWJsaWMgb2JzZXJ2ZShlbGVtZW50OiBFbGVtZW50UmVmKTogT2JzZXJ2YWJsZTxSZXNpemVPYnNlcnZlckVudHJ5PiB7XG4gICAgY29uc3QgY2hlY2tUcmFja2luZyA9IHRoaXMuI3RyYWNraW5nLmhhcyhlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgaWYgKCFjaGVja1RyYWNraW5nKSB7XG4gICAgICB0aGlzLiN0cmFja2luZy5zZXQoXG4gICAgICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgbmV3IE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeVtdPigob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLiNyZXNpemVTdWJqZWN0LnN1YnNjcmliZShvYnNlcnZlcik7XG4gICAgICAgICAgdGhpcy4jcmVzaXplT2JzZXJ2ZXI/Lm9ic2VydmUoZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICByZXR1cm4gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy4jcmVzaXplT2JzZXJ2ZXI/LnVub2JzZXJ2ZShlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLiN0cmFja2luZy5kZWxldGUoZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICAgICAgICBmaWx0ZXIoKGVudHJpZXMpID0+XG4gICAgICAgICAgICBlbnRyaWVzLnNvbWUoKGVudHJ5KSA9PiBlbnRyeS50YXJnZXQgPT09IGVsZW1lbnQubmF0aXZlRWxlbWVudCksXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAoZW50cmllcykgPT5cbiAgICAgICAgICAgICAgZW50cmllcy5maW5kKFxuICAgICAgICAgICAgICAgIChlbnRyeSkgPT4gZW50cnkudGFyZ2V0ID09PSBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICkgYXMgUmVzaXplT2JzZXJ2ZXJFbnRyeSxcbiAgICAgICAgICApLFxuICAgICAgICAgIC8vIElnbm9yZSBzdWJwaXhlbCBjaGFuZ2VzLlxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgICAgIE1hdGgucm91bmQoYS5jb250ZW50UmVjdC53aWR0aCkgPT09XG4gICAgICAgICAgICAgICAgTWF0aC5yb3VuZChiLmNvbnRlbnRSZWN0LndpZHRoKSAmJlxuICAgICAgICAgICAgICBNYXRoLnJvdW5kKGEuY29udGVudFJlY3QuaGVpZ2h0KSA9PT1cbiAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKGIuY29udGVudFJlY3QuaGVpZ2h0KSxcbiAgICAgICAgICApLFxuICAgICAgICAgIC8vIEVtaXQgdGhlIGxhc3QgdmFsdWUgZm9yIGxhdGUgc3Vic2NyaWJlcnMuIFRyYWNrIHJlZmVyZW5jZXMgc28gaXRcbiAgICAgICAgICAvLyB1bi1vYnNlcnZlcyB3aGVuIGFsbCBzdWJzY3JpYmVycyBhcmUgZ29uZS5cbiAgICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICAgICAgICAgIC8vIE9ubHkgZW1pdCBwcmlvciB0byBhbiBhbmltYXRpb24gZnJhbWUgdG8gcHJldmVudCBsYXlvdXQgdGhyYXNoaW5nLlxuICAgICAgICAgIG9ic2VydmVPbihhbmltYXRpb25GcmFtZVNjaGVkdWxlciksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jdHJhY2tpbmcuZ2V0KFxuICAgICAgZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICkgYXMgT2JzZXJ2YWJsZTxSZXNpemVPYnNlcnZlckVudHJ5PjtcbiAgfVxuXG4gICNleHBlY3RXaW5kb3dFcnJvcigpOiB2b2lkIHtcbiAgICBpZiAoIWVycm9yTG9nUmVnaXN0ZXJlZCkge1xuICAgICAgZXJyb3JMb2dSZWdpc3RlcmVkID0gdHJ1ZTtcbiAgICAgIC8vIFJlc2l6ZU9ic2VydmVyIHRocm93cyBhbiBlcnJvciB3aGVuIGl0IGlzIGRpc2Nvbm5lY3RlZCB3aGlsZSBpdCBpc1xuICAgICAgLy8gc3RpbGwgb2JzZXJ2aW5nIGFuIGVsZW1lbnQuIFdoZW4gYW4gZWxlbWVudCBpcyBubyBsb25nZXIgb2JzZXJ2ZWQsIHRoaXNcbiAgICAgIC8vIGlzIG5vdCBhIGNvbmNlcm4uXG4gICAgICB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgIHRoaXMuI3dpbmRvdy5uYXRpdmVXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBlcnJvckhhbmRsZXIpLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuI3dpbmRvdy5uYXRpdmVXaW5kb3cub25lcnJvciAhPT0gb25FcnJvcikge1xuICAgICAgb3JpZ2luYWxPbkVycm9yID0gdGhpcy4jd2luZG93Lm5hdGl2ZVdpbmRvdy5vbmVycm9yO1xuICAgICAgdGhpcy4jd2luZG93Lm5hdGl2ZVdpbmRvdy5vbmVycm9yID0gb25FcnJvcjtcbiAgICB9XG4gIH1cblxuICAjcmVzZXRXaW5kb3dFcnJvcigpOiB2b2lkIHtcbiAgICB0aGlzLiN3aW5kb3cubmF0aXZlV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JIYW5kbGVyKTtcbiAgICBpZiAob3JpZ2luYWxPbkVycm9yKSB7XG4gICAgICB0aGlzLiN3aW5kb3cubmF0aXZlV2luZG93Lm9uZXJyb3IgPSBvcmlnaW5hbE9uRXJyb3I7XG4gICAgICBvcmlnaW5hbE9uRXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVycm9yTG9nUmVnaXN0ZXJlZCA9IGZhbHNlO1xuICB9XG59XG4iXX0=","import { ElementRef, Injectable, afterNextRender, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReplaySubject } from 'rxjs';\nimport { SkyResizeObserverService } from '../resize-observer/resize-observer.service';\nimport * as i0 from \"@angular/core\";\nconst QUERIES = [\n ['xs', (width) => width > 0 && width <= 767],\n ['sm', (width) => width > 767 && width <= 991],\n ['md', (width) => width > 991 && width <= 1199],\n ['lg', (width) => width > 1199],\n];\n/**\n * Emits when the width of the host container changes.\n * @internal\n */\nexport class SkyContainerBreakpointObserver {\n #elementRef = inject(ElementRef);\n #resizeObserver = inject(SkyResizeObserverService);\n get breakpointChange() {\n return this.#breakpointChangeObs;\n }\n #breakpoint;\n #breakpointChange = new ReplaySubject(1);\n #breakpointChangeObs = this.#breakpointChange.asObservable();\n constructor() {\n this.#resizeObserver\n .observe(this.#elementRef)\n .pipe(takeUntilDestroyed())\n .subscribe((entry) => {\n this.#checkBreakpoint(entry.contentRect.width);\n });\n afterNextRender(() => {\n this.#checkWidth();\n });\n }\n ngOnDestroy() {\n this.destroy();\n }\n destroy() {\n this.#breakpointChange.complete();\n }\n #checkBreakpoint(width) {\n for (const [breakpoint, check] of QUERIES) {\n if (breakpoint !== this.#breakpoint && check(width)) {\n this.#breakpoint = breakpoint;\n this.#notifyBreakpointChange(breakpoint);\n break;\n }\n }\n }\n #checkWidth() {\n const width = this.#elementRef.nativeElement.offsetWidth ?? 0;\n this.#checkBreakpoint(width);\n }\n #notifyBreakpointChange(breakpoint) {\n this.#breakpointChange.next(breakpoint);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyContainerBreakpointObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyContainerBreakpointObserver }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyContainerBreakpointObserver, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLWJyZWFrcG9pbnQtb2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvYnJlYWtwb2ludC1vYnNlcnZlci9jb250YWluZXItYnJlYWtwb2ludC1vYnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLFVBQVUsRUFFVixlQUFlLEVBQ2YsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7O0FBS3RGLE1BQU0sT0FBTyxHQUFrRDtJQUM3RCxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBVyxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksR0FBRyxDQUFDO0lBQ3JELENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFXLEVBQUUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLEtBQUssSUFBSSxHQUFHLENBQUM7SUFDdkQsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQVcsRUFBRSxDQUFDLEtBQUssR0FBRyxHQUFHLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQztJQUN4RCxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBVyxFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztDQUN6QyxDQUFDO0FBRUY7OztHQUdHO0FBRUgsTUFBTSxPQUFPLDhCQUE4QjtJQUdoQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLGVBQWUsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUU1RCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVyxDQUE0QjtJQUM5QixpQkFBaUIsR0FBRyxJQUFJLGFBQWEsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDeEQsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXRFO1FBQ0UsSUFBSSxDQUFDLGVBQWU7YUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDMUIsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7UUFFTCxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYTtRQUM1QixLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDMUMsSUFBSSxVQUFVLEtBQUssSUFBSSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7Z0JBQzlCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDekMsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLEtBQUssR0FDUixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQTZCLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELHVCQUF1QixDQUFDLFVBQXlCO1FBQy9DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs4R0F0RFUsOEJBQThCO2tIQUE5Qiw4QkFBOEI7OzJGQUE5Qiw4QkFBOEI7a0JBRDFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbGVtZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBPbkRlc3Ryb3ksXG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi9yZXNpemUtb2JzZXJ2ZXIvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTa3lCcmVha3BvaW50IH0gZnJvbSAnLi9icmVha3BvaW50JztcbmltcG9ydCB7IFNreUJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJy4vYnJlYWtwb2ludC1vYnNlcnZlcic7XG5cbmNvbnN0IFFVRVJJRVM6IFtTa3lCcmVha3BvaW50LCAod2lkdGg6IG51bWJlcikgPT4gYm9vbGVhbl1bXSA9IFtcbiAgWyd4cycsICh3aWR0aCk6IGJvb2xlYW4gPT4gd2lkdGggPiAwICYmIHdpZHRoIDw9IDc2N10sXG4gIFsnc20nLCAod2lkdGgpOiBib29sZWFuID0+IHdpZHRoID4gNzY3ICYmIHdpZHRoIDw9IDk5MV0sXG4gIFsnbWQnLCAod2lkdGgpOiBib29sZWFuID0+IHdpZHRoID4gOTkxICYmIHdpZHRoIDw9IDExOTldLFxuICBbJ2xnJywgKHdpZHRoKTogYm9vbGVhbiA9PiB3aWR0aCA+IDExOTldLFxuXTtcblxuLyoqXG4gKiBFbWl0cyB3aGVuIHRoZSB3aWR0aCBvZiB0aGUgaG9zdCBjb250YWluZXIgY2hhbmdlcy5cbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5Q29udGFpbmVyQnJlYWtwb2ludE9ic2VydmVyXG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBTa3lCcmVha3BvaW50T2JzZXJ2ZXJcbntcbiAgcmVhZG9ubHkgI2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHJlYWRvbmx5ICNyZXNpemVPYnNlcnZlciA9IGluamVjdChTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UpO1xuXG4gIHB1YmxpYyBnZXQgYnJlYWtwb2ludENoYW5nZSgpOiBPYnNlcnZhYmxlPFNreUJyZWFrcG9pbnQ+IHtcbiAgICByZXR1cm4gdGhpcy4jYnJlYWtwb2ludENoYW5nZU9icztcbiAgfVxuXG4gICNicmVha3BvaW50OiBTa3lCcmVha3BvaW50IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSAjYnJlYWtwb2ludENoYW5nZSA9IG5ldyBSZXBsYXlTdWJqZWN0PFNreUJyZWFrcG9pbnQ+KDEpO1xuICByZWFkb25seSAjYnJlYWtwb2ludENoYW5nZU9icyA9IHRoaXMuI2JyZWFrcG9pbnRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy4jcmVzaXplT2JzZXJ2ZXJcbiAgICAgIC5vYnNlcnZlKHRoaXMuI2VsZW1lbnRSZWYpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGVudHJ5KSA9PiB7XG4gICAgICAgIHRoaXMuI2NoZWNrQnJlYWtwb2ludChlbnRyeS5jb250ZW50UmVjdC53aWR0aCk7XG4gICAgICB9KTtcblxuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICB0aGlzLiNjaGVja1dpZHRoKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95KCk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNicmVha3BvaW50Q2hhbmdlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAjY2hlY2tCcmVha3BvaW50KHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFticmVha3BvaW50LCBjaGVja10gb2YgUVVFUklFUykge1xuICAgICAgaWYgKGJyZWFrcG9pbnQgIT09IHRoaXMuI2JyZWFrcG9pbnQgJiYgY2hlY2sod2lkdGgpKSB7XG4gICAgICAgIHRoaXMuI2JyZWFrcG9pbnQgPSBicmVha3BvaW50O1xuICAgICAgICB0aGlzLiNub3RpZnlCcmVha3BvaW50Q2hhbmdlKGJyZWFrcG9pbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjY2hlY2tXaWR0aCgpOiB2b2lkIHtcbiAgICBjb25zdCB3aWR0aCA9XG4gICAgICAodGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5vZmZzZXRXaWR0aCA/PyAwO1xuXG4gICAgdGhpcy4jY2hlY2tCcmVha3BvaW50KHdpZHRoKTtcbiAgfVxuXG4gICNub3RpZnlCcmVha3BvaW50Q2hhbmdlKGJyZWFrcG9pbnQ6IFNreUJyZWFrcG9pbnQpOiB2b2lkIHtcbiAgICB0aGlzLiNicmVha3BvaW50Q2hhbmdlLm5leHQoYnJlYWtwb2ludCk7XG4gIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nconst QUERIES = new Map([\n ['xs', '(max-width: 767px)'],\n ['sm', '(min-width: 768px) and (max-width: 991px)'],\n ['md', '(min-width: 992px) and (max-width: 1199px)'],\n ['lg', '(min-width: 1200px)'],\n]);\n/**\n * Emits when the viewport width changes.\n * @internal\n */\nexport class SkyMediaBreakpointObserver {\n get breakpointChange() {\n return this.#breakpointChangeObs;\n }\n #breakpointChange = new ReplaySubject(1);\n #breakpointChangeObs = this.#breakpointChange.asObservable();\n #listeners = new Map();\n constructor() {\n for (const [breakpoint, query] of QUERIES.entries()) {\n const mq = matchMedia(query);\n const listener = (evt) => {\n if (evt.matches) {\n this.#notifyBreakpointChange(breakpoint);\n }\n };\n mq.addEventListener('change', listener);\n if (mq.matches) {\n this.#notifyBreakpointChange(breakpoint);\n }\n this.#listeners.set(mq, listener);\n }\n }\n ngOnDestroy() {\n this.destroy();\n }\n destroy() {\n this.#breakpointChange.complete();\n for (const [query, listener] of this.#listeners.entries()) {\n query.removeEventListener('change', listener);\n }\n this.#listeners.clear();\n }\n #notifyBreakpointChange(breakpoint) {\n this.#breakpointChange.next(breakpoint);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMediaBreakpointObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMediaBreakpointObserver, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMediaBreakpointObserver, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtYnJlYWtwb2ludC1vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9icmVha3BvaW50LW9ic2VydmVyL21lZGlhLWJyZWFrcG9pbnQtb2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RCxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUtqRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBd0I7SUFDN0MsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUM7SUFDNUIsQ0FBQyxJQUFJLEVBQUUsMkNBQTJDLENBQUM7SUFDbkQsQ0FBQyxJQUFJLEVBQUUsNENBQTRDLENBQUM7SUFDcEQsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7Q0FDOUIsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBSUgsTUFBTSxPQUFPLDBCQUEwQjtJQUdyQyxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBRVEsaUJBQWlCLEdBQUcsSUFBSSxhQUFhLENBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQ3hELG9CQUFvQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUV0RSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXNELENBQUM7SUFFM0U7UUFDRSxLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDcEQsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTdCLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBd0IsRUFBUSxFQUFFO2dCQUNsRCxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDO1lBRUYsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUV4QyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUVELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWxDLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDMUQsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsdUJBQXVCLENBQUMsVUFBeUI7UUFDL0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDOzhHQWhEVSwwQkFBMEI7a0hBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzsyRkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5QnJlYWtwb2ludCB9IGZyb20gJy4vYnJlYWtwb2ludCc7XG5pbXBvcnQgeyBTa3lCcmVha3BvaW50T2JzZXJ2ZXIgfSBmcm9tICcuL2JyZWFrcG9pbnQtb2JzZXJ2ZXInO1xuXG5jb25zdCBRVUVSSUVTID0gbmV3IE1hcDxTa3lCcmVha3BvaW50LCBzdHJpbmc+KFtcbiAgWyd4cycsICcobWF4LXdpZHRoOiA3NjdweCknXSxcbiAgWydzbScsICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSddLFxuICBbJ21kJywgJyhtaW4td2lkdGg6IDk5MnB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSddLFxuICBbJ2xnJywgJyhtaW4td2lkdGg6IDEyMDBweCknXSxcbl0pO1xuXG4vKipcbiAqIEVtaXRzIHdoZW4gdGhlIHZpZXdwb3J0IHdpZHRoIGNoYW5nZXMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreU1lZGlhQnJlYWtwb2ludE9ic2VydmVyXG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBTa3lCcmVha3BvaW50T2JzZXJ2ZXJcbntcbiAgcHVibGljIGdldCBicmVha3BvaW50Q2hhbmdlKCk6IE9ic2VydmFibGU8U2t5QnJlYWtwb2ludD4ge1xuICAgIHJldHVybiB0aGlzLiNicmVha3BvaW50Q2hhbmdlT2JzO1xuICB9XG5cbiAgcmVhZG9ubHkgI2JyZWFrcG9pbnRDaGFuZ2UgPSBuZXcgUmVwbGF5U3ViamVjdDxTa3lCcmVha3BvaW50PigxKTtcbiAgcmVhZG9ubHkgI2JyZWFrcG9pbnRDaGFuZ2VPYnMgPSB0aGlzLiNicmVha3BvaW50Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICNsaXN0ZW5lcnMgPSBuZXcgTWFwPE1lZGlhUXVlcnlMaXN0LCAoZXZ0OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiB2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGZvciAoY29uc3QgW2JyZWFrcG9pbnQsIHF1ZXJ5XSBvZiBRVUVSSUVTLmVudHJpZXMoKSkge1xuICAgICAgY29uc3QgbXEgPSBtYXRjaE1lZGlhKHF1ZXJ5KTtcblxuICAgICAgY29uc3QgbGlzdGVuZXIgPSAoZXZ0OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChldnQubWF0Y2hlcykge1xuICAgICAgICAgIHRoaXMuI25vdGlmeUJyZWFrcG9pbnRDaGFuZ2UoYnJlYWtwb2ludCk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIG1xLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcblxuICAgICAgaWYgKG1xLm1hdGNoZXMpIHtcbiAgICAgICAgdGhpcy4jbm90aWZ5QnJlYWtwb2ludENoYW5nZShicmVha3BvaW50KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jbGlzdGVuZXJzLnNldChtcSwgbGlzdGVuZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI2JyZWFrcG9pbnRDaGFuZ2UuY29tcGxldGUoKTtcblxuICAgIGZvciAoY29uc3QgW3F1ZXJ5LCBsaXN0ZW5lcl0gb2YgdGhpcy4jbGlzdGVuZXJzLmVudHJpZXMoKSkge1xuICAgICAgcXVlcnkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHRoaXMuI2xpc3RlbmVycy5jbGVhcigpO1xuICB9XG5cbiAgI25vdGlmeUJyZWFrcG9pbnRDaGFuZ2UoYnJlYWtwb2ludDogU2t5QnJlYWtwb2ludCk6IHZvaWQge1xuICAgIHRoaXMuI2JyZWFrcG9pbnRDaGFuZ2UubmV4dChicmVha3BvaW50KTtcbiAgfVxufVxuIl19","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { toSkyMediaBreakpoints } from '../breakpoint-observer/breakpoint-utils';\nimport { SkyMediaBreakpointObserver } from '../breakpoint-observer/media-breakpoint-observer';\nimport { SkyMediaBreakpoints } from './media-breakpoints';\nimport * as i0 from \"@angular/core\";\nconst DEFAULT_BREAKPOINT = SkyMediaBreakpoints.md;\n/**\n * Utility used to subscribe to viewport and container breakpoint changes.\n */\nexport class SkyMediaQueryService {\n #breakpointObserver = inject(SkyMediaBreakpointObserver);\n /**\n * Emits when the breakpoint changes.\n */\n get breakpointChange() {\n return this.#breakpointObserver.breakpointChange;\n }\n /**\n * The size for the `xs` breakpoint.\n * @default \"(max-width: 767px)\"\n */\n static { this.xs = '(max-width: 767px)'; }\n /**\n * The size for the `sm` breakpoint.\n * @default \"(min-width: 768px) and (max-width: 991px)\"\n */\n static { this.sm = '(min-width: 768px) and (max-width: 991px)'; }\n /**\n * The size for the `md` breakpoint.\n * @default \"(min-width: 992px) and (max-width: 1199px)\"\n */\n static { this.md = '(min-width: 992px) and (max-width: 1199px)'; }\n /**\n * The size for the `lg` breakpoint.\n * @default \"(min-width: 1200px)\"\n */\n static { this.lg = '(min-width: 1200px)'; }\n /**\n * Returns the current breakpoint.\n * @deprecated Subscribe to the `breakpointChange` observable instead.\n */\n get current() {\n return this.#currentBreakpoint();\n }\n #currentBreakpoint = toSignal(this.#breakpointObserver.breakpointChange.pipe(map((breakpoint) => toSkyMediaBreakpoints(breakpoint))), {\n initialValue: DEFAULT_BREAKPOINT,\n });\n // Keep NgZone as a constructor param so that consumer mocks don't encounter typing errors.\n constructor(_zone) { }\n ngOnDestroy() {\n this.destroy();\n }\n /**\n * @internal\n */\n destroy() {\n this.#breakpointObserver.destroy();\n }\n /**\n * Subscribes to screen size changes.\n * @param listener Specifies a function that is called when breakpoints change.\n * @deprecated Subscribe to the `breakpointChange` observable instead.\n */\n subscribe(listener) {\n return this.#breakpointObserver.breakpointChange.subscribe({\n next: (breakpoint) => {\n listener(toSkyMediaBreakpoints(breakpoint));\n },\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMediaQueryService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMediaQueryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMediaQueryService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i0.NgZone }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtcXVlcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9tZWRpYS1xdWVyeS9tZWRpYS1xdWVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUE0QixHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFOUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRzFELE1BQU0sa0JBQWtCLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxDQUFDO0FBRWxEOztHQUVHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQUN0QixtQkFBbUIsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUVsRTs7T0FFRztJQUNILElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7YUFDVyxPQUFFLEdBQUcsb0JBQW9CLEFBQXZCLENBQXdCO0lBRXhDOzs7T0FHRzthQUNXLE9BQUUsR0FBRywyQ0FBMkMsQUFBOUMsQ0FBK0M7SUFFL0Q7OztPQUdHO2FBQ1csT0FBRSxHQUFHLDRDQUE0QyxBQUEvQyxDQUFnRDtJQUVoRTs7O09BR0c7YUFDVyxPQUFFLEdBQUcscUJBQXFCLEFBQXhCLENBQXlCO0lBRXpDOzs7T0FHRztJQUNILElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxrQkFBa0IsR0FBRyxRQUFRLENBQzNCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQzVDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FDdkQsRUFDRDtRQUNFLFlBQVksRUFBRSxrQkFBa0I7S0FDakMsQ0FDRixDQUFDO0lBRUYsMkZBQTJGO0lBQzNGLFlBQVksS0FBYyxJQUFHLENBQUM7SUFFdkIsV0FBVztRQUNoQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxRQUErQjtRQUM5QyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7WUFDekQsSUFBSSxFQUFFLENBQUMsVUFBeUIsRUFBRSxFQUFFO2dCQUNsQyxRQUFRLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E1RVUsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSwgT25EZXN0cm95LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIG1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lCcmVha3BvaW50IH0gZnJvbSAnLi4vYnJlYWtwb2ludC1vYnNlcnZlci9icmVha3BvaW50JztcbmltcG9ydCB7IHRvU2t5TWVkaWFCcmVha3BvaW50cyB9IGZyb20gJy4uL2JyZWFrcG9pbnQtb2JzZXJ2ZXIvYnJlYWtwb2ludC11dGlscyc7XG5pbXBvcnQgeyBTa3lNZWRpYUJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJy4uL2JyZWFrcG9pbnQtb2JzZXJ2ZXIvbWVkaWEtYnJlYWtwb2ludC1vYnNlcnZlcic7XG5cbmltcG9ydCB7IFNreU1lZGlhQnJlYWtwb2ludHMgfSBmcm9tICcuL21lZGlhLWJyZWFrcG9pbnRzJztcbmltcG9ydCB7IFNreU1lZGlhUXVlcnlMaXN0ZW5lciB9IGZyb20gJy4vbWVkaWEtcXVlcnktbGlzdGVuZXInO1xuXG5jb25zdCBERUZBVUxUX0JSRUFLUE9JTlQgPSBTa3lNZWRpYUJyZWFrcG9pbnRzLm1kO1xuXG4vKipcbiAqIFV0aWxpdHkgdXNlZCB0byBzdWJzY3JpYmUgdG8gdmlld3BvcnQgYW5kIGNvbnRhaW5lciBicmVha3BvaW50IGNoYW5nZXMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lNZWRpYVF1ZXJ5U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5ICNicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoU2t5TWVkaWFCcmVha3BvaW50T2JzZXJ2ZXIpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBicmVha3BvaW50IGNoYW5nZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJyZWFrcG9pbnRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxTa3lCcmVha3BvaW50PiB7XG4gICAgcmV0dXJuIHRoaXMuI2JyZWFrcG9pbnRPYnNlcnZlci5icmVha3BvaW50Q2hhbmdlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxuICAgKiBAZGVmYXVsdCBcIihtYXgtd2lkdGg6IDc2N3B4KVwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHhzID0gJyhtYXgtd2lkdGg6IDc2N3B4KSc7XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxuICAgKiBAZGVmYXVsdCBcIihtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogOTkxcHgpXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc20gPSAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCknO1xuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cbiAgICogQGRlZmF1bHQgXCIobWluLXdpZHRoOiA5OTJweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweClcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtZCA9ICcobWluLXdpZHRoOiA5OTJweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCknO1xuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cbiAgICogQGRlZmF1bHQgXCIobWluLXdpZHRoOiAxMjAwcHgpXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbGcgPSAnKG1pbi13aWR0aDogMTIwMHB4KSc7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgYnJlYWtwb2ludC5cbiAgICogQGRlcHJlY2F0ZWQgU3Vic2NyaWJlIHRvIHRoZSBgYnJlYWtwb2ludENoYW5nZWAgb2JzZXJ2YWJsZSBpbnN0ZWFkLlxuICAgKi9cbiAgcHVibGljIGdldCBjdXJyZW50KCk6IFNreU1lZGlhQnJlYWtwb2ludHMge1xuICAgIHJldHVybiB0aGlzLiNjdXJyZW50QnJlYWtwb2ludCgpO1xuICB9XG5cbiAgI2N1cnJlbnRCcmVha3BvaW50ID0gdG9TaWduYWwoXG4gICAgdGhpcy4jYnJlYWtwb2ludE9ic2VydmVyLmJyZWFrcG9pbnRDaGFuZ2UucGlwZShcbiAgICAgIG1hcCgoYnJlYWtwb2ludCkgPT4gdG9Ta3lNZWRpYUJyZWFrcG9pbnRzKGJyZWFrcG9pbnQpKSxcbiAgICApLFxuICAgIHtcbiAgICAgIGluaXRpYWxWYWx1ZTogREVGQVVMVF9CUkVBS1BPSU5ULFxuICAgIH0sXG4gICk7XG5cbiAgLy8gS2VlcCBOZ1pvbmUgYXMgYSBjb25zdHJ1Y3RvciBwYXJhbSBzbyB0aGF0IGNvbnN1bWVyIG1vY2tzIGRvbid0IGVuY291bnRlciB0eXBpbmcgZXJyb3JzLlxuICBjb25zdHJ1Y3Rvcihfem9uZT86IE5nWm9uZSkge31cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNicmVha3BvaW50T2JzZXJ2ZXIuZGVzdHJveSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZXMgdG8gc2NyZWVuIHNpemUgY2hhbmdlcy5cbiAgICogQHBhcmFtIGxpc3RlbmVyIFNwZWNpZmllcyBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gYnJlYWtwb2ludHMgY2hhbmdlLlxuICAgKiBAZGVwcmVjYXRlZCBTdWJzY3JpYmUgdG8gdGhlIGBicmVha3BvaW50Q2hhbmdlYCBvYnNlcnZhYmxlIGluc3RlYWQuXG4gICAqL1xuICBwdWJsaWMgc3Vic2NyaWJlKGxpc3RlbmVyOiBTa3lNZWRpYVF1ZXJ5TGlzdGVuZXIpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLiNicmVha3BvaW50T2JzZXJ2ZXIuYnJlYWtwb2ludENoYW5nZS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGJyZWFrcG9pbnQ6IFNreUJyZWFrcG9pbnQpID0+IHtcbiAgICAgICAgbGlzdGVuZXIodG9Ta3lNZWRpYUJyZWFrcG9pbnRzKGJyZWFrcG9pbnQpKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { inject } from '@angular/core';\nimport { SkyMediaQueryService } from '../media-query/media-query.service';\nimport { SKY_BREAKPOINT_OBSERVER } from './breakpoint-observer.token';\nimport { SkyMediaBreakpointObserver } from './media-breakpoint-observer';\n/**\n * Overrides the default media breakpoint observer with the given observer.\n * @internal\n */\nexport function provideSkyBreakpointObserver(observer) {\n return [\n SkyMediaQueryService,\n observer,\n {\n provide: SkyMediaBreakpointObserver,\n useFactory() {\n return (\n // Yield to the injection token, if it's defined.\n inject(SKY_BREAKPOINT_OBSERVER, { optional: true }) ??\n inject(observer));\n },\n },\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1icmVha3BvaW50LW9ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2JyZWFrcG9pbnQtb2JzZXJ2ZXIvcHJvdmlkZS1icmVha3BvaW50LW9ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRzFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXpFOzs7R0FHRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsUUFBcUM7SUFFckMsT0FBTztRQUNMLG9CQUFvQjtRQUNwQixRQUFRO1FBQ1I7WUFDRSxPQUFPLEVBQUUsMEJBQTBCO1lBQ25DLFVBQVU7Z0JBQ1IsT0FBTztnQkFDTCxpREFBaUQ7Z0JBQ2pELE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztvQkFDbkQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUNqQixDQUFDO1lBQ0osQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciwgVHlwZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreU1lZGlhUXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi4vbWVkaWEtcXVlcnkvbWVkaWEtcXVlcnkuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreUJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJy4vYnJlYWtwb2ludC1vYnNlcnZlcic7XG5pbXBvcnQgeyBTS1lfQlJFQUtQT0lOVF9PQlNFUlZFUiB9IGZyb20gJy4vYnJlYWtwb2ludC1vYnNlcnZlci50b2tlbic7XG5pbXBvcnQgeyBTa3lNZWRpYUJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJy4vbWVkaWEtYnJlYWtwb2ludC1vYnNlcnZlcic7XG5cbi8qKlxuICogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IG1lZGlhIGJyZWFrcG9pbnQgb2JzZXJ2ZXIgd2l0aCB0aGUgZ2l2ZW4gb2JzZXJ2ZXIuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVTa3lCcmVha3BvaW50T2JzZXJ2ZXIoXG4gIG9ic2VydmVyOiBUeXBlPFNreUJyZWFrcG9pbnRPYnNlcnZlcj4sXG4pOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICBTa3lNZWRpYVF1ZXJ5U2VydmljZSxcbiAgICBvYnNlcnZlcixcbiAgICB7XG4gICAgICBwcm92aWRlOiBTa3lNZWRpYUJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICAgIHVzZUZhY3RvcnkoKTogU2t5QnJlYWtwb2ludE9ic2VydmVyIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvLyBZaWVsZCB0byB0aGUgaW5qZWN0aW9uIHRva2VuLCBpZiBpdCdzIGRlZmluZWQuXG4gICAgICAgICAgaW5qZWN0KFNLWV9CUkVBS1BPSU5UX09CU0VSVkVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/XG4gICAgICAgICAgaW5qZWN0KG9ic2VydmVyKVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9LFxuICBdO1xufVxuIl19","import { Directive, ElementRef, Injector, inject } from '@angular/core';\nimport { SkyCoreAdapterService } from '../adapter-service/adapter.service';\nimport { SkyMediaQueryService } from '../media-query/media-query.service';\nimport { SkyContainerBreakpointObserver } from './container-breakpoint-observer';\nimport { provideSkyBreakpointObserver } from './provide-breakpoint-observer';\nimport * as i0 from \"@angular/core\";\n/**\n * Overrides the `SkyMediaQueryService` to emit breakpoint changes when the host\n * container is resized. This directive also adds SKY UX CSS classes to the\n * host element to allow for responsive styles.\n */\nexport class SkyResponsiveHostDirective {\n #injector = inject(Injector);\n #mediaSvc = inject(SkyMediaQueryService);\n /**\n * Emits when the breakpoint changes.\n */\n get breakpointChange() {\n return this.#mediaSvc.breakpointChange;\n }\n /**\n * The injector of the responsive host. Useful when displaying child components\n * via `ngTemplateOutlet`.\n * @example```\n * <my-container #responsiveHost=\"skyResponsiveHost\">\n * <ng-container\n * [ngTemplateOutlet]=\"myTemplate\"\n * [ngTemplateOutletInjector]=\"responsiveHost.injector\"\n * />\n * </my-container>\n * ```\n */\n get injector() {\n return this.#injector;\n }\n constructor() {\n const adapter = inject(SkyCoreAdapterService);\n const elementRef = inject(ElementRef);\n this.breakpointChange.subscribe((breakpoint) => {\n adapter.setResponsiveContainerClass(elementRef, breakpoint);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyResponsiveHostDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyResponsiveHostDirective, isStandalone: true, selector: \"[skyResponsiveHost]\", providers: [provideSkyBreakpointObserver(SkyContainerBreakpointObserver)], exportAs: [\"skyResponsiveHost\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyResponsiveHostDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'skyResponsiveHost',\n providers: [provideSkyBreakpointObserver(SkyContainerBreakpointObserver)],\n selector: '[skyResponsiveHost]',\n standalone: true,\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2l2ZS1ob3N0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9icmVha3BvaW50LW9ic2VydmVyL3Jlc3BvbnNpdmUtaG9zdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUcxRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFN0U7Ozs7R0FJRztBQU9ILE1BQU0sT0FBTywwQkFBMEI7SUFDNUIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QixTQUFTLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFbEQ7O09BRUc7SUFDSCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7UUFDRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM5QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQzdDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWxDVSwwQkFBMEI7a0dBQTFCLDBCQUEwQixrRUFKMUIsQ0FBQyw0QkFBNEIsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDOzsyRkFJOUQsMEJBQTBCO2tCQU50QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFNBQVMsRUFBRSxDQUFDLDRCQUE0QixDQUFDLDhCQUE4QixDQUFDLENBQUM7b0JBQ3pFLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUNvcmVBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uL2FkYXB0ZXItc2VydmljZS9hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5TWVkaWFRdWVyeVNlcnZpY2UgfSBmcm9tICcuLi9tZWRpYS1xdWVyeS9tZWRpYS1xdWVyeS5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU2t5QnJlYWtwb2ludCB9IGZyb20gJy4vYnJlYWtwb2ludCc7XG5pbXBvcnQgeyBTa3lDb250YWluZXJCcmVha3BvaW50T2JzZXJ2ZXIgfSBmcm9tICcuL2NvbnRhaW5lci1icmVha3BvaW50LW9ic2VydmVyJztcbmltcG9ydCB7IHByb3ZpZGVTa3lCcmVha3BvaW50T2JzZXJ2ZXIgfSBmcm9tICcuL3Byb3ZpZGUtYnJlYWtwb2ludC1vYnNlcnZlcic7XG5cbi8qKlxuICogT3ZlcnJpZGVzIHRoZSBgU2t5TWVkaWFRdWVyeVNlcnZpY2VgIHRvIGVtaXQgYnJlYWtwb2ludCBjaGFuZ2VzIHdoZW4gdGhlIGhvc3RcbiAqIGNvbnRhaW5lciBpcyByZXNpemVkLiBUaGlzIGRpcmVjdGl2ZSBhbHNvIGFkZHMgU0tZIFVYIENTUyBjbGFzc2VzIHRvIHRoZVxuICogaG9zdCBlbGVtZW50IHRvIGFsbG93IGZvciByZXNwb25zaXZlIHN0eWxlcy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIGV4cG9ydEFzOiAnc2t5UmVzcG9uc2l2ZUhvc3QnLFxuICBwcm92aWRlcnM6IFtwcm92aWRlU2t5QnJlYWtwb2ludE9ic2VydmVyKFNreUNvbnRhaW5lckJyZWFrcG9pbnRPYnNlcnZlcildLFxuICBzZWxlY3RvcjogJ1tza3lSZXNwb25zaXZlSG9zdF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSZXNwb25zaXZlSG9zdERpcmVjdGl2ZSB7XG4gIHJlYWRvbmx5ICNpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHJlYWRvbmx5ICNtZWRpYVN2YyA9IGluamVjdChTa3lNZWRpYVF1ZXJ5U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGJyZWFrcG9pbnQgY2hhbmdlcy5cbiAgICovXG4gIHB1YmxpYyBnZXQgYnJlYWtwb2ludENoYW5nZSgpOiBPYnNlcnZhYmxlPFNreUJyZWFrcG9pbnQ+IHtcbiAgICByZXR1cm4gdGhpcy4jbWVkaWFTdmMuYnJlYWtwb2ludENoYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5qZWN0b3Igb2YgdGhlIHJlc3BvbnNpdmUgaG9zdC4gVXNlZnVsIHdoZW4gZGlzcGxheWluZyBjaGlsZCBjb21wb25lbnRzXG4gICAqIHZpYSBgbmdUZW1wbGF0ZU91dGxldGAuXG4gICAqIEBleGFtcGxlYGBgXG4gICAqIDxteS1jb250YWluZXIgI3Jlc3BvbnNpdmVIb3N0PVwic2t5UmVzcG9uc2l2ZUhvc3RcIj5cbiAgICogICA8bmctY29udGFpbmVyXG4gICAqICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJteVRlbXBsYXRlXCJcbiAgICogICAgIFtuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3JdPVwicmVzcG9uc2l2ZUhvc3QuaW5qZWN0b3JcIlxuICAgKiAgIC8+XG4gICAqIDwvbXktY29udGFpbmVyPlxuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBnZXQgaW5qZWN0b3IoKTogSW5qZWN0b3Ige1xuICAgIHJldHVybiB0aGlzLiNpbmplY3RvcjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IGFkYXB0ZXIgPSBpbmplY3QoU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlKTtcbiAgICBjb25zdCBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgdGhpcy5icmVha3BvaW50Q2hhbmdlLnN1YnNjcmliZSgoYnJlYWtwb2ludCkgPT4ge1xuICAgICAgYWRhcHRlci5zZXRSZXNwb25zaXZlQ29udGFpbmVyQ2xhc3MoZWxlbWVudFJlZiwgYnJlYWtwb2ludCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated The `SkyMediaQueryService` no longer needs the `SkyMediaQueryModule`.\n * The `SkyMediaQueryModule` can be removed from your project.\n */\nexport class SkyMediaQueryModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMediaQueryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMediaQueryModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMediaQueryModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMediaQueryModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtcXVlcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL21lZGlhLXF1ZXJ5L21lZGlhLXF1ZXJ5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV6Qzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQjsrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixRQUFRO21CQUFDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFRoZSBgU2t5TWVkaWFRdWVyeVNlcnZpY2VgIG5vIGxvbmdlciBuZWVkcyB0aGUgYFNreU1lZGlhUXVlcnlNb2R1bGVgLlxuICogVGhlIGBTa3lNZWRpYVF1ZXJ5TW9kdWxlYCBjYW4gYmUgcmVtb3ZlZCBmcm9tIHlvdXIgcHJvamVjdC5cbiAqL1xuQE5nTW9kdWxlKHt9KVxuZXhwb3J0IGNsYXNzIFNreU1lZGlhUXVlcnlNb2R1bGUge31cbiJdfQ==","/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-core' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport { SkyI18nModule, SkyLibResourcesService, } from '@skyux/i18n';\nimport * as i0 from \"@angular/core\";\nconst RESOURCES = {\n 'EN-US': {\n skyux_numeric_billions_symbol: { message: 'B' },\n skyux_numeric_millions_symbol: { message: 'M' },\n skyux_numeric_thousands_symbol: { message: 'K' },\n skyux_numeric_trillions_symbol: { message: 'T' },\n },\n 'FR-CA': {\n skyux_numeric_billions_symbol: { message: 'G' },\n skyux_numeric_millions_symbol: { message: 'M' },\n skyux_numeric_thousands_symbol: { message: 'K' },\n skyux_numeric_trillions_symbol: { message: 'T' },\n },\n};\nSkyLibResourcesService.addResources(RESOURCES);\n/**\n * Import into any component library module that needs to use resource strings.\n */\nexport class SkyCoreResourcesModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCoreResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCoreResourcesModule, exports: [SkyI18nModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCoreResourcesModule, imports: [SkyI18nModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyCoreResourcesModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [SkyI18nModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWNvcmUtcmVzb3VyY2VzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9zaGFyZWQvc2t5LWNvcmUtcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFDMUI7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxhQUFhLEVBRWIsc0JBQXNCLEdBQ3ZCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBb0M7SUFDakQsT0FBTyxFQUFFO1FBQ1AsNkJBQTZCLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQy9DLDZCQUE2QixFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUMvQyw4QkFBOEIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDaEQsOEJBQThCLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO0tBQ2pEO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsNkJBQTZCLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQy9DLDZCQUE2QixFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUMvQyw4QkFBOEIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDaEQsOEJBQThCLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO0tBQ2pEO0NBQ0YsQ0FBQztBQUVGLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUUvQzs7R0FFRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7OEdBQXRCLHNCQUFzQjsrR0FBdEIsc0JBQXNCLFlBRnZCLGFBQWE7K0dBRVosc0JBQXNCLFlBRnZCLGFBQWE7OzJGQUVaLHNCQUFzQjtrQkFIbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbi8qKlxuICogTk9USUNFOiBETyBOT1QgTU9ESUZZIFRISVMgRklMRSFcbiAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgd2VyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieVxuICogdGhlICduZyBnZW5lcmF0ZSBAc2t5dXgvaTE4bjpsaWItcmVzb3VyY2VzLW1vZHVsZSBsaWIvbW9kdWxlcy9zaGFyZWQvc2t5LWNvcmUnIHNjaGVtYXRpYy5cbiAqIFRvIHVwZGF0ZSB0aGlzIGZpbGUsIHNpbXBseSByZXJ1biB0aGUgY29tbWFuZC5cbiAqL1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUkxOG5Nb2R1bGUsXG4gIFNreUxpYlJlc291cmNlcyxcbiAgU2t5TGliUmVzb3VyY2VzU2VydmljZSxcbn0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5jb25zdCBSRVNPVVJDRVM6IFJlY29yZDxzdHJpbmcsIFNreUxpYlJlc291cmNlcz4gPSB7XG4gICdFTi1VUyc6IHtcbiAgICBza3l1eF9udW1lcmljX2JpbGxpb25zX3N5bWJvbDogeyBtZXNzYWdlOiAnQicgfSxcbiAgICBza3l1eF9udW1lcmljX21pbGxpb25zX3N5bWJvbDogeyBtZXNzYWdlOiAnTScgfSxcbiAgICBza3l1eF9udW1lcmljX3Rob3VzYW5kc19zeW1ib2w6IHsgbWVzc2FnZTogJ0snIH0sXG4gICAgc2t5dXhfbnVtZXJpY190cmlsbGlvbnNfc3ltYm9sOiB7IG1lc3NhZ2U6ICdUJyB9LFxuICB9LFxuICAnRlItQ0EnOiB7XG4gICAgc2t5dXhfbnVtZXJpY19iaWxsaW9uc19zeW1ib2w6IHsgbWVzc2FnZTogJ0cnIH0sXG4gICAgc2t5dXhfbnVtZXJpY19taWxsaW9uc19zeW1ib2w6IHsgbWVzc2FnZTogJ00nIH0sXG4gICAgc2t5dXhfbnVtZXJpY190aG91c2FuZHNfc3ltYm9sOiB7IG1lc3NhZ2U6ICdLJyB9LFxuICAgIHNreXV4X251bWVyaWNfdHJpbGxpb25zX3N5bWJvbDogeyBtZXNzYWdlOiAnVCcgfSxcbiAgfSxcbn07XG5cblNreUxpYlJlc291cmNlc1NlcnZpY2UuYWRkUmVzb3VyY2VzKFJFU09VUkNFUyk7XG5cbi8qKlxuICogSW1wb3J0IGludG8gYW55IGNvbXBvbmVudCBsaWJyYXJ5IG1vZHVsZSB0aGF0IG5lZWRzIHRvIHVzZSByZXNvdXJjZSBzdHJpbmdzLlxuICovXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbU2t5STE4bk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUNvcmVSZXNvdXJjZXNNb2R1bGUge31cbiJdfQ==","import { SkyAppFormat } from '../format/app-format';\nimport { SkyLogService } from '../log/log.service';\n/**\n * Provides arguments for the number to format.\n * @deprecated Use the `SkyNumericOptions` interface instead.\n * @internal\n */\nexport class NumericOptions {\n constructor() {\n this.digits = 1;\n this.format = 'number';\n this.currencySign = 'standard';\n this.iso = 'USD';\n this.truncate = true;\n this.truncateAfter = 1000;\n const logService = new SkyLogService(new SkyAppFormat());\n logService.deprecated('NumericOptions', {\n deprecationMajorVersion: 7,\n moreInfoUrl: 'https://developer.blackbaud.com/skyux/components/numeric',\n replacementRecommendation: 'Use the `SkyNumericOptions` interface instead.',\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL251bWVyaWMvbnVtZXJpYy5vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUF1RG5EOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQW1CekI7UUFsQk8sV0FBTSxHQUFZLENBQUMsQ0FBQztRQUVwQixXQUFNLEdBQVksUUFBUSxDQUFDO1FBRTNCLGlCQUFZLEdBQStCLFVBQVUsQ0FBQztRQUl0RCxRQUFHLEdBQVksS0FBSyxDQUFDO1FBTXJCLGFBQVEsR0FBYSxJQUFJLENBQUM7UUFFMUIsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFHbkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRXpELFVBQVUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7WUFDdEMsdUJBQXVCLEVBQUUsQ0FBQztZQUMxQixXQUFXLEVBQUUsMERBQTBEO1lBQ3ZFLHlCQUF5QixFQUN2QixnREFBZ0Q7U0FDbkQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5QXBwRm9ybWF0IH0gZnJvbSAnLi4vZm9ybWF0L2FwcC1mb3JtYXQnO1xuaW1wb3J0IHsgU2t5TG9nU2VydmljZSB9IGZyb20gJy4uL2xvZy9sb2cuc2VydmljZSc7XG5cbi8qKlxuICogUHJvdmlkZXMgYXJndW1lbnRzIGZvciB0aGUgbnVtYmVyIHRvIGZvcm1hdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lOdW1lcmljT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBzZXBhcmF0b3IuXG4gICAqL1xuICBkaWdpdHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgdG8gZm9ybWF0IHRoZSBudW1iZXIuIE9wdGlvbnMgYXJlIGBjdXJyZW5jeWAgb3IgYG51bWJlcmAuXG4gICAqL1xuICBmb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgZm9ybWF0IG9mIHRoZSBjdXJyZW5jeS5cbiAgICovXG4gIGN1cnJlbmN5U2lnbj86ICdhY2NvdW50aW5nJyB8ICdzdGFuZGFyZCc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgZGlzcGxheSBvZiB0aGUgY3VycmVuY3kuIERlZmF1bHRzIHRvICdzeW1ib2wnLlxuICAgKi9cbiAgY3VycmVuY3lEaXNwbGF5PzogJ2NvZGUnIHwgJ3N5bWJvbCcgfCAnbmFycm93U3ltYm9sJyB8ICduYW1lJztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBJU080MjE3IGN1cnJlbmN5IGNvZGUgdG8gdXNlIGZvciBjdXJyZW5jeSBmb3JtYXR0aW5nLlxuICAgKi9cbiAgaXNvPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGxvY2FsZSBjb2RlIHRvIHVzZSB3aGVuIGZvcm1hdHRpbmcuXG4gICAqL1xuICBsb2NhbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHNlcGFyYXRvci4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXNcbiAgICogd2hlbiB0aGUgYHRydW5jYXRlYCBwcm9wZXJ0eSBpcyBzZXQgdG8gYGZhbHNlYC4gSWYgYGRpZ2l0c2Agc3BlY2lmaWVzIGEgbWF4aW11bSBudW1iZXIgb2ZcbiAgICogZGlnaXRzLCB0aGVuIGBtaW5EaWdpdHNgIG11c3QgYmUgbGVzcyB0aGFuIHRoYXQgdmFsdWUuXG4gICAqL1xuICBtaW5EaWdpdHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHNob3J0ZW4gbnVtYmVycyB0byByb3VuZGVkIG51bWJlcnMgYW5kIGFiYnJldmlhdGlvbiBjaGFyYWN0ZXJzXG4gICAqIHN1Y2ggYXMgSyBmb3IgdGhvdXNhbmRzLCBNIGZvciBtaWxsaW9ucywgQiBmb3IgYmlsbGlvbnMsIGFuZCBUIGZvciB0cmlsbGlvbnMuXG4gICAqL1xuICB0cnVuY2F0ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWluaW11bSB2YWx1ZSBhdCB3aGljaCBudW1iZXJzIGFyZSBzaG9ydGVuZWQgdG8gcm91bmRlZCBudW1iZXJzIGFuZCBhYmJyZXZpYXRpb24gY2hhcmFjdGVycy4gVmFsdWVzIGxlc3MgdGhhbiBgMTAwMGAgYXJlIG5vdCB0cnVuY2F0ZWQuXG4gICAqL1xuICB0cnVuY2F0ZUFmdGVyPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGFyZ3VtZW50cyBmb3IgdGhlIG51bWJlciB0byBmb3JtYXQuXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGBTa3lOdW1lcmljT3B0aW9uc2AgaW50ZXJmYWNlIGluc3RlYWQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIE51bWVyaWNPcHRpb25zIGltcGxlbWVudHMgU2t5TnVtZXJpY09wdGlvbnMge1xuICBwdWJsaWMgZGlnaXRzPzogbnVtYmVyID0gMTtcblxuICBwdWJsaWMgZm9ybWF0Pzogc3RyaW5nID0gJ251bWJlcic7XG5cbiAgcHVibGljIGN1cnJlbmN5U2lnbj86ICdhY2NvdW50aW5nJyB8ICdzdGFuZGFyZCcgPSAnc3RhbmRhcmQnO1xuXG4gIHB1YmxpYyBjdXJyZW5jeURpc3BsYXk/OiAnY29kZScgfCAnc3ltYm9sJyB8ICduYXJyb3dTeW1ib2wnIHwgJ25hbWUnO1xuXG4gIHB1YmxpYyBpc28/OiBzdHJpbmcgPSAnVVNEJztcblxuICBwdWJsaWMgbG9jYWxlPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBtaW5EaWdpdHM/OiBudW1iZXI7XG5cbiAgcHVibGljIHRydW5jYXRlPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHVibGljIHRydW5jYXRlQWZ0ZXI/OiBudW1iZXIgPSAxMDAwO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IGxvZ1NlcnZpY2UgPSBuZXcgU2t5TG9nU2VydmljZShuZXcgU2t5QXBwRm9ybWF0KCkpO1xuXG4gICAgbG9nU2VydmljZS5kZXByZWNhdGVkKCdOdW1lcmljT3B0aW9ucycsIHtcbiAgICAgIGRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uOiA3LFxuICAgICAgbW9yZUluZm9Vcmw6ICdodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvbnVtZXJpYycsXG4gICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOlxuICAgICAgICAnVXNlIHRoZSBgU2t5TnVtZXJpY09wdGlvbnNgIGludGVyZmFjZSBpbnN0ZWFkLicsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","/* eslint-disable eqeqeq */\n// This file is mostly ported from the Angular 4.x NumberPipe in order to maintain the old\n// behavior of using the `Intl` API for formatting numbers rather than having to register every\n// supported locale.\n// https://github.com/angular/angular/blob/4.4.x/packages/common/src/pipes/number_pipe.ts\nimport { SkyIntlNumberFormatStyle, SkyIntlNumberFormatter } from '@skyux/i18n';\nfunction isNumeric(value) {\n return !isNaN(value - parseFloat(value));\n}\nfunction parseIntAutoRadix(text) {\n const result = parseInt(text, 10);\n /* istanbul ignore next */\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\nexport class SkyNumberFormatUtility {\n static { this._NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/; }\n static formatNumber(locale, value, style, digits, currency = null, currencyDisplay = 'code', currencySign) {\n if (value == null) {\n return null;\n }\n // Convert strings to numbers\n value = typeof value === 'string' && isNumeric(value) ? +value : value;\n if (typeof value !== 'number') {\n throw Error(`SkyInvalidPipeArgument: '${value}'`);\n }\n let minInt = undefined;\n let minFraction = undefined;\n let maxFraction = undefined;\n if (style !== SkyIntlNumberFormatStyle.Currency) {\n // rely on Intl default for currency\n minInt = 1;\n minFraction = 0;\n maxFraction = 3;\n }\n if (digits) {\n const parts = digits.match(this._NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digits} is not a valid digit info for number pipes`);\n }\n /* istanbul ignore else */\n if (parts[1] != null) {\n // min integer digits\n minInt = parseIntAutoRadix(parts[1]);\n }\n /* istanbul ignore else */\n if (parts[3] != null) {\n // min fraction digits\n minFraction = parseIntAutoRadix(parts[3]);\n }\n /* istanbul ignore else */\n if (parts[5] != null) {\n // max fraction digits\n maxFraction = parseIntAutoRadix(parts[5]);\n }\n }\n return SkyIntlNumberFormatter.format(value, locale, style, {\n minimumIntegerDigits: minInt,\n minimumFractionDigits: minFraction,\n maximumFractionDigits: maxFraction,\n currency: currency,\n currencyDisplay: currencyDisplay,\n currencySign: currencySign,\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZvcm1hdC11dGlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3NoYXJlZC9udW1iZXItZm9ybWF0L251bWJlci1mb3JtYXQtdXRpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkI7QUFDM0IsMEZBQTBGO0FBQzFGLCtGQUErRjtBQUMvRixvQkFBb0I7QUFDcEIseUZBQXlGO0FBQ3pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUvRSxTQUFTLFNBQVMsQ0FBQyxLQUFVO0lBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQVk7SUFDckMsTUFBTSxNQUFNLEdBQVcsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUUxQywwQkFBMEI7SUFDMUIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxPQUFPLHNCQUFzQjthQUNsQiwwQkFBcUIsR0FBRyw2QkFBNkIsQ0FBQztJQUU5RCxNQUFNLENBQUMsWUFBWSxDQUN4QixNQUFjLEVBQ2QsS0FBc0IsRUFDdEIsS0FBK0IsRUFDL0IsTUFBc0IsRUFDdEIsV0FBMEIsSUFBSSxFQUM5QixrQkFBK0QsTUFBTSxFQUNyRSxZQUF3QztRQUV4QyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCw2QkFBNkI7UUFDN0IsS0FBSyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdkUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixNQUFNLEtBQUssQ0FBQyw0QkFBNEIsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsSUFBSSxNQUFNLEdBQXVCLFNBQVMsQ0FBQztRQUMzQyxJQUFJLFdBQVcsR0FBdUIsU0FBUyxDQUFDO1FBQ2hELElBQUksV0FBVyxHQUF1QixTQUFTLENBQUM7UUFDaEQsSUFBSSxLQUFLLEtBQUssd0JBQXdCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEQsb0NBQW9DO1lBQ3BDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDWCxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDbEIsQ0FBQztRQUVELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBRXZELElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsTUFBTSw2Q0FBNkMsQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFFRCwwQkFBMEI7WUFDMUIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLHFCQUFxQjtnQkFDckIsTUFBTSxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFFRCwwQkFBMEI7WUFDMUIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLHNCQUFzQjtnQkFDdEIsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFFRCwwQkFBMEI7WUFDMUIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLHNCQUFzQjtnQkFDdEIsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsS0FBZSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDbkUsb0JBQW9CLEVBQUUsTUFBTTtZQUM1QixxQkFBcUIsRUFBRSxXQUFXO1lBQ2xDLHFCQUFxQixFQUFFLFdBQVc7WUFDbEMsUUFBUSxFQUFFLFFBQVE7WUFDbEIsZUFBZSxFQUFFLGVBQWU7WUFDaEMsWUFBWSxFQUFFLFlBQVk7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSAqL1xuLy8gVGhpcyBmaWxlIGlzIG1vc3RseSBwb3J0ZWQgZnJvbSB0aGUgQW5ndWxhciA0LnggTnVtYmVyUGlwZSBpbiBvcmRlciB0byBtYWludGFpbiB0aGUgb2xkXG4vLyBiZWhhdmlvciBvZiB1c2luZyB0aGUgYEludGxgIEFQSSBmb3IgZm9ybWF0dGluZyBudW1iZXJzIHJhdGhlciB0aGFuIGhhdmluZyB0byByZWdpc3RlciBldmVyeVxuLy8gc3VwcG9ydGVkIGxvY2FsZS5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi80LjQueC9wYWNrYWdlcy9jb21tb24vc3JjL3BpcGVzL251bWJlcl9waXBlLnRzXG5pbXBvcnQgeyBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUsIFNreUludGxOdW1iZXJGb3JtYXR0ZXIgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmZ1bmN0aW9uIGlzTnVtZXJpYyh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiAhaXNOYU4odmFsdWUgLSBwYXJzZUZsb2F0KHZhbHVlKSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW50QXV0b1JhZGl4KHRleHQ6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IHJlc3VsdDogbnVtYmVyID0gcGFyc2VJbnQodGV4dCwgMTApO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmIChpc05hTihyZXN1bHQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGludGVnZXIgbGl0ZXJhbCB3aGVuIHBhcnNpbmcgJyArIHRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGNsYXNzIFNreU51bWJlckZvcm1hdFV0aWxpdHkge1xuICBwcml2YXRlIHN0YXRpYyBfTlVNQkVSX0ZPUk1BVF9SRUdFWFAgPSAvXihcXGQrKT9cXC4oKFxcZCspKC0oXFxkKykpPyk/JC87XG5cbiAgcHVibGljIHN0YXRpYyBmb3JtYXROdW1iZXIoXG4gICAgbG9jYWxlOiBzdHJpbmcsXG4gICAgdmFsdWU6IG51bWJlciB8IHN0cmluZyxcbiAgICBzdHlsZTogU2t5SW50bE51bWJlckZvcm1hdFN0eWxlLFxuICAgIGRpZ2l0cz86IHN0cmluZyB8IG51bGwsXG4gICAgY3VycmVuY3k6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGN1cnJlbmN5RGlzcGxheTogJ2NvZGUnIHwgJ3N5bWJvbCcgfCAnbmFycm93U3ltYm9sJyB8ICduYW1lJyA9ICdjb2RlJyxcbiAgICBjdXJyZW5jeVNpZ24/OiAnYWNjb3VudGluZycgfCAnc3RhbmRhcmQnLFxuICApOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCBzdHJpbmdzIHRvIG51bWJlcnNcbiAgICB2YWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgaXNOdW1lcmljKHZhbHVlKSA/ICt2YWx1ZSA6IHZhbHVlO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBFcnJvcihgU2t5SW52YWxpZFBpcGVBcmd1bWVudDogJyR7dmFsdWV9J2ApO1xuICAgIH1cblxuICAgIGxldCBtaW5JbnQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBsZXQgbWluRnJhY3Rpb246IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBsZXQgbWF4RnJhY3Rpb246IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAoc3R5bGUgIT09IFNreUludGxOdW1iZXJGb3JtYXRTdHlsZS5DdXJyZW5jeSkge1xuICAgICAgLy8gcmVseSBvbiBJbnRsIGRlZmF1bHQgZm9yIGN1cnJlbmN5XG4gICAgICBtaW5JbnQgPSAxO1xuICAgICAgbWluRnJhY3Rpb24gPSAwO1xuICAgICAgbWF4RnJhY3Rpb24gPSAzO1xuICAgIH1cblxuICAgIGlmIChkaWdpdHMpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gZGlnaXRzLm1hdGNoKHRoaXMuX05VTUJFUl9GT1JNQVRfUkVHRVhQKTtcblxuICAgICAgaWYgKHBhcnRzID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtkaWdpdHN9IGlzIG5vdCBhIHZhbGlkIGRpZ2l0IGluZm8gZm9yIG51bWJlciBwaXBlc2ApO1xuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHBhcnRzWzFdICE9IG51bGwpIHtcbiAgICAgICAgLy8gbWluIGludGVnZXIgZGlnaXRzXG4gICAgICAgIG1pbkludCA9IHBhcnNlSW50QXV0b1JhZGl4KHBhcnRzWzFdKTtcbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwYXJ0c1szXSAhPSBudWxsKSB7XG4gICAgICAgIC8vIG1pbiBmcmFjdGlvbiBkaWdpdHNcbiAgICAgICAgbWluRnJhY3Rpb24gPSBwYXJzZUludEF1dG9SYWRpeChwYXJ0c1szXSk7XG4gICAgICB9XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocGFydHNbNV0gIT0gbnVsbCkge1xuICAgICAgICAvLyBtYXggZnJhY3Rpb24gZGlnaXRzXG4gICAgICAgIG1heEZyYWN0aW9uID0gcGFyc2VJbnRBdXRvUmFkaXgocGFydHNbNV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBTa3lJbnRsTnVtYmVyRm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSBhcyBudW1iZXIsIGxvY2FsZSwgc3R5bGUsIHtcbiAgICAgIG1pbmltdW1JbnRlZ2VyRGlnaXRzOiBtaW5JbnQsXG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG1pbkZyYWN0aW9uLFxuICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBtYXhGcmFjdGlvbixcbiAgICAgIGN1cnJlbmN5OiBjdXJyZW5jeSxcbiAgICAgIGN1cnJlbmN5RGlzcGxheTogY3VycmVuY3lEaXNwbGF5LFxuICAgICAgY3VycmVuY3lTaWduOiBjdXJyZW5jeVNpZ24sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { SkyIntlNumberFormatStyle } from '@skyux/i18n';\nimport { SkyNumberFormatUtility } from '../shared/number-format/number-format-utility';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/i18n\";\nexport class SkyNumericService {\n #resourcesSvc;\n #symbolIndex;\n constructor(resourcesSvc) {\n /**\n * The browser's current locale.\n * @internal\n */\n this.currentLocale = 'en-US';\n /**\n * @internal\n */\n this.shortSymbol = '';\n this.#resourcesSvc = resourcesSvc;\n this.#symbolIndex = [\n { value: 1e12, label: this.#getSymbol('skyux_numeric_trillions_symbol') },\n { value: 1e9, label: this.#getSymbol('skyux_numeric_billions_symbol') },\n { value: 1e6, label: this.#getSymbol('skyux_numeric_millions_symbol') },\n { value: 1e3, label: this.#getSymbol('skyux_numeric_thousands_symbol') },\n ];\n }\n /**\n * Formats a number based on the provided options.\n * @param value The number to format.\n * @param options Format options.\n */\n formatNumber(value, options) {\n if (value === undefined || value === null || isNaN(value)) {\n return '';\n }\n const numericOptions = {\n digits: 0,\n format: 'number',\n currencySign: 'standard',\n iso: 'USD',\n truncateAfter: 1000,\n ...options,\n };\n const decimalPlaceRegExp = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n const locale = numericOptions.locale || this.currentLocale;\n const digits = numericOptions.digits || 0;\n // Get the symbol for the number after rounding, since rounding could push the number\n // into a different symbol range.\n let roundedNumber = this.#roundNumber(value, digits);\n const roundedNumberAbs = Math.abs(roundedNumber);\n let suffix = '';\n for (let i = 0; i < this.#symbolIndex.length; i++) {\n let symbol = this.#symbolIndex[i];\n if (numericOptions.truncate &&\n numericOptions.truncateAfter !== undefined &&\n roundedNumberAbs >= numericOptions.truncateAfter &&\n roundedNumberAbs >= symbol.value) {\n roundedNumber = this.#roundNumber(value / symbol.value, digits);\n if (Math.abs(roundedNumber) === 1000 && i > 0) {\n // Rounding caused the number to cross into the range of the next symbol.\n symbol = this.#symbolIndex[i - 1];\n roundedNumber /= 1000;\n }\n suffix = symbol.label;\n break;\n }\n }\n let output = roundedNumber.toString().replace(decimalPlaceRegExp, '$1') + suffix;\n this.#storeShortenSymbol(output);\n let digitsFormatted;\n let isDecimal = false;\n // Checks the string entered for format. Using toLowerCase to ignore case.\n switch (numericOptions.format?.toLowerCase()) {\n // In a case where a decimal value was not shortened and\n // the digit input is 2 or higher, it forces 2 digits.\n // For example, this prevents a value like $15.50 from displaying as $15.5.\n // Note: This will need to be reviewed if we support currencies with\n // three decimal digits.\n case 'currency':\n isDecimal = value % 1 !== 0;\n if (numericOptions.minDigits) {\n digitsFormatted = `1.${numericOptions.minDigits}-${digits}`;\n }\n else if (isDecimal && digits >= 2) {\n digitsFormatted = `1.2-${digits}`;\n }\n else {\n digitsFormatted = `1.0-${digits}`;\n }\n output = SkyNumberFormatUtility.formatNumber(locale, parseFloat(output), SkyIntlNumberFormatStyle.Currency, digitsFormatted, numericOptions.iso, numericOptions.currencyDisplay ?? 'symbol', numericOptions.currencySign);\n // ^^^^^^ Result can't be null since the sanitized input is always a number.\n break;\n // The following is a catch-all to ensure that if\n // anything but currency (or a future option) are entered,\n // it will be treated like a number.\n default:\n // Ensures localization of the number to ensure comma and\n // decimal separator\n if (numericOptions.minDigits) {\n digitsFormatted = `1.${numericOptions.minDigits}-${digits}`;\n }\n else if (numericOptions.truncate) {\n digitsFormatted = `1.0-${digits}`;\n }\n else {\n digitsFormatted = `1.${digits}-${digits}`;\n }\n output = SkyNumberFormatUtility.formatNumber(locale, parseFloat(output), SkyIntlNumberFormatStyle.Decimal, digitsFormatted);\n // ^^^^^^ Result can't be null since the sanitized input is always a number.\n break;\n }\n if (numericOptions.truncate) {\n output = this.#replaceShortenSymbol(output);\n }\n return output;\n }\n /**\n * Rounds a given number\n *\n * JS's limitation - numbers bigger than Number.MIN_SAFE_INTEGER or Number.MAX_SAFE_INTEGER\n * are not guaranteed to be represented or rounded correctly\n * @param value - value to round\n * @param precision - what precision to round with, defaults to 0 decimal places\n */\n #roundNumber(value, precision) {\n if (precision < 0) {\n throw new Error('SkyInvalidArgument: precision must be >= 0');\n }\n /* Sanity check - ignoring coverage but should not ignore if we make this method public */\n /* istanbul ignore next */\n if (isNaN(value) || value === null) {\n return 0;\n }\n const scaledValue = this.#scaleNumberByPowerOfTen(value, precision, true);\n const scaledRoundedValue = Math.round(scaledValue);\n const unscaledRoundedValue = this.#scaleNumberByPowerOfTen(scaledRoundedValue, precision, false);\n return unscaledRoundedValue;\n }\n /**\n * Scales a given number by a power of 10\n * @param value - value to scale\n * @param scalar - 10^scalar\n * @param scaleUp - whether to increase or decrease the value\n */\n #scaleNumberByPowerOfTen(value, scalar, scaleUp) {\n const valueStr = value.toString().toLowerCase();\n const isExponentFormat = valueStr.includes('e');\n if (isExponentFormat) {\n const [base, exp] = valueStr.split('e');\n const newExp = scaleUp ? Number(exp) + scalar : Number(exp) - scalar;\n return Number(`${base}e${newExp}`);\n }\n else {\n const e = scaleUp ? 'e' : 'e-';\n return Number(`${value}${e}${scalar}`);\n }\n }\n /**\n * Stores the symbol added from shortening to reapply later.\n * @param value The string to derive the shorten symbol from.\n */\n #storeShortenSymbol(value) {\n const symbols = this.#symbolIndex.map((s) => s.label);\n const regexp = new RegExp(symbols.join('|'), 'ig');\n const match = value.match(regexp);\n this.shortSymbol = match ? match.toString() : '';\n }\n /**\n * Must have previously called storeShortenSymbol to have something to replace.\n * Finds the last number in the formatted number, gets the index of the position\n * after that character and re-inserts the symbol.\n * Works regardless of currency symbol position.\n * @param value The string to modify.\n */\n #replaceShortenSymbol(value) {\n const result = /(\\d)(?!.*\\d)/g.exec(value);\n /*istanbul ignore else*/\n if (result) {\n const pos = result.index + result.length;\n const output = value.substring(0, pos) + this.shortSymbol + value.substring(pos);\n return output;\n }\n else {\n return value;\n }\n }\n #getSymbol(key) {\n // TODO: Need to implement the async `getString` method in a breaking change.\n return this.#resourcesSvc.getStringForLocale({ locale: 'en_US' }, key);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyNumericService, deps: [{ token: i1.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyNumericService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyNumericService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.SkyLibResourcesService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL251bWVyaWMvbnVtZXJpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUEwQixNQUFNLGFBQWEsQ0FBQztBQUUvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7O0FBUXZGLE1BQU0sT0FBTyxpQkFBaUI7SUFZNUIsYUFBYSxDQUF5QjtJQUV0QyxZQUFZLENBQXFCO0lBRWpDLFlBQVksWUFBb0M7UUFmaEQ7OztXQUdHO1FBQ0ksa0JBQWEsR0FBRyxPQUFPLENBQUM7UUFFL0I7O1dBRUc7UUFDSSxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQU90QixJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUVsQyxJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2xCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFO1lBQ3pFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxFQUFFO1lBQ3ZFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxFQUFFO1lBQ3ZFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFO1NBQ3pFLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFlBQVksQ0FDakIsS0FBZ0MsRUFDaEMs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QVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVwRSxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQiw2RUFBNkU7UUFDN0UsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OEdBclBVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUsIFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFNreU51bWJlckZvcm1hdFV0aWxpdHkgfSBmcm9tICcuLi9zaGFyZWQvbnVtYmVyLWZvcm1hdC9udW1iZXItZm9ybWF0LXV0aWxpdHknO1xuXG5pbXBvcnQgeyBTa3lOdW1lcmljU3ltYm9sIH0gZnJvbSAnLi9udW1lcmljLXN5bWJvbCc7XG5pbXBvcnQgeyBTa3lOdW1lcmljT3B0aW9ucyB9IGZyb20gJy4vbnVtZXJpYy5vcHRpb25zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreU51bWVyaWNTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFRoZSBicm93c2VyJ3MgY3VycmVudCBsb2NhbGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGN1cnJlbnRMb2NhbGUgPSAnZW4tVVMnO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzaG9ydFN5bWJvbCA9ICcnO1xuXG4gICNyZXNvdXJjZXNTdmM6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG5cbiAgI3N5bWJvbEluZGV4OiBTa3lOdW1lcmljU3ltYm9sW107XG5cbiAgY29uc3RydWN0b3IocmVzb3VyY2VzU3ZjOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKSB7XG4gICAgdGhpcy4jcmVzb3VyY2VzU3ZjID0gcmVzb3VyY2VzU3ZjO1xuXG4gICAgdGhpcy4jc3ltYm9sSW5kZXggPSBbXG4gICAgICB7IHZhbHVlOiAxZTEyLCBsYWJlbDogdGhpcy4jZ2V0U3ltYm9sKCdza3l1eF9udW1lcmljX3RyaWxsaW9uc19zeW1ib2wnKSB9LFxuICAgICAgeyB2YWx1ZTogMWU5LCBsYWJlbDogdGhpcy4jZ2V0U3ltYm9sKCdza3l1eF9udW1lcmljX2JpbGxpb25zX3N5bWJvbCcpIH0sXG4gICAgICB7IHZhbHVlOiAxZTYsIGxhYmVsOiB0aGlzLiNnZXRTeW1ib2woJ3NreXV4X251bWVyaWNfbWlsbGlvbnNfc3ltYm9sJykgfSxcbiAgICAgIHsgdmFsdWU6IDFlMywgbGFiZWw6IHRoaXMuI2dldFN5bWJvbCgnc2t5dXhfbnVtZXJpY190aG91c2FuZHNfc3ltYm9sJykgfSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdHMgYSBudW1iZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgbnVtYmVyIHRvIGZvcm1hdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgRm9ybWF0IG9wdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0TnVtYmVyKFxuICAgIHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsLFxuICAgIG9wdGlvbnM6IFNreU51bWVyaWNPcHRpb25zLFxuICApOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IGlzTmFOKHZhbHVlKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IG51bWVyaWNPcHRpb25zOiBTa3lOdW1lcmljT3B0aW9ucyA9IHtcbiAgICAgIGRpZ2l0czogMCxcbiAgICAgIGZvcm1hdDogJ251bWJlcicsXG4gICAgICBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsXG4gICAgICBpc286ICdVU0QnLFxuICAgICAgdHJ1bmNhdGVBZnRlcjogMTAwMCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIGNvbnN0IGRlY2ltYWxQbGFjZVJlZ0V4cCA9IC9cXC4wKyR8KFxcLlswLTldKlsxLTldKTArJC87XG4gICAgY29uc3QgbG9jYWxlID0gbnVtZXJpY09wdGlvbnMubG9jYWxlIHx8IHRoaXMuY3VycmVudExvY2FsZTtcbiAgICBjb25zdCBkaWdpdHMgPSBudW1lcmljT3B0aW9ucy5kaWdpdHMgfHwgMDtcblxuICAgIC8vIEdldCB0aGUgc3ltYm9sIGZvciB0aGUgbnVtYmVyIGFmdGVyIHJvdW5kaW5nLCBzaW5jZSByb3VuZGluZyBjb3VsZCBwdXNoIHRoZSBudW1iZXJcbiAgICAvLyBpbnRvIGEgZGlmZmVyZW50IHN5bWJvbCByYW5nZS5cbiAgICBsZXQgcm91bmRlZE51bWJlciA9IHRoaXMuI3JvdW5kTnVtYmVyKHZhbHVlLCBkaWdpdHMpO1xuICAgIGNvbnN0IHJvdW5kZWROdW1iZXJBYnMgPSBNYXRoLmFicyhyb3VuZGVkTnVtYmVyKTtcblxuICAgIGxldCBzdWZmaXggPSAnJztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy4jc3ltYm9sSW5kZXgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBzeW1ib2wgPSB0aGlzLiNzeW1ib2xJbmRleFtpXTtcblxuICAgICAgaWYgKFxuICAgICAgICBudW1lcmljT3B0aW9ucy50cnVuY2F0ZSAmJlxuICAgICAgICBudW1lcmljT3B0aW9ucy50cnVuY2F0ZUFmdGVyICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgcm91bmRlZE51bWJlckFicyA+PSBudW1lcmljT3B0aW9ucy50cnVuY2F0ZUFmdGVyICYmXG4gICAgICAgIHJvdW5kZWROdW1iZXJBYnMgPj0gc3ltYm9sLnZhbHVlXG4gICAgICApIHtcbiAgICAgICAgcm91bmRlZE51bWJlciA9IHRoaXMuI3JvdW5kTnVtYmVyKHZhbHVlIC8gc3ltYm9sLnZhbHVlLCBkaWdpdHMpO1xuXG4gICAgICAgIGlmIChNYXRoLmFicyhyb3VuZGVkTnVtYmVyKSA9PT0gMTAwMCAmJiBpID4gMCkge1xuICAgICAgICAgIC8vIFJvdW5kaW5nIGNhdXNlZCB0aGUgbnVtYmVyIHRvIGNyb3NzIGludG8gdGhlIHJhbmdlIG9mIHRoZSBuZXh0IHN5bWJvbC5cbiAgICAgICAgICBzeW1ib2wgPSB0aGlzLiNzeW1ib2xJbmRleFtpIC0gMV07XG4gICAgICAgICAgcm91bmRlZE51bWJlciAvPSAxMDAwO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VmZml4ID0gc3ltYm9sLmxhYmVsO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBvdXRwdXQ6IHN0cmluZyA9XG4gICAgICByb3VuZGVkTnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZShkZWNpbWFsUGxhY2VSZWdFeHAsICckMScpICsgc3VmZml4O1xuXG4gICAgdGhpcy4jc3RvcmVTaG9ydGVuU3ltYm9sKG91dHB1dCk7XG5cbiAgICBsZXQgZGlnaXRzRm9ybWF0dGVkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGlzRGVjaW1hbCA9IGZhbHNlO1xuXG4gICAgLy8gQ2hlY2tzIHRoZSBzdHJpbmcgZW50ZXJlZCBmb3IgZm9ybWF0LiBVc2luZyB0b0xvd2VyQ2FzZSB0byBpZ25vcmUgY2FzZS5cbiAgICBzd2l0Y2ggKG51bWVyaWNPcHRpb25zLmZvcm1hdD8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgLy8gSW4gYSBjYXNlIHdoZXJlIGEgZGVjaW1hbCB2YWx1ZSB3YXMgbm90IHNob3J0ZW5lZCBhbmRcbiAgICAgIC8vIHRoZSBkaWdpdCBpbnB1dCBpcyAyIG9yIGhpZ2hlciwgaXQgZm9yY2VzIDIgZGlnaXRzLlxuICAgICAgLy8gRm9yIGV4YW1wbGUsIHRoaXMgcHJldmVudHMgYSB2YWx1ZSBsaWtlICQxNS41MCBmcm9tIGRpc3BsYXlpbmcgYXMgJDE1LjUuXG4gICAgICAvLyBOb3RlOiBUaGlzIHdpbGwgbmVlZCB0byBiZSByZXZpZXdlZCBpZiB3ZSBzdXBwb3J0IGN1cnJlbmNpZXMgd2l0aFxuICAgICAgLy8gdGhyZWUgZGVjaW1hbCBkaWdpdHMuXG4gICAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgICAgIGlzRGVjaW1hbCA9IHZhbHVlICUgMSAhPT0gMDtcblxuICAgICAgICBpZiAobnVtZXJpY09wdGlvbnMubWluRGlnaXRzKSB7XG4gICAgICAgICAgZGlnaXRzRm9ybWF0dGVkID0gYDEuJHtudW1lcmljT3B0aW9ucy5taW5EaWdpdHN9LSR7ZGlnaXRzfWA7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEZWNpbWFsICYmIGRpZ2l0cyA+PSAyKSB7XG4gICAgICAgICAgZGlnaXRzRm9ybWF0dGVkID0gYDEuMi0ke2RpZ2l0c31gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpZ2l0c0Zvcm1hdHRlZCA9IGAxLjAtJHtkaWdpdHN9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dCA9IFNreU51bWJlckZvcm1hdFV0aWxpdHkuZm9ybWF0TnVtYmVyKFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXJzZUZsb2F0KG91dHB1dCksXG4gICAgICAgICAgU2t5SW50bE51bWJlckZvcm1hdFN0eWxlLkN1cnJlbmN5LFxuICAgICAgICAgIGRpZ2l0c0Zvcm1hdHRlZCxcbiAgICAgICAgICBudW1lcmljT3B0aW9ucy5pc28sXG4gICAgICAgICAgbnVtZXJpY09wdGlvbnMuY3VycmVuY3lEaXNwbGF5ID8/ICdzeW1ib2wnLFxuICAgICAgICAgIG51bWVyaWNPcHRpb25zLmN1cnJlbmN5U2lnbixcbiAgICAgICAgKSBhcyBzdHJpbmc7XG4gICAgICAgIC8vICAgXl5eXl5eIFJlc3VsdCBjYW4ndCBiZSBudWxsIHNpbmNlIHRoZSBzYW5pdGl6ZWQgaW5wdXQgaXMgYWx3YXlzIGEgbnVtYmVyLlxuICAgICAgICBicmVhaztcblxuICAgICAgLy8gVGhlIGZvbGxvd2luZyBpcyBhIGNhdGNoLWFsbCB0byBlbnN1cmUgdGhhdCBpZlxuICAgICAgLy8gYW55dGhpbmcgYnV0IGN1cnJlbmN5IChvciBhIGZ1dHVyZSBvcHRpb24pIGFyZSBlbnRlcmVkLFxuICAgICAgLy8gaXQgd2lsbCBiZSB0cmVhdGVkIGxpa2UgYSBudW1iZXIuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBFbnN1cmVzIGxvY2FsaXphdGlvbiBvZiB0aGUgbnVtYmVyIHRvIGVuc3VyZSBjb21tYSBhbmRcbiAgICAgICAgLy8gZGVjaW1hbCBzZXBhcmF0b3JcbiAgICAgICAgaWYgKG51bWVyaWNPcHRpb25zLm1pbkRpZ2l0cykge1xuICAgICAgICAgIGRpZ2l0c0Zvcm1hdHRlZCA9IGAxLiR7bnVtZXJpY09wdGlvbnMubWluRGlnaXRzfS0ke2RpZ2l0c31gO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWVyaWNPcHRpb25zLnRydW5jYXRlKSB7XG4gICAgICAgICAgZGlnaXRzRm9ybWF0dGVkID0gYDEuMC0ke2RpZ2l0c31gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpZ2l0c0Zvcm1hdHRlZCA9IGAxLiR7ZGlnaXRzfS0ke2RpZ2l0c31gO1xuICAgICAgICB9XG5cbiAgICAgICAgb3V0cHV0ID0gU2t5TnVtYmVyRm9ybWF0VXRpbGl0eS5mb3JtYXROdW1iZXIoXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhcnNlRmxvYXQob3V0cHV0KSxcbiAgICAgICAgICBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUuRGVjaW1hbCxcbiAgICAgICAgICBkaWdpdHNGb3JtYXR0ZWQsXG4gICAgICAgICkgYXMgc3RyaW5nO1xuICAgICAgICAvLyAgIF5eXl5eXiBSZXN1bHQgY2FuJ3QgYmUgbnVsbCBzaW5jZSB0aGUgc2FuaXRpemVkIGlucHV0IGlzIGFsd2F5cyBhIG51bWJlci5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKG51bWVyaWNPcHRpb25zLnRydW5jYXRlKSB7XG4gICAgICBvdXRwdXQgPSB0aGlzLiNyZXBsYWNlU2hvcnRlblN5bWJvbChvdXRwdXQpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICAvKipcbiAgICogUm91bmRzIGEgZ2l2ZW4gbnVtYmVyXG4gICAqXG4gICAqIEpTJ3MgbGltaXRhdGlvbiAtIG51bWJlcnMgYmlnZ2VyIHRoYW4gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIgb3IgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbiAgICogYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIHJlcHJlc2VudGVkIG9yIHJvdW5kZWQgY29ycmVjdGx5XG4gICAqIEBwYXJhbSB2YWx1ZSAtIHZhbHVlIHRvIHJvdW5kXG4gICAqIEBwYXJhbSBwcmVjaXNpb24gLSB3aGF0IHByZWNpc2lvbiB0byByb3VuZCB3aXRoLCBkZWZhdWx0cyB0byAwIGRlY2ltYWwgcGxhY2VzXG4gICAqL1xuICAjcm91bmROdW1iZXIodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChwcmVjaXNpb24gPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NreUludmFsaWRBcmd1bWVudDogcHJlY2lzaW9uIG11c3QgYmUgPj0gMCcpO1xuICAgIH1cblxuICAgIC8qIFNhbml0eSBjaGVjayAtIGlnbm9yaW5nIGNvdmVyYWdlIGJ1dCBzaG91bGQgbm90IGlnbm9yZSBpZiB3ZSBtYWtlIHRoaXMgbWV0aG9kIHB1YmxpYyAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NhbGVkVmFsdWU6IG51bWJlciA9IHRoaXMuI3NjYWxlTnVtYmVyQnlQb3dlck9mVGVuKFxuICAgICAgdmFsdWUsXG4gICAgICBwcmVjaXNpb24sXG4gICAgICB0cnVlLFxuICAgICk7XG4gICAgY29uc3Qgc2NhbGVkUm91bmRlZFZhbHVlOiBudW1iZXIgPSBNYXRoLnJvdW5kKHNjYWxlZFZhbHVlKTtcbiAgICBjb25zdCB1bnNjYWxlZFJvdW5kZWRWYWx1ZTogbnVtYmVyID0gdGhpcy4jc2NhbGVOdW1iZXJCeVBvd2VyT2ZUZW4oXG4gICAgICBzY2FsZWRSb3VuZGVkVmFsdWUsXG4gICAgICBwcmVjaXNpb24sXG4gICAgICBmYWxzZSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHVuc2NhbGVkUm91bmRlZFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjYWxlcyBhIGdpdmVuIG51bWJlciBieSBhIHBvd2VyIG9mIDEwXG4gICAqIEBwYXJhbSB2YWx1ZSAtIHZhbHVlIHRvIHNjYWxlXG4gICAqIEBwYXJhbSBzY2FsYXIgLSAxMF5zY2FsYXJcbiAgICogQHBhcmFtIHNjYWxlVXAgLSB3aGV0aGVyIHRvIGluY3JlYXNlIG9yIGRlY3JlYXNlIHRoZSB2YWx1ZVxuICAgKi9cbiAgI3NjYWxlTnVtYmVyQnlQb3dlck9mVGVuKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgc2NhbGFyOiBudW1iZXIsXG4gICAgc2NhbGVVcDogYm9vbGVhbixcbiAgKTogbnVtYmVyIHtcbiAgICBjb25zdCB2YWx1ZVN0cjogc3RyaW5nID0gdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGlzRXhwb25lbnRGb3JtYXQ6IGJvb2xlYW4gPSB2YWx1ZVN0ci5pbmNsdWRlcygnZScpO1xuXG4gICAgaWYgKGlzRXhwb25lbnRGb3JtYXQpIHtcbiAgICAgIGNvbnN0IFtiYXNlLCBleHBdID0gdmFsdWVTdHIuc3BsaXQoJ2UnKTtcbiAgICAgIGNvbnN0IG5ld0V4cCA9IHNjYWxlVXAgPyBOdW1iZXIoZXhwKSArIHNjYWxhciA6IE51bWJlcihleHApIC0gc2NhbGFyO1xuICAgICAgcmV0dXJuIE51bWJlcihgJHtiYXNlfWUke25ld0V4cH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZSA9IHNjYWxlVXAgPyAnZScgOiAnZS0nO1xuICAgICAgcmV0dXJuIE51bWJlcihgJHt2YWx1ZX0ke2V9JHtzY2FsYXJ9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgc3ltYm9sIGFkZGVkIGZyb20gc2hvcnRlbmluZyB0byByZWFwcGx5IGxhdGVyLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0cmluZyB0byBkZXJpdmUgdGhlIHNob3J0ZW4gc3ltYm9sIGZyb20uXG4gICAqL1xuICAjc3RvcmVTaG9ydGVuU3ltYm9sKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzeW1ib2xzOiBzdHJpbmdbXSA9IHRoaXMuI3N5bWJvbEluZGV4Lm1hcCgocykgPT4gcy5sYWJlbCk7XG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChzeW1ib2xzLmpvaW4oJ3wnKSwgJ2lnJyk7XG4gICAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChyZWdleHApO1xuICAgIHRoaXMuc2hvcnRTeW1ib2wgPSBtYXRjaCA/IG1hdGNoLnRvU3RyaW5nKCkgOiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBNdXN0IGhhdmUgcHJldmlvdXNseSBjYWxsZWQgc3RvcmVTaG9ydGVuU3ltYm9sIHRvIGhhdmUgc29tZXRoaW5nIHRvIHJlcGxhY2UuXG4gICAqIEZpbmRzIHRoZSBsYXN0IG51bWJlciBpbiB0aGUgZm9ybWF0dGVkIG51bWJlciwgZ2V0cyB0aGUgaW5kZXggb2YgdGhlIHBvc2l0aW9uXG4gICAqIGFmdGVyIHRoYXQgY2hhcmFjdGVyIGFuZCByZS1pbnNlcnRzIHRoZSBzeW1ib2wuXG4gICAqIFdvcmtzIHJlZ2FyZGxlc3Mgb2YgY3VycmVuY3kgc3ltYm9sIHBvc2l0aW9uLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0cmluZyB0byBtb2RpZnkuXG4gICAqL1xuICAjcmVwbGFjZVNob3J0ZW5TeW1ib2wodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVzdWx0ID0gLyhcXGQpKD8hLipcXGQpL2cuZXhlYyh2YWx1ZSk7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgY29uc3QgcG9zID0gcmVzdWx0LmluZGV4ICsgcmVzdWx0Lmxlbmd0aDtcbiAgICAgIGNvbnN0IG91dHB1dCA9XG4gICAgICAgIHZhbHVlLnN1YnN0cmluZygwLCBwb3MpICsgdGhpcy5zaG9ydFN5bWJvbCArIHZhbHVlLnN1YnN0cmluZyhwb3MpO1xuXG4gICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgI2dldFN5bWJvbChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gVE9ETzogTmVlZCB0byBpbXBsZW1lbnQgdGhlIGFzeW5jIGBnZXRTdHJpbmdgIG1ldGhvZCBpbiBhIGJyZWFraW5nIGNoYW5nZS5cbiAgICByZXR1cm4gdGhpcy4jcmVzb3VyY2VzU3ZjLmdldFN0cmluZ0ZvckxvY2FsZSh7IGxvY2FsZTogJ2VuX1VTJyB9LCBrZXkpO1xuICB9XG59XG4iXX0=","import { Pipe, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { NumericOptions } from './numeric.options';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/i18n\";\nimport * as i2 from \"./numeric.service\";\n/**\n * Shortens numbers to rounded numbers and abbreviation characters such as K for thousands,\n * M for millions, B for billions, and T for trillions. The pipe also formats for currency.\n * Be sure you have a space after the two curly brackets opening the pipe and\n * a space before the two curly brackets closing the pipe or it will not work.\n */\nexport class SkyNumericPipe {\n #cacheKey;\n #changeDetector;\n #formattedValue;\n #ngUnsubscribe = new Subject();\n #numericSvc;\n #providerLocale;\n constructor(localeProvider, numericSvc, changeDetector) {\n this.#numericSvc = numericSvc;\n this.#changeDetector = changeDetector;\n localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#providerLocale = localeInfo.locale;\n numericSvc.currentLocale = this.#providerLocale;\n this.#changeDetector.markForCheck();\n });\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n /**\n * Formats a number based on the provided options.\n */\n transform(value, config) {\n if (value === undefined || value === null || isNaN(value)) {\n return '';\n }\n const newCacheKey = (config ? JSON.stringify(config, Object.keys(config).sort()) : '') +\n `${value}_${config?.locale || this.#providerLocale}`;\n /* If the value and locale are the same as the last transform then return the previous value\n instead of reformatting. */\n if (this.#formattedValue && this.#cacheKey === newCacheKey) {\n return this.#formattedValue;\n }\n const options = new NumericOptions();\n // The default number of digits is `1`. When truncate is disabled, set digits\n // to `0` to avoid the unnecessary addition of `.0` at the end of the formatted number.\n if (config && config.truncate === false && config.digits === undefined) {\n options.digits = 0;\n }\n // If the minimum digits is less than the set maximum digits then throw an error\n if (config &&\n config.minDigits &&\n config.digits &&\n config.minDigits > config.digits) {\n throw new Error('The `digits` property must be greater than or equal to the `minDigits` property');\n // If there is a minimum digits given but not a maximum then default the maximum to the minimum\n }\n else if (config && config.minDigits && !config.digits) {\n options.digits = config.minDigits;\n }\n Object.assign(options, config);\n // Assign properties for proper result caching.\n this.#cacheKey = newCacheKey;\n this.#formattedValue = this.#numericSvc.formatNumber(value, options);\n return this.#formattedValue;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyNumericPipe, deps: [{ token: i1.SkyAppLocaleProvider }, { token: i2.SkyNumericService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyNumericPipe, isStandalone: false, name: \"skyNumeric\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyNumericPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyNumeric',\n pure: false,\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i1.SkyAppLocaleProvider }, { type: i2.SkyNumericService }, { type: i0.ChangeDetectorRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL251bWVyaWMvbnVtZXJpYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxJQUFJLEdBRUwsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBcUIsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUd0RTs7Ozs7R0FLRztBQU1ILE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFNBQVMsQ0FBcUI7SUFFOUIsZUFBZSxDQUFvQjtJQUVuQyxlQUFlLENBQXFCO0lBRXBDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXJDLFdBQVcsQ0FBb0I7SUFFL0IsZUFBZSxDQUFxQjtJQUVwQyxZQUNFLGNBQW9DLEVBQ3BDLFVBQTZCLEVBQzdCLGNBQWlDO1FBRWpDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBRXRDLGNBQWM7YUFDWCxhQUFhLEVBQUU7YUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDekMsVUFBVSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUyxDQUNkLEtBQWdDLEVBQ2hDLE1BQTBCO1FBRTFCLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE1BQU0sV0FBVyxHQUNmLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsRSxHQUFHLEtBQUssSUFBSSxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2RDttQ0FDMkI7UUFDM0IsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDM0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzlCLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBRXJDLDZFQUE2RTtRQUM3RSx1RkFBdUY7UUFDdkYsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN2RSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBRUQsZ0ZBQWdGO1FBQ2hGLElBQ0UsTUFBTTtZQUNOLE1BQU0sQ0FBQyxTQUFTO1lBQ2hCLE1BQU0sQ0FBQyxNQUFNO1lBQ2IsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUNoQyxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixpRkFBaUYsQ0FDbEYsQ0FBQztZQUVGLCtGQUErRjtRQUNqRyxDQUFDO2FBQU0sSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4RCxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDcEMsQ0FBQztRQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRS9CLCtDQUErQztRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztRQUU3QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQzs4R0F4RlUsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUwxQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsS0FBSztvQkFDWCxVQUFVLEVBQUUsS0FBSztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LFxuICBQaXBlLFxuICBQaXBlVHJhbnNmb3JtLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUFwcExvY2FsZVByb3ZpZGVyIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE51bWVyaWNPcHRpb25zLCBTa3lOdW1lcmljT3B0aW9ucyB9IGZyb20gJy4vbnVtZXJpYy5vcHRpb25zJztcbmltcG9ydCB7IFNreU51bWVyaWNTZXJ2aWNlIH0gZnJvbSAnLi9udW1lcmljLnNlcnZpY2UnO1xuXG4vKipcbiAqIFNob3J0ZW5zIG51bWJlcnMgdG8gcm91bmRlZCBudW1iZXJzIGFuZCBhYmJyZXZpYXRpb24gY2hhcmFjdGVycyBzdWNoIGFzIEsgZm9yIHRob3VzYW5kcyxcbiAqIE0gZm9yIG1pbGxpb25zLCBCIGZvciBiaWxsaW9ucywgYW5kIFQgZm9yIHRyaWxsaW9ucy4gVGhlIHBpcGUgYWxzbyBmb3JtYXRzIGZvciBjdXJyZW5jeS5cbiAqIEJlIHN1cmUgeW91IGhhdmUgYSBzcGFjZSBhZnRlciB0aGUgdHdvIGN1cmx5IGJyYWNrZXRzIG9wZW5pbmcgdGhlIHBpcGUgYW5kXG4gKiBhIHNwYWNlIGJlZm9yZSB0aGUgdHdvIGN1cmx5IGJyYWNrZXRzIGNsb3NpbmcgdGhlIHBpcGUgb3IgaXQgd2lsbCBub3Qgd29yay5cbiAqL1xuQFBpcGUoe1xuICBuYW1lOiAnc2t5TnVtZXJpYycsXG4gIHB1cmU6IGZhbHNlLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TnVtZXJpY1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kge1xuICAjY2FjaGVLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuXG4gICNmb3JtYXR0ZWRWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjbnVtZXJpY1N2YzogU2t5TnVtZXJpY1NlcnZpY2U7XG5cbiAgI3Byb3ZpZGVyTG9jYWxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbG9jYWxlUHJvdmlkZXI6IFNreUFwcExvY2FsZVByb3ZpZGVyLFxuICAgIG51bWVyaWNTdmM6IFNreU51bWVyaWNTZXJ2aWNlLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgdGhpcy4jbnVtZXJpY1N2YyA9IG51bWVyaWNTdmM7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcblxuICAgIGxvY2FsZVByb3ZpZGVyXG4gICAgICAuZ2V0TG9jYWxlSW5mbygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChsb2NhbGVJbmZvKSA9PiB7XG4gICAgICAgIHRoaXMuI3Byb3ZpZGVyTG9jYWxlID0gbG9jYWxlSW5mby5sb2NhbGU7XG4gICAgICAgIG51bWVyaWNTdmMuY3VycmVudExvY2FsZSA9IHRoaXMuI3Byb3ZpZGVyTG9jYWxlO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIGEgbnVtYmVyIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybShcbiAgICB2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCxcbiAgICBjb25maWc/OiBTa3lOdW1lcmljT3B0aW9ucyxcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCBpc05hTih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBuZXdDYWNoZUtleSA9XG4gICAgICAoY29uZmlnID8gSlNPTi5zdHJpbmdpZnkoY29uZmlnLCBPYmplY3Qua2V5cyhjb25maWcpLnNvcnQoKSkgOiAnJykgK1xuICAgICAgYCR7dmFsdWV9XyR7Y29uZmlnPy5sb2NhbGUgfHwgdGhpcy4jcHJvdmlkZXJMb2NhbGV9YDtcblxuICAgIC8qIElmIHRoZSB2YWx1ZSBhbmQgbG9jYWxlIGFyZSB0aGUgc2FtZSBhcyB0aGUgbGFzdCB0cmFuc2Zvcm0gdGhlbiByZXR1cm4gdGhlIHByZXZpb3VzIHZhbHVlXG4gICAgaW5zdGVhZCBvZiByZWZvcm1hdHRpbmcuICovXG4gICAgaWYgKHRoaXMuI2Zvcm1hdHRlZFZhbHVlICYmIHRoaXMuI2NhY2hlS2V5ID09PSBuZXdDYWNoZUtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuI2Zvcm1hdHRlZFZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSBuZXcgTnVtZXJpY09wdGlvbnMoKTtcblxuICAgIC8vIFRoZSBkZWZhdWx0IG51bWJlciBvZiBkaWdpdHMgaXMgYDFgLiBXaGVuIHRydW5jYXRlIGlzIGRpc2FibGVkLCBzZXQgZGlnaXRzXG4gICAgLy8gdG8gYDBgIHRvIGF2b2lkIHRoZSB1bm5lY2Vzc2FyeSBhZGRpdGlvbiBvZiBgLjBgIGF0IHRoZSBlbmQgb2YgdGhlIGZvcm1hdHRlZCBudW1iZXIuXG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWcudHJ1bmNhdGUgPT09IGZhbHNlICYmIGNvbmZpZy5kaWdpdHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb3B0aW9ucy5kaWdpdHMgPSAwO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBtaW5pbXVtIGRpZ2l0cyBpcyBsZXNzIHRoYW4gdGhlIHNldCBtYXhpbXVtIGRpZ2l0cyB0aGVuIHRocm93IGFuIGVycm9yXG4gICAgaWYgKFxuICAgICAgY29uZmlnICYmXG4gICAgICBjb25maWcubWluRGlnaXRzICYmXG4gICAgICBjb25maWcuZGlnaXRzICYmXG4gICAgICBjb25maWcubWluRGlnaXRzID4gY29uZmlnLmRpZ2l0c1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVGhlIGBkaWdpdHNgIHByb3BlcnR5IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBgbWluRGlnaXRzYCBwcm9wZXJ0eScsXG4gICAgICApO1xuXG4gICAgICAvLyBJZiB0aGVyZSBpcyBhIG1pbmltdW0gZGlnaXRzIGdpdmVuIGJ1dCBub3QgYSBtYXhpbXVtIHRoZW4gZGVmYXVsdCB0aGUgbWF4aW11bSB0byB0aGUgbWluaW11bVxuICAgIH0gZWxzZSBpZiAoY29uZmlnICYmIGNvbmZpZy5taW5EaWdpdHMgJiYgIWNvbmZpZy5kaWdpdHMpIHtcbiAgICAgIG9wdGlvbnMuZGlnaXRzID0gY29uZmlnLm1pbkRpZ2l0cztcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKG9wdGlvbnMsIGNvbmZpZyk7XG5cbiAgICAvLyBBc3NpZ24gcHJvcGVydGllcyBmb3IgcHJvcGVyIHJlc3VsdCBjYWNoaW5nLlxuICAgIHRoaXMuI2NhY2hlS2V5ID0gbmV3Q2FjaGVLZXk7XG5cbiAgICB0aGlzLiNmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuI251bWVyaWNTdmMuZm9ybWF0TnVtYmVyKHZhbHVlLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy4jZm9ybWF0dGVkVmFsdWU7XG4gIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { SkyCoreResourcesModule } from '../shared/sky-core-resources.module';\nimport { SkyNumericPipe } from './numeric.pipe';\nimport * as i0 from \"@angular/core\";\nexport class SkyNumericModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyNumericModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyNumericModule, declarations: [SkyNumericPipe], imports: [SkyCoreResourcesModule], exports: [SkyNumericPipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyNumericModule, providers: [SkyNumericPipe], imports: [SkyCoreResourcesModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyNumericModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyNumericPipe],\n providers: [SkyNumericPipe],\n imports: [SkyCoreResourcesModule],\n exports: [SkyNumericPipe],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvbnVtZXJpYy9udW1lcmljLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFRaEQsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBTFosY0FBYyxhQUVuQixzQkFBc0IsYUFDdEIsY0FBYzsrR0FFYixnQkFBZ0IsYUFKaEIsQ0FBQyxjQUFjLENBQUMsWUFDakIsc0JBQXNCOzsyRkFHckIsZ0JBQWdCO2tCQU41QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDOUIsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUMzQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUNvcmVSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWNvcmUtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreU51bWVyaWNQaXBlIH0gZnJvbSAnLi9udW1lcmljLnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lOdW1lcmljUGlwZV0sXG4gIHByb3ZpZGVyczogW1NreU51bWVyaWNQaXBlXSxcbiAgaW1wb3J0czogW1NreUNvcmVSZXNvdXJjZXNNb2R1bGVdLFxuICBleHBvcnRzOiBbU2t5TnVtZXJpY1BpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lOdW1lcmljTW9kdWxlIHt9XG4iXX0=","import { Subject } from 'rxjs';\n/**\n * Represents a new overlay instance. It is used to manage the \"closed\" state of the overlay,\n * and access any public members on the appended content component instance.\n */\nexport class SkyOverlayInstance {\n /**\n * Emits when the overlay is clicked (but not its content).\n */\n get backdropClick() {\n return this.#backdropClickObs;\n }\n /**\n * Emits after the overlay is closed.\n */\n get closed() {\n return this.#closedObs;\n }\n #backdropClick;\n #backdropClickObs;\n #closed;\n #closedObs;\n constructor(\n /**\n * The configuration for the overlay.\n */\n config, componentRef) {\n this.config = config;\n this.componentRef = componentRef;\n this.id = this.componentRef.instance.id;\n this.componentRef.instance.closed.subscribe(() => {\n this.#closed.next();\n this.#closed.complete();\n this.#backdropClick.complete();\n });\n this.componentRef.instance.backdropClick.subscribe(() => {\n this.#backdropClick.next();\n });\n this.#backdropClick = new Subject();\n this.#closed = new Subject();\n this.#backdropClickObs = this.#backdropClick.asObservable();\n this.#closedObs = this.#closed.asObservable();\n }\n /**\n * Creates and attaches a component to the overlay.\n * @param component The component to attach.\n * @param providers Custom providers to apply to the component.\n */\n attachComponent(component, providers) {\n const componentRef = this.componentRef.instance.attachComponent(component, providers);\n return componentRef.instance;\n }\n /**\n * Attaches a `TemplateRef` to the overlay.\n * @param templateRef The `TemplateRef` to attach.\n * @param context The context to provide to the template.\n */\n attachTemplate(templateRef, context) {\n this.componentRef.instance.attachTemplate(templateRef, context);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1pbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9vdmVybGF5L292ZXJsYXktaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUszQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCOztPQUVHO0lBQ0gsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBSUQsY0FBYyxDQUFnQjtJQUU5QixpQkFBaUIsQ0FBbUI7SUFFcEMsT0FBTyxDQUFnQjtJQUV2QixVQUFVLENBQW1CO0lBRTdCO0lBQ0U7O09BRUc7SUFDYSxNQUF3QixFQUN4QixZQUErQztRQUQvQyxXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBbUM7UUFFL0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFFeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQ3BCLFNBQWtCLEVBQ2xCLFNBQTRCO1FBRTVCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDN0QsU0FBUyxFQUNULFNBQVMsQ0FDVixDQUFDO1FBQ0YsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksY0FBYyxDQUFJLFdBQTJCLEVBQUUsT0FBVztRQUMvRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgU3RhdGljUHJvdmlkZXIsIFRlbXBsYXRlUmVmLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5T3ZlcmxheUNvbmZpZyB9IGZyb20gJy4vb3ZlcmxheS1jb25maWcnO1xuaW1wb3J0IHsgU2t5T3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4vb3ZlcmxheS5jb21wb25lbnQnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBuZXcgb3ZlcmxheSBpbnN0YW5jZS4gSXQgaXMgdXNlZCB0byBtYW5hZ2UgdGhlIFwiY2xvc2VkXCIgc3RhdGUgb2YgdGhlIG92ZXJsYXksXG4gKiBhbmQgYWNjZXNzIGFueSBwdWJsaWMgbWVtYmVycyBvbiB0aGUgYXBwZW5kZWQgY29udGVudCBjb21wb25lbnQgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lPdmVybGF5SW5zdGFuY2Uge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgb3ZlcmxheSBpcyBjbGlja2VkIChidXQgbm90IGl0cyBjb250ZW50KS5cbiAgICovXG4gIHB1YmxpYyBnZXQgYmFja2Ryb3BDbGljaygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2Ryb3BDbGlja09icztcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhZnRlciB0aGUgb3ZlcmxheSBpcyBjbG9zZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNsb3NlZCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jY2xvc2VkT2JzO1xuICB9XG5cbiAgcHVibGljIGlkOiBzdHJpbmc7XG5cbiAgI2JhY2tkcm9wQ2xpY2s6IFN1YmplY3Q8dm9pZD47XG5cbiAgI2JhY2tkcm9wQ2xpY2tPYnM6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgI2Nsb3NlZDogU3ViamVjdDx2b2lkPjtcblxuICAjY2xvc2VkT2JzOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgb3ZlcmxheS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBTa3lPdmVybGF5Q29uZmlnLFxuICAgIHB1YmxpYyByZWFkb25seSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxTa3lPdmVybGF5Q29tcG9uZW50PixcbiAgKSB7XG4gICAgdGhpcy5pZCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmlkO1xuXG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLiNjbG9zZWQubmV4dCgpO1xuICAgICAgdGhpcy4jY2xvc2VkLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLiNiYWNrZHJvcENsaWNrLmNvbXBsZXRlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5iYWNrZHJvcENsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLiNiYWNrZHJvcENsaWNrLm5leHQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuI2JhY2tkcm9wQ2xpY2sgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuI2Nsb3NlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICB0aGlzLiNiYWNrZHJvcENsaWNrT2JzID0gdGhpcy4jYmFja2Ryb3BDbGljay5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLiNjbG9zZWRPYnMgPSB0aGlzLiNjbG9zZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgYXR0YWNoZXMgYSBjb21wb25lbnQgdG8gdGhlIG92ZXJsYXkuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgVGhlIGNvbXBvbmVudCB0byBhdHRhY2guXG4gICAqIEBwYXJhbSBwcm92aWRlcnMgQ3VzdG9tIHByb3ZpZGVycyB0byBhcHBseSB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGF0dGFjaENvbXBvbmVudDxDPihcbiAgICBjb21wb25lbnQ6IFR5cGU8Qz4sXG4gICAgcHJvdmlkZXJzPzogU3RhdGljUHJvdmlkZXJbXSxcbiAgKTogQyB7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYXR0YWNoQ29tcG9uZW50KFxuICAgICAgY29tcG9uZW50LFxuICAgICAgcHJvdmlkZXJzLFxuICAgICk7XG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2hlcyBhIGBUZW1wbGF0ZVJlZmAgdG8gdGhlIG92ZXJsYXkuXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZVJlZiBUaGUgYFRlbXBsYXRlUmVmYCB0byBhdHRhY2guXG4gICAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IHRvIHByb3ZpZGUgdG8gdGhlIHRlbXBsYXRlLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaFRlbXBsYXRlPFQ+KHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxUPiwgY29udGV4dD86IFQpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5hdHRhY2hUZW1wbGF0ZSh0ZW1wbGF0ZVJlZiwgY29udGV4dCk7XG4gIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated The `SkyOverlayModule` is no longer needed and can be removed from your application.\n * @internal\n */\nexport class SkyOverlayModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvb3ZlcmxheS9vdmVybGF5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV6Qzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixRQUFRO21CQUFDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFRoZSBgU2t5T3ZlcmxheU1vZHVsZWAgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhbmQgY2FuIGJlIHJlbW92ZWQgZnJvbSB5b3VyIGFwcGxpY2F0aW9uLlxuICogQGludGVybmFsXG4gKi9cbkBOZ01vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBTa3lPdmVybGF5TW9kdWxlIHt9XG4iXX0=","import { Injectable, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyOverlayAdapterService {\n #renderer;\n #styleElement;\n constructor(rendererFactory) {\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n restrictBodyScroll() {\n // Create a style element to avoid overwriting any existing inline body styles.\n const styleElement = this.#renderer.createElement('style');\n const textNode = this.#renderer.createText('body { overflow: hidden }');\n // Apply a `data-` attribute to make unit testing easier.\n this.#renderer.setAttribute(styleElement, 'data-test-selector', 'sky-overlay-restrict-scroll-styles');\n this.#renderer.appendChild(styleElement, textNode);\n this.#renderer.appendChild(document.head, styleElement);\n if (this.#styleElement) {\n this.#destroyStyleElement();\n }\n this.#styleElement = styleElement;\n }\n releaseBodyScroll() {\n this.#destroyStyleElement();\n }\n #destroyStyleElement() {\n /* istanbul ignore else */\n if (this.#styleElement &&\n this.#styleElement.parentElement === document.head) {\n this.#renderer.removeChild(document.head, this.#styleElement);\n }\n }\n addAriaHiddenToSiblings(overlayElementRef) {\n const overlayElement = overlayElementRef.nativeElement;\n const hostSiblings = overlayElement.parentElement.children;\n const siblingAriaHiddenCache = new Map();\n for (const element of hostSiblings) {\n if (element !== overlayElement &&\n !element.hasAttribute('aria-live') &&\n element.nodeName.toLowerCase() !== 'script' &&\n element.nodeName.toLowerCase() !== 'style') {\n // preserve previous aria-hidden status of elements outside of modal host\n siblingAriaHiddenCache.set(element, element.getAttribute('aria-hidden'));\n element.setAttribute('aria-hidden', 'true');\n }\n }\n return siblingAriaHiddenCache;\n }\n restoreAriaHiddenForSiblings(siblingAriaHiddenCache) {\n siblingAriaHiddenCache.forEach((previousValue, element) => {\n // if element had aria-hidden status prior, restore status\n if (element.parentElement) {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n }\n else {\n element.removeAttribute('aria-hidden');\n }\n }\n });\n siblingAriaHiddenCache.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayAdapterService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayAdapterService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i0.RendererFactory2 }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvb3ZlcmxheS9vdmVybGF5LWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsVUFBVSxHQUdYLE1BQU0sZUFBZSxDQUFDOztBQUV2Qjs7R0FFRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsU0FBUyxDQUFZO0lBRXJCLGFBQWEsQ0FBK0I7SUFFNUMsWUFBWSxlQUFpQztRQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsK0VBQStFO1FBQy9FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFeEUseURBQXlEO1FBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUN6QixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLG9DQUFvQyxDQUNyQyxDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFeEQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELG9CQUFvQjtRQUNsQiwwQkFBMEI7UUFDMUIsSUFDRSxJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsS0FBSyxRQUFRLENBQUMsSUFBSSxFQUNsRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7SUFFTSx1QkFBdUIsQ0FDNUIsaUJBQTZCO1FBRTdCLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLGFBQWEsQ0FBQztRQUN2RCxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUUzRCxNQUFNLHNCQUFzQixHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO1FBRWpFLEtBQUssTUFBTSxPQUFPLElBQUksWUFBWSxFQUFFLENBQUM7WUFDbkMsSUFDRSxPQUFPLEtBQUssY0FBYztnQkFDMUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztnQkFDbEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRO2dCQUMzQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sRUFDMUMsQ0FBQztnQkFDRCx5RUFBeUU7Z0JBQ3pFLHNCQUFzQixDQUFDLEdBQUcsQ0FDeEIsT0FBTyxFQUNQLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQ3BDLENBQUM7Z0JBQ0YsT0FBTyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDOUMsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFTSw0QkFBNEIsQ0FDakMsc0JBQW1EO1FBRW5ELHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN4RCwwREFBMEQ7WUFDMUQsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzFCLElBQUksYUFBYSxFQUFFLENBQUM7b0JBQ2xCLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDekMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILHNCQUFzQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7OEdBdkZVLHdCQUF3QjtrSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbGVtZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5T3ZlcmxheUFkYXB0ZXJTZXJ2aWNlIHtcbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgI3N0eWxlRWxlbWVudDogSFRNTFN0eWxlRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihyZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIpIHtcbiAgICB0aGlzLiNyZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcih1bmRlZmluZWQsIG51bGwpO1xuICB9XG5cbiAgcHVibGljIHJlc3RyaWN0Qm9keVNjcm9sbCgpOiB2b2lkIHtcbiAgICAvLyBDcmVhdGUgYSBzdHlsZSBlbGVtZW50IHRvIGF2b2lkIG92ZXJ3cml0aW5nIGFueSBleGlzdGluZyBpbmxpbmUgYm9keSBzdHlsZXMuXG4gICAgY29uc3Qgc3R5bGVFbGVtZW50ID0gdGhpcy4jcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICBjb25zdCB0ZXh0Tm9kZSA9IHRoaXMuI3JlbmRlcmVyLmNyZWF0ZVRleHQoJ2JvZHkgeyBvdmVyZmxvdzogaGlkZGVuIH0nKTtcblxuICAgIC8vIEFwcGx5IGEgYGRhdGEtYCBhdHRyaWJ1dGUgdG8gbWFrZSB1bml0IHRlc3RpbmcgZWFzaWVyLlxuICAgIHRoaXMuI3JlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgIHN0eWxlRWxlbWVudCxcbiAgICAgICdkYXRhLXRlc3Qtc2VsZWN0b3InLFxuICAgICAgJ3NreS1vdmVybGF5LXJlc3RyaWN0LXNjcm9sbC1zdHlsZXMnLFxuICAgICk7XG5cbiAgICB0aGlzLiNyZW5kZXJlci5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQsIHRleHROb2RlKTtcbiAgICB0aGlzLiNyZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5oZWFkLCBzdHlsZUVsZW1lbnQpO1xuXG4gICAgaWYgKHRoaXMuI3N0eWxlRWxlbWVudCkge1xuICAgICAgdGhpcy4jZGVzdHJveVN0eWxlRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuI3N0eWxlRWxlbWVudCA9IHN0eWxlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyByZWxlYXNlQm9keVNjcm9sbCgpOiB2b2lkIHtcbiAgICB0aGlzLiNkZXN0cm95U3R5bGVFbGVtZW50KCk7XG4gIH1cblxuICAjZGVzdHJveVN0eWxlRWxlbWVudCgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChcbiAgICAgIHRoaXMuI3N0eWxlRWxlbWVudCAmJlxuICAgICAgdGhpcy4jc3R5bGVFbGVtZW50LnBhcmVudEVsZW1lbnQgPT09IGRvY3VtZW50LmhlYWRcbiAgICApIHtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUNoaWxkKGRvY3VtZW50LmhlYWQsIHRoaXMuI3N0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZEFyaWFIaWRkZW5Ub1NpYmxpbmdzKFxuICAgIG92ZXJsYXlFbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICApOiBNYXA8RWxlbWVudCwgc3RyaW5nIHwgbnVsbD4ge1xuICAgIGNvbnN0IG92ZXJsYXlFbGVtZW50ID0gb3ZlcmxheUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBob3N0U2libGluZ3MgPSBvdmVybGF5RWxlbWVudC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuXG4gICAgY29uc3Qgc2libGluZ0FyaWFIaWRkZW5DYWNoZSA9IG5ldyBNYXA8RWxlbWVudCwgc3RyaW5nIHwgbnVsbD4oKTtcblxuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBob3N0U2libGluZ3MpIHtcbiAgICAgIGlmIChcbiAgICAgICAgZWxlbWVudCAhPT0gb3ZlcmxheUVsZW1lbnQgJiZcbiAgICAgICAgIWVsZW1lbnQuaGFzQXR0cmlidXRlKCdhcmlhLWxpdmUnKSAmJlxuICAgICAgICBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdzY3JpcHQnICYmXG4gICAgICAgIGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ3N0eWxlJ1xuICAgICAgKSB7XG4gICAgICAgIC8vIHByZXNlcnZlIHByZXZpb3VzIGFyaWEtaGlkZGVuIHN0YXR1cyBvZiBlbGVtZW50cyBvdXRzaWRlIG9mIG1vZGFsIGhvc3RcbiAgICAgICAgc2libGluZ0FyaWFIaWRkZW5DYWNoZS5zZXQoXG4gICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICBlbGVtZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSxcbiAgICAgICAgKTtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2libGluZ0FyaWFIaWRkZW5DYWNoZTtcbiAgfVxuXG4gIHB1YmxpYyByZXN0b3JlQXJpYUhpZGRlbkZvclNpYmxpbmdzKFxuICAgIHNpYmxpbmdBcmlhSGlkZGVuQ2FjaGU6IE1hcDxFbGVtZW50LCBzdHJpbmcgfCBudWxsPixcbiAgKTogdm9pZCB7XG4gICAgc2libGluZ0FyaWFIaWRkZW5DYWNoZS5mb3JFYWNoKChwcmV2aW91c1ZhbHVlLCBlbGVtZW50KSA9PiB7XG4gICAgICAvLyBpZiBlbGVtZW50IGhhZCBhcmlhLWhpZGRlbiBzdGF0dXMgcHJpb3IsIHJlc3RvcmUgc3RhdHVzXG4gICAgICBpZiAoZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIGlmIChwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgcHJldmlvdXNWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHNpYmxpbmdBcmlhSGlkZGVuQ2FjaGUuY2xlYXIoKTtcbiAgfVxufVxuIl19","/**\n * Contextual information for each overlay.\n * @internal\n */\nexport class SkyOverlayContext {\n constructor(config) {\n this.config = config;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL292ZXJsYXkvb3ZlcmxheS1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBNEIsTUFBd0I7UUFBeEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7SUFBRyxDQUFDO0NBQ3pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5T3ZlcmxheUNvbmZpZyB9IGZyb20gJy4vb3ZlcmxheS1jb25maWcnO1xuXG4vKipcbiAqIENvbnRleHR1YWwgaW5mb3JtYXRpb24gZm9yIGVhY2ggb3ZlcmxheS5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgU2t5T3ZlcmxheUNvbnRleHQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBTa3lPdmVybGF5Q29uZmlnKSB7fVxufVxuIl19","import { InjectionToken } from '@angular/core';\n/**\n * @internal\n */\nexport const SKY_STACKING_CONTEXT = new InjectionToken('SkyStackingContext');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2tpbmctY29udGV4dC10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9zdGFja2luZy1jb250ZXh0L3N0YWNraW5nLWNvbnRleHQtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUNwRCxvQkFBb0IsQ0FDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVN0YWNraW5nQ29udGV4dCB9IGZyb20gJy4vc3RhY2tpbmctY29udGV4dCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBTS1lfU1RBQ0tJTkdfQ09OVEVYVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTa3lTdGFja2luZ0NvbnRleHQ+KFxuICAnU2t5U3RhY2tpbmdDb250ZXh0Jyxcbik7XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EnvironmentInjector, HostBinding, ViewChild, ViewContainerRef, createEnvironmentInjector, inject, } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { BehaviorSubject, ReplaySubject, Subject, fromEvent, } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SkyCoreAdapterService } from '../adapter-service/adapter.service';\nimport { SkyIdService } from '../id/id.service';\nimport { SKY_STACKING_CONTEXT } from '../stacking-context/stacking-context-token';\nimport { SkyOverlayAdapterService } from './overlay-adapter.service';\nimport { SkyOverlayContext } from './overlay-context';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nconst POSITION_DEFAULT = 'fixed';\n/**\n * Omnibar is 1000.\n * See: https://github.com/blackbaud/auth-client/blob/master/src/omnibar/omnibar.ts#L139\n * ---\n * Modals start their z-indexes at 1040. However, each modal's z-index is a multiple of 10, so it\n * will be difficult to reliably predict a z-index that will always appear above all other\n * layers. Starting the z-index for overlays at a number much greater than modals will accommodate\n * the most reasonable of scenarios.\n * See: https://github.com/blackbaud/skyux-modals/blob/master/src/app/public/modules/modal/modal-host.service.ts#L22\n * (NOTE: It should be noted that modals do not use the overlay service, which is something we\n * should do in the near future to make sure z-indexes are predictable across all component\n * libraries.)\n */\nlet uniqueZIndex = 5000;\n/**\n * @internal\n */\nexport class SkyOverlayComponent {\n get backdropClick() {\n return this.#backdropClickObs;\n }\n get closed() {\n return this.#closedObs;\n }\n #backdropClick;\n #backdropClickObs;\n #closed;\n #closedObs;\n #ngUnsubscribe;\n #routerSubscription;\n #siblingAriaHiddenCache;\n #adapter;\n #changeDetector;\n #context;\n #coreAdapter;\n #elementRef;\n #environmentInjector;\n #idSvc;\n #router;\n constructor() {\n this.wrapperClass = '';\n this.enablePointerEvents = false;\n this.showBackdrop = false;\n this.zIndex = `${++uniqueZIndex}`;\n this.clipPath$ = new ReplaySubject(1);\n this.position = POSITION_DEFAULT;\n this.#ngUnsubscribe = new Subject();\n this.#siblingAriaHiddenCache = new Map();\n this.#adapter = inject(SkyOverlayAdapterService);\n this.#changeDetector = inject(ChangeDetectorRef);\n this.#context = inject(SkyOverlayContext);\n this.#coreAdapter = inject(SkyCoreAdapterService);\n this.#elementRef = inject(ElementRef);\n this.#environmentInjector = inject(EnvironmentInjector);\n this.#idSvc = inject(SkyIdService);\n this.#router = inject(Router, { optional: true });\n this.id = this.#idSvc.generateId();\n this.#backdropClick = new Subject();\n this.#closed = new Subject();\n this.#backdropClickObs = this.#backdropClick.asObservable();\n this.#closedObs = this.#closed.asObservable();\n }\n ngOnInit() {\n this.#applyConfig(this.#context.config);\n setTimeout(() => {\n this.#addBackdropClickListener();\n });\n if (this.#context.config.closeOnNavigation) {\n this.#addRouteListener();\n }\n if (this.#context.config.hideOthersFromScreenReaders) {\n this.#siblingAriaHiddenCache = this.#adapter.addAriaHiddenToSiblings(this.#elementRef);\n }\n }\n ngOnDestroy() {\n this.#removeRouteListener();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#backdropClick.complete();\n this.#adapter.restoreAriaHiddenForSiblings(this.#siblingAriaHiddenCache);\n this.#closed.next();\n this.#closed.complete();\n }\n attachComponent(component, providers = []) {\n /*istanbul ignore if: untestable*/\n if (!this.targetRef) {\n throw new Error('[SkyOverlayComponent] Could not attach the component because the target element could not be found.');\n }\n this.targetRef.clear();\n const environmentInjector = createEnvironmentInjector([\n {\n provide: SKY_STACKING_CONTEXT,\n useValue: {\n zIndex: new BehaviorSubject(parseInt(this.zIndex, 10))\n .asObservable()\n .pipe(takeUntil(this.#ngUnsubscribe)),\n },\n },\n ...providers,\n ], this.#environmentInjector);\n const componentRef = this.targetRef.createComponent(component, {\n environmentInjector,\n });\n // Run an initial change detection cycle after the component has been created.\n componentRef.changeDetectorRef.detectChanges();\n return componentRef;\n }\n attachTemplate(templateRef, context) {\n /*istanbul ignore if: untestable*/\n if (!this.targetRef) {\n throw new Error('[SkyOverlayComponent] Could not attach the template because the target element could not be found.');\n }\n this.targetRef.clear();\n return this.targetRef.createEmbeddedView(templateRef, context, {\n injector: this.#environmentInjector,\n });\n }\n updateClipPath(clipPath) {\n this.clipPath$.next(clipPath);\n }\n #applyConfig(config) {\n this.wrapperClass = config.wrapperClass || '';\n this.showBackdrop = !!config.showBackdrop;\n this.enablePointerEvents = !!config.enablePointerEvents;\n this.position = config.position || POSITION_DEFAULT;\n this.#changeDetector.markForCheck();\n }\n #addBackdropClickListener() {\n fromEvent(window.document, 'click')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event) => {\n if (event.target && this.overlayContentRef && this.overlayRef) {\n const isChild = this.overlayContentRef.nativeElement.contains(event.target);\n const isAbove = this.#coreAdapter.isTargetAboveElement(event.target, this.overlayRef.nativeElement);\n /* istanbul ignore else */\n if (!isChild && !isAbove) {\n this.#backdropClick.next();\n if (this.#context.config.enableClose) {\n this.#closed.next();\n }\n }\n }\n });\n }\n #addRouteListener() {\n /*istanbul ignore else*/\n if (this.#router) {\n this.#routerSubscription = this.#router.events.subscribe((event) => {\n /* istanbul ignore else */\n if (event instanceof NavigationStart) {\n this.#closed.next();\n }\n });\n }\n }\n #removeRouteListener() {\n if (this.#routerSubscription) {\n this.#routerSubscription.unsubscribe();\n this.#routerSubscription = undefined;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyOverlayComponent, isStandalone: true, selector: \"sky-overlay\", host: { properties: { \"id\": \"this.id\" } }, viewQueries: [{ propertyName: \"overlayContentRef\", first: true, predicate: [\"overlayContentRef\"], descendants: true, read: ElementRef, static: true }, { propertyName: \"overlayRef\", first: true, predicate: [\"overlayRef\"], descendants: true, read: ElementRef, static: true }, { propertyName: \"targetRef\", first: true, predicate: [\"target\"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: \"<div\\n #overlayRef\\n [class]=\\\"'sky-overlay-position-' + position + ' ' + wrapperClass\\\"\\n [style.z-index]=\\\"zIndex\\\"\\n [style.clip-path]=\\\"clipPath$ | async\\\"\\n [ngClass]=\\\"{\\n 'enable-pointer-events-pass-through': enablePointerEvents,\\n 'sky-overlay': true\\n }\\\"\\n>\\n <div #overlayContentRef class=\\\"sky-overlay-content\\\">\\n <ng-template #target />\\n </div>\\n @if (showBackdrop) {\\n <div class=\\\"sky-overlay-backdrop\\\"></div>\\n }\\n</div>\\n\", styles: [\".sky-overlay{inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-position-absolute{position:absolute}.sky-overlay-position-fixed{position:fixed}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:#00000080;inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-overlay', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule], template: \"<div\\n #overlayRef\\n [class]=\\\"'sky-overlay-position-' + position + ' ' + wrapperClass\\\"\\n [style.z-index]=\\\"zIndex\\\"\\n [style.clip-path]=\\\"clipPath$ | async\\\"\\n [ngClass]=\\\"{\\n 'enable-pointer-events-pass-through': enablePointerEvents,\\n 'sky-overlay': true\\n }\\\"\\n>\\n <div #overlayContentRef class=\\\"sky-overlay-content\\\">\\n <ng-template #target />\\n </div>\\n @if (showBackdrop) {\\n <div class=\\\"sky-overlay-backdrop\\\"></div>\\n }\\n</div>\\n\", styles: [\".sky-overlay{inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-position-absolute{position:absolute}.sky-overlay-position-fixed{position:fixed}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:#00000080;inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { id: [{\n type: HostBinding,\n args: ['id']\n }], overlayContentRef: [{\n type: ViewChild,\n args: ['overlayContentRef', {\n read: ElementRef,\n static: true,\n }]\n }], overlayRef: [{\n type: ViewChild,\n args: ['overlayRef', {\n read: ElementRef,\n static: true,\n }]\n }], targetRef: [{\n type: ViewChild,\n args: ['target', {\n read: ViewContainerRef,\n static: true,\n }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvb3ZlcmxheS9vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBRVYsbUJBQW1CLEVBQ25CLFdBQVcsRUFNWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLHlCQUF5QixFQUN6QixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxRCxPQUFPLEVBQ0wsZUFBZSxFQUVmLGFBQWEsRUFDYixPQUFPLEVBRVAsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVsRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBR3RELE1BQU0sZ0JBQWdCLEdBQXVCLE9BQU8sQ0FBQztBQUVyRDs7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QUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7OEdBeE5VLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHFOQXlCdEIsVUFBVSxpSEFNVixVQUFVLDRHQU1WLGdCQUFnQiwyQ0N6RzFCLGlkQWlCQSx5bUJEaURZLFlBQVk7OzJGQUVYLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxhQUFhLG1CQUdOLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxZQUFZLENBQUM7d0RBZ0JoQixFQUFFO3NCQURSLFdBQVc7dUJBQUMsSUFBSTtnQkFlVixpQkFBaUI7c0JBSnZCLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUU7d0JBQzlCLElBQUksRUFBRSxVQUFVO3dCQUNoQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTSxVQUFVO3NCQUpoQixTQUFTO3VCQUFDLFlBQVksRUFBRTt3QkFDdkIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9NLFNBQVM7c0JBSmYsU0FBUzt1QkFBQyxRQUFRLEVBQUU7d0JBQ25CLElBQUksRUFBRSxnQkFBZ0I7d0JBQ3RCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgSG9zdEJpbmRpbmcsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTdGF0aWNQcm92aWRlcixcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgY3JlYXRlRW52aXJvbm1lbnRJbmplY3RvcixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBSZXBsYXlTdWJqZWN0LFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIGZyb21FdmVudCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUNvcmVBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uL2FkYXB0ZXItc2VydmljZS9hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5SWRTZXJ2aWNlIH0gZnJvbSAnLi4vaWQvaWQuc2VydmljZSc7XG5pbXBvcnQgeyBTS1lfU1RBQ0tJTkdfQ09OVEVYVCB9IGZyb20gJy4uL3N0YWNraW5nLWNvbnRleHQvc3RhY2tpbmctY29udGV4dC10b2tlbic7XG5cbmltcG9ydCB7IFNreU92ZXJsYXlBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vb3ZlcmxheS1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5T3ZlcmxheUNvbmZpZyB9IGZyb20gJy4vb3ZlcmxheS1jb25maWcnO1xuaW1wb3J0IHsgU2t5T3ZlcmxheUNvbnRleHQgfSBmcm9tICcuL292ZXJsYXktY29udGV4dCc7XG5pbXBvcnQgeyBTa3lPdmVybGF5UG9zaXRpb24gfSBmcm9tICcuL292ZXJsYXktcG9zaXRpb24nO1xuXG5jb25zdCBQT1NJVElPTl9ERUZBVUxUOiBTa3lPdmVybGF5UG9zaXRpb24gPSAnZml4ZWQnO1xuXG4vKipcbiAqIE9tbmliYXIgaXMgMTAwMC5cbiAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JsYWNrYmF1ZC9hdXRoLWNsaWVudC9ibG9iL21hc3Rlci9zcmMvb21uaWJhci9vbW5pYmFyLnRzI0wxMzlcbiAqIC0tLVxuICogTW9kYWxzIHN0YXJ0IHRoZWlyIHotaW5kZXhlcyBhdCAxMDQwLiBIb3dldmVyLCBlYWNoIG1vZGFsJ3Mgei1pbmRleCBpcyBhIG11bHRpcGxlIG9mIDEwLCBzbyBpdFxuICogd2lsbCBiZSBkaWZmaWN1bHQgdG8gcmVsaWFibHkgcHJlZGljdCBhIHotaW5kZXggdGhhdCB3aWxsIGFsd2F5cyBhcHBlYXIgYWJvdmUgYWxsIG90aGVyXG4gKiBsYXllcnMuIFN0YXJ0aW5nIHRoZSB6LWluZGV4IGZvciBvdmVybGF5cyBhdCBhIG51bWJlciBtdWNoIGdyZWF0ZXIgdGhhbiBtb2RhbHMgd2lsbCBhY2NvbW1vZGF0ZVxuICogdGhlIG1vc3QgcmVhc29uYWJsZSBvZiBzY2VuYXJpb3MuXG4gKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ibGFja2JhdWQvc2t5dXgtbW9kYWxzL2Jsb2IvbWFzdGVyL3NyYy9hcHAvcHVibGljL21vZHVsZXMvbW9kYWwvbW9kYWwtaG9zdC5zZXJ2aWNlLnRzI0wyMlxuICogKE5PVEU6IEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG1vZGFscyBkbyBub3QgdXNlIHRoZSBvdmVybGF5IHNlcnZpY2UsIHdoaWNoIGlzIHNvbWV0aGluZyB3ZVxuICogc2hvdWxkIGRvIGluIHRoZSBuZWFyIGZ1dHVyZSB0byBtYWtlIHN1cmUgei1pbmRleGVzIGFyZSBwcmVkaWN0YWJsZSBhY3Jvc3MgYWxsIGNvbXBvbmVudFxuICogbGlicmFyaWVzLilcbiAqL1xubGV0IHVuaXF1ZVpJbmRleCA9IDUwMDA7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1vdmVybGF5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL292ZXJsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vdmVybGF5LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5T3ZlcmxheUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHdyYXBwZXJDbGFzcyA9ICcnO1xuXG4gIHB1YmxpYyBnZXQgYmFja2Ryb3BDbGljaygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2Ryb3BDbGlja09icztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2xvc2VkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiNjbG9zZWRPYnM7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlUG9pbnRlckV2ZW50cyA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnaWQnKVxuICBwdWJsaWMgaWQ6IHN0cmluZztcblxuICBwdWJsaWMgc2hvd0JhY2tkcm9wID0gZmFsc2U7XG5cbiAgcHVibGljIHpJbmRleCA9IGAkeysrdW5pcXVlWkluZGV4fWA7XG5cbiAgcHJvdGVjdGVkIGNsaXBQYXRoJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4oMSk7XG5cbiAgcHJvdGVjdGVkIHBvc2l0aW9uID0gUE9TSVRJT05fREVGQVVMVDtcblxuICBAVmlld0NoaWxkKCdvdmVybGF5Q29udGVudFJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIG92ZXJsYXlDb250ZW50UmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXlSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBvdmVybGF5UmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ3RhcmdldCcsIHtcbiAgICByZWFkOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIHRhcmdldFJlZjogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZDtcblxuICAjYmFja2Ryb3BDbGljazogU3ViamVjdDx2b2lkPjtcblxuICAjYmFja2Ryb3BDbGlja09iczogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAjY2xvc2VkOiBTdWJqZWN0PHZvaWQ+O1xuXG4gICNjbG9zZWRPYnM6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNyb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAjc2libGluZ0FyaWFIaWRkZW5DYWNoZSA9IG5ldyBNYXA8RWxlbWVudCwgc3RyaW5nIHwgbnVsbD4oKTtcblxuICByZWFkb25seSAjYWRhcHRlciA9IGluamVjdChTa3lPdmVybGF5QWRhcHRlclNlcnZpY2UpO1xuICByZWFkb25seSAjY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICByZWFkb25seSAjY29udGV4dCA9IGluamVjdChTa3lPdmVybGF5Q29udGV4dCk7XG4gIHJlYWRvbmx5ICNjb3JlQWRhcHRlciA9IGluamVjdChTa3lDb3JlQWRhcHRlclNlcnZpY2UpO1xuICByZWFkb25seSAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgI2Vudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG4gIHJlYWRvbmx5ICNpZFN2YyA9IGluamVjdChTa3lJZFNlcnZpY2UpO1xuICByZWFkb25seSAjcm91dGVyID0gaW5qZWN0KFJvdXRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuXG4gICAgdGhpcy4jYmFja2Ryb3BDbGljayA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgdGhpcy4jY2xvc2VkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHRoaXMuI2JhY2tkcm9wQ2xpY2tPYnMgPSB0aGlzLiNiYWNrZHJvcENsaWNrLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuI2Nsb3NlZE9icyA9IHRoaXMuI2Nsb3NlZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNhcHBseUNvbmZpZyh0aGlzLiNjb250ZXh0LmNvbmZpZyk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI2FkZEJhY2tkcm9wQ2xpY2tMaXN0ZW5lcigpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuI2NvbnRleHQuY29uZmlnLmNsb3NlT25OYXZpZ2F0aW9uKSB7XG4gICAgICB0aGlzLiNhZGRSb3V0ZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuI2NvbnRleHQuY29uZmlnLmhpZGVPdGhlcnNGcm9tU2NyZWVuUmVhZGVycykge1xuICAgICAgdGhpcy4jc2libGluZ0FyaWFIaWRkZW5DYWNoZSA9IHRoaXMuI2FkYXB0ZXIuYWRkQXJpYUhpZGRlblRvU2libGluZ3MoXG4gICAgICAgIHRoaXMuI2VsZW1lbnRSZWYsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW1vdmVSb3V0ZUxpc3RlbmVyKCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy4jYmFja2Ryb3BDbGljay5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy4jYWRhcHRlci5yZXN0b3JlQXJpYUhpZGRlbkZvclNpYmxpbmdzKHRoaXMuI3NpYmxpbmdBcmlhSGlkZGVuQ2FjaGUpO1xuXG4gICAgdGhpcy4jY2xvc2VkLm5leHQoKTtcbiAgICB0aGlzLiNjbG9zZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhdHRhY2hDb21wb25lbnQ8Qz4oXG4gICAgY29tcG9uZW50OiBUeXBlPEM+LFxuICAgIHByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSA9IFtdLFxuICApOiBDb21wb25lbnRSZWY8Qz4ge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGlmOiB1bnRlc3RhYmxlKi9cbiAgICBpZiAoIXRoaXMudGFyZ2V0UmVmKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdbU2t5T3ZlcmxheUNvbXBvbmVudF0gQ291bGQgbm90IGF0dGFjaCB0aGUgY29tcG9uZW50IGJlY2F1c2UgdGhlIHRhcmdldCBlbGVtZW50IGNvdWxkIG5vdCBiZSBmb3VuZC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnRhcmdldFJlZi5jbGVhcigpO1xuXG4gICAgY29uc3QgZW52aXJvbm1lbnRJbmplY3RvciA9IGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IoXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBTS1lfU1RBQ0tJTkdfQ09OVEVYVCxcbiAgICAgICAgICB1c2VWYWx1ZToge1xuICAgICAgICAgICAgekluZGV4OiBuZXcgQmVoYXZpb3JTdWJqZWN0KHBhcnNlSW50KHRoaXMuekluZGV4LCAxMCkpXG4gICAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnByb3ZpZGVycyxcbiAgICAgIF0sXG4gICAgICB0aGlzLiNlbnZpcm9ubWVudEluamVjdG9yLFxuICAgICk7XG5cbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLnRhcmdldFJlZi5jcmVhdGVDb21wb25lbnQ8Qz4oY29tcG9uZW50LCB7XG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yLFxuICAgIH0pO1xuXG4gICAgLy8gUnVuIGFuIGluaXRpYWwgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSBhZnRlciB0aGUgY29tcG9uZW50IGhhcyBiZWVuIGNyZWF0ZWQuXG4gICAgY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gIH1cblxuICBwdWJsaWMgYXR0YWNoVGVtcGxhdGU8VD4oXG4gICAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPFQ+LFxuICAgIGNvbnRleHQ6IFQsXG4gICk6IEVtYmVkZGVkVmlld1JlZjxUPiB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgaWY6IHVudGVzdGFibGUqL1xuICAgIGlmICghdGhpcy50YXJnZXRSZWYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1tTa3lPdmVybGF5Q29tcG9uZW50XSBDb3VsZCBub3QgYXR0YWNoIHRoZSB0ZW1wbGF0ZSBiZWNhdXNlIHRoZSB0YXJnZXQgZWxlbWVudCBjb3VsZCBub3QgYmUgZm91bmQuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy50YXJnZXRSZWYuY2xlYXIoKTtcblxuICAgIHJldHVybiB0aGlzLnRhcmdldFJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGVtcGxhdGVSZWYsIGNvbnRleHQsIHtcbiAgICAgIGluamVjdG9yOiB0aGlzLiNlbnZpcm9ubWVudEluamVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNsaXBQYXRoKGNsaXBQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLmNsaXBQYXRoJC5uZXh0KGNsaXBQYXRoKTtcbiAgfVxuXG4gICNhcHBseUNvbmZpZyhjb25maWc6IFNreU92ZXJsYXlDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLndyYXBwZXJDbGFzcyA9IGNvbmZpZy53cmFwcGVyQ2xhc3MgfHwgJyc7XG4gICAgdGhpcy5zaG93QmFja2Ryb3AgPSAhIWNvbmZpZy5zaG93QmFja2Ryb3A7XG4gICAgdGhpcy5lbmFibGVQb2ludGVyRXZlbnRzID0gISFjb25maWcuZW5hYmxlUG9pbnRlckV2ZW50cztcbiAgICB0aGlzLnBvc2l0aW9uID0gY29uZmlnLnBvc2l0aW9uIHx8IFBPU0lUSU9OX0RFRkFVTFQ7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjYWRkQmFja2Ryb3BDbGlja0xpc3RlbmVyKCk6IHZvaWQge1xuICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih3aW5kb3cuZG9jdW1lbnQsICdjbGljaycpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICYmIHRoaXMub3ZlcmxheUNvbnRlbnRSZWYgJiYgdGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgY29uc3QgaXNDaGlsZCA9IHRoaXMub3ZlcmxheUNvbnRlbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgaXNBYm92ZSA9IHRoaXMuI2NvcmVBZGFwdGVyLmlzVGFyZ2V0QWJvdmVFbGVtZW50KFxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LFxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKCFpc0NoaWxkICYmICFpc0Fib3ZlKSB7XG4gICAgICAgICAgICB0aGlzLiNiYWNrZHJvcENsaWNrLm5leHQoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLiNjb250ZXh0LmNvbmZpZy5lbmFibGVDbG9zZSkge1xuICAgICAgICAgICAgICB0aGlzLiNjbG9zZWQubmV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAjYWRkUm91dGVMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jcm91dGVyKSB7XG4gICAgICB0aGlzLiNyb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLiNyb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgdGhpcy4jY2xvc2VkLm5leHQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3JlbW92ZVJvdXRlTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI3JvdXRlclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy4jcm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLiNyb3V0ZXJTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gICNvdmVybGF5UmVmXG4gIFtjbGFzc109XCInc2t5LW92ZXJsYXktcG9zaXRpb24tJyArIHBvc2l0aW9uICsgJyAnICsgd3JhcHBlckNsYXNzXCJcbiAgW3N0eWxlLnotaW5kZXhdPVwiekluZGV4XCJcbiAgW3N0eWxlLmNsaXAtcGF0aF09XCJjbGlwUGF0aCQgfCBhc3luY1wiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnZW5hYmxlLXBvaW50ZXItZXZlbnRzLXBhc3MtdGhyb3VnaCc6IGVuYWJsZVBvaW50ZXJFdmVudHMsXG4gICAgJ3NreS1vdmVybGF5JzogdHJ1ZVxuICB9XCJcbj5cbiAgPGRpdiAjb3ZlcmxheUNvbnRlbnRSZWYgY2xhc3M9XCJza3ktb3ZlcmxheS1jb250ZW50XCI+XG4gICAgPG5nLXRlbXBsYXRlICN0YXJnZXQgLz5cbiAgPC9kaXY+XG4gIEBpZiAoc2hvd0JhY2tkcm9wKSB7XG4gICAgPGRpdiBjbGFzcz1cInNreS1vdmVybGF5LWJhY2tkcm9wXCI+PC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19","var _a;\nimport { ApplicationRef, EnvironmentInjector, Injectable, inject, } from '@angular/core';\nimport { SkyOverlayAdapterService } from './overlay-adapter.service';\nimport { SkyOverlayContext } from './overlay-context';\nimport { SkyOverlayInstance } from './overlay-instance';\nimport { SkyOverlayComponent } from './overlay.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../dynamic-component/dynamic-component.service\";\n/**\n * This service is used to create new overlays.\n * @internal\n */\nexport class SkyOverlayService {\n static { this.overlays = []; }\n #adapter = inject(SkyOverlayAdapterService);\n #applicationRef = inject(ApplicationRef);\n #dynamicComponentSvc;\n #environmentInjector = inject(EnvironmentInjector);\n constructor(dynamicComponentSvc) {\n this.#dynamicComponentSvc = dynamicComponentSvc;\n }\n /**\n * Creates an empty overlay. Use the returned `SkyOverlayInstance` to append content.\n * @param config Configuration for the overlay.\n */\n create(config) {\n const settings = this.#prepareConfig(config);\n if (settings.enableScroll === false) {\n this.#adapter.restrictBodyScroll();\n }\n const componentRef = this.#createOverlay(settings);\n const instance = new SkyOverlayInstance(settings, componentRef);\n instance.closed.subscribe(() => {\n // Only execute the service's close method if the instance still exists.\n // This is needed to address a race condition if the deprecated instance.close method is used instead.\n if (_a.overlays.indexOf(instance) > -1) {\n this.close(instance);\n }\n });\n _a.overlays.push(instance);\n return instance;\n }\n /**\n * Closes (and destroys) an overlay instance.\n * @param instance The instance to close.\n */\n close(instance) {\n this.#destroyOverlay(instance);\n this.#applicationRef.detachView(instance.componentRef.hostView);\n instance.componentRef.destroy();\n // In some cases, Angular keeps dynamically-generated component's nodes in the DOM during\n // unit tests. This can make querying difficult because the older DOM nodes still exist and\n // produce inconsistent results.\n // Angular Material's overlay appears to do the same thing:\n // https://github.com/angular/components/blob/master/src/cdk/portal/dom-portal-outlet.ts#L143-L145\n // (Ignoring coverage since this branch will only be hit by consumer unit tests.)\n const componentElement = instance.componentRef.location.nativeElement;\n /* istanbul ignore if */\n if (componentElement.parentNode !== null) {\n componentElement.parentNode.removeChild(componentElement);\n }\n }\n /**\n * Closes all overlay instances.\n */\n closeAll() {\n // The `close` event handler for each instance alters the array's length asynchronously,\n // so the only \"safe\" index to call is zero.\n while (_a.overlays.length > 0) {\n this.close(_a.overlays[0]);\n }\n }\n #createOverlay(config) {\n return this.#dynamicComponentSvc.createComponent(SkyOverlayComponent, {\n environmentInjector: this.#environmentInjector,\n providers: [\n {\n provide: SkyOverlayContext,\n useValue: new SkyOverlayContext(config),\n },\n ],\n });\n }\n #prepareConfig(config = {}) {\n const defaults = {\n closeOnNavigation: true,\n enableClose: false,\n enablePointerEvents: false,\n enableScroll: true,\n showBackdrop: false,\n wrapperClass: '',\n };\n return { ...defaults, ...config };\n }\n #destroyOverlay(instance) {\n _a.overlays.splice(_a.overlays.indexOf(instance), 1);\n if (instance.config.enableScroll === false) {\n // Only release the body scroll if no other overlay wishes it to be disabled.\n const anotherOverlayDisablesScroll = _a.overlays.some((o) => !o.config.enableScroll);\n if (!anotherOverlayDisablesScroll) {\n this.#adapter.releaseBodyScroll();\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayService, deps: [{ token: i1.SkyDynamicComponentService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayService, providedIn: 'root' }); }\n}\n_a = SkyOverlayService;\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.SkyDynamicComponentService }] });\n/**\n * This service is used to create new overlays.\n * @internal\n * @deprecated Use `SkyOverlayService` to open a standalone component instead.\n */\nexport class SkyOverlayLegacyService extends SkyOverlayService {\n /* istanbul ignore next */\n constructor(dynamicComponentSvc) {\n super(dynamicComponentSvc);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayLegacyService, deps: [{ token: i1.SkyDynamicComponentLegacyService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayLegacyService, providedIn: 'any' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyOverlayLegacyService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'any',\n }]\n }], ctorParameters: () => [{ type: i1.SkyDynamicComponentLegacyService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL292ZXJsYXkvb3ZlcmxheS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsY0FBYyxFQUVkLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBT3ZCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFMUQ7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjthQUNiLGFBQVEsR0FBeUIsRUFBRSxBQUEzQixDQUE0QjtJQUUxQyxRQUFRLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6QyxvQkFBb0IsQ0FBNkI7SUFDakQsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFNUQsWUFBWSxtQkFBK0M7UUFDekQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDO0lBQ2xELENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsTUFBeUI7UUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU3QyxJQUFJLFFBQVEsQ0FBQyxZQUFZLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFD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UUFBUSxDQUFDLElBQUksQ0FDbEUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQzlCLENBQUM7WUFDRixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs4R0FoSFUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBb0hEOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsaUJBQWlCO0lBQzVELDBCQUEwQjtJQUMxQixZQUFZLG1CQUFxRDtRQUMvRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM3QixDQUFDOzhHQUpVLHVCQUF1QjtrSEFBdkIsdUJBQXVCLGNBRnRCLEtBQUs7OzJGQUVOLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsS0FBSztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ29tcG9uZW50UmVmLFxuICBFbnZpcm9ubWVudEluamVjdG9yLFxuICBJbmplY3RhYmxlLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lEeW5hbWljQ29tcG9uZW50TGVnYWN5U2VydmljZSxcbiAgU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG59IGZyb20gJy4uL2R5bmFtaWMtY29tcG9uZW50L2R5bmFtaWMtY29tcG9uZW50LnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTa3lPdmVybGF5QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL292ZXJsYXktYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreU92ZXJsYXlDb25maWcgfSBmcm9tICcuL292ZXJsYXktY29uZmlnJztcbmltcG9ydCB7IFNreU92ZXJsYXlDb250ZXh0IH0gZnJvbSAnLi9vdmVybGF5LWNvbnRleHQnO1xuaW1wb3J0IHsgU2t5T3ZlcmxheUluc3RhbmNlIH0gZnJvbSAnLi9vdmVybGF5LWluc3RhbmNlJztcbmltcG9ydCB7IFNreU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL292ZXJsYXkuY29tcG9uZW50JztcblxuLyoqXG4gKiBUaGlzIHNlcnZpY2UgaXMgdXNlZCB0byBjcmVhdGUgbmV3IG92ZXJsYXlzLlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lPdmVybGF5U2VydmljZSB7XG4gIHByaXZhdGUgc3RhdGljIG92ZXJsYXlzOiBTa3lPdmVybGF5SW5zdGFuY2VbXSA9IFtdO1xuXG4gIHJlYWRvbmx5ICNhZGFwdGVyID0gaW5qZWN0KFNreU92ZXJsYXlBZGFwdGVyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNhcHBsaWNhdGlvblJlZiA9IGluamVjdChBcHBsaWNhdGlvblJlZik7XG4gIHJlYWRvbmx5ICNkeW5hbWljQ29tcG9uZW50U3ZjOiBTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZTtcbiAgcmVhZG9ubHkgI2Vudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG5cbiAgY29uc3RydWN0b3IoZHluYW1pY0NvbXBvbmVudFN2YzogU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2UpIHtcbiAgICB0aGlzLiNkeW5hbWljQ29tcG9uZW50U3ZjID0gZHluYW1pY0NvbXBvbmVudFN2YztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVtcHR5IG92ZXJsYXkuIFVzZSB0aGUgcmV0dXJuZWQgYFNreU92ZXJsYXlJbnN0YW5jZWAgdG8gYXBwZW5kIGNvbnRlbnQuXG4gICAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgdGhlIG92ZXJsYXkuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlKGNvbmZpZz86IFNreU92ZXJsYXlDb25maWcpOiBTa3lPdmVybGF5SW5zdGFuY2Uge1xuICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy4jcHJlcGFyZUNvbmZpZyhjb25maWcpO1xuXG4gICAgaWYgKHNldHRpbmdzLmVuYWJsZVNjcm9sbCA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuI2FkYXB0ZXIucmVzdHJpY3RCb2R5U2Nyb2xsKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy4jY3JlYXRlT3ZlcmxheShzZXR0aW5ncyk7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgU2t5T3ZlcmxheUluc3RhbmNlKHNldHRpbmdzLCBjb21wb25lbnRSZWYpO1xuXG4gICAgaW5zdGFuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAvLyBPbmx5IGV4ZWN1dGUgdGhlIHNlcnZpY2UncyBjbG9zZSBtZXRob2QgaWYgdGhlIGluc3RhbmNlIHN0aWxsIGV4aXN0cy5cbiAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIHRvIGFkZHJlc3MgYSByYWNlIGNvbmRpdGlvbiBpZiB0aGUgZGVwcmVjYXRlZCBpbnN0YW5jZS5jbG9zZSBtZXRob2QgaXMgdXNlZCBpbnN0ZWFkLlxuICAgICAgaWYgKFNreU92ZXJsYXlTZXJ2aWNlLm92ZXJsYXlzLmluZGV4T2YoaW5zdGFuY2UpID4gLTEpIHtcbiAgICAgICAgdGhpcy5jbG9zZShpbnN0YW5jZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBTa3lPdmVybGF5U2VydmljZS5vdmVybGF5cy5wdXNoKGluc3RhbmNlKTtcblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgKGFuZCBkZXN0cm95cykgYW4gb3ZlcmxheSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIGluc3RhbmNlIFRoZSBpbnN0YW5jZSB0byBjbG9zZS5cbiAgICovXG4gIHB1YmxpYyBjbG9zZShpbnN0YW5jZTogU2t5T3ZlcmxheUluc3RhbmNlKTogdm9pZCB7XG4gICAgdGhpcy4jZGVzdHJveU92ZXJsYXkoaW5zdGFuY2UpO1xuICAgIHRoaXMuI2FwcGxpY2F0aW9uUmVmLmRldGFjaFZpZXcoaW5zdGFuY2UuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICBpbnN0YW5jZS5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuXG4gICAgLy8gSW4gc29tZSBjYXNlcywgQW5ndWxhciBrZWVwcyBkeW5hbWljYWxseS1nZW5lcmF0ZWQgY29tcG9uZW50J3Mgbm9kZXMgaW4gdGhlIERPTSBkdXJpbmdcbiAgICAvLyB1bml0IHRlc3RzLiBUaGlzIGNhbiBtYWtlIHF1ZXJ5aW5nIGRpZmZpY3VsdCBiZWNhdXNlIHRoZSBvbGRlciBET00gbm9kZXMgc3RpbGwgZXhpc3QgYW5kXG4gICAgLy8gcHJvZHVjZSBpbmNvbnNpc3RlbnQgcmVzdWx0cy5cbiAgICAvLyBBbmd1bGFyIE1hdGVyaWFsJ3Mgb3ZlcmxheSBhcHBlYXJzIHRvIGRvIHRoZSBzYW1lIHRoaW5nOlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvc3JjL2Nkay9wb3J0YWwvZG9tLXBvcnRhbC1vdXRsZXQudHMjTDE0My1MMTQ1XG4gICAgLy8gKElnbm9yaW5nIGNvdmVyYWdlIHNpbmNlIHRoaXMgYnJhbmNoIHdpbGwgb25seSBiZSBoaXQgYnkgY29uc3VtZXIgdW5pdCB0ZXN0cy4pXG4gICAgY29uc3QgY29tcG9uZW50RWxlbWVudCA9IGluc3RhbmNlLmNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChjb21wb25lbnRFbGVtZW50LnBhcmVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbXBvbmVudEVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjb21wb25lbnRFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIGFsbCBvdmVybGF5IGluc3RhbmNlcy5cbiAgICovXG4gIHB1YmxpYyBjbG9zZUFsbCgpOiB2b2lkIHtcbiAgICAvLyBUaGUgYGNsb3NlYCBldmVudCBoYW5kbGVyIGZvciBlYWNoIGluc3RhbmNlIGFsdGVycyB0aGUgYXJyYXkncyBsZW5ndGggYXN5bmNocm9ub3VzbHksXG4gICAgLy8gc28gdGhlIG9ubHkgXCJzYWZlXCIgaW5kZXggdG8gY2FsbCBpcyB6ZXJvLlxuICAgIHdoaWxlIChTa3lPdmVybGF5U2VydmljZS5vdmVybGF5cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmNsb3NlKFNreU92ZXJsYXlTZXJ2aWNlLm92ZXJsYXlzWzBdKTtcbiAgICB9XG4gIH1cblxuICAjY3JlYXRlT3ZlcmxheShjb25maWc6IFNreU92ZXJsYXlDb25maWcpOiBDb21wb25lbnRSZWY8U2t5T3ZlcmxheUNvbXBvbmVudD4ge1xuICAgIHJldHVybiB0aGlzLiNkeW5hbWljQ29tcG9uZW50U3ZjLmNyZWF0ZUNvbXBvbmVudChTa3lPdmVybGF5Q29tcG9uZW50LCB7XG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLiNlbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBTa3lPdmVybGF5Q29udGV4dCxcbiAgICAgICAgICB1c2VWYWx1ZTogbmV3IFNreU92ZXJsYXlDb250ZXh0KGNvbmZpZyksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgI3ByZXBhcmVDb25maWcoY29uZmlnOiBTa3lPdmVybGF5Q29uZmlnID0ge30pOiBTa3lPdmVybGF5Q29uZmlnIHtcbiAgICBjb25zdCBkZWZhdWx0czogU2t5T3ZlcmxheUNvbmZpZyA9IHtcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxuICAgICAgZW5hYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICBlbmFibGVTY3JvbGw6IHRydWUsXG4gICAgICBzaG93QmFja2Ryb3A6IGZhbHNlLFxuICAgICAgd3JhcHBlckNsYXNzOiAnJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHsgLi4uZGVmYXVsdHMsIC4uLmNvbmZpZyB9O1xuICB9XG5cbiAgI2Rlc3Ryb3lPdmVybGF5KGluc3RhbmNlOiBTa3lPdmVybGF5SW5zdGFuY2UpOiB2b2lkIHtcbiAgICBTa3lPdmVybGF5U2VydmljZS5vdmVybGF5cy5zcGxpY2UoXG4gICAgICBTa3lPdmVybGF5U2VydmljZS5vdmVybGF5cy5pbmRleE9mKGluc3RhbmNlKSxcbiAgICAgIDEsXG4gICAgKTtcblxuICAgIGlmIChpbnN0YW5jZS5jb25maWcuZW5hYmxlU2Nyb2xsID09PSBmYWxzZSkge1xuICAgICAgLy8gT25seSByZWxlYXNlIHRoZSBib2R5IHNjcm9sbCBpZiBubyBvdGhlciBvdmVybGF5IHdpc2hlcyBpdCB0byBiZSBkaXNhYmxlZC5cbiAgICAgIGNvbnN0IGFub3RoZXJPdmVybGF5RGlzYWJsZXNTY3JvbGwgPSBTa3lPdmVybGF5U2VydmljZS5vdmVybGF5cy5zb21lKFxuICAgICAgICAobykgPT4gIW8uY29uZmlnLmVuYWJsZVNjcm9sbCxcbiAgICAgICk7XG4gICAgICBpZiAoIWFub3RoZXJPdmVybGF5RGlzYWJsZXNTY3JvbGwpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlci5yZWxlYXNlQm9keVNjcm9sbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgc2VydmljZSBpcyB1c2VkIHRvIGNyZWF0ZSBuZXcgb3ZlcmxheXMuXG4gKiBAaW50ZXJuYWxcbiAqIEBkZXByZWNhdGVkIFVzZSBgU2t5T3ZlcmxheVNlcnZpY2VgIHRvIG9wZW4gYSBzdGFuZGFsb25lIGNvbXBvbmVudCBpbnN0ZWFkLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdhbnknLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lPdmVybGF5TGVnYWN5U2VydmljZSBleHRlbmRzIFNreU92ZXJsYXlTZXJ2aWNlIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgY29uc3RydWN0b3IoZHluYW1pY0NvbXBvbmVudFN2YzogU2t5RHluYW1pY0NvbXBvbmVudExlZ2FjeVNlcnZpY2UpIHtcbiAgICBzdXBlcihkeW5hbWljQ29tcG9uZW50U3ZjKTtcbiAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport { SkyIntlNumberFormatStyle } from '@skyux/i18n';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SkyNumberFormatUtility } from '../shared/number-format/number-format-utility';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/i18n\";\nexport class SkyPercentPipe {\n get defaultLocale() {\n return this.#defaultLocale;\n }\n #defaultFormat = '1.0-2';\n #defaultLocale = 'en-US';\n #format;\n #formattedValue = '';\n #locale;\n #ngUnsubscribe = new Subject();\n #value;\n constructor(localeProvider) {\n localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#defaultLocale = localeInfo.locale;\n this.#updateFormattedValue();\n });\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n transform(value, format, locale) {\n this.#value = value;\n this.#format = format;\n this.#locale = locale;\n this.#updateFormattedValue();\n return this.#formattedValue;\n }\n #updateFormattedValue() {\n const locale = this.#locale || this.#defaultLocale;\n const format = this.#format || this.#defaultFormat;\n this.#formattedValue = this.#value\n ? SkyNumberFormatUtility.formatNumber(locale, this.#value, SkyIntlNumberFormatStyle.Percent, format)\n : '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyPercentPipe, deps: [{ token: i1.SkyAppLocaleProvider }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyPercentPipe, isStandalone: false, name: \"skyPercent\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyPercentPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyPercent',\n pure: false,\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i1.SkyAppLocaleProvider }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyY2VudC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3BlcmNlbnQtcGlwZS9wZXJjZW50LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUF3Qix3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7O0FBT3ZGLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWMsR0FBRyxPQUFPLENBQUM7SUFFekIsY0FBYyxHQUFHLE9BQU8sQ0FBQztJQUV6QixPQUFPLENBQXFCO0lBRTVCLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFFckIsT0FBTyxDQUFxQjtJQUU1QixjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVyQyxNQUFNLENBQXFCO0lBRTNCLFlBQVksY0FBb0M7UUFDOUMsY0FBYzthQUNYLGFBQWEsRUFBRTthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUN4QyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQWEsRUFBRSxNQUFlLEVBQUUsTUFBZTtRQUM5RCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUV0QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRW5ELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU07WUFDaEMsQ0FBQyxDQUFFLHNCQUFzQixDQUFDLFlBQVksQ0FDbEMsTUFBTSxFQUNOLElBQUksQ0FBQyxNQUFNLEVBQ1gsd0JBQXdCLENBQUMsT0FBTyxFQUNoQyxNQUFNLENBQ0k7WUFDZCxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQzs4R0F4RFUsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUwxQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsS0FBSztvQkFDWCxVQUFVLEVBQUUsS0FBSztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkRlc3Ryb3ksIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUFwcExvY2FsZVByb3ZpZGVyLCBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5TnVtYmVyRm9ybWF0VXRpbGl0eSB9IGZyb20gJy4uL3NoYXJlZC9udW1iZXItZm9ybWF0L251bWJlci1mb3JtYXQtdXRpbGl0eSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3NreVBlcmNlbnQnLFxuICBwdXJlOiBmYWxzZSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreVBlcmNlbnRQaXBlIGltcGxlbWVudHMgT25EZXN0cm95LCBQaXBlVHJhbnNmb3JtIHtcbiAgcHVibGljIGdldCBkZWZhdWx0TG9jYWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2RlZmF1bHRMb2NhbGU7XG4gIH1cblxuICAjZGVmYXVsdEZvcm1hdCA9ICcxLjAtMic7XG5cbiAgI2RlZmF1bHRMb2NhbGUgPSAnZW4tVVMnO1xuXG4gICNmb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjZm9ybWF0dGVkVmFsdWUgPSAnJztcblxuICAjbG9jYWxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICN2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKGxvY2FsZVByb3ZpZGVyOiBTa3lBcHBMb2NhbGVQcm92aWRlcikge1xuICAgIGxvY2FsZVByb3ZpZGVyXG4gICAgICAuZ2V0TG9jYWxlSW5mbygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChsb2NhbGVJbmZvKSA9PiB7XG4gICAgICAgIHRoaXMuI2RlZmF1bHRMb2NhbGUgPSBsb2NhbGVJbmZvLmxvY2FsZTtcbiAgICAgICAgdGhpcy4jdXBkYXRlRm9ybWF0dGVkVmFsdWUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgZm9ybWF0Pzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMuI3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy4jZm9ybWF0ID0gZm9ybWF0O1xuICAgIHRoaXMuI2xvY2FsZSA9IGxvY2FsZTtcblxuICAgIHRoaXMuI3VwZGF0ZUZvcm1hdHRlZFZhbHVlKCk7XG5cbiAgICByZXR1cm4gdGhpcy4jZm9ybWF0dGVkVmFsdWU7XG4gIH1cblxuICAjdXBkYXRlRm9ybWF0dGVkVmFsdWUoKTogdm9pZCB7XG4gICAgY29uc3QgbG9jYWxlID0gdGhpcy4jbG9jYWxlIHx8IHRoaXMuI2RlZmF1bHRMb2NhbGU7XG4gICAgY29uc3QgZm9ybWF0ID0gdGhpcy4jZm9ybWF0IHx8IHRoaXMuI2RlZmF1bHRGb3JtYXQ7XG5cbiAgICB0aGlzLiNmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuI3ZhbHVlXG4gICAgICA/IChTa3lOdW1iZXJGb3JtYXRVdGlsaXR5LmZvcm1hdE51bWJlcihcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgdGhpcy4jdmFsdWUsXG4gICAgICAgICAgU2t5SW50bE51bWJlckZvcm1hdFN0eWxlLlBlcmNlbnQsXG4gICAgICAgICAgZm9ybWF0LFxuICAgICAgICApIGFzIHN0cmluZylcbiAgICAgIDogJyc7XG4gIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { SkyCoreResourcesModule } from '../shared/sky-core-resources.module';\nimport { SkyPercentPipe } from './percent.pipe';\nimport * as i0 from \"@angular/core\";\nexport class SkyPercentPipeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyPercentPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyPercentPipeModule, declarations: [SkyPercentPipe], imports: [SkyCoreResourcesModule], exports: [SkyPercentPipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyPercentPipeModule, providers: [SkyPercentPipe], imports: [SkyCoreResourcesModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyPercentPipeModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyPercentPipe],\n providers: [SkyPercentPipe],\n imports: [SkyCoreResourcesModule],\n exports: [SkyPercentPipe],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyY2VudC1waXBlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9wZXJjZW50LXBpcGUvcGVyY2VudC1waXBlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFRaEQsTUFBTSxPQUFPLG9CQUFvQjs4R0FBcEIsb0JBQW9COytHQUFwQixvQkFBb0IsaUJBTGhCLGNBQWMsYUFFbkIsc0JBQXNCLGFBQ3RCLGNBQWM7K0dBRWIsb0JBQW9CLGFBSnBCLENBQUMsY0FBYyxDQUFDLFlBQ2pCLHNCQUFzQjs7MkZBR3JCLG9CQUFvQjtrQkFOaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQzlCLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDM0IsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lDb3JlUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1jb3JlLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lQZXJjZW50UGlwZSB9IGZyb20gJy4vcGVyY2VudC5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5UGVyY2VudFBpcGVdLFxuICBwcm92aWRlcnM6IFtTa3lQZXJjZW50UGlwZV0sXG4gIGltcG9ydHM6IFtTa3lDb3JlUmVzb3VyY2VzTW9kdWxlXSxcbiAgZXhwb3J0czogW1NreVBlcmNlbnRQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5UGVyY2VudFBpcGVNb2R1bGUge31cbiJdfQ==","import { Injectable, inject } from '@angular/core';\nimport { ReplaySubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { toSkyBreakpoint } from '../breakpoint-observer/breakpoint-utils';\nimport { SkyMediaBreakpoints } from '../media-query/media-breakpoints';\nimport { SkyMediaQueryService } from '../media-query/media-query.service';\nimport { SkyResizeObserverService } from './resize-observer.service';\nimport * as i0 from \"@angular/core\";\nconst DEFAULT_BREAKPOINT = SkyMediaBreakpoints.md;\n/**\n * Acts like `SkyMediaQueryService` for a container element, emitting the same responsive breakpoints.\n * @deprecated Use the `SkyResponsiveHostDirective` instead.\n */\nexport class SkyResizeObserverMediaQueryService extends SkyMediaQueryService {\n /**\n * Emits when the breakpoint changes.\n */\n get breakpointChange() {\n return this.#breakpointChangeObs;\n }\n /**\n * Returns the current breakpoint.\n * @deprecated Subscribe to the `breakpointChange` observable instead.\n */\n get current() {\n return this.#currentBreakpoint;\n }\n #breakpointChange = new ReplaySubject(1);\n #breakpointChangeObs = this.#breakpointChange.asObservable();\n #breakpoints = [\n {\n check: (width) => width > 0 && width <= 767,\n name: SkyMediaBreakpoints.xs,\n },\n {\n check: (width) => width > 767 && width <= 991,\n name: SkyMediaBreakpoints.sm,\n },\n {\n check: (width) => width > 991 && width <= 1199,\n name: SkyMediaBreakpoints.md,\n },\n {\n check: (width) => width > 1199,\n name: SkyMediaBreakpoints.lg,\n },\n ];\n #currentBreakpoint = DEFAULT_BREAKPOINT;\n #currentBreakpointObs = new ReplaySubject(1);\n #ngUnsubscribe = new Subject();\n #resizeObserverSvc = inject(SkyResizeObserverService);\n #target;\n ngOnDestroy() {\n this.unobserve();\n this.#target = undefined;\n this.#currentBreakpointObs.complete();\n this.#breakpointChange.complete();\n }\n /**\n * @internal\n */\n destroy() {\n this.ngOnDestroy();\n }\n /**\n * Sets the container element to watch. The `SkyResizeObserverMediaQueryService` will only observe one element at a\n * time. Any previous subscriptions will be unsubscribed when a new element is observed.\n */\n observe(element, options) {\n if (this.#target) {\n if (this.#target === element) {\n return this;\n }\n this.unobserve();\n }\n this.#target = element;\n this.#checkWidth(element, options?.updateResponsiveClasses);\n this.#resizeObserverSvc\n .observe(element)\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n const breakpoint = this.#checkBreakpoint(value.contentRect.width);\n if (breakpoint) {\n this.#updateBreakpoint(breakpoint, options?.updateResponsiveClasses);\n }\n });\n return this;\n }\n /**\n * Stop watching the container element and remove any added classes.\n */\n unobserve() {\n this.#removeResponsiveClasses();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n /**\n * Subscribes to element size changes that cross breakpoints.\n */\n subscribe(listener) {\n return this.#currentBreakpointObs\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n listener(value);\n });\n }\n #updateBreakpoint(breakpoint, updateResponsiveClasses) {\n if (updateResponsiveClasses) {\n this.#updateResponsiveClasses(this.current, breakpoint);\n }\n if (this.current !== breakpoint) {\n this.#currentBreakpointObs.next(breakpoint);\n const breakpointType = toSkyBreakpoint(breakpoint);\n this.#breakpointChange.next(breakpointType);\n }\n this.#currentBreakpoint = breakpoint;\n }\n #updateResponsiveClasses(oldBreakpoint, newBreakpoint) {\n const oldClass = this.#getClassForBreakpoint(oldBreakpoint);\n const newClass = this.#getClassForBreakpoint(newBreakpoint);\n const targetClassList = this.#target?.nativeElement?.classList;\n targetClassList?.remove(oldClass);\n targetClassList?.add(newClass);\n }\n #removeResponsiveClasses() {\n for (const breakpoint of Object.values(SkyMediaBreakpoints)) {\n if (typeof breakpoint === 'number') {\n const className = this.#getClassForBreakpoint(breakpoint);\n this.#target?.nativeElement?.classList?.remove(className);\n }\n }\n }\n #getClassForBreakpoint(breakpoint) {\n return `sky-responsive-container-${SkyMediaBreakpoints[breakpoint]}`;\n }\n #checkBreakpoint(width) {\n const breakpoint = this.#breakpoints.find((breakpoint) => breakpoint.check(width));\n return breakpoint ? breakpoint.name : undefined;\n }\n #checkWidth(el, updateResponsiveClasses) {\n const width = el.nativeElement.offsetWidth || 0;\n const breakpoint = this.#checkBreakpoint(width);\n if (breakpoint) {\n this.#updateBreakpoint(breakpoint, updateResponsiveClasses);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyResizeObserverMediaQueryService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyResizeObserverMediaQueryService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyResizeObserverMediaQueryService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLW1lZGlhLXF1ZXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvcmVzaXplLW9ic2VydmVyL3Jlc2l6ZS1vYnNlcnZlci1tZWRpYS1xdWVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUVyRSxNQUFNLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztBQUVsRDs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sa0NBQ1gsU0FBUSxvQkFBb0I7SUFHNUI7O09BRUc7SUFDSCxJQUFvQixnQkFBZ0I7UUFDbEMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQW9CLE9BQU87UUFDekIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVELGlCQUFpQixHQUFHLElBQUksYUFBYSxDQUFnQixDQUFDLENBQUMsQ0FBQztJQUN4RCxvQkFBb0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFN0QsWUFBWSxHQUdOO1FBQ0o7WUFDRSxLQUFLLEVBQUUsQ0FBQyxLQUFhLEVBQVcsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLEdBQUc7WUFDNUQsSUFBSSxFQUFFLG1CQUFtQixDQUFDLEVBQUU7U0FDN0I7UUFDRDtZQUNFLEtBQUssRUFBRSxDQUFDLEtBQWEsRUFBVyxFQUFFLENBQUMsS0FBSyxHQUFHLEdBQUcsSUFBSSxLQUFLLElBQUksR0FBRztZQUM5RCxJQUFJLEVBQUUsbUJBQW1CLENBQUMsRUFBRTtTQUM3QjtRQUNEO1lBQ0UsS0FBSyxFQUFFLENBQUMsS0FBYSxFQUFXLEVBQUUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLEtBQUssSUFBSSxJQUFJO1lBQy9ELElBQUksRUFBRSxtQkFBbUIsQ0FBQyxFQUFFO1NBQzdCO1FBQ0Q7WUFDRSxLQUFLLEVBQUUsQ0FBQyxLQUFhLEVBQVcsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJO1lBQy9DLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxFQUFFO1NBQzdCO0tBQ0YsQ0FBQztJQUVGLGtCQUFrQixHQUF3QixrQkFBa0IsQ0FBQztJQUU3RCxxQkFBcUIsR0FBRyxJQUFJLGFBQWEsQ0FBc0IsQ0FBQyxDQUFDLENBQUM7SUFFbEUsY0FBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFckMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFdEQsT0FBTyxDQUF5QjtJQUVoQixXQUFXO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUN6QixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNhLE9BQU87UUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPLENBQ1osT0FBbUIsRUFDbkIsT0FFQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUV2QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsa0JBQWtCO2FBQ3BCLE9BQU8sQ0FBQyxPQUFPLENBQUM7YUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEUsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3ZFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUztRQUNkLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDYSxTQUFTLENBQUMsUUFBK0I7UUFDdkQsT0FBTyxJQUFJLENBQUMscUJBQXFCO2FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxpQkFBaUIsQ0FDZixVQUErQixFQUMvQix1QkFBaUM7UUFFakMsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1QyxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsd0JBQXdCLENBQ3RCLGFBQWtDLEVBQ2xDLGFBQWtDO1FBRWxDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM1RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFNUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDO1FBRS9ELGVBQWUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLEtBQUssTUFBTSxVQUFVLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7WUFDNUQsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUUxRCxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUFDLFVBQStCO1FBQ3BELE9BQU8sNEJBQTRCLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDdkUsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWE7UUFDNUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUN2RCxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUN4QixDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWMsRUFBRSx1QkFBaUM7UUFDM0QsTUFBTSxLQUFLLEdBQUksRUFBRSxDQUFDLGFBQTZCLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQztRQUNqRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFaEQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQzs4R0FyTFUsa0NBQWtDO2tIQUFsQyxrQ0FBa0M7OzJGQUFsQyxrQ0FBa0M7a0JBRDlDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5QnJlYWtwb2ludCB9IGZyb20gJy4uL2JyZWFrcG9pbnQtb2JzZXJ2ZXIvYnJlYWtwb2ludCc7XG5pbXBvcnQgeyB0b1NreUJyZWFrcG9pbnQgfSBmcm9tICcuLi9icmVha3BvaW50LW9ic2VydmVyL2JyZWFrcG9pbnQtdXRpbHMnO1xuaW1wb3J0IHsgU2t5TWVkaWFCcmVha3BvaW50cyB9IGZyb20gJy4uL21lZGlhLXF1ZXJ5L21lZGlhLWJyZWFrcG9pbnRzJztcbmltcG9ydCB7IFNreU1lZGlhUXVlcnlMaXN0ZW5lciB9IGZyb20gJy4uL21lZGlhLXF1ZXJ5L21lZGlhLXF1ZXJ5LWxpc3RlbmVyJztcbmltcG9ydCB7IFNreU1lZGlhUXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi4vbWVkaWEtcXVlcnkvbWVkaWEtcXVlcnkuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreVJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4vcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuXG5jb25zdCBERUZBVUxUX0JSRUFLUE9JTlQgPSBTa3lNZWRpYUJyZWFrcG9pbnRzLm1kO1xuXG4vKipcbiAqIEFjdHMgbGlrZSBgU2t5TWVkaWFRdWVyeVNlcnZpY2VgIGZvciBhIGNvbnRhaW5lciBlbGVtZW50LCBlbWl0dGluZyB0aGUgc2FtZSByZXNwb25zaXZlIGJyZWFrcG9pbnRzLlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgU2t5UmVzcG9uc2l2ZUhvc3REaXJlY3RpdmVgIGluc3RlYWQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlXG4gIGV4dGVuZHMgU2t5TWVkaWFRdWVyeVNlcnZpY2VcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGJyZWFrcG9pbnQgY2hhbmdlcy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgYnJlYWtwb2ludENoYW5nZSgpOiBPYnNlcnZhYmxlPFNreUJyZWFrcG9pbnQ+IHtcbiAgICByZXR1cm4gdGhpcy4jYnJlYWtwb2ludENoYW5nZU9icztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQuXG4gICAqIEBkZXByZWNhdGVkIFN1YnNjcmliZSB0byB0aGUgYGJyZWFrcG9pbnRDaGFuZ2VgIG9ic2VydmFibGUgaW5zdGVhZC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgY3VycmVudCgpOiBTa3lNZWRpYUJyZWFrcG9pbnRzIHtcbiAgICByZXR1cm4gdGhpcy4jY3VycmVudEJyZWFrcG9pbnQ7XG4gIH1cblxuICAjYnJlYWtwb2ludENoYW5nZSA9IG5ldyBSZXBsYXlTdWJqZWN0PFNreUJyZWFrcG9pbnQ+KDEpO1xuICAjYnJlYWtwb2ludENoYW5nZU9icyA9IHRoaXMuI2JyZWFrcG9pbnRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgI2JyZWFrcG9pbnRzOiB7XG4gICAgY2hlY2s6ICh3aWR0aDogbnVtYmVyKSA9PiBib29sZWFuO1xuICAgIG5hbWU6IFNreU1lZGlhQnJlYWtwb2ludHM7XG4gIH1bXSA9IFtcbiAgICB7XG4gICAgICBjaGVjazogKHdpZHRoOiBudW1iZXIpOiBib29sZWFuID0+IHdpZHRoID4gMCAmJiB3aWR0aCA8PSA3NjcsXG4gICAgICBuYW1lOiBTa3lNZWRpYUJyZWFrcG9pbnRzLnhzLFxuICAgIH0sXG4gICAge1xuICAgICAgY2hlY2s6ICh3aWR0aDogbnVtYmVyKTogYm9vbGVhbiA9PiB3aWR0aCA+IDc2NyAmJiB3aWR0aCA8PSA5OTEsXG4gICAgICBuYW1lOiBTa3lNZWRpYUJyZWFrcG9pbnRzLnNtLFxuICAgIH0sXG4gICAge1xuICAgICAgY2hlY2s6ICh3aWR0aDogbnVtYmVyKTogYm9vbGVhbiA9PiB3aWR0aCA+IDk5MSAmJiB3aWR0aCA8PSAxMTk5LFxuICAgICAgbmFtZTogU2t5TWVkaWFCcmVha3BvaW50cy5tZCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNoZWNrOiAod2lkdGg6IG51bWJlcik6IGJvb2xlYW4gPT4gd2lkdGggPiAxMTk5LFxuICAgICAgbmFtZTogU2t5TWVkaWFCcmVha3BvaW50cy5sZyxcbiAgICB9LFxuICBdO1xuXG4gICNjdXJyZW50QnJlYWtwb2ludDogU2t5TWVkaWFCcmVha3BvaW50cyA9IERFRkFVTFRfQlJFQUtQT0lOVDtcblxuICAjY3VycmVudEJyZWFrcG9pbnRPYnMgPSBuZXcgUmVwbGF5U3ViamVjdDxTa3lNZWRpYUJyZWFrcG9pbnRzPigxKTtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI3Jlc2l6ZU9ic2VydmVyU3ZjID0gaW5qZWN0KFNreVJlc2l6ZU9ic2VydmVyU2VydmljZSk7XG5cbiAgI3RhcmdldDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bm9ic2VydmUoKTtcblxuICAgIHRoaXMuI3RhcmdldCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLiNjdXJyZW50QnJlYWtwb2ludE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI2JyZWFrcG9pbnRDaGFuZ2UuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb250YWluZXIgZWxlbWVudCB0byB3YXRjaC4gVGhlIGBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlYCB3aWxsIG9ubHkgb2JzZXJ2ZSBvbmUgZWxlbWVudCBhdCBhXG4gICAqIHRpbWUuIEFueSBwcmV2aW91cyBzdWJzY3JpcHRpb25zIHdpbGwgYmUgdW5zdWJzY3JpYmVkIHdoZW4gYSBuZXcgZWxlbWVudCBpcyBvYnNlcnZlZC5cbiAgICovXG4gIHB1YmxpYyBvYnNlcnZlKFxuICAgIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIHVwZGF0ZVJlc3BvbnNpdmVDbGFzc2VzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlIHtcbiAgICBpZiAodGhpcy4jdGFyZ2V0KSB7XG4gICAgICBpZiAodGhpcy4jdGFyZ2V0ID09PSBlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVub2JzZXJ2ZSgpO1xuICAgIH1cblxuICAgIHRoaXMuI3RhcmdldCA9IGVsZW1lbnQ7XG5cbiAgICB0aGlzLiNjaGVja1dpZHRoKGVsZW1lbnQsIG9wdGlvbnM/LnVwZGF0ZVJlc3BvbnNpdmVDbGFzc2VzKTtcblxuICAgIHRoaXMuI3Jlc2l6ZU9ic2VydmVyU3ZjXG4gICAgICAub2JzZXJ2ZShlbGVtZW50KVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgYnJlYWtwb2ludCA9IHRoaXMuI2NoZWNrQnJlYWtwb2ludCh2YWx1ZS5jb250ZW50UmVjdC53aWR0aCk7XG4gICAgICAgIGlmIChicmVha3BvaW50KSB7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlQnJlYWtwb2ludChicmVha3BvaW50LCBvcHRpb25zPy51cGRhdGVSZXNwb25zaXZlQ2xhc3Nlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3Agd2F0Y2hpbmcgdGhlIGNvbnRhaW5lciBlbGVtZW50IGFuZCByZW1vdmUgYW55IGFkZGVkIGNsYXNzZXMuXG4gICAqL1xuICBwdWJsaWMgdW5vYnNlcnZlKCk6IHZvaWQge1xuICAgIHRoaXMuI3JlbW92ZVJlc3BvbnNpdmVDbGFzc2VzKCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZXMgdG8gZWxlbWVudCBzaXplIGNoYW5nZXMgdGhhdCBjcm9zcyBicmVha3BvaW50cy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBzdWJzY3JpYmUobGlzdGVuZXI6IFNreU1lZGlhUXVlcnlMaXN0ZW5lcik6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuI2N1cnJlbnRCcmVha3BvaW50T2JzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBsaXN0ZW5lcih2YWx1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gICN1cGRhdGVCcmVha3BvaW50KFxuICAgIGJyZWFrcG9pbnQ6IFNreU1lZGlhQnJlYWtwb2ludHMsXG4gICAgdXBkYXRlUmVzcG9uc2l2ZUNsYXNzZXM/OiBib29sZWFuLFxuICApOiB2b2lkIHtcbiAgICBpZiAodXBkYXRlUmVzcG9uc2l2ZUNsYXNzZXMpIHtcbiAgICAgIHRoaXMuI3VwZGF0ZVJlc3BvbnNpdmVDbGFzc2VzKHRoaXMuY3VycmVudCwgYnJlYWtwb2ludCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudCAhPT0gYnJlYWtwb2ludCkge1xuICAgICAgdGhpcy4jY3VycmVudEJyZWFrcG9pbnRPYnMubmV4dChicmVha3BvaW50KTtcbiAgICAgIGNvbnN0IGJyZWFrcG9pbnRUeXBlID0gdG9Ta3lCcmVha3BvaW50KGJyZWFrcG9pbnQpO1xuICAgICAgdGhpcy4jYnJlYWtwb2ludENoYW5nZS5uZXh0KGJyZWFrcG9pbnRUeXBlKTtcbiAgICB9XG4gICAgdGhpcy4jY3VycmVudEJyZWFrcG9pbnQgPSBicmVha3BvaW50O1xuICB9XG5cbiAgI3VwZGF0ZVJlc3BvbnNpdmVDbGFzc2VzKFxuICAgIG9sZEJyZWFrcG9pbnQ6IFNreU1lZGlhQnJlYWtwb2ludHMsXG4gICAgbmV3QnJlYWtwb2ludDogU2t5TWVkaWFCcmVha3BvaW50cyxcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgb2xkQ2xhc3MgPSB0aGlzLiNnZXRDbGFzc0ZvckJyZWFrcG9pbnQob2xkQnJlYWtwb2ludCk7XG4gICAgY29uc3QgbmV3Q2xhc3MgPSB0aGlzLiNnZXRDbGFzc0ZvckJyZWFrcG9pbnQobmV3QnJlYWtwb2ludCk7XG5cbiAgICBjb25zdCB0YXJnZXRDbGFzc0xpc3QgPSB0aGlzLiN0YXJnZXQ/Lm5hdGl2ZUVsZW1lbnQ/LmNsYXNzTGlzdDtcblxuICAgIHRhcmdldENsYXNzTGlzdD8ucmVtb3ZlKG9sZENsYXNzKTtcbiAgICB0YXJnZXRDbGFzc0xpc3Q/LmFkZChuZXdDbGFzcyk7XG4gIH1cblxuICAjcmVtb3ZlUmVzcG9uc2l2ZUNsYXNzZXMoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBicmVha3BvaW50IG9mIE9iamVjdC52YWx1ZXMoU2t5TWVkaWFCcmVha3BvaW50cykpIHtcbiAgICAgIGlmICh0eXBlb2YgYnJlYWtwb2ludCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gdGhpcy4jZ2V0Q2xhc3NGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpO1xuXG4gICAgICAgIHRoaXMuI3RhcmdldD8ubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0Py5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjZ2V0Q2xhc3NGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQ6IFNreU1lZGlhQnJlYWtwb2ludHMpOiBzdHJpbmcge1xuICAgIHJldHVybiBgc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLSR7U2t5TWVkaWFCcmVha3BvaW50c1ticmVha3BvaW50XX1gO1xuICB9XG5cbiAgI2NoZWNrQnJlYWtwb2ludCh3aWR0aDogbnVtYmVyKTogU2t5TWVkaWFCcmVha3BvaW50cyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYnJlYWtwb2ludCA9IHRoaXMuI2JyZWFrcG9pbnRzLmZpbmQoKGJyZWFrcG9pbnQpID0+XG4gICAgICBicmVha3BvaW50LmNoZWNrKHdpZHRoKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGJyZWFrcG9pbnQgPyBicmVha3BvaW50Lm5hbWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAjY2hlY2tXaWR0aChlbDogRWxlbWVudFJlZiwgdXBkYXRlUmVzcG9uc2l2ZUNsYXNzZXM/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgd2lkdGggPSAoZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkub2Zmc2V0V2lkdGggfHwgMDtcbiAgICBjb25zdCBicmVha3BvaW50ID0gdGhpcy4jY2hlY2tCcmVha3BvaW50KHdpZHRoKTtcblxuICAgIGlmIChicmVha3BvaW50KSB7XG4gICAgICB0aGlzLiN1cGRhdGVCcmVha3BvaW50KGJyZWFrcG9pbnQsIHVwZGF0ZVJlc3BvbnNpdmVDbGFzc2VzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { Directive, ElementRef, Input, Renderer2, inject, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nconst SCREEN_READER_LABELS_CONTAINER_ID = 'sky-screen-reader-labels-container';\n/**\n * Adds the element to a screen reader only section of the body.\n * This prevents components' DOM from including text only intended for screen readers.\n *\n * @internal\n */\nexport class SkyScreenReaderLabelDirective {\n ngOnDestroy() {\n this.#removeLabelEl();\n }\n /**\n * Indicates if the label should be created in the DOM.\n * @default false\n */\n set createLabel(value) {\n this.#_createLabel = value ?? false;\n this.#updateLabelEl();\n }\n get createLabel() {\n return this.#_createLabel;\n }\n #elementRef = inject(ElementRef);\n #renderer = inject(Renderer2);\n #_createLabel = false;\n #updateLabelEl() {\n if (this.createLabel) {\n const containerEl = this.#getContainerEl() || this.#createContainerEl();\n this.#renderer.appendChild(containerEl, this.#elementRef.nativeElement);\n }\n else {\n this.#removeLabelEl();\n }\n }\n #getContainerEl() {\n return document.getElementById(SCREEN_READER_LABELS_CONTAINER_ID);\n }\n #createContainerEl() {\n const el = document.createElement('div');\n el.id = SCREEN_READER_LABELS_CONTAINER_ID;\n el.style.display = 'none';\n this.#renderer.appendChild(document.body, el);\n return el;\n }\n #removeLabelEl() {\n const containerEl = this.#getContainerEl();\n this.#elementRef.nativeElement.remove();\n if (containerEl && containerEl.childNodes.length === 0) {\n containerEl.remove();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyScreenReaderLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyScreenReaderLabelDirective, isStandalone: true, selector: \"[skyScreenReaderLabel]\", inputs: { createLabel: \"createLabel\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyScreenReaderLabelDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[skyScreenReaderLabel]',\n standalone: true,\n }]\n }], propDecorators: { createLabel: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlYWRlci1sYWJlbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvc2NyZWVuLXJlYWRlci1sYWJlbC9zY3JlZW4tcmVhZGVyLWxhYmVsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7QUFFdkIsTUFBTSxpQ0FBaUMsR0FBRyxvQ0FBb0MsQ0FBQztBQUUvRTs7Ozs7R0FLRztBQUtILE1BQU0sT0FBTyw2QkFBNkI7SUFDakMsV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ1csV0FBVyxDQUFDLEtBQTBCO1FBQy9DLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVRLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXRCLGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFFeEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsaUNBQWlDLENBQUM7UUFDMUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBRTFCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFOUMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUUzQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUV4QyxJQUFJLFdBQVcsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7OEdBdkRVLDZCQUE2QjtrR0FBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFXWSxXQUFXO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IFNDUkVFTl9SRUFERVJfTEFCRUxTX0NPTlRBSU5FUl9JRCA9ICdza3ktc2NyZWVuLXJlYWRlci1sYWJlbHMtY29udGFpbmVyJztcblxuLyoqXG4gKiBBZGRzIHRoZSBlbGVtZW50IHRvIGEgc2NyZWVuIHJlYWRlciBvbmx5IHNlY3Rpb24gb2YgdGhlIGJvZHkuXG4gKiBUaGlzIHByZXZlbnRzIGNvbXBvbmVudHMnIERPTSBmcm9tIGluY2x1ZGluZyB0ZXh0IG9ubHkgaW50ZW5kZWQgZm9yIHNjcmVlbiByZWFkZXJzLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5U2NyZWVuUmVhZGVyTGFiZWxdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5U2NyZWVuUmVhZGVyTGFiZWxEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jcmVtb3ZlTGFiZWxFbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGFiZWwgc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlIERPTS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY3JlYXRlTGFiZWwodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfY3JlYXRlTGFiZWwgPSB2YWx1ZSA/PyBmYWxzZTtcbiAgICB0aGlzLiN1cGRhdGVMYWJlbEVsKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNyZWF0ZUxhYmVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfY3JlYXRlTGFiZWw7XG4gIH1cblxuICByZWFkb25seSAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgI3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gICNfY3JlYXRlTGFiZWwgPSBmYWxzZTtcblxuICAjdXBkYXRlTGFiZWxFbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jcmVhdGVMYWJlbCkge1xuICAgICAgY29uc3QgY29udGFpbmVyRWwgPSB0aGlzLiNnZXRDb250YWluZXJFbCgpIHx8IHRoaXMuI2NyZWF0ZUNvbnRhaW5lckVsKCk7XG5cbiAgICAgIHRoaXMuI3JlbmRlcmVyLmFwcGVuZENoaWxkKGNvbnRhaW5lckVsLCB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNyZW1vdmVMYWJlbEVsKCk7XG4gICAgfVxuICB9XG5cbiAgI2dldENvbnRhaW5lckVsKCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFNDUkVFTl9SRUFERVJfTEFCRUxTX0NPTlRBSU5FUl9JRCk7XG4gIH1cblxuICAjY3JlYXRlQ29udGFpbmVyRWwoKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZWwuaWQgPSBTQ1JFRU5fUkVBREVSX0xBQkVMU19DT05UQUlORVJfSUQ7XG4gICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJztcblxuICAgIHRoaXMuI3JlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmJvZHksIGVsKTtcblxuICAgIHJldHVybiBlbDtcbiAgfVxuXG4gICNyZW1vdmVMYWJlbEVsKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsID0gdGhpcy4jZ2V0Q29udGFpbmVyRWwoKTtcblxuICAgIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmUoKTtcblxuICAgIGlmIChjb250YWluZXJFbCAmJiBjb250YWluZXJFbC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29udGFpbmVyRWwucmVtb3ZlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=","import { Directive, ElementRef, EventEmitter, HostListener, Input, NgZone, Output, inject, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { SkyMutationObserverService } from '../mutation/mutation-observer-service';\nimport * as i0 from \"@angular/core\";\n/**\n * Raises an event when the box shadow for a component's header or footer should be adjusted\n * based on the scroll position of the host element.\n * @internal\n */\nexport class SkyScrollShadowDirective {\n constructor() {\n this.skyScrollShadow = new EventEmitter();\n this.#ngUnsubscribe = new Subject();\n this.#elRef = inject(ElementRef);\n this.#mutationObserverSvc = inject(SkyMutationObserverService);\n this.#ngZone = inject(NgZone);\n this.#_enabled = false;\n }\n set skyScrollShadowEnabled(value) {\n this.#_enabled = value;\n if (value) {\n this.#initMutationObserver();\n }\n else {\n this.#emitShadow({\n bottomShadow: 'none',\n topShadow: 'none',\n });\n this.#destroyMutationObserver();\n }\n }\n get skyScrollShadowEnabled() {\n return this.#_enabled;\n }\n #currentShadow;\n #boxShadows;\n #mutationObserver;\n #ngUnsubscribe;\n #elRef;\n #mutationObserverSvc;\n #ngZone;\n #_enabled;\n windowResize() {\n this.#checkForShadow();\n }\n scroll() {\n this.#checkForShadow();\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#destroyMutationObserver();\n }\n #initMutationObserver() {\n if (!this.#mutationObserver) {\n const el = this.#elRef.nativeElement;\n // MutationObserver is patched by Zone.js and therefore becomes part of the\n // Angular change detection cycle, but this can lead to infinite loops in some\n // scenarios. This will keep MutationObserver from triggering change detection.\n this.#ngZone.runOutsideAngular(() => {\n this.#mutationObserver = this.#mutationObserverSvc.create(() => {\n this.#checkForShadow();\n });\n this.#mutationObserver.observe(el, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n });\n }\n }\n #destroyMutationObserver() {\n if (this.#mutationObserver) {\n this.#mutationObserver.disconnect();\n this.#mutationObserver = undefined;\n }\n }\n #checkForShadow() {\n if (this.skyScrollShadowEnabled) {\n const el = this.#elRef.nativeElement;\n const topShadow = this.#buildShadowStyle(el.scrollTop);\n const bottomShadow = this.#buildShadowStyle(el.scrollHeight - el.scrollTop - el.clientHeight);\n this.#emitShadow({\n bottomShadow,\n topShadow,\n });\n }\n }\n #splitBoxShadowDetails(boxShadow) {\n const colorRegex = /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([\\d.]+))?\\s*\\)/;\n const match = boxShadow.match(colorRegex);\n if (match) {\n const colorParts = `${match[1]}, ${match[2]}, ${match[3]}`; // Extract RGB values as a comma-separated string\n const opacity = match[4] ? parseFloat(match[4]) : 1; // Use the captured opacity or default to 1\n const lengths = boxShadow.replace(match[0], '').trim(); // Remove the color from the rest\n return { colorParts, opacity, lengths };\n }\n /* istanbul ignore next */\n return;\n }\n #formatBoxShadows(boxShadowString) {\n const boxShadows = [];\n let currentShadow = '';\n let openParentheses = 0;\n for (const char of boxShadowString) {\n if (char === ',' && openParentheses === 0) {\n const details = this.#splitBoxShadowDetails(currentShadow.trim());\n if (details) {\n boxShadows.push(details);\n }\n currentShadow = '';\n }\n else {\n currentShadow += char;\n if (char === '(') {\n openParentheses++;\n }\n else if (char === ')') {\n openParentheses--;\n }\n }\n }\n if (currentShadow.trim()) {\n const details = this.#splitBoxShadowDetails(currentShadow.trim());\n if (details) {\n boxShadows.push(details);\n }\n }\n return boxShadows;\n }\n #getBoxShadowInfo() {\n const elStyles = window.getComputedStyle(this.#elRef.nativeElement);\n const boxShadowStyle = elStyles.getPropertyValue('--sky-elevation-overflow');\n // Creating a temporary element and setting box shadow converts the color in the box shadows to rgba or rgb\n const tempEl = document.createElement('div');\n tempEl.style.setProperty('box-shadow', boxShadowStyle);\n const convertedBoxShadows = tempEl.style.getPropertyValue('box-shadow');\n const boxShadows = this.#formatBoxShadows(convertedBoxShadows);\n return boxShadows;\n }\n #buildShadowStyle(pixelsFromEnd) {\n if (!this.#boxShadows) {\n const boxShadowInfo = this.#getBoxShadowInfo();\n if (boxShadowInfo.length > 0) {\n this.#boxShadows = boxShadowInfo;\n }\n else {\n this.#boxShadows = 'none';\n }\n }\n const boxShadowStyles = [];\n if (this.#boxShadows === 'none' || pixelsFromEnd === 0) {\n return 'none';\n }\n else {\n for (const shadow of this.#boxShadows) {\n const { colorParts, lengths, opacity } = shadow;\n // Progressively darken the shadow until the user scrolls 30 pixels from the top or bottom\n // of the scrollable element, with a max opacity of 0.3.\n const adjustedOpacity = Math.min(pixelsFromEnd / 30, 1) * opacity;\n const adjustedShadow = `${lengths} rgba(${colorParts}, ${adjustedOpacity})`;\n boxShadowStyles.push(adjustedShadow);\n }\n return boxShadowStyles.join(', ');\n }\n }\n #emitShadow(shadow) {\n if (!this.#currentShadow ||\n this.#currentShadow.bottomShadow !== shadow.bottomShadow ||\n this.#currentShadow.topShadow !== shadow.topShadow) {\n this.skyScrollShadow.emit(shadow);\n this.#currentShadow = shadow;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyScrollShadowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyScrollShadowDirective, isStandalone: true, selector: \"[skyScrollShadow]\", inputs: { skyScrollShadowEnabled: \"skyScrollShadowEnabled\" }, outputs: { skyScrollShadow: \"skyScrollShadow\" }, host: { listeners: { \"window:resize\": \"windowResize()\", \"scroll\": \"scroll()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyScrollShadowDirective, decorators: [{\n type: Directive,\n args: [{\n standalone: true,\n selector: '[skyScrollShadow]',\n }]\n }], propDecorators: { skyScrollShadowEnabled: [{\n type: Input\n }], skyScrollShadow: [{\n type: Output\n }], windowResize: [{\n type: HostListener,\n args: ['window:resize']\n }], scroll: [{\n type: HostListener,\n args: ['scroll']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXNoYWRvdy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvc2Nyb2xsLXNoYWRvdy9zY3JvbGwtc2hhZG93LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQVVuRjs7OztHQUlHO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQUpyQztRQTBCUyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBT3RFLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU1QixXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVCLHlCQUFvQixHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzFELFlBQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbEMsY0FBUyxHQUFHLEtBQUssQ0FBQztLQXdLbkI7SUExTUMsSUFDVyxzQkFBc0IsQ0FBQyxLQUFjO1FBQzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXZCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ2YsWUFBWSxFQUFFLE1BQU07Z0JBQ3BCLFNBQVMsRUFBRSxNQUFNO2FBQ2xCLENBQUMs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QXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLG1CQUFtQjtpQkFDOUI7OEJBR1ksc0JBQXNCO3NCQURoQyxLQUFLO2dCQXFCQyxlQUFlO3NCQURyQixNQUFNO2dCQWlCQSxZQUFZO3NCQURsQixZQUFZO3VCQUFDLGVBQWU7Z0JBTXRCLE1BQU07c0JBRFosWUFBWTt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5TXV0YXRpb25PYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1zZXJ2aWNlJztcblxuaW1wb3J0IHsgU2t5U2Nyb2xsU2hhZG93RXZlbnRBcmdzIH0gZnJvbSAnLi9zY3JvbGwtc2hhZG93LWV2ZW50LWFyZ3MnO1xuXG5pbnRlcmZhY2UgQm94U2hhZG93SW5mbyB7XG4gIGNvbG9yUGFydHM6IHN0cmluZztcbiAgbGVuZ3Roczogc3RyaW5nO1xuICBvcGFjaXR5OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmFpc2VzIGFuIGV2ZW50IHdoZW4gdGhlIGJveCBzaGFkb3cgZm9yIGEgY29tcG9uZW50J3MgaGVhZGVyIG9yIGZvb3RlciBzaG91bGQgYmUgYWRqdXN0ZWRcbiAqIGJhc2VkIG9uIHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIGhvc3QgZWxlbWVudC5cbiAqIEBpbnRlcm5hbFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbc2t5U2Nyb2xsU2hhZG93XScsXG59KVxuZXhwb3J0IGNsYXNzIFNreVNjcm9sbFNoYWRvd0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2t5U2Nyb2xsU2hhZG93RW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuI19lbmFibGVkID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2luaXRNdXRhdGlvbk9ic2VydmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI2VtaXRTaGFkb3coe1xuICAgICAgICBib3R0b21TaGFkb3c6ICdub25lJyxcbiAgICAgICAgdG9wU2hhZG93OiAnbm9uZScsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy4jZGVzdHJveU11dGF0aW9uT2JzZXJ2ZXIoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNreVNjcm9sbFNoYWRvd0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19lbmFibGVkO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBza3lTY3JvbGxTaGFkb3cgPSBuZXcgRXZlbnRFbWl0dGVyPFNreVNjcm9sbFNoYWRvd0V2ZW50QXJncz4oKTtcblxuICAjY3VycmVudFNoYWRvdzogU2t5U2Nyb2xsU2hhZG93RXZlbnRBcmdzIHwgdW5kZWZpbmVkO1xuICAjYm94U2hhZG93czogQm94U2hhZG93SW5mb1tdIHwgJ25vbmUnIHwgdW5kZWZpbmVkO1xuXG4gICNtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICByZWFkb25seSAjZWxSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHJlYWRvbmx5ICNtdXRhdGlvbk9ic2VydmVyU3ZjID0gaW5qZWN0KFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI25nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICNfZW5hYmxlZCA9IGZhbHNlO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBwdWJsaWMgd2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMuI2NoZWNrRm9yU2hhZG93KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdzY3JvbGwnKVxuICBwdWJsaWMgc2Nyb2xsKCk6IHZvaWQge1xuICAgIHRoaXMuI2NoZWNrRm9yU2hhZG93KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy4jZGVzdHJveU11dGF0aW9uT2JzZXJ2ZXIoKTtcbiAgfVxuXG4gICNpbml0TXV0YXRpb25PYnNlcnZlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI211dGF0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudDtcblxuICAgICAgLy8gTXV0YXRpb25PYnNlcnZlciBpcyBwYXRjaGVkIGJ5IFpvbmUuanMgYW5kIHRoZXJlZm9yZSBiZWNvbWVzIHBhcnQgb2YgdGhlXG4gICAgICAvLyBBbmd1bGFyIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUsIGJ1dCB0aGlzIGNhbiBsZWFkIHRvIGluZmluaXRlIGxvb3BzIGluIHNvbWVcbiAgICAgIC8vIHNjZW5hcmlvcy4gVGhpcyB3aWxsIGtlZXAgTXV0YXRpb25PYnNlcnZlciBmcm9tIHRyaWdnZXJpbmcgY2hhbmdlIGRldGVjdGlvbi5cbiAgICAgIHRoaXMuI25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuI211dGF0aW9uT2JzZXJ2ZXIgPSB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjLmNyZWF0ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jY2hlY2tGb3JTaGFkb3coKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKGVsLCB7XG4gICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNkZXN0cm95TXV0YXRpb25PYnNlcnZlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jbXV0YXRpb25PYnNlcnZlcikge1xuICAgICAgdGhpcy4jbXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNjaGVja0ZvclNoYWRvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5za3lTY3JvbGxTaGFkb3dFbmFibGVkKSB7XG4gICAgICBjb25zdCBlbDogRWxlbWVudCA9IHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgIGNvbnN0IHRvcFNoYWRvdyA9IHRoaXMuI2J1aWxkU2hhZG93U3R5bGUoZWwuc2Nyb2xsVG9wKTtcblxuICAgICAgY29uc3QgYm90dG9tU2hhZG93ID0gdGhpcy4jYnVpbGRTaGFkb3dTdHlsZShcbiAgICAgICAgZWwuc2Nyb2xsSGVpZ2h0IC0gZWwuc2Nyb2xsVG9wIC0gZWwuY2xpZW50SGVpZ2h0LFxuICAgICAgKTtcblxuICAgICAgdGhpcy4jZW1pdFNoYWRvdyh7XG4gICAgICAgIGJvdHRvbVNoYWRvdyxcbiAgICAgICAgdG9wU2hhZG93LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3NwbGl0Qm94U2hhZG93RGV0YWlscyhib3hTaGFkb3c6IHN0cmluZyk6IEJveFNoYWRvd0luZm8gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvbG9yUmVnZXggPVxuICAgICAgL3JnYmE/XFwoXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyooPzosXFxzKihbXFxkLl0rKSk/XFxzKlxcKS87XG4gICAgY29uc3QgbWF0Y2ggPSBib3hTaGFkb3cubWF0Y2goY29sb3JSZWdleCk7XG5cbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIGNvbnN0IGNvbG9yUGFydHMgPSBgJHttYXRjaFsxXX0sICR7bWF0Y2hbMl19LCAke21hdGNoWzNdfWA7IC8vIEV4dHJhY3QgUkdCIHZhbHVlcyBhcyBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdcbiAgICAgIGNvbnN0IG9wYWNpdHkgPSBtYXRjaFs0XSA/IHBhcnNlRmxvYXQobWF0Y2hbNF0pIDogMTsgLy8gVXNlIHRoZSBjYXB0dXJlZCBvcGFjaXR5IG9yIGRlZmF1bHQgdG8gMVxuICAgICAgY29uc3QgbGVuZ3RocyA9IGJveFNoYWRvdy5yZXBsYWNlKG1hdGNoWzBdLCAnJykudHJpbSgpOyAvLyBSZW1vdmUgdGhlIGNvbG9yIGZyb20gdGhlIHJlc3RcblxuICAgICAgcmV0dXJuIHsgY29sb3JQYXJ0cywgb3BhY2l0eSwgbGVuZ3RocyB9O1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgI2Zvcm1hdEJveFNoYWRvd3MoYm94U2hhZG93U3RyaW5nOiBzdHJpbmcpOiBCb3hTaGFkb3dJbmZvW10ge1xuICAgIGNvbnN0IGJveFNoYWRvd3M6IEJveFNoYWRvd0luZm9bXSA9IFtdO1xuICAgIGxldCBjdXJyZW50U2hhZG93ID0gJyc7XG4gICAgbGV0IG9wZW5QYXJlbnRoZXNlcyA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IGNoYXIgb2YgYm94U2hhZG93U3RyaW5nKSB7XG4gICAgICBpZiAoY2hhciA9PT0gJywnICYmIG9wZW5QYXJlbnRoZXNlcyA9PT0gMCkge1xuICAgICAgICBjb25zdCBkZXRhaWxzID0gdGhpcy4jc3BsaXRCb3hTaGFkb3dEZXRhaWxzKGN1cnJlbnRTaGFkb3cudHJpbSgpKTtcbiAgICAgICAgaWYgKGRldGFpbHMpIHtcbiAgICAgICAgICBib3hTaGFkb3dzLnB1c2goZGV0YWlscyk7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50U2hhZG93ID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50U2hhZG93ICs9IGNoYXI7XG4gICAgICAgIGlmIChjaGFyID09PSAnKCcpIHtcbiAgICAgICAgICBvcGVuUGFyZW50aGVzZXMrKztcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyID09PSAnKScpIHtcbiAgICAgICAgICBvcGVuUGFyZW50aGVzZXMtLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjdXJyZW50U2hhZG93LnRyaW0oKSkge1xuICAgICAgY29uc3QgZGV0YWlscyA9IHRoaXMuI3NwbGl0Qm94U2hhZG93RGV0YWlscyhjdXJyZW50U2hhZG93LnRyaW0oKSk7XG4gICAgICBpZiAoZGV0YWlscykge1xuICAgICAgICBib3hTaGFkb3dzLnB1c2goZGV0YWlscyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJveFNoYWRvd3M7XG4gIH1cblxuICAjZ2V0Qm94U2hhZG93SW5mbygpOiBCb3hTaGFkb3dJbmZvW10ge1xuICAgIGNvbnN0IGVsU3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgY29uc3QgYm94U2hhZG93U3R5bGUgPSBlbFN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgICAgJy0tc2t5LWVsZXZhdGlvbi1vdmVyZmxvdycsXG4gICAgKTtcblxuICAgIC8vIENyZWF0aW5nIGEgdGVtcG9yYXJ5IGVsZW1lbnQgYW5kIHNldHRpbmcgYm94IHNoYWRvdyBjb252ZXJ0cyB0aGUgY29sb3IgaW4gdGhlIGJveCBzaGFkb3dzIHRvIHJnYmEgb3IgcmdiXG4gICAgY29uc3QgdGVtcEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGVtcEVsLnN0eWxlLnNldFByb3BlcnR5KCdib3gtc2hhZG93JywgYm94U2hhZG93U3R5bGUpO1xuXG4gICAgY29uc3QgY29udmVydGVkQm94U2hhZG93cyA9IHRlbXBFbC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3gtc2hhZG93Jyk7XG4gICAgY29uc3QgYm94U2hhZG93cyA9IHRoaXMuI2Zvcm1hdEJveFNoYWRvd3MoY29udmVydGVkQm94U2hhZG93cyk7XG5cbiAgICByZXR1cm4gYm94U2hhZG93cztcbiAgfVxuXG4gICNidWlsZFNoYWRvd1N0eWxlKHBpeGVsc0Zyb21FbmQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLiNib3hTaGFkb3dzKSB7XG4gICAgICBjb25zdCBib3hTaGFkb3dJbmZvID0gdGhpcy4jZ2V0Qm94U2hhZG93SW5mbygpO1xuICAgICAgaWYgKGJveFNoYWRvd0luZm8ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLiNib3hTaGFkb3dzID0gYm94U2hhZG93SW5mbztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI2JveFNoYWRvd3MgPSAnbm9uZSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYm94U2hhZG93U3R5bGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKHRoaXMuI2JveFNoYWRvd3MgPT09ICdub25lJyB8fCBwaXhlbHNGcm9tRW5kID09PSAwKSB7XG4gICAgICByZXR1cm4gJ25vbmUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IHNoYWRvdyBvZiB0aGlzLiNib3hTaGFkb3dzKSB7XG4gICAgICAgIGNvbnN0IHsgY29sb3JQYXJ0cywgbGVuZ3Rocywgb3BhY2l0eSB9ID0gc2hhZG93O1xuICAgICAgICAvLyBQcm9ncmVzc2l2ZWx5IGRhcmtlbiB0aGUgc2hhZG93IHVudGlsIHRoZSB1c2VyIHNjcm9sbHMgMzAgcGl4ZWxzIGZyb20gdGhlIHRvcCBvciBib3R0b21cbiAgICAgICAgLy8gb2YgdGhlIHNjcm9sbGFibGUgZWxlbWVudCwgd2l0aCBhIG1heCBvcGFjaXR5IG9mIDAuMy5cbiAgICAgICAgY29uc3QgYWRqdXN0ZWRPcGFjaXR5ID0gTWF0aC5taW4ocGl4ZWxzRnJvbUVuZCAvIDMwLCAxKSAqIG9wYWNpdHk7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkU2hhZG93ID0gYCR7bGVuZ3Roc30gcmdiYSgke2NvbG9yUGFydHN9LCAke2FkanVzdGVkT3BhY2l0eX0pYDtcbiAgICAgICAgYm94U2hhZG93U3R5bGVzLnB1c2goYWRqdXN0ZWRTaGFkb3cpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJveFNoYWRvd1N0eWxlcy5qb2luKCcsICcpO1xuICAgIH1cbiAgfVxuXG4gICNlbWl0U2hhZG93KHNoYWRvdzogU2t5U2Nyb2xsU2hhZG93RXZlbnRBcmdzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuI2N1cnJlbnRTaGFkb3cgfHxcbiAgICAgIHRoaXMuI2N1cnJlbnRTaGFkb3cuYm90dG9tU2hhZG93ICE9PSBzaGFkb3cuYm90dG9tU2hhZG93IHx8XG4gICAgICB0aGlzLiNjdXJyZW50U2hhZG93LnRvcFNoYWRvdyAhPT0gc2hhZG93LnRvcFNoYWRvd1xuICAgICkge1xuICAgICAgdGhpcy5za3lTY3JvbGxTaGFkb3cuZW1pdChzaGFkb3cpO1xuICAgICAgdGhpcy4jY3VycmVudFNoYWRvdyA9IHNoYWRvdztcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { Injectable, Optional } from '@angular/core';\nimport { Observable, Subject, animationFrameScheduler, combineLatestWith, concat, debounceTime, fromEvent, map, observeOn, of, switchMap, takeUntil, } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../mutation/mutation-observer-service\";\nimport * as i2 from \"../window/window-ref\";\nimport * as i3 from \"../resize-observer/resize-observer.service\";\nfunction notifySubscribers(subscribers, item) {\n for (const subscriber of subscribers) {\n subscriber.next(item);\n }\n}\nexport class SkyScrollableHostService {\n #mutationObserverSvc;\n #windowRef;\n #resizeObserverSvc;\n #zone;\n constructor(mutationObserverSvc, windowRef, resizeObserverSvc, zone) {\n this.#mutationObserverSvc = mutationObserverSvc;\n this.#resizeObserverSvc = resizeObserverSvc;\n this.#windowRef = windowRef;\n this.#zone = zone;\n }\n /**\n * Returns the given element's current scrollable host\n * @param elementRef The element whose scrollable host is being requested\n * @returns The current scrollable host\n */\n getScrollableHost(elementRef) {\n return this.#findScrollableHost(elementRef.nativeElement);\n }\n /**\n * Returns an observable which emits the given element's current scrollable host\n * @param elementRef The element whose scrollable host is being requested\n * @returns An observable which emits the current scrollable host element.\n * @internal\n */\n watchScrollableHost(elementRef) {\n const subscribers = [];\n let parentMutationObserver;\n let documentHiddenElementMutationObserver;\n return new Observable((subscriber) => {\n subscribers.push(subscriber);\n let scrollableHost = this.#findScrollableHost(elementRef.nativeElement);\n // Setup mutation observers only once, for all subscribers.\n if (subscribers.length === 1) {\n parentMutationObserver = this.#mutationObserverSvc.create(() => {\n const newScrollableHost = this.#findScrollableHost(elementRef.nativeElement);\n // Reset observer if scrollable host changes.\n if (newScrollableHost !== scrollableHost &&\n this.#isElementVisible(elementRef)) {\n scrollableHost = newScrollableHost;\n this.#observeForScrollableHostChanges(scrollableHost, parentMutationObserver);\n notifySubscribers(subscribers, scrollableHost);\n }\n });\n this.#observeForScrollableHostChanges(scrollableHost, parentMutationObserver);\n documentHiddenElementMutationObserver =\n this.#mutationObserverSvc.create(() => {\n if (scrollableHost && !this.#isElementVisible(elementRef)) {\n // If the scrollable host is not visible, set it to undefined and unsubscribe from its mutation changes.\n // Then, observe the document element so that a new scrollable host can be found.\n scrollableHost = undefined;\n this.#observeForScrollableHostChanges(scrollableHost, parentMutationObserver);\n notifySubscribers(subscribers, scrollableHost);\n }\n });\n this.#observeDocumentHiddenElementChanges(documentHiddenElementMutationObserver);\n }\n // Emit the scrollable host to the subscriber.\n subscriber.next(scrollableHost);\n // Teardown callback for the subscription.\n subscriber.add(() => {\n const subIndex = subscribers.indexOf(subscriber);\n /* istanbul ignore else */\n if (subIndex >= 0) {\n subscribers.splice(subIndex, 1);\n }\n if (subscribers.length === 0) {\n documentHiddenElementMutationObserver.disconnect();\n parentMutationObserver.disconnect();\n }\n });\n });\n }\n /**\n * Returns an observable which emits whenever the element's scrollable host emits a scroll event. The observable will always emit the scroll events from the elements current scrollable host and will update based on any scrollable host changes. The observable will also emit once whenever the scrollable host changes.\n * @param elementRef The element whose scrollable host scroll events are being requested\n * @returns An observable which emits when the elements scrollable host is scrolled or is changed\n */\n watchScrollableHostScrollEvents(elementRef) {\n const subscribers = [];\n let scrollableHost;\n let newScrollableHostObservable = new Subject();\n let scrollableHostSubscription;\n let scrollEventSubscription;\n return new Observable((subscriber) => {\n subscribers.push(subscriber);\n // Setup mutation observers only once, for all subscribers.\n if (subscribers.length === 1) {\n scrollableHostSubscription = this.watchScrollableHost(elementRef).subscribe((newScrollableHost) => {\n newScrollableHostObservable.next();\n newScrollableHostObservable.complete();\n if (scrollableHost && scrollableHost !== newScrollableHost) {\n notifySubscribers(subscribers);\n }\n scrollableHost = newScrollableHost;\n newScrollableHostObservable = new Subject();\n // Only subscribe to scroll events if the host element is defined.\n /* istanbul ignore else */\n if (newScrollableHost) {\n scrollEventSubscription = fromEvent(newScrollableHost, 'scroll')\n .pipe(takeUntil(newScrollableHostObservable))\n .subscribe(() => {\n notifySubscribers(subscribers);\n });\n }\n });\n }\n // Teardown callback for the subscription.\n subscriber.add(() => {\n const subIndex = subscribers.indexOf(subscriber);\n /* istanbul ignore else */\n if (subIndex >= 0) {\n subscribers.splice(subIndex, 1);\n }\n if (subscribers.length === 0) {\n scrollableHostSubscription.unsubscribe();\n scrollEventSubscription.unsubscribe();\n newScrollableHostObservable.complete();\n }\n });\n });\n }\n watchScrollableHostClipPathChanges(elementRef, additionalContainers = of([])) {\n if (!this.#resizeObserverSvc) {\n return of('none');\n }\n const watch = () => this.watchScrollableHost(elementRef).pipe(combineLatestWith(additionalContainers), switchMap(([scrollableHost, additionalHosts]) => {\n const resizeObserverSvc = this.#resizeObserverSvc;\n if (!resizeObserverSvc ||\n ((!scrollableHost ||\n scrollableHost === this.#windowRef.nativeWindow) &&\n additionalHosts.length === 0)) {\n return of('none');\n }\n const hostsParents = additionalHosts\n .map((container) => container.nativeElement?.offsetParent)\n .filter(Boolean);\n const inputs = [\n of(undefined),\n fromEvent(this.#windowRef.nativeWindow, 'resize'),\n fromEvent(this.#windowRef.nativeWindow, 'scroll'),\n ...additionalHosts.map((container) => resizeObserverSvc.observe(container)),\n fromEvent(hostsParents, 'scroll'),\n ...hostsParents.map((hostsParent) => resizeObserverSvc.observe({\n nativeElement: hostsParent,\n })),\n ];\n let getHostRect;\n if (scrollableHost &&\n scrollableHost !== this.#windowRef.nativeWindow) {\n inputs.push(resizeObserverSvc.observe({ nativeElement: scrollableHost }));\n getHostRect = () => scrollableHost.getBoundingClientRect();\n }\n else {\n getHostRect = () => ({\n top: 0,\n left: 0,\n right: this.#windowRef.nativeWindow.innerWidth,\n bottom: this.#windowRef.nativeWindow.innerHeight,\n });\n }\n return concat(inputs).pipe(observeOn(animationFrameScheduler), debounceTime(0), map(() => {\n const viewportSize = this.#getViewportSize();\n let { top, left, right, bottom } = getHostRect();\n for (const container of additionalHosts) {\n if (container.nativeElement?.offsetParent) {\n const containerRect = container.nativeElement.getBoundingClientRect();\n top = Math.max(top, containerRect.top);\n left = Math.max(left, containerRect.left);\n right = Math.min(right, containerRect.right);\n bottom = Math.min(bottom, containerRect.bottom);\n }\n }\n top = Math.max(0, top);\n left = Math.max(0, left);\n return `inset(${top}px ${viewportSize.width - right}px ${viewportSize.height - bottom}px ${left}px)`;\n }));\n }));\n /* istanbul ignore else */\n if (this.#zone) {\n return this.#zone.runOutsideAngular(watch);\n }\n else {\n return watch();\n }\n }\n #findScrollableHost(element) {\n const regex = /(auto|scroll)/;\n const windowObj = this.#windowRef.nativeWindow;\n const bodyObj = windowObj.document.body;\n if (!element) {\n return windowObj;\n }\n let style = windowObj.getComputedStyle(element);\n let parent = element;\n do {\n parent = parent.parentNode;\n // Return `window` if the parent element has been removed from the DOM.\n if (!(parent instanceof HTMLElement)) {\n return windowObj;\n }\n style = windowObj.getComputedStyle(parent);\n } while (!regex.test(style.overflow) &&\n !regex.test(style.overflowY) &&\n parent !== bodyObj);\n if (parent === bodyObj) {\n return windowObj;\n }\n return parent;\n }\n #observeDocumentHiddenElementChanges(mutationObserver) {\n mutationObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class', 'style', 'hidden'],\n childList: true,\n subtree: true,\n });\n }\n #observeForScrollableHostChanges(element, mutationObserver) {\n mutationObserver.disconnect();\n const target = element instanceof HTMLElement ? element : document.documentElement;\n mutationObserver.observe(target, {\n attributes: true,\n attributeFilter: ['class', 'style'],\n childList: true,\n subtree: true,\n });\n }\n /**\n * Determines if an element is \"visible\" in the DOM.\n * @see https://stackoverflow.com/a/11639664/6178885\n */\n #isElementVisible(elementRef) {\n return !!elementRef.nativeElement?.offsetParent;\n }\n #getViewportSize() {\n const win = this.#windowRef.nativeWindow;\n const docElem = win.document.documentElement;\n return {\n width: docElem.clientWidth,\n height: docElem.clientHeight,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: i1.SkyMutationObserverService }, { token: i2.SkyAppWindowRef }, { token: i3.SkyResizeObserverService, optional: true }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyScrollableHostService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyScrollableHostService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.SkyMutationObserverService }, { type: i2.SkyAppWindowRef }, { type: i3.SkyResizeObserverService, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS1ob3N0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvc2Nyb2xsYWJsZS1ob3N0L3Njcm9sbGFibGUtaG9zdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQVUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUdQLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsR0FBRyxFQUNILFNBQVMsRUFDVCxFQUFFLEVBQ0YsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFNZCxTQUFTLGlCQUFpQixDQUN4QixXQUFrQyxFQUNsQyxJQUFjO0lBRWQsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNyQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7QUFDSCxDQUFDO0FBT0QsTUFBTSxPQUFPLHdCQUF3QjtJQUMxQixvQkFBb0IsQ0FBNkI7SUFDakQsVUFBVSxDQUFrQjtJQUM1QixrQkFBa0IsQ0FBdUM7SUFDekQsS0FBSyxDQUFxQjtJQUVuQyxZQUNFLG1CQUErQyxFQUMvQyxTQUEwQixFQUNkLGlCQUE0QyxFQUM1QyxJQUFhO1FBRXpCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztRQUNoRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUM7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxpQkFBaUIsQ0FBQyxV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T0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBRTdDLE9BQU87WUFDTCxLQUFLLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDMUIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxZQUFZO1NBQzdCLENBQUM7SUFDSixDQUFDOzhHQTFWVSx3QkFBd0I7a0hBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzsyRkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFVSSxRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgTmdab25lLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpYmVyLFxuICBTdWJzY3JpcHRpb24sXG4gIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLFxuICBjb21iaW5lTGF0ZXN0V2l0aCxcbiAgY29uY2F0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBvYnNlcnZlT24sXG4gIG9mLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZSc7XG5pbXBvcnQgeyBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi9yZXNpemUtb2JzZXJ2ZXIvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5QXBwV2luZG93UmVmIH0gZnJvbSAnLi4vd2luZG93L3dpbmRvdy1yZWYnO1xuXG5mdW5jdGlvbiBub3RpZnlTdWJzY3JpYmVycyhcbiAgc3Vic2NyaWJlcnM6IFN1YnNjcmliZXI8dW5rbm93bj5bXSxcbiAgaXRlbT86IHVua25vd24sXG4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBzdWJzY3JpYmVyIG9mIHN1YnNjcmliZXJzKSB7XG4gICAgc3Vic2NyaWJlci5uZXh0KGl0ZW0pO1xuICB9XG59XG5cbnR5cGUgSG9zdFJlY3QgPSBQaWNrPERPTVJlY3QsICd0b3AnIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdib3R0b20nPjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVNjcm9sbGFibGVIb3N0U2VydmljZSB7XG4gIHJlYWRvbmx5ICNtdXRhdGlvbk9ic2VydmVyU3ZjOiBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZTtcbiAgcmVhZG9ubHkgI3dpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmO1xuICByZWFkb25seSAjcmVzaXplT2JzZXJ2ZXJTdmM6IFNreVJlc2l6ZU9ic2VydmVyU2VydmljZSB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgI3pvbmU6IE5nWm9uZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtdXRhdGlvbk9ic2VydmVyU3ZjOiBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZSxcbiAgICB3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZixcbiAgICBAT3B0aW9uYWwoKSByZXNpemVPYnNlcnZlclN2Yz86IFNreVJlc2l6ZU9ic2VydmVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSB6b25lPzogTmdab25lLFxuICApIHtcbiAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjID0gbXV0YXRpb25PYnNlcnZlclN2YztcbiAgICB0aGlzLiNyZXNpemVPYnNlcnZlclN2YyA9IHJlc2l6ZU9ic2VydmVyU3ZjO1xuICAgIHRoaXMuI3dpbmRvd1JlZiA9IHdpbmRvd1JlZjtcbiAgICB0aGlzLiN6b25lID0gem9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBnaXZlbiBlbGVtZW50J3MgY3VycmVudCBzY3JvbGxhYmxlIGhvc3RcbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgVGhlIGVsZW1lbnQgd2hvc2Ugc2Nyb2xsYWJsZSBob3N0IGlzIGJlaW5nIHJlcXVlc3RlZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBzY3JvbGxhYmxlIGhvc3RcbiAgICovXG4gIHB1YmxpYyBnZXRTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogSFRNTEVsZW1lbnQgfCBXaW5kb3cge1xuICAgIHJldHVybiB0aGlzLiNmaW5kU2Nyb2xsYWJsZUhvc3QoZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgd2hpY2ggZW1pdHMgdGhlIGdpdmVuIGVsZW1lbnQncyBjdXJyZW50IHNjcm9sbGFibGUgaG9zdFxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiBUaGUgZWxlbWVudCB3aG9zZSBzY3JvbGxhYmxlIGhvc3QgaXMgYmVpbmcgcmVxdWVzdGVkXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgd2hpY2ggZW1pdHMgdGhlIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0IGVsZW1lbnQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHdhdGNoU2Nyb2xsYWJsZUhvc3QoXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgKTogT2JzZXJ2YWJsZTxIVE1MRWxlbWVudCB8IFdpbmRvdz4ge1xuICAgIGNvbnN0IHN1YnNjcmliZXJzOiBTdWJzY3JpYmVyPEhUTUxFbGVtZW50IHwgV2luZG93PltdID0gW107XG5cbiAgICBsZXQgcGFyZW50TXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcbiAgICBsZXQgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyKTtcblxuICAgICAgbGV0IHNjcm9sbGFibGVIb3N0OiBIVE1MRWxlbWVudCB8IFdpbmRvdyB8IHVuZGVmaW5lZCA9XG4gICAgICAgIHRoaXMuI2ZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAvLyBTZXR1cCBtdXRhdGlvbiBvYnNlcnZlcnMgb25seSBvbmNlLCBmb3IgYWxsIHN1YnNjcmliZXJzLlxuICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyID0gdGhpcy4jbXV0YXRpb25PYnNlcnZlclN2Yy5jcmVhdGUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1Njcm9sbGFibGVIb3N0ID0gdGhpcy4jZmluZFNjcm9sbGFibGVIb3N0KFxuICAgICAgICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBSZXNldCBvYnNlcnZlciBpZiBzY3JvbGxhYmxlIGhvc3QgY2hhbmdlcy5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBuZXdTY3JvbGxhYmxlSG9zdCAhPT0gc2Nyb2xsYWJsZUhvc3QgJiZcbiAgICAgICAgICAgIHRoaXMuI2lzRWxlbWVudFZpc2libGUoZWxlbWVudFJlZilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0ID0gbmV3U2Nyb2xsYWJsZUhvc3Q7XG5cbiAgICAgICAgICAgIHRoaXMuI29ic2VydmVGb3JTY3JvbGxhYmxlSG9zdENoYW5nZXMoXG4gICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0LFxuICAgICAgICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgbm90aWZ5U3Vic2NyaWJlcnMoc3Vic2NyaWJlcnMsIHNjcm9sbGFibGVIb3N0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuI29ic2VydmVGb3JTY3JvbGxhYmxlSG9zdENoYW5nZXMoXG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3QsXG4gICAgICAgICAgcGFyZW50TXV0YXRpb25PYnNlcnZlcixcbiAgICAgICAgKTtcblxuICAgICAgICBkb2N1bWVudEhpZGRlbkVsZW1lbnRNdXRhdGlvbk9ic2VydmVyID1cbiAgICAgICAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjLmNyZWF0ZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUhvc3QgJiYgIXRoaXMuI2lzRWxlbWVudFZpc2libGUoZWxlbWVudFJlZikpIHtcbiAgICAgICAgICAgICAgLy8gSWYgdGhlIHNjcm9sbGFibGUgaG9zdCBpcyBub3QgdmlzaWJsZSwgc2V0IGl0IHRvIHVuZGVmaW5lZCBhbmQgdW5zdWJzY3JpYmUgZnJvbSBpdHMgbXV0YXRpb24gY2hhbmdlcy5cbiAgICAgICAgICAgICAgLy8gVGhlbiwgb2JzZXJ2ZSB0aGUgZG9jdW1lbnQgZWxlbWVudCBzbyB0aGF0IGEgbmV3IHNjcm9sbGFibGUgaG9zdCBjYW4gYmUgZm91bmQuXG4gICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgIHRoaXMuI29ic2VydmVGb3JTY3JvbGxhYmxlSG9zdENoYW5nZXMoXG4gICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QsXG4gICAgICAgICAgICAgICAgcGFyZW50TXV0YXRpb25PYnNlcnZlcixcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycywgc2Nyb2xsYWJsZUhvc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuI29ic2VydmVEb2N1bWVudEhpZGRlbkVsZW1lbnRDaGFuZ2VzKFxuICAgICAgICAgIGRvY3VtZW50SGlkZGVuRWxlbWVudE11dGF0aW9uT2JzZXJ2ZXIsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIEVtaXQgdGhlIHNjcm9sbGFibGUgaG9zdCB0byB0aGUgc3Vic2NyaWJlci5cbiAgICAgIHN1YnNjcmliZXIubmV4dChzY3JvbGxhYmxlSG9zdCk7XG5cbiAgICAgIC8vIFRlYXJkb3duIGNhbGxiYWNrIGZvciB0aGUgc3Vic2NyaXB0aW9uLlxuICAgICAgc3Vic2NyaWJlci5hZGQoKCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJJbmRleCA9IHN1YnNjcmliZXJzLmluZGV4T2Yoc3Vic2NyaWJlcik7XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHN1YkluZGV4ID49IDApIHtcbiAgICAgICAgICBzdWJzY3JpYmVycy5zcGxpY2Uoc3ViSW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGRvY3VtZW50SGlkZGVuRWxlbWVudE11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgd2hpY2ggZW1pdHMgd2hlbmV2ZXIgdGhlIGVsZW1lbnQncyBzY3JvbGxhYmxlIGhvc3QgZW1pdHMgYSBzY3JvbGwgZXZlbnQuIFRoZSBvYnNlcnZhYmxlIHdpbGwgYWx3YXlzIGVtaXQgdGhlIHNjcm9sbCBldmVudHMgZnJvbSB0aGUgZWxlbWVudHMgY3VycmVudCBzY3JvbGxhYmxlIGhvc3QgYW5kIHdpbGwgdXBkYXRlIGJhc2VkIG9uIGFueSBzY3JvbGxhYmxlIGhvc3QgY2hhbmdlcy4gVGhlIG9ic2VydmFibGUgd2lsbCBhbHNvIGVtaXQgb25jZSB3aGVuZXZlciB0aGUgc2Nyb2xsYWJsZSBob3N0IGNoYW5nZXMuXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIFRoZSBlbGVtZW50IHdob3NlIHNjcm9sbGFibGUgaG9zdCBzY3JvbGwgZXZlbnRzIGFyZSBiZWluZyByZXF1ZXN0ZWRcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB3aGVuIHRoZSBlbGVtZW50cyBzY3JvbGxhYmxlIGhvc3QgaXMgc2Nyb2xsZWQgb3IgaXMgY2hhbmdlZFxuICAgKi9cbiAgcHVibGljIHdhdGNoU2Nyb2xsYWJsZUhvc3RTY3JvbGxFdmVudHMoXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3Qgc3Vic2NyaWJlcnM6IFN1YnNjcmliZXI8dm9pZD5bXSA9IFtdO1xuXG4gICAgbGV0IHNjcm9sbGFibGVIb3N0OiBIVE1MRWxlbWVudCB8IFdpbmRvdztcblxuICAgIGxldCBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIGxldCBzY3JvbGxhYmxlSG9zdFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIGxldCBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBzdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpO1xuXG4gICAgICAvLyBTZXR1cCBtdXRhdGlvbiBvYnNlcnZlcnMgb25seSBvbmNlLCBmb3IgYWxsIHN1YnNjcmliZXJzLlxuICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBzY3JvbGxhYmxlSG9zdFN1YnNjcmlwdGlvbiA9IHRoaXMud2F0Y2hTY3JvbGxhYmxlSG9zdChcbiAgICAgICAgICBlbGVtZW50UmVmLFxuICAgICAgICApLnN1YnNjcmliZSgobmV3U2Nyb2xsYWJsZUhvc3QpID0+IHtcbiAgICAgICAgICBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUubmV4dCgpO1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5jb21wbGV0ZSgpO1xuXG4gICAgICAgICAgaWYgKHNjcm9sbGFibGVIb3N0ICYmIHNjcm9sbGFibGVIb3N0ICE9PSBuZXdTY3JvbGxhYmxlSG9zdCkge1xuICAgICAgICAgICAgbm90aWZ5U3Vic2NyaWJlcnMoc3Vic2NyaWJlcnMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNjcm9sbGFibGVIb3N0ID0gbmV3U2Nyb2xsYWJsZUhvc3Q7XG4gICAgICAgICAgbmV3U2Nyb2xsYWJsZUhvc3RPYnNlcnZhYmxlID0gbmV3IFN1YmplY3QoKTtcblxuICAgICAgICAgIC8vIE9ubHkgc3Vic2NyaWJlIHRvIHNjcm9sbCBldmVudHMgaWYgdGhlIGhvc3QgZWxlbWVudCBpcyBkZWZpbmVkLlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKG5ld1Njcm9sbGFibGVIb3N0KSB7XG4gICAgICAgICAgICBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbiA9IGZyb21FdmVudChuZXdTY3JvbGxhYmxlSG9zdCwgJ3Njcm9sbCcpXG4gICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbChuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUpKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFRlYXJkb3duIGNhbGxiYWNrIGZvciB0aGUgc3Vic2NyaXB0aW9uLlxuICAgICAgc3Vic2NyaWJlci5hZGQoKCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJJbmRleCA9IHN1YnNjcmliZXJzLmluZGV4T2Yoc3Vic2NyaWJlcik7XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHN1YkluZGV4ID49IDApIHtcbiAgICAgICAgICBzdWJzY3JpYmVycy5zcGxpY2Uoc3ViSW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHNjcm9sbGFibGVIb3N0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgc2Nyb2xsRXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgd2F0Y2hTY3JvbGxhYmxlSG9zdENsaXBQYXRoQ2hhbmdlcyhcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIGFkZGl0aW9uYWxDb250YWluZXJzOiBPYnNlcnZhYmxlPEVsZW1lbnRSZWZbXT4gPSBvZihbXSksXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCF0aGlzLiNyZXNpemVPYnNlcnZlclN2Yykge1xuICAgICAgcmV0dXJuIG9mKCdub25lJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgd2F0Y2ggPSAoKTogT2JzZXJ2YWJsZTxzdHJpbmc+ID0+XG4gICAgICB0aGlzLndhdGNoU2Nyb2xsYWJsZUhvc3QoZWxlbWVudFJlZikucGlwZShcbiAgICAgICAgY29tYmluZUxhdGVzdFdpdGgoYWRkaXRpb25hbENvbnRhaW5lcnMpLFxuICAgICAgICBzd2l0Y2hNYXAoKFtzY3JvbGxhYmxlSG9zdCwgYWRkaXRpb25hbEhvc3RzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyU3ZjID0gdGhpcy4jcmVzaXplT2JzZXJ2ZXJTdmM7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXJlc2l6ZU9ic2VydmVyU3ZjIHx8XG4gICAgICAgICAgICAoKCFzY3JvbGxhYmxlSG9zdCB8fFxuICAgICAgICAgICAgICBzY3JvbGxhYmxlSG9zdCA9PT0gdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdykgJiZcbiAgICAgICAgICAgICAgYWRkaXRpb25hbEhvc3RzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBvZignbm9uZScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGhvc3RzUGFyZW50czogSFRNTEVsZW1lbnRbXSA9IGFkZGl0aW9uYWxIb3N0c1xuICAgICAgICAgICAgLm1hcCgoY29udGFpbmVyKSA9PiBjb250YWluZXIubmF0aXZlRWxlbWVudD8ub2Zmc2V0UGFyZW50KVxuICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgICBjb25zdCBpbnB1dHMgPSBbXG4gICAgICAgICAgICBvZih1bmRlZmluZWQpLFxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3csICdyZXNpemUnKSxcbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LCAnc2Nyb2xsJyksXG4gICAgICAgICAgICAuLi5hZGRpdGlvbmFsSG9zdHMubWFwKChjb250YWluZXIpID0+XG4gICAgICAgICAgICAgIHJlc2l6ZU9ic2VydmVyU3ZjLm9ic2VydmUoY29udGFpbmVyKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmcm9tRXZlbnQoaG9zdHNQYXJlbnRzLCAnc2Nyb2xsJyksXG4gICAgICAgICAgICAuLi5ob3N0c1BhcmVudHMubWFwKChob3N0c1BhcmVudCkgPT5cbiAgICAgICAgICAgICAgcmVzaXplT2JzZXJ2ZXJTdmMub2JzZXJ2ZSh7XG4gICAgICAgICAgICAgICAgbmF0aXZlRWxlbWVudDogaG9zdHNQYXJlbnQsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGxldCBnZXRIb3N0UmVjdDogKCkgPT4gSG9zdFJlY3Q7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgJiZcbiAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0ICE9PSB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93XG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpbnB1dHMucHVzaChcbiAgICAgICAgICAgICAgcmVzaXplT2JzZXJ2ZXJTdmMub2JzZXJ2ZSh7IG5hdGl2ZUVsZW1lbnQ6IHNjcm9sbGFibGVIb3N0IH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGdldEhvc3RSZWN0ID0gKCk6IEhvc3RSZWN0ID0+XG4gICAgICAgICAgICAgIChzY3JvbGxhYmxlSG9zdCBhcyBIVE1MRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdldEhvc3RSZWN0ID0gKCk6IEhvc3RSZWN0ID0+ICh7XG4gICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgICAgcmlnaHQ6IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3cuaW5uZXJXaWR0aCxcbiAgICAgICAgICAgICAgYm90dG9tOiB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjb25jYXQoaW5wdXRzKS5waXBlKFxuICAgICAgICAgICAgb2JzZXJ2ZU9uKGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSxcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0U2l6ZSA9IHRoaXMuI2dldFZpZXdwb3J0U2l6ZSgpO1xuICAgICAgICAgICAgICBsZXQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20gfSA9IGdldEhvc3RSZWN0KCk7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgY29udGFpbmVyIG9mIGFkZGl0aW9uYWxIb3N0cykge1xuICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIubmF0aXZlRWxlbWVudD8ub2Zmc2V0UGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgICB0b3AgPSBNYXRoLm1heCh0b3AsIGNvbnRhaW5lclJlY3QudG9wKTtcbiAgICAgICAgICAgICAgICAgIGxlZnQgPSBNYXRoLm1heChsZWZ0LCBjb250YWluZXJSZWN0LmxlZnQpO1xuICAgICAgICAgICAgICAgICAgcmlnaHQgPSBNYXRoLm1pbihyaWdodCwgY29udGFpbmVyUmVjdC5yaWdodCk7XG4gICAgICAgICAgICAgICAgICBib3R0b20gPSBNYXRoLm1pbihib3R0b20sIGNvbnRhaW5lclJlY3QuYm90dG9tKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdG9wID0gTWF0aC5tYXgoMCwgdG9wKTtcbiAgICAgICAgICAgICAgbGVmdCA9IE1hdGgubWF4KDAsIGxlZnQpO1xuICAgICAgICAgICAgICByZXR1cm4gYGluc2V0KCR7dG9wfXB4ICR7dmlld3BvcnRTaXplLndpZHRoIC0gcmlnaHR9cHggJHt2aWV3cG9ydFNpemUuaGVpZ2h0IC0gYm90dG9tfXB4ICR7bGVmdH1weClgO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI3pvbmUpIHtcbiAgICAgIHJldHVybiB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKHdhdGNoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHdhdGNoKCk7XG4gICAgfVxuICB9XG5cbiAgI2ZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCk6IEhUTUxFbGVtZW50IHwgV2luZG93IHtcbiAgICBjb25zdCByZWdleCA9IC8oYXV0b3xzY3JvbGwpLztcbiAgICBjb25zdCB3aW5kb3dPYmogPSB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93O1xuICAgIGNvbnN0IGJvZHlPYmogPSB3aW5kb3dPYmouZG9jdW1lbnQuYm9keTtcblxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIHdpbmRvd09iajtcbiAgICB9XG5cbiAgICBsZXQgc3R5bGUgPSB3aW5kb3dPYmouZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICBsZXQgcGFyZW50ID0gZWxlbWVudDtcblxuICAgIGRvIHtcbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAvLyBSZXR1cm4gYHdpbmRvd2AgaWYgdGhlIHBhcmVudCBlbGVtZW50IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NLlxuICAgICAgaWYgKCEocGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgICB9XG5cbiAgICAgIHN0eWxlID0gd2luZG93T2JqLmdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICB9IHdoaWxlIChcbiAgICAgICFyZWdleC50ZXN0KHN0eWxlLm92ZXJmbG93KSAmJlxuICAgICAgIXJlZ2V4LnRlc3Qoc3R5bGUub3ZlcmZsb3dZKSAmJlxuICAgICAgcGFyZW50ICE9PSBib2R5T2JqXG4gICAgKTtcblxuICAgIGlmIChwYXJlbnQgPT09IGJvZHlPYmopIHtcbiAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudDtcbiAgfVxuXG4gICNvYnNlcnZlRG9jdW1lbnRIaWRkZW5FbGVtZW50Q2hhbmdlcyhcbiAgICBtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyLFxuICApOiB2b2lkIHtcbiAgICBtdXRhdGlvbk9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2NsYXNzJywgJ3N0eWxlJywgJ2hpZGRlbiddLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gICNvYnNlcnZlRm9yU2Nyb2xsYWJsZUhvc3RDaGFuZ2VzKFxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgV2luZG93IHwgdW5kZWZpbmVkLFxuICAgIG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIsXG4gICk6IHZvaWQge1xuICAgIG11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXG4gICAgY29uc3QgdGFyZ2V0ID1cbiAgICAgIGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IGVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICBtdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGFyZ2V0LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2NsYXNzJywgJ3N0eWxlJ10sXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYW4gZWxlbWVudCBpcyBcInZpc2libGVcIiBpbiB0aGUgRE9NLlxuICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xMTYzOTY2NC82MTc4ODg1XG4gICAqL1xuICAjaXNFbGVtZW50VmlzaWJsZShlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Py5vZmZzZXRQYXJlbnQ7XG4gIH1cblxuICAjZ2V0Vmlld3BvcnRTaXplKCk6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgY29uc3Qgd2luID0gdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdztcbiAgICBjb25zdCBkb2NFbGVtID0gd2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogZG9jRWxlbS5jbGllbnRXaWR0aCxcbiAgICAgIGhlaWdodDogZG9jRWxlbS5jbGllbnRIZWlnaHQsXG4gICAgfTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/platform-browser\";\n/**\n * Provides a method for setting a formatted title on the current window.\n */\nexport class SkyAppTitleService {\n #title;\n constructor(title) {\n this.#title = title;\n }\n /**\n * Sets the title on the current window.\n * @param args An array of title parts. The parts will be concatenated with a hyphen between\n * each part.\n */\n setTitle(args) {\n if (args?.titleParts) {\n this.#title.setTitle(args.titleParts.join(' - '));\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppTitleService, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppTitleService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyAppTitleService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.Title }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy90aXRsZS90aXRsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUszQzs7R0FFRztBQUlILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsTUFBTSxDQUFRO0lBRWQsWUFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLElBQW9DO1FBQ2xELElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7OEdBaEJVLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBTa3lBcHBTZXRUaXRsZUFyZ3MgfSBmcm9tICcuL3NldC10aXRsZS1hcmdzJztcblxuLyoqXG4gKiBQcm92aWRlcyBhIG1ldGhvZCBmb3Igc2V0dGluZyBhIGZvcm1hdHRlZCB0aXRsZSBvbiB0aGUgY3VycmVudCB3aW5kb3cuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBcHBUaXRsZVNlcnZpY2Uge1xuICAjdGl0bGU6IFRpdGxlO1xuXG4gIGNvbnN0cnVjdG9yKHRpdGxlOiBUaXRsZSkge1xuICAgIHRoaXMuI3RpdGxlID0gdGl0bGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdGl0bGUgb24gdGhlIGN1cnJlbnQgd2luZG93LlxuICAgKiBAcGFyYW0gYXJncyBBbiBhcnJheSBvZiB0aXRsZSBwYXJ0cy4gVGhlIHBhcnRzIHdpbGwgYmUgY29uY2F0ZW5hdGVkIHdpdGggYSBoeXBoZW4gYmV0d2VlblxuICAgKiBlYWNoIHBhcnQuXG4gICAqL1xuICBwdWJsaWMgc2V0VGl0bGUoYXJnczogU2t5QXBwU2V0VGl0bGVBcmdzIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKGFyZ3M/LnRpdGxlUGFydHMpIHtcbiAgICAgIHRoaXMuI3RpdGxlLnNldFRpdGxlKGFyZ3MudGl0bGVQYXJ0cy5qb2luKCcgLSAnKSk7XG4gICAgfVxuICB9XG59XG4iXX0=","import { Directive } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../mutation/mutation-observer-service\";\n/**\n * Trims whitespace in each text node that is a direct descendent of the current element.\n */\nexport class SkyTrimDirective {\n #elRef;\n #obs;\n constructor(elRef, mutationObs) {\n this.#elRef = elRef;\n this.#obs = mutationObs.create((mutations) => {\n const nodes = [];\n // Only trim white space inside direct descendants of the current element.\n for (const mutation of mutations) {\n if (mutation.target.parentNode === elRef.nativeElement) {\n nodes.push(mutation.target);\n }\n }\n this.#trim(nodes);\n });\n this.#observe();\n }\n ngOnInit() {\n const el = this.#elRef.nativeElement;\n this.#trim(Array.from(el.childNodes));\n }\n ngOnDestroy() {\n this.#disconnect();\n }\n #observe() {\n this.#obs.observe(this.#elRef.nativeElement, {\n characterData: true,\n subtree: true,\n });\n }\n #disconnect() {\n this.#obs.disconnect();\n }\n #trim(nodes) {\n // Suspend the MutationObserver so altering the text content of each node\n // doesn't retrigger the observe callback.\n this.#disconnect();\n for (const node of nodes) {\n if (node.nodeType === Node.TEXT_NODE && node.textContent) {\n const textContent = node.textContent;\n const textContentTrimmed = textContent.trim();\n if (textContent !== textContentTrimmed) {\n node.textContent = textContentTrimmed;\n }\n }\n }\n this.#observe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTrimDirective, deps: [{ token: i0.ElementRef }, { token: i1.SkyMutationObserverService }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyTrimDirective, isStandalone: false, selector: \"[skyTrim]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTrimDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[skyTrim]',\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SkyMutationObserverService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdHJpbS90cmltLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQyxNQUFNLGVBQWUsQ0FBQzs7O0FBSXpFOztHQUVHO0FBS0gsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixNQUFNLENBQWE7SUFFbkIsSUFBSSxDQUFtQjtJQUV2QixZQUFZLEtBQWlCLEVBQUUsV0FBdUM7UUFDcEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFcEIsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBMkIsRUFBRSxFQUFFO1lBQzdELE1BQU0sS0FBSyxHQUFXLEVBQUUsQ0FBQztZQUV6QiwwRUFBMEU7WUFDMUUsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3ZELEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVNLFFBQVE7UUFDYixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQXdCLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQzNDLGFBQWEsRUFBRSxJQUFJO1lBQ25CLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBYTtRQUNqQix5RUFBeUU7UUFDekUsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDckMsTUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBRTlDLElBQUksV0FBVyxLQUFLLGtCQUFrQixFQUFFLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUM7Z0JBQ3hDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDOzhHQTdEVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztvQkFDckIsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uL211dGF0aW9uL211dGF0aW9uLW9ic2VydmVyLXNlcnZpY2UnO1xuXG4vKipcbiAqIFRyaW1zIHdoaXRlc3BhY2UgaW4gZWFjaCB0ZXh0IG5vZGUgdGhhdCBpcyBhIGRpcmVjdCBkZXNjZW5kZW50IG9mIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lUcmltXScsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUcmltRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAjZWxSZWY6IEVsZW1lbnRSZWY7XG5cbiAgI29iczogTXV0YXRpb25PYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihlbFJlZjogRWxlbWVudFJlZiwgbXV0YXRpb25PYnM6IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlKSB7XG4gICAgdGhpcy4jZWxSZWYgPSBlbFJlZjtcblxuICAgIHRoaXMuI29icyA9IG11dGF0aW9uT2JzLmNyZWF0ZSgobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICBjb25zdCBub2RlczogTm9kZVtdID0gW107XG5cbiAgICAgIC8vIE9ubHkgdHJpbSB3aGl0ZSBzcGFjZSBpbnNpZGUgZGlyZWN0IGRlc2NlbmRhbnRzIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBpZiAobXV0YXRpb24udGFyZ2V0LnBhcmVudE5vZGUgPT09IGVsUmVmLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICBub2Rlcy5wdXNoKG11dGF0aW9uLnRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy4jdHJpbShub2Rlcyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiNvYnNlcnZlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSB0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50IGFzIEVsZW1lbnQ7XG4gICAgdGhpcy4jdHJpbShBcnJheS5mcm9tKGVsLmNoaWxkTm9kZXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNkaXNjb25uZWN0KCk7XG4gIH1cblxuICAjb2JzZXJ2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNvYnMub2JzZXJ2ZSh0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gICNkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuI29icy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICAjdHJpbShub2RlczogTm9kZVtdKTogdm9pZCB7XG4gICAgLy8gU3VzcGVuZCB0aGUgTXV0YXRpb25PYnNlcnZlciBzbyBhbHRlcmluZyB0aGUgdGV4dCBjb250ZW50IG9mIGVhY2ggbm9kZVxuICAgIC8vIGRvZXNuJ3QgcmV0cmlnZ2VyIHRoZSBvYnNlcnZlIGNhbGxiYWNrLlxuICAgIHRoaXMuI2Rpc2Nvbm5lY3QoKTtcblxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFICYmIG5vZGUudGV4dENvbnRlbnQpIHtcbiAgICAgICAgY29uc3QgdGV4dENvbnRlbnQgPSBub2RlLnRleHRDb250ZW50O1xuICAgICAgICBjb25zdCB0ZXh0Q29udGVudFRyaW1tZWQgPSB0ZXh0Q29udGVudC50cmltKCk7XG5cbiAgICAgICAgaWYgKHRleHRDb250ZW50ICE9PSB0ZXh0Q29udGVudFRyaW1tZWQpIHtcbiAgICAgICAgICBub2RlLnRleHRDb250ZW50ID0gdGV4dENvbnRlbnRUcmltbWVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy4jb2JzZXJ2ZSgpO1xuICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport { SkyTrimDirective } from './trim.directive';\nimport * as i0 from \"@angular/core\";\nexport class SkyTrimModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTrimModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTrimModule, declarations: [SkyTrimDirective], exports: [SkyTrimDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTrimModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTrimModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyTrimDirective],\n exports: [SkyTrimDirective],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpbS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdHJpbS90cmltLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQU1wRCxNQUFNLE9BQU8sYUFBYTs4R0FBYixhQUFhOytHQUFiLGFBQWEsaUJBSFQsZ0JBQWdCLGFBQ3JCLGdCQUFnQjsrR0FFZixhQUFhOzsyRkFBYixhQUFhO2tCQUp6QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lUcmltRGlyZWN0aXZlIH0gZnJvbSAnLi90cmltLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1NreVRyaW1EaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbU2t5VHJpbURpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRyaW1Nb2R1bGUge31cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { of as observableOf } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class SkyUIConfigService {\n getConfig(key, defaultConfig) {\n return observableOf(defaultConfig);\n }\n /* istanbul ignore next */\n setConfig(key, value) {\n return observableOf({});\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyUIConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyUIConfigService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyUIConfigService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdWktY29uZmlnL3VpLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsSUFBSSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3RELE1BQU0sT0FBTyxrQkFBa0I7SUFDdEIsU0FBUyxDQUFDLEdBQVcsRUFBRSxhQUFtQjtRQUMvQyxPQUFPLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsMEJBQTBCO0lBQ25CLFNBQVMsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUN0QyxPQUFPLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDOzhHQVJVLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VUlDb25maWdTZXJ2aWNlIHtcbiAgcHVibGljIGdldENvbmZpZyhrZXk6IHN0cmluZywgZGVmYXVsdENvbmZpZz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIG9ic2VydmFibGVPZihkZWZhdWx0Q29uZmlnKTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHB1YmxpYyBzZXRDb25maWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBvYnNlcnZhYmxlT2Yoe30pO1xuICB9XG59XG4iXX0=","const CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';\nconst CLS_VIEWKEEPER_FIXED_NOT_LAST = 'sky-viewkeeper-fixed-not-last';\nconst CLS_VIEWKEEPER_BOUNDARY = 'sky-viewkeeper-boundary';\nconst EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';\nlet nextIdIndex;\nfunction nextId() {\n nextIdIndex = (nextIdIndex || 0) + 1;\n return 'viewkeeper-' + nextIdIndex;\n}\nfunction getOffset(el, scrollableHost) {\n const rect = el.getBoundingClientRect();\n const parent = scrollableHost ? scrollableHost : document.documentElement;\n return {\n top: rect.top + parent.scrollTop,\n left: rect.left + parent.scrollLeft,\n };\n}\nfunction px(value) {\n let pxValue = value ? value.toString() : '';\n if (typeof value === 'number') {\n pxValue = value + 'px';\n }\n return pxValue;\n}\nfunction setElPosition(el, left, top, width, marginTop, marginTopProperty, clipTop, clipLeft) {\n el.style.top = px(top);\n el.style.left = px(left);\n el.style.marginTop = marginTopProperty\n ? `calc(${px(marginTop)} + var(${marginTopProperty}, 0))`\n : px(marginTop);\n el.style.clipPath =\n clipTop || clipLeft ? `inset(${px(clipTop)} 0 0 ${px(clipLeft)})` : 'none';\n /*istanbul ignore else*/\n /* sanity check */\n if (width !== null) {\n el.style.width = px(width);\n }\n}\nfunction getHeightWithMargin(el) {\n const computedStyle = getComputedStyle(el);\n return (el.offsetHeight +\n parseInt(computedStyle.marginTop, 10) +\n parseInt(computedStyle.marginBottom, 10));\n}\nfunction createCustomEvent(name) {\n const evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n}\nexport class SkyViewkeeper {\n #boundaryEl;\n #el;\n #id;\n #setWidth;\n #verticalOffset;\n #verticalOffsetEl;\n #viewportMarginTop = 0;\n #viewportMarginProperty;\n #currentElFixedLeft;\n #currentElFixedTop;\n #currentElFixedWidth;\n #currentElClipLeft;\n #currentElClipTop;\n #isDestroyed = false;\n #scrollableHost;\n #syncElPositionHandler;\n #intersectionObserver;\n #spacerResizeObserver;\n constructor(options) {\n options = options || /* istanbul ignore next */ {};\n this.#el = options.el;\n this.#boundaryEl = options.boundaryEl;\n if (!this.#el) {\n throw new Error('[SkyViewkeeper] The option `el` is required.');\n }\n if (!this.#boundaryEl) {\n throw new Error('[SkyViewkeeper] The option `boundaryEl` is required.');\n }\n const el = this.#el;\n const boundaryEl = this.#boundaryEl;\n this.#setWidth = !!options.setWidth;\n this.#id = nextId();\n this.#scrollableHost = options.scrollableHost;\n this.#verticalOffset = options.verticalOffset || 0;\n this.#verticalOffsetEl = options.verticalOffsetEl;\n // Only set viewport margin if the scrollable host is undefined.\n if (!this.#scrollableHost) {\n this.#viewportMarginTop = options.viewportMarginTop ?? 0;\n this.#viewportMarginProperty = options.viewportMarginProperty;\n }\n this.#syncElPositionHandler = () => this.syncElPosition(el, boundaryEl);\n if (this.#verticalOffsetEl) {\n this.#verticalOffsetEl.addEventListener(EVT_AFTER_VIEWKEEPER_SYNC, this.#syncElPositionHandler);\n }\n window.addEventListener('scroll', this.#syncElPositionHandler, true);\n window.addEventListener('resize', this.#syncElPositionHandler);\n window.addEventListener('orientationchange', this.#syncElPositionHandler);\n this.#boundaryEl.classList.add(CLS_VIEWKEEPER_BOUNDARY);\n this.syncElPosition(el, boundaryEl);\n }\n syncElPosition(el, boundaryEl) {\n const verticalOffset = this.#calculateVerticalOffset();\n // When the element isn't visible, its size can't be calculated, so don't attempt syncing position in this case.\n if (this.#isDestroyed || (el.offsetWidth === 0 && el.offsetHeight === 0)) {\n return;\n }\n const boundaryInfo = this.#getBoundaryInfo(el, boundaryEl);\n const fixedStyles = this.#getFixedStyles(boundaryInfo, verticalOffset);\n const doFixEl = this.#shouldFixEl(el, boundaryInfo, verticalOffset);\n if (this.#needsUpdating(doFixEl, fixedStyles)) {\n if (doFixEl) {\n this.#fixEl(el, boundaryInfo, fixedStyles);\n this.#verticalOffsetEl?.classList.add(CLS_VIEWKEEPER_FIXED_NOT_LAST);\n }\n else {\n this.#unfixEl(el);\n this.#verticalOffsetEl?.classList.remove(CLS_VIEWKEEPER_FIXED_NOT_LAST);\n }\n }\n const evt = createCustomEvent(EVT_AFTER_VIEWKEEPER_SYNC);\n el.dispatchEvent(evt);\n }\n destroy() {\n if (!this.#isDestroyed) {\n this.#intersectionObserver?.disconnect();\n window.removeEventListener('scroll', this.#syncElPositionHandler, true);\n window.removeEventListener('resize', this.#syncElPositionHandler);\n window.removeEventListener('orientationchange', this.#syncElPositionHandler);\n if (this.#el) {\n this.#unfixEl(this.#el);\n }\n this.#verticalOffsetEl?.removeEventListener(EVT_AFTER_VIEWKEEPER_SYNC, this.#syncElPositionHandler);\n this.#verticalOffsetEl?.classList.remove(CLS_VIEWKEEPER_FIXED_NOT_LAST);\n this.#spacerResizeObserver?.disconnect();\n this.#boundaryEl?.classList.remove(CLS_VIEWKEEPER_BOUNDARY);\n this.#el =\n this.#boundaryEl =\n this.#verticalOffsetEl =\n this.#intersectionObserver =\n this.#spacerResizeObserver =\n undefined;\n this.#isDestroyed = true;\n }\n }\n #getSpacerId() {\n return this.#id + '-spacer';\n }\n #unfixEl(el) {\n const spacerEl = document.getElementById(this.#getSpacerId());\n if (spacerEl) {\n this.#spacerResizeObserver?.unobserve(spacerEl);\n /*istanbul ignore else*/\n if (spacerEl.parentElement) {\n spacerEl.parentElement.removeChild(spacerEl);\n }\n }\n el.classList.remove(CLS_VIEWKEEPER_FIXED);\n this.#currentElFixedLeft =\n this.#currentElFixedTop =\n this.#currentElFixedWidth =\n undefined;\n let width = '';\n if (this.#setWidth) {\n width = 'auto';\n }\n setElPosition(el, '', '', width, '', '', 0, 0);\n }\n #calculateVerticalOffset() {\n let offset = this.#verticalOffset;\n if (this.#verticalOffsetEl) {\n const verticalOffsetElTopStyle = this.#verticalOffsetEl.style.top;\n const verticalOffsetElTop = parseInt(verticalOffsetElTopStyle, 10) || 0;\n offset += this.#verticalOffsetEl.offsetHeight + verticalOffsetElTop;\n }\n else if (this.#scrollableHost) {\n offset += this.#scrollableHost.getBoundingClientRect().top;\n }\n return offset;\n }\n #shouldFixEl(el, boundaryInfo, verticalOffset) {\n let anchorTop;\n if (boundaryInfo.spacerEl) {\n anchorTop = getOffset(boundaryInfo.spacerEl, this.#scrollableHost).top;\n }\n else {\n anchorTop = getOffset(el, this.#scrollableHost).top;\n }\n let viewportMarginTop = this.#viewportMarginTop;\n const viewportMarginProperty = this.#viewportMarginProperty &&\n getComputedStyle(document.body).getPropertyValue(this.#viewportMarginProperty);\n if (viewportMarginProperty) {\n viewportMarginTop += parseInt(viewportMarginProperty, 10);\n }\n const doFixEl = boundaryInfo.scrollTop + verticalOffset + viewportMarginTop > anchorTop;\n return doFixEl;\n }\n #getFixedStyles(boundaryInfo, verticalOffset) {\n // If the element needs to be fixed, this will calculate its position. The position\n // will be 0 (fully visible) unless the user is scrolling the boundary out of view.\n // In that case, the element should begin to scroll out of view with the\n // rest of the boundary by setting its top position to a negative value.\n const elTop = boundaryInfo.boundaryBottom -\n boundaryInfo.elHeight -\n boundaryInfo.scrollTop;\n const elClipTop = elTop < verticalOffset ? verticalOffset - elTop : 0;\n const elFixedTop = Math.min(elTop, verticalOffset);\n const elFixedWidth = boundaryInfo.boundaryEl.getBoundingClientRect().width;\n const elFixedLeft = boundaryInfo.boundaryOffset.left - boundaryInfo.scrollLeft;\n const elClipLeft = elFixedLeft < 0 ? 0 - elFixedLeft : 0;\n return {\n elFixedLeft,\n elFixedTop,\n elFixedWidth,\n elClipLeft,\n elClipTop,\n };\n }\n #needsUpdating(doFixEl, fixedStyles) {\n if ((doFixEl &&\n this.#currentElFixedLeft === fixedStyles.elFixedLeft &&\n this.#currentElFixedTop === fixedStyles.elFixedTop &&\n this.#currentElClipLeft === fixedStyles.elClipLeft &&\n this.#currentElClipTop === fixedStyles.elClipTop &&\n this.#currentElFixedWidth === fixedStyles.elFixedWidth) ||\n (!doFixEl &&\n !(this.#currentElFixedLeft !== undefined &&\n this.#currentElFixedLeft !== null))) {\n // The element is either currently fixed and its position and width do not need\n // to change, or the element is not currently fixed and does not need to be fixed.\n // No changes are needed.\n return false;\n }\n return true;\n }\n #fixEl(el, boundaryInfo, fixedStyles) {\n /* istanbul ignore else */\n /* sanity check */\n if (!boundaryInfo.spacerEl) {\n const spacerHeight = boundaryInfo.elHeight;\n const spacerEl = document.createElement('div');\n spacerEl.id = boundaryInfo.spacerId;\n spacerEl.style.height = px(spacerHeight);\n /*istanbul ignore else*/\n if (el.parentNode) {\n el.parentNode.insertBefore(spacerEl, el.nextSibling);\n }\n if (!this.#spacerResizeObserver) {\n this.#spacerResizeObserver = new ResizeObserver(() => this.#syncElPositionHandler());\n }\n this.#spacerResizeObserver.observe(spacerEl);\n }\n el.classList.add(CLS_VIEWKEEPER_FIXED);\n this.#currentElFixedTop = fixedStyles.elFixedTop;\n this.#currentElFixedLeft = fixedStyles.elFixedLeft;\n this.#currentElClipTop = fixedStyles.elClipTop;\n this.#currentElClipLeft = fixedStyles.elClipLeft;\n this.#currentElFixedWidth = fixedStyles.elFixedWidth;\n let width = 0;\n if (this.#setWidth) {\n width = fixedStyles.elFixedWidth;\n }\n setElPosition(el, fixedStyles.elFixedLeft, fixedStyles.elFixedTop, width, this.#viewportMarginTop, this.#viewportMarginProperty, fixedStyles.elClipTop, fixedStyles.elClipLeft);\n }\n #getBoundaryInfo(el, boundaryEl) {\n const spacerId = this.#getSpacerId();\n const spacerEl = document.getElementById(spacerId);\n const boundaryOffset = getOffset(boundaryEl, this.#scrollableHost);\n const boundaryTop = boundaryOffset.top;\n const boundaryBottom = boundaryTop + boundaryEl.getBoundingClientRect().height;\n const scrollLeft = this.#scrollableHost\n ? this.#scrollableHost.scrollLeft\n : document.documentElement.scrollLeft;\n const scrollTop = this.#scrollableHost\n ? this.#scrollableHost.scrollTop\n : document.documentElement.scrollTop;\n const elHeight = getHeightWithMargin(el);\n return {\n boundaryBottom,\n boundaryOffset,\n boundaryEl,\n elHeight,\n scrollLeft,\n scrollTop,\n spacerId,\n spacerEl,\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy92aWV3a2VlcGVyL3ZpZXdrZWVwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUNwRCxNQUFNLDZCQUE2QixHQUFHLCtCQUErQixDQUFDO0FBQ3RFLE1BQU0sdUJBQXVCLEdBQUcseUJBQXlCLENBQUM7QUFDMUQsTUFBTSx5QkFBeUIsR0FBRyxxQkFBcUIsQ0FBQztBQUV4RCxJQUFJLFdBQW1CLENBQUM7QUFFeEIsU0FBUyxNQUFNO0lBQ2IsV0FBVyxHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVyQyxPQUFPLGFBQWEsR0FBRyxXQUFXLENBQUM7QUFDckMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUNoQixFQUFlLEVBQ2YsY0FBNEI7SUFFNUIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7SUFFMUUsT0FBTztRQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTO1FBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVO0tBQ3BDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxFQUFFLENBQUMsS0FBc0I7SUFDaEMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUU1QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE9BQU8sR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQ3BCLEVBQWUsRUFDZixJQUFxQixFQUNyQixHQUFvQixFQUNwQixLQUFzQixFQUN0QixTQUEwQixFQUMxQixpQkFBcUMsRUFDckMsT0FBd0IsRUFDeEIsUUFBeUI7SUFFekIsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxpQkFBaUI7UUFDcEMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLGlCQUFpQixPQUFPO1FBQ3pELENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEIsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRO1FBQ2YsT0FBTyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUU3RSx3QkFBd0I7SUFDeEIsa0JBQWtCO0lBQ2xCLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ25CLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsRUFBZTtJQUMxQyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUzQyxPQUFPLENBQ0wsRUFBRSxDQUFDLFlBQVk7UUFDZixRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDckMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQ3pDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxJQUFTO0lBQ2xDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFaEQsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVuRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQUN4QixXQUFXLENBQTBCO0lBRXJDLEdBQUcsQ0FBMEI7SUFFN0IsR0FBRyxDQUFTO0lBRVosU0FBUyxDQUFVO0lBRW5CLGVBQWUsQ0FBUztJQUV4QixpQkFBaUIsQ0FBMEI7SUFFM0Msa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0lBRXZCLHVCQUF1QixDQUE0QjtJQUVuRCxtQkFBbUIsQ0FBcUI7SUFFeEMsa0JBQWtCLENBQXFCO0lBRXZDLG9CQUFvQixDQUFxQjtJQUV6QyxrQkFBa0IsQ0FBcUI7SUFFdkMsaUJBQWlCLENBQXFCO0lBRXRDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFFckIsZUFBZSxDQUEwQjtJQUV6QyxzQkFBc0IsQ0FBYTtJQUVuQyxxQkFBcUIsQ0FBbUM7SUFFeEQscUJBQXFCLENBQTZCO0lBRWxELFlBQVksT0FBNkI7UUFDdkMsT0FBTyxHQUFHLE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxFQUFFLENBQUM7UUFFbkQsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUV0QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRXBDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1FBRWxELGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUM7UUFDaEUsQ0FBQztRQUVELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxHQUFTLEVBQUUsQ0FDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFdEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQ3JDLHlCQUF5QixFQUN6QixJQUFJLENBQUMsc0JBQXNCLENBQzVCLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMvRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFMUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxFQUFlLEVBQUUsVUFBdUI7UUFDNUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFdkQsZ0hBQWdIO1FBQ2hILElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN6RSxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRXBFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUN2RSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUMxRSxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFekQsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDbEUsTUFBTSxDQUFDLG1CQUFtQixDQUN4QixtQkFBbUIsRUFDbkIsSUFBSSxDQUFDLHNCQUFzQixDQUM1QixDQUFDO1lBRUYsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUIsQ0FBQztZQUVELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FDekMseUJBQXlCLEVBQ3pCLElBQUksQ0FBQyxzQkFBc0IsQ0FDNUIsQ0FBQztZQUNGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFFeEUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBRTVELElBQUksQ0FBQyxHQUFHO2dCQUNOLElBQUksQ0FBQyxXQUFXO29CQUNoQixJQUFJLENBQUMsaUJBQWlCO3dCQUN0QixJQUFJLENBQUMscUJBQXFCOzRCQUMxQixJQUFJLENBQUMscUJBQXFCO2dDQUN4QixTQUFTLENBQUM7WUFFZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRLENBQUMsRUFBZTtRQUN0QixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRTlELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMscUJBQXFCLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWhELHdCQUF3QjtZQUN4QixJQUFJLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDM0IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUM7UUFFRCxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxtQkFBbUI7WUFDdEIsSUFBSSxDQUFDLGtCQUFrQjtnQkFDdkIsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdkIsU0FBUyxDQUFDO1FBRWQsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWYsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNqQixDQUFDO1FBRUQsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFFbEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1lBQ2xFLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV4RSxNQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksR0FBRyxtQkFBbUIsQ0FBQztRQUN0RSxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDN0QsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxZQUFZLENBQ1YsRUFBZSxFQUNmLFlBQXVDLEVBQ3ZDLGNBQXNCO1FBRXRCLElBQUksU0FBaUIsQ0FBQztRQUV0QixJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQixTQUFTLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN6RSxDQUFDO2FBQU0sQ0FBQztZQUNOLFNBQVMsR0FBRyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDdEQsQ0FBQztRQUVELElBQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ2hELE1BQU0sc0JBQXNCLEdBQzFCLElBQUksQ0FBQyx1QkFBdUI7WUFDNUIsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUM5QyxJQUFJLENBQUMsdUJBQXVCLENBQzdCLENBQUM7UUFDSixJQUFJLHNCQUFzQixFQUFFLENBQUM7WUFDM0IsaUJBQWlCLElBQUksUUFBUSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxNQUFNLE9BQU8sR0FDWCxZQUFZLENBQUMsU0FBUyxHQUFHLGNBQWMsR0FBRyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7UUFFMUUsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGVBQWUsQ0FDYixZQUF1QyxFQUN2QyxjQUFzQjtRQUV0QixvRkFBb0Y7UUFDcEYsbUZBQW1GO1FBQ25GLHdFQUF3RTtRQUN4RSx3RUFBd0U7UUFDeEUsTUFBTSxLQUFLLEdBQ1QsWUFBWSxDQUFDLGNBQWM7WUFDM0IsWUFBWSxDQUFDLFFBQVE7WUFDckIsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUN6QixNQUFNLFNBQVMsR0FBRyxLQUFLLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFbkQsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUMzRSxNQUFNLFdBQVcsR0FDZixZQUFZLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBQzdELE1BQU0sVUFBVSxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6RCxPQUFPO1lBQ0wsV0FBVztZQUNYLFVBQVU7WUFDVixZQUFZO1lBQ1osVUFBVTtZQUNWLFNBQVM7U0FDVixDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FDWixPQUFnQixFQUNoQixXQUFxQztRQUVyQyxJQUNFLENBQUMsT0FBTztZQUNOLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxXQUFXLENBQUMsV0FBVztZQUNwRCxJQUFJLENBQUMsa0JBQWtCLEtBQUssV0FBVyxDQUFDLFVBQVU7WUFDbEQsSUFBSSxDQUFDLGtCQUFrQixLQUFLLFdBQVcsQ0FBQyxVQUFVO1lBQ2xELElBQUksQ0FBQyxpQkFBaUIsS0FBSyxXQUFXLENBQUMsU0FBUztZQUNoRCxJQUFJLENBQUMsb0JBQW9CLEtBQUssV0FBVyxDQUFDLFlBQVksQ0FBQztZQUN6RCxDQUFDLENBQUMsT0FBTztnQkFDUCxDQUFDLENBQ0MsSUFBSSxDQUFDLG1CQUFtQixLQUFLLFNBQVM7b0JBQ3RDLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxJQUFJLENBQ2xDLENBQUMsRUFDSixDQUFDO1lBQ0QsK0VBQStFO1lBQy9FLGtGQUFrRjtZQUNsRix5QkFBeUI7WUFDekIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUNKLEVBQWUsRUFDZixZQUF1QyxFQUN2QyxXQUFxQztRQUVyQywwQkFBMEI7UUFDMUIsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0IsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUUzQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9DLFFBQVEsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUNwQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFekMsd0JBQXdCO1lBQ3hCLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNsQixFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FDbkQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQzlCLENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUNqRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztRQUNuRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUNqRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztRQUVyRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFZCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixLQUFLLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztRQUNuQyxDQUFDO1FBRUQsYUFBYSxDQUNYLEVBQUUsRUFDRixXQUFXLENBQUMsV0FBVyxFQUN2QixXQUFXLENBQUMsVUFBVSxFQUN0QixLQUFLLEVBQ0wsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixJQUFJLENBQUMsdUJBQXVCLEVBQzVCLFdBQVcsQ0FBQyxTQUFTLEVBQ3JCLFdBQVcsQ0FBQyxVQUFVLENBQ3ZCLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQ2QsRUFBZSxFQUNmLFVBQXVCO1FBRXZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVyQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUM7UUFDdkMsTUFBTSxjQUFjLEdBQ2xCLFdBQVcsR0FBRyxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFFMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWU7WUFDckMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVTtZQUNqQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7UUFDeEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWU7WUFDcEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUztZQUNoQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7UUFFdkMsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFekMsT0FBTztZQUNMLGNBQWM7WUFDZCxjQUFjO1lBQ2QsVUFBVTtZQUNWLFFBQVE7WUFDUixVQUFVO1lBQ1YsU0FBUztZQUNULFFBQVE7WUFDUixRQUFRO1NBQ1QsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8gfSBmcm9tICcuL3ZpZXdrZWVwZXItYm91bmRhcnktaW5mbyc7XG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXMgfSBmcm9tICcuL3ZpZXdrZWVwZXItZml4ZWQtc3R5bGVzJztcbmltcG9ydCB7IFNreVZpZXdrZWVwZXJPZmZzZXQgfSBmcm9tICcuL3ZpZXdrZWVwZXItb2Zmc2V0JztcbmltcG9ydCB7IFNreVZpZXdrZWVwZXJPcHRpb25zIH0gZnJvbSAnLi92aWV3a2VlcGVyLW9wdGlvbnMnO1xuXG5jb25zdCBDTFNfVklFV0tFRVBFUl9GSVhFRCA9ICdza3ktdmlld2tlZXBlci1maXhlZCc7XG5jb25zdCBDTFNfVklFV0tFRVBFUl9GSVhFRF9OT1RfTEFTVCA9ICdza3ktdmlld2tlZXBlci1maXhlZC1ub3QtbGFzdCc7XG5jb25zdCBDTFNfVklFV0tFRVBFUl9CT1VOREFSWSA9ICdza3ktdmlld2tlZXBlci1ib3VuZGFyeSc7XG5jb25zdCBFVlRfQUZURVJfVklFV0tFRVBFUl9TWU5DID0gJ2FmdGVyVmlld2tlZXBlclN5bmMnO1xuXG5sZXQgbmV4dElkSW5kZXg6IG51bWJlcjtcblxuZnVuY3Rpb24gbmV4dElkKCk6IHN0cmluZyB7XG4gIG5leHRJZEluZGV4ID0gKG5leHRJZEluZGV4IHx8IDApICsgMTtcblxuICByZXR1cm4gJ3ZpZXdrZWVwZXItJyArIG5leHRJZEluZGV4O1xufVxuXG5mdW5jdGlvbiBnZXRPZmZzZXQoXG4gIGVsOiBIVE1MRWxlbWVudCxcbiAgc2Nyb2xsYWJsZUhvc3Q/OiBIVE1MRWxlbWVudCxcbik6IFNreVZpZXdrZWVwZXJPZmZzZXQge1xuICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHBhcmVudCA9IHNjcm9sbGFibGVIb3N0ID8gc2Nyb2xsYWJsZUhvc3QgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IHJlY3QudG9wICsgcGFyZW50LnNjcm9sbFRvcCxcbiAgICBsZWZ0OiByZWN0LmxlZnQgKyBwYXJlbnQuc2Nyb2xsTGVmdCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHgodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBweFZhbHVlID0gdmFsdWUgPyB2YWx1ZS50b1N0cmluZygpIDogJyc7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICBweFZhbHVlID0gdmFsdWUgKyAncHgnO1xuICB9XG5cbiAgcmV0dXJuIHB4VmFsdWU7XG59XG5cbmZ1bmN0aW9uIHNldEVsUG9zaXRpb24oXG4gIGVsOiBIVE1MRWxlbWVudCxcbiAgbGVmdDogbnVtYmVyIHwgc3RyaW5nLFxuICB0b3A6IG51bWJlciB8IHN0cmluZyxcbiAgd2lkdGg6IG51bWJlciB8IHN0cmluZyxcbiAgbWFyZ2luVG9wOiBudW1iZXIgfCBzdHJpbmcsXG4gIG1hcmdpblRvcFByb3BlcnR5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGNsaXBUb3A6IG51bWJlciB8IHN0cmluZyxcbiAgY2xpcExlZnQ6IG51bWJlciB8IHN0cmluZyxcbik6IHZvaWQge1xuICBlbC5zdHlsZS50b3AgPSBweCh0b3ApO1xuICBlbC5zdHlsZS5sZWZ0ID0gcHgobGVmdCk7XG4gIGVsLnN0eWxlLm1hcmdpblRvcCA9IG1hcmdpblRvcFByb3BlcnR5XG4gICAgPyBgY2FsYygke3B4KG1hcmdpblRvcCl9ICsgdmFyKCR7bWFyZ2luVG9wUHJvcGVydHl9LCAwKSlgXG4gICAgOiBweChtYXJnaW5Ub3ApO1xuICBlbC5zdHlsZS5jbGlwUGF0aCA9XG4gICAgY2xpcFRvcCB8fCBjbGlwTGVmdCA/IGBpbnNldCgke3B4KGNsaXBUb3ApfSAwIDAgJHtweChjbGlwTGVmdCl9KWAgOiAnbm9uZSc7XG5cbiAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gIC8qIHNhbml0eSBjaGVjayAqL1xuICBpZiAod2lkdGggIT09IG51bGwpIHtcbiAgICBlbC5zdHlsZS53aWR0aCA9IHB4KHdpZHRoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRIZWlnaHRXaXRoTWFyZ2luKGVsOiBIVE1MRWxlbWVudCk6IG51bWJlciB7XG4gIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsKTtcblxuICByZXR1cm4gKFxuICAgIGVsLm9mZnNldEhlaWdodCArXG4gICAgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5tYXJnaW5Ub3AsIDEwKSArXG4gICAgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20sIDEwKVxuICApO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDdXN0b21FdmVudChuYW1lOiBhbnkpOiBDdXN0b21FdmVudDxhbnk+IHtcbiAgY29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG5cbiAgZXZ0LmluaXRDdXN0b21FdmVudChuYW1lLCBmYWxzZSwgZmFsc2UsIHVuZGVmaW5lZCk7XG5cbiAgcmV0dXJuIGV2dDtcbn1cblxuZXhwb3J0IGNsYXNzIFNreVZpZXdrZWVwZXIge1xuICAjYm91bmRhcnlFbDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI2VsOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAjaWQ6IHN0cmluZztcblxuICAjc2V0V2lkdGg6IGJvb2xlYW47XG5cbiAgI3ZlcnRpY2FsT2Zmc2V0OiBudW1iZXI7XG5cbiAgI3ZlcnRpY2FsT2Zmc2V0RWw6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICN2aWV3cG9ydE1hcmdpblRvcCA9IDA7XG5cbiAgI3ZpZXdwb3J0TWFyZ2luUHJvcGVydHk6IGAtLSR7c3RyaW5nfWAgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRFbEZpeGVkTGVmdDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50RWxGaXhlZFRvcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50RWxGaXhlZFdpZHRoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRFbENsaXBMZWZ0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRFbENsaXBUb3A6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjaXNEZXN0cm95ZWQgPSBmYWxzZTtcblxuICAjc2Nyb2xsYWJsZUhvc3Q6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICNzeW5jRWxQb3NpdGlvbkhhbmRsZXI6ICgpID0+IHZvaWQ7XG5cbiAgI2ludGVyc2VjdGlvbk9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlciB8IHVuZGVmaW5lZDtcblxuICAjc3BhY2VyUmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNreVZpZXdrZWVwZXJPcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8ge307XG5cbiAgICB0aGlzLiNlbCA9IG9wdGlvbnMuZWw7XG4gICAgdGhpcy4jYm91bmRhcnlFbCA9IG9wdGlvbnMuYm91bmRhcnlFbDtcblxuICAgIGlmICghdGhpcy4jZWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW1NreVZpZXdrZWVwZXJdIFRoZSBvcHRpb24gYGVsYCBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuI2JvdW5kYXJ5RWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW1NreVZpZXdrZWVwZXJdIFRoZSBvcHRpb24gYGJvdW5kYXJ5RWxgIGlzIHJlcXVpcmVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGVsID0gdGhpcy4jZWw7XG4gICAgY29uc3QgYm91bmRhcnlFbCA9IHRoaXMuI2JvdW5kYXJ5RWw7XG5cbiAgICB0aGlzLiNzZXRXaWR0aCA9ICEhb3B0aW9ucy5zZXRXaWR0aDtcbiAgICB0aGlzLiNpZCA9IG5leHRJZCgpO1xuICAgIHRoaXMuI3Njcm9sbGFibGVIb3N0ID0gb3B0aW9ucy5zY3JvbGxhYmxlSG9zdDtcbiAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldCA9IG9wdGlvbnMudmVydGljYWxPZmZzZXQgfHwgMDtcbiAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsID0gb3B0aW9ucy52ZXJ0aWNhbE9mZnNldEVsO1xuXG4gICAgLy8gT25seSBzZXQgdmlld3BvcnQgbWFyZ2luIGlmIHRoZSBzY3JvbGxhYmxlIGhvc3QgaXMgdW5kZWZpbmVkLlxuICAgIGlmICghdGhpcy4jc2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgIHRoaXMuI3ZpZXdwb3J0TWFyZ2luVG9wID0gb3B0aW9ucy52aWV3cG9ydE1hcmdpblRvcCA/PyAwO1xuICAgICAgdGhpcy4jdmlld3BvcnRNYXJnaW5Qcm9wZXJ0eSA9IG9wdGlvbnMudmlld3BvcnRNYXJnaW5Qcm9wZXJ0eTtcbiAgICB9XG5cbiAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIgPSAoKTogdm9pZCA9PlxuICAgICAgdGhpcy5zeW5jRWxQb3NpdGlvbihlbCwgYm91bmRhcnlFbCk7XG5cbiAgICBpZiAodGhpcy4jdmVydGljYWxPZmZzZXRFbCkge1xuICAgICAgdGhpcy4jdmVydGljYWxPZmZzZXRFbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICBFVlRfQUZURVJfVklFV0tFRVBFUl9TWU5DLFxuICAgICAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIsXG4gICAgICApO1xuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIsIHRydWUpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvcmllbnRhdGlvbmNoYW5nZScsIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlcik7XG5cbiAgICB0aGlzLiNib3VuZGFyeUVsLmNsYXNzTGlzdC5hZGQoQ0xTX1ZJRVdLRUVQRVJfQk9VTkRBUlkpO1xuXG4gICAgdGhpcy5zeW5jRWxQb3NpdGlvbihlbCwgYm91bmRhcnlFbCk7XG4gIH1cblxuICBwdWJsaWMgc3luY0VsUG9zaXRpb24oZWw6IEhUTUxFbGVtZW50LCBib3VuZGFyeUVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0ID0gdGhpcy4jY2FsY3VsYXRlVmVydGljYWxPZmZzZXQoKTtcblxuICAgIC8vIFdoZW4gdGhlIGVsZW1lbnQgaXNuJ3QgdmlzaWJsZSwgaXRzIHNpemUgY2FuJ3QgYmUgY2FsY3VsYXRlZCwgc28gZG9uJ3QgYXR0ZW1wdCBzeW5jaW5nIHBvc2l0aW9uIGluIHRoaXMgY2FzZS5cbiAgICBpZiAodGhpcy4jaXNEZXN0cm95ZWQgfHwgKGVsLm9mZnNldFdpZHRoID09PSAwICYmIGVsLm9mZnNldEhlaWdodCA9PT0gMCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBib3VuZGFyeUluZm8gPSB0aGlzLiNnZXRCb3VuZGFyeUluZm8oZWwsIGJvdW5kYXJ5RWwpO1xuICAgIGNvbnN0IGZpeGVkU3R5bGVzID0gdGhpcy4jZ2V0Rml4ZWRTdHlsZXMoYm91bmRhcnlJbmZvLCB2ZXJ0aWNhbE9mZnNldCk7XG5cbiAgICBjb25zdCBkb0ZpeEVsID0gdGhpcy4jc2hvdWxkRml4RWwoZWwsIGJvdW5kYXJ5SW5mbywgdmVydGljYWxPZmZzZXQpO1xuXG4gICAgaWYgKHRoaXMuI25lZWRzVXBkYXRpbmcoZG9GaXhFbCwgZml4ZWRTdHlsZXMpKSB7XG4gICAgICBpZiAoZG9GaXhFbCkge1xuICAgICAgICB0aGlzLiNmaXhFbChlbCwgYm91bmRhcnlJbmZvLCBmaXhlZFN0eWxlcyk7XG4gICAgICAgIHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWw/LmNsYXNzTGlzdC5hZGQoQ0xTX1ZJRVdLRUVQRVJfRklYRURfTk9UX0xBU1QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jdW5maXhFbChlbCk7XG4gICAgICAgIHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWw/LmNsYXNzTGlzdC5yZW1vdmUoQ0xTX1ZJRVdLRUVQRVJfRklYRURfTk9UX0xBU1QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGV2dCA9IGNyZWF0ZUN1c3RvbUV2ZW50KEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMpO1xuXG4gICAgZWwuZGlzcGF0Y2hFdmVudChldnQpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiNpc0Rlc3Ryb3llZCkge1xuICAgICAgdGhpcy4jaW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIsIHRydWUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlcik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ29yaWVudGF0aW9uY2hhbmdlJyxcbiAgICAgICAgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyLFxuICAgICAgKTtcblxuICAgICAgaWYgKHRoaXMuI2VsKSB7XG4gICAgICAgIHRoaXMuI3VuZml4RWwodGhpcy4jZWwpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsPy5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICBFVlRfQUZURVJfVklFV0tFRVBFUl9TWU5DLFxuICAgICAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIsXG4gICAgICApO1xuICAgICAgdGhpcy4jdmVydGljYWxPZmZzZXRFbD8uY2xhc3NMaXN0LnJlbW92ZShDTFNfVklFV0tFRVBFUl9GSVhFRF9OT1RfTEFTVCk7XG5cbiAgICAgIHRoaXMuI3NwYWNlclJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLiNib3VuZGFyeUVsPy5jbGFzc0xpc3QucmVtb3ZlKENMU19WSUVXS0VFUEVSX0JPVU5EQVJZKTtcblxuICAgICAgdGhpcy4jZWwgPVxuICAgICAgICB0aGlzLiNib3VuZGFyeUVsID1cbiAgICAgICAgdGhpcy4jdmVydGljYWxPZmZzZXRFbCA9XG4gICAgICAgIHRoaXMuI2ludGVyc2VjdGlvbk9ic2VydmVyID1cbiAgICAgICAgdGhpcy4jc3BhY2VyUmVzaXplT2JzZXJ2ZXIgPVxuICAgICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy4jaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gICNnZXRTcGFjZXJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNpZCArICctc3BhY2VyJztcbiAgfVxuXG4gICN1bmZpeEVsKGVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy4jZ2V0U3BhY2VySWQoKSk7XG5cbiAgICBpZiAoc3BhY2VyRWwpIHtcbiAgICAgIHRoaXMuI3NwYWNlclJlc2l6ZU9ic2VydmVyPy51bm9ic2VydmUoc3BhY2VyRWwpO1xuXG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICAgIGlmIChzcGFjZXJFbC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIHNwYWNlckVsLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoc3BhY2VyRWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoQ0xTX1ZJRVdLRUVQRVJfRklYRUQpO1xuXG4gICAgdGhpcy4jY3VycmVudEVsRml4ZWRMZWZ0ID1cbiAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkVG9wID1cbiAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkV2lkdGggPVxuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICBsZXQgd2lkdGggPSAnJztcblxuICAgIGlmICh0aGlzLiNzZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSAnYXV0byc7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbihlbCwgJycsICcnLCB3aWR0aCwgJycsICcnLCAwLCAwKTtcbiAgfVxuXG4gICNjYWxjdWxhdGVWZXJ0aWNhbE9mZnNldCgpOiBudW1iZXIge1xuICAgIGxldCBvZmZzZXQgPSB0aGlzLiN2ZXJ0aWNhbE9mZnNldDtcblxuICAgIGlmICh0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsKSB7XG4gICAgICBjb25zdCB2ZXJ0aWNhbE9mZnNldEVsVG9wU3R5bGUgPSB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsLnN0eWxlLnRvcDtcbiAgICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0RWxUb3AgPSBwYXJzZUludCh2ZXJ0aWNhbE9mZnNldEVsVG9wU3R5bGUsIDEwKSB8fCAwO1xuXG4gICAgICBvZmZzZXQgKz0gdGhpcy4jdmVydGljYWxPZmZzZXRFbC5vZmZzZXRIZWlnaHQgKyB2ZXJ0aWNhbE9mZnNldEVsVG9wO1xuICAgIH0gZWxzZSBpZiAodGhpcy4jc2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgIG9mZnNldCArPSB0aGlzLiNzY3JvbGxhYmxlSG9zdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxuXG4gICNzaG91bGRGaXhFbChcbiAgICBlbDogSFRNTEVsZW1lbnQsXG4gICAgYm91bmRhcnlJbmZvOiBTa3lWaWV3a2VlcGVyQm91bmRhcnlJbmZvLFxuICAgIHZlcnRpY2FsT2Zmc2V0OiBudW1iZXIsXG4gICk6IGJvb2xlYW4ge1xuICAgIGxldCBhbmNob3JUb3A6IG51bWJlcjtcblxuICAgIGlmIChib3VuZGFyeUluZm8uc3BhY2VyRWwpIHtcbiAgICAgIGFuY2hvclRvcCA9IGdldE9mZnNldChib3VuZGFyeUluZm8uc3BhY2VyRWwsIHRoaXMuI3Njcm9sbGFibGVIb3N0KS50b3A7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFuY2hvclRvcCA9IGdldE9mZnNldChlbCwgdGhpcy4jc2Nyb2xsYWJsZUhvc3QpLnRvcDtcbiAgICB9XG5cbiAgICBsZXQgdmlld3BvcnRNYXJnaW5Ub3AgPSB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcDtcbiAgICBjb25zdCB2aWV3cG9ydE1hcmdpblByb3BlcnR5ID1cbiAgICAgIHRoaXMuI3ZpZXdwb3J0TWFyZ2luUHJvcGVydHkgJiZcbiAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgdGhpcy4jdmlld3BvcnRNYXJnaW5Qcm9wZXJ0eSxcbiAgICAgICk7XG4gICAgaWYgKHZpZXdwb3J0TWFyZ2luUHJvcGVydHkpIHtcbiAgICAgIHZpZXdwb3J0TWFyZ2luVG9wICs9IHBhcnNlSW50KHZpZXdwb3J0TWFyZ2luUHJvcGVydHksIDEwKTtcbiAgICB9XG5cbiAgICBjb25zdCBkb0ZpeEVsID1cbiAgICAgIGJvdW5kYXJ5SW5mby5zY3JvbGxUb3AgKyB2ZXJ0aWNhbE9mZnNldCArIHZpZXdwb3J0TWFyZ2luVG9wID4gYW5jaG9yVG9wO1xuXG4gICAgcmV0dXJuIGRvRml4RWw7XG4gIH1cblxuICAjZ2V0Rml4ZWRTdHlsZXMoXG4gICAgYm91bmRhcnlJbmZvOiBTa3lWaWV3a2VlcGVyQm91bmRhcnlJbmZvLFxuICAgIHZlcnRpY2FsT2Zmc2V0OiBudW1iZXIsXG4gICk6IFNreVZpZXdrZWVwZXJGaXhlZFN0eWxlcyB7XG4gICAgLy8gSWYgdGhlIGVsZW1lbnQgbmVlZHMgdG8gYmUgZml4ZWQsIHRoaXMgd2lsbCBjYWxjdWxhdGUgaXRzIHBvc2l0aW9uLiAgVGhlIHBvc2l0aW9uXG4gICAgLy8gd2lsbCBiZSAwIChmdWxseSB2aXNpYmxlKSB1bmxlc3MgdGhlIHVzZXIgaXMgc2Nyb2xsaW5nIHRoZSBib3VuZGFyeSBvdXQgb2Ygdmlldy5cbiAgICAvLyBJbiB0aGF0IGNhc2UsIHRoZSBlbGVtZW50IHNob3VsZCBiZWdpbiB0byBzY3JvbGwgb3V0IG9mIHZpZXcgd2l0aCB0aGVcbiAgICAvLyByZXN0IG9mIHRoZSBib3VuZGFyeSBieSBzZXR0aW5nIGl0cyB0b3AgcG9zaXRpb24gdG8gYSBuZWdhdGl2ZSB2YWx1ZS5cbiAgICBjb25zdCBlbFRvcCA9XG4gICAgICBib3VuZGFyeUluZm8uYm91bmRhcnlCb3R0b20gLVxuICAgICAgYm91bmRhcnlJbmZvLmVsSGVpZ2h0IC1cbiAgICAgIGJvdW5kYXJ5SW5mby5zY3JvbGxUb3A7XG4gICAgY29uc3QgZWxDbGlwVG9wID0gZWxUb3AgPCB2ZXJ0aWNhbE9mZnNldCA/IHZlcnRpY2FsT2Zmc2V0IC0gZWxUb3AgOiAwO1xuICAgIGNvbnN0IGVsRml4ZWRUb3AgPSBNYXRoLm1pbihlbFRvcCwgdmVydGljYWxPZmZzZXQpO1xuXG4gICAgY29uc3QgZWxGaXhlZFdpZHRoID0gYm91bmRhcnlJbmZvLmJvdW5kYXJ5RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgY29uc3QgZWxGaXhlZExlZnQgPVxuICAgICAgYm91bmRhcnlJbmZvLmJvdW5kYXJ5T2Zmc2V0LmxlZnQgLSBib3VuZGFyeUluZm8uc2Nyb2xsTGVmdDtcbiAgICBjb25zdCBlbENsaXBMZWZ0ID0gZWxGaXhlZExlZnQgPCAwID8gMCAtIGVsRml4ZWRMZWZ0IDogMDtcblxuICAgIHJldHVybiB7XG4gICAgICBlbEZpeGVkTGVmdCxcbiAgICAgIGVsRml4ZWRUb3AsXG4gICAgICBlbEZpeGVkV2lkdGgsXG4gICAgICBlbENsaXBMZWZ0LFxuICAgICAgZWxDbGlwVG9wLFxuICAgIH07XG4gIH1cblxuICAjbmVlZHNVcGRhdGluZyhcbiAgICBkb0ZpeEVsOiBib29sZWFuLFxuICAgIGZpeGVkU3R5bGVzOiBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXMsXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIChkb0ZpeEVsICYmXG4gICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkTGVmdCA9PT0gZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQgJiZcbiAgICAgICAgdGhpcy4jY3VycmVudEVsRml4ZWRUb3AgPT09IGZpeGVkU3R5bGVzLmVsRml4ZWRUb3AgJiZcbiAgICAgICAgdGhpcy4jY3VycmVudEVsQ2xpcExlZnQgPT09IGZpeGVkU3R5bGVzLmVsQ2xpcExlZnQgJiZcbiAgICAgICAgdGhpcy4jY3VycmVudEVsQ2xpcFRvcCA9PT0gZml4ZWRTdHlsZXMuZWxDbGlwVG9wICYmXG4gICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkV2lkdGggPT09IGZpeGVkU3R5bGVzLmVsRml4ZWRXaWR0aCkgfHxcbiAgICAgICghZG9GaXhFbCAmJlxuICAgICAgICAhKFxuICAgICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkTGVmdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgdGhpcy4jY3VycmVudEVsRml4ZWRMZWZ0ICE9PSBudWxsXG4gICAgICAgICkpXG4gICAgKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBlaXRoZXIgY3VycmVudGx5IGZpeGVkIGFuZCBpdHMgcG9zaXRpb24gYW5kIHdpZHRoIGRvIG5vdCBuZWVkXG4gICAgICAvLyB0byBjaGFuZ2UsIG9yIHRoZSBlbGVtZW50IGlzIG5vdCBjdXJyZW50bHkgZml4ZWQgYW5kIGRvZXMgbm90IG5lZWQgdG8gYmUgZml4ZWQuXG4gICAgICAvLyBObyBjaGFuZ2VzIGFyZSBuZWVkZWQuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAjZml4RWwoXG4gICAgZWw6IEhUTUxFbGVtZW50LFxuICAgIGJvdW5kYXJ5SW5mbzogU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyxcbiAgICBmaXhlZFN0eWxlczogU2t5Vmlld2tlZXBlckZpeGVkU3R5bGVzLFxuICApOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmICghYm91bmRhcnlJbmZvLnNwYWNlckVsKSB7XG4gICAgICBjb25zdCBzcGFjZXJIZWlnaHQgPSBib3VuZGFyeUluZm8uZWxIZWlnaHQ7XG5cbiAgICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBzcGFjZXJFbC5pZCA9IGJvdW5kYXJ5SW5mby5zcGFjZXJJZDtcbiAgICAgIHNwYWNlckVsLnN0eWxlLmhlaWdodCA9IHB4KHNwYWNlckhlaWdodCk7XG5cbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgaWYgKGVsLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc3BhY2VyRWwsIGVsLm5leHRTaWJsaW5nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLiNzcGFjZXJSZXNpemVPYnNlcnZlcikge1xuICAgICAgICB0aGlzLiNzcGFjZXJSZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PlxuICAgICAgICAgIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlcigpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNzcGFjZXJSZXNpemVPYnNlcnZlci5vYnNlcnZlKHNwYWNlckVsKTtcbiAgICB9XG5cbiAgICBlbC5jbGFzc0xpc3QuYWRkKENMU19WSUVXS0VFUEVSX0ZJWEVEKTtcblxuICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkVG9wID0gZml4ZWRTdHlsZXMuZWxGaXhlZFRvcDtcbiAgICB0aGlzLiNjdXJyZW50RWxGaXhlZExlZnQgPSBmaXhlZFN0eWxlcy5lbEZpeGVkTGVmdDtcbiAgICB0aGlzLiNjdXJyZW50RWxDbGlwVG9wID0gZml4ZWRTdHlsZXMuZWxDbGlwVG9wO1xuICAgIHRoaXMuI2N1cnJlbnRFbENsaXBMZWZ0ID0gZml4ZWRTdHlsZXMuZWxDbGlwTGVmdDtcbiAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFdpZHRoID0gZml4ZWRTdHlsZXMuZWxGaXhlZFdpZHRoO1xuXG4gICAgbGV0IHdpZHRoID0gMDtcblxuICAgIGlmICh0aGlzLiNzZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSBmaXhlZFN0eWxlcy5lbEZpeGVkV2lkdGg7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbihcbiAgICAgIGVsLFxuICAgICAgZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQsXG4gICAgICBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wLFxuICAgICAgd2lkdGgsXG4gICAgICB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcCxcbiAgICAgIHRoaXMuI3ZpZXdwb3J0TWFyZ2luUHJvcGVydHksXG4gICAgICBmaXhlZFN0eWxlcy5lbENsaXBUb3AsXG4gICAgICBmaXhlZFN0eWxlcy5lbENsaXBMZWZ0LFxuICAgICk7XG4gIH1cblxuICAjZ2V0Qm91bmRhcnlJbmZvKFxuICAgIGVsOiBIVE1MRWxlbWVudCxcbiAgICBib3VuZGFyeUVsOiBIVE1MRWxlbWVudCxcbiAgKTogU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyB7XG4gICAgY29uc3Qgc3BhY2VySWQgPSB0aGlzLiNnZXRTcGFjZXJJZCgpO1xuXG4gICAgY29uc3Qgc3BhY2VyRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzcGFjZXJJZCk7XG5cbiAgICBjb25zdCBib3VuZGFyeU9mZnNldCA9IGdldE9mZnNldChib3VuZGFyeUVsLCB0aGlzLiNzY3JvbGxhYmxlSG9zdCk7XG4gICAgY29uc3QgYm91bmRhcnlUb3AgPSBib3VuZGFyeU9mZnNldC50b3A7XG4gICAgY29uc3QgYm91bmRhcnlCb3R0b20gPVxuICAgICAgYm91bmRhcnlUb3AgKyBib3VuZGFyeUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcblxuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB0aGlzLiNzY3JvbGxhYmxlSG9zdFxuICAgICAgPyB0aGlzLiNzY3JvbGxhYmxlSG9zdC5zY3JvbGxMZWZ0XG4gICAgICA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuI3Njcm9sbGFibGVIb3N0XG4gICAgICA/IHRoaXMuI3Njcm9sbGFibGVIb3N0LnNjcm9sbFRvcFxuICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xuXG4gICAgY29uc3QgZWxIZWlnaHQgPSBnZXRIZWlnaHRXaXRoTWFyZ2luKGVsKTtcblxuICAgIHJldHVybiB7XG4gICAgICBib3VuZGFyeUJvdHRvbSxcbiAgICAgIGJvdW5kYXJ5T2Zmc2V0LFxuICAgICAgYm91bmRhcnlFbCxcbiAgICAgIGVsSGVpZ2h0LFxuICAgICAgc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcCxcbiAgICAgIHNwYWNlcklkLFxuICAgICAgc3BhY2VyRWwsXG4gICAgfTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SkyViewkeeperHostOptions {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyViewkeeperHostOptions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyViewkeeperHostOptions }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyViewkeeperHostOptions, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1ob3N0LW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLWhvc3Qtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sd0JBQXdCOzhHQUF4Qix3QkFBd0I7a0hBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9wdGlvbnMgfSBmcm9tICcuL3ZpZXdrZWVwZXItb3B0aW9ucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lWaWV3a2VlcGVySG9zdE9wdGlvbnMgaW1wbGVtZW50cyBTa3lWaWV3a2VlcGVyT3B0aW9ucyB7XG4gIHB1YmxpYyBib3VuZGFyeUVsPzogSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIGVsPzogSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIHNjcm9sbGFibGVIb3N0PzogSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIHNldFdpZHRoPzogYm9vbGVhbjtcblxuICBwdWJsaWMgdmVydGljYWxPZmZzZXQ/OiBudW1iZXI7XG5cbiAgcHVibGljIHZlcnRpY2FsT2Zmc2V0RWw/OiBIVE1MRWxlbWVudDtcblxuICBwdWJsaWMgdmlld3BvcnRNYXJnaW5Ub3A/OiBudW1iZXI7XG5cbiAgcHVibGljIHZpZXdwb3J0TWFyZ2luUHJvcGVydHk/OiBgLS0ke3N0cmluZ31gO1xufVxuIl19","import { Injectable, Optional } from '@angular/core';\nimport { SkyViewkeeper } from './viewkeeper';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./viewkeeper-host-options\";\n/**\n * Provides methods for creating and destroying viewkeeper instances.\n */\nexport class SkyViewkeeperService {\n #hostOptions;\n constructor(hostOptions) {\n this.#hostOptions = hostOptions;\n }\n /**\n *\n * @param options Creates a viewkeeper instance, applying host options where applicable.\n */\n create(options) {\n options = Object.assign({}, this.#hostOptions || {}, options);\n return new SkyViewkeeper(options);\n }\n /**\n * Destroys a viewkeeper instance.\n * @param vk Viewkeeper instance to destroy.\n */\n destroy(vk) {\n vk.destroy();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyViewkeeperService, deps: [{ token: i1.SkyViewkeeperHostOptions, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyViewkeeperService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyViewkeeperService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.SkyViewkeeperHostOptions, decorators: [{\n type: Optional\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3ZpZXdrZWVwZXIvdmlld2tlZXBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQUk3Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBWSxDQUF1QztJQUVuRCxZQUF3QixXQUFzQztRQUM1RCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLE9BQTZCO1FBQ3pDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU5RCxPQUFPLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPLENBQUMsRUFBaUI7UUFDOUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsQ0FBQzs4R0F2QlUsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBSWMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVZpZXdrZWVwZXIgfSBmcm9tICcuL3ZpZXdrZWVwZXInO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlckhvc3RPcHRpb25zIH0gZnJvbSAnLi92aWV3a2VlcGVyLWhvc3Qtb3B0aW9ucyc7XG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVyT3B0aW9ucyB9IGZyb20gJy4vdmlld2tlZXBlci1vcHRpb25zJztcblxuLyoqXG4gKiBQcm92aWRlcyBtZXRob2RzIGZvciBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB2aWV3a2VlcGVyIGluc3RhbmNlcy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVZpZXdrZWVwZXJTZXJ2aWNlIHtcbiAgI2hvc3RPcHRpb25zOiBTa3lWaWV3a2VlcGVySG9zdE9wdGlvbnMgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgaG9zdE9wdGlvbnM/OiBTa3lWaWV3a2VlcGVySG9zdE9wdGlvbnMpIHtcbiAgICB0aGlzLiNob3N0T3B0aW9ucyA9IGhvc3RPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIENyZWF0ZXMgYSB2aWV3a2VlcGVyIGluc3RhbmNlLCBhcHBseWluZyBob3N0IG9wdGlvbnMgd2hlcmUgYXBwbGljYWJsZS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGUob3B0aW9uczogU2t5Vmlld2tlZXBlck9wdGlvbnMpOiBTa3lWaWV3a2VlcGVyIHtcbiAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy4jaG9zdE9wdGlvbnMgfHwge30sIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIG5ldyBTa3lWaWV3a2VlcGVyKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGEgdmlld2tlZXBlciBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHZrIFZpZXdrZWVwZXIgaW5zdGFuY2UgdG8gZGVzdHJveS5cbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KHZrOiBTa3lWaWV3a2VlcGVyKTogdm9pZCB7XG4gICAgdmsuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=","import { Directive, Input, Optional, RendererFactory2, inject, } from '@angular/core';\nimport { Subject, animationFrameScheduler, fromEvent, observeOn } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../mutation/mutation-observer-service\";\nimport * as i2 from \"./viewkeeper.service\";\nimport * as i3 from \"../scrollable-host/scrollable-host.service\";\nexport class SkyViewkeeperDirective {\n set skyViewkeeper(value) {\n this.#_skyViewkeeper = value;\n this.#detectElements();\n }\n get skyViewkeeper() {\n return this.#_skyViewkeeper;\n }\n #_skyViewkeeper;\n #currentViewkeeperEls;\n #el;\n #mutationObserverSvc;\n #observer;\n #scrollableHostSvc;\n #scrollableHostWatchUnsubscribe;\n #viewkeepers = [];\n #viewkeeperSvc;\n #renderer = inject(RendererFactory2).createRenderer(undefined, null);\n #shadowElement;\n constructor(el, mutationObserverSvc, viewkeeperSvc, scrollableHostSvc) {\n this.#el = el;\n this.#mutationObserverSvc = mutationObserverSvc;\n this.#viewkeeperSvc = viewkeeperSvc;\n this.#scrollableHostSvc = scrollableHostSvc;\n }\n ngOnInit() {\n this.#observer = this.#mutationObserverSvc.create(() => this.#detectElements());\n this.#observer.observe(this.#el.nativeElement, {\n childList: true,\n subtree: true,\n });\n }\n ngOnDestroy() {\n this.#observer?.disconnect();\n this.#scrollableHostWatchUnsubscribe?.next();\n this.#scrollableHostWatchUnsubscribe?.complete();\n this.#destroyViewkeepers();\n if (this.#shadowElement) {\n this.#renderer.removeChild(this.#el.nativeElement, this.#shadowElement);\n }\n }\n ngAfterViewInit() {\n const shadowElement = this.#renderer.createElement('div');\n shadowElement.classList.add('sky-viewkeeper-shadow');\n if (this.#el.nativeElement.firstChild) {\n this.#renderer.insertBefore(this.#el.nativeElement, shadowElement, this.#el.nativeElement.firstChild);\n }\n else {\n this.#renderer.appendChild(this.#el.nativeElement, shadowElement);\n }\n this.#shadowElement = shadowElement;\n }\n #destroyViewkeepers() {\n for (const viewkeeper of this.#viewkeepers) {\n this.#viewkeeperSvc.destroy(viewkeeper);\n }\n this.#viewkeepers = [];\n }\n #getViewkeeperEls() {\n let viewkeeperEls = [];\n if (this.skyViewkeeper) {\n viewkeeperEls = [];\n for (const item of this.skyViewkeeper) {\n const matchingEls = Array.from(this.#el.nativeElement.querySelectorAll(item));\n viewkeeperEls = [...viewkeeperEls, ...matchingEls];\n }\n }\n return viewkeeperEls;\n }\n #viewkeeperElsChanged(viewkeeperEls) {\n if (!viewkeeperEls !== !this.#currentViewkeeperEls) {\n return true;\n }\n if (viewkeeperEls && this.#currentViewkeeperEls) {\n if (viewkeeperEls.length !== this.#currentViewkeeperEls.length) {\n return true;\n }\n for (let i = 0, n = viewkeeperEls.length; i < n; i++) {\n if (viewkeeperEls[i] !== this.#currentViewkeeperEls[i]) {\n return true;\n }\n }\n }\n return false;\n }\n #detectElements() {\n const viewkeeperEls = this.#getViewkeeperEls();\n if (this.#viewkeeperElsChanged(viewkeeperEls)) {\n this.#scrollableHostWatchUnsubscribe?.next();\n this.#scrollableHostWatchUnsubscribe?.complete();\n this.#scrollableHostWatchUnsubscribe = new Subject();\n if (this.#scrollableHostSvc) {\n this.#scrollableHostSvc\n .watchScrollableHost(this.#el)\n .pipe(takeUntil(this.#scrollableHostWatchUnsubscribe))\n .subscribe((scrollableHost) => {\n this.#destroyViewkeepers();\n let previousViewkeeperEl = undefined;\n for (const viewkeeperEl of viewkeeperEls) {\n this.#viewkeepers.push(this.#viewkeeperSvc.create({\n boundaryEl: this.#el.nativeElement,\n scrollableHost: scrollableHost instanceof HTMLElement\n ? scrollableHost\n : undefined,\n el: viewkeeperEl,\n setWidth: true,\n verticalOffsetEl: previousViewkeeperEl,\n }));\n previousViewkeeperEl = viewkeeperEl;\n }\n });\n }\n this.#scrollableHostWatchUnsubscribe.pipe(take(1)).subscribe(() => {\n this.#shadowElement?.classList.remove('sky-viewkeeper-shadow--active');\n });\n fromEvent(viewkeeperEls, 'afterViewkeeperSync')\n .pipe(takeUntil(this.#scrollableHostWatchUnsubscribe), observeOn(animationFrameScheduler))\n .subscribe(() => {\n const applicable = viewkeeperEls.filter((el) => el.classList.contains('sky-viewkeeper-fixed') &&\n (!this.skyViewkeeperOmitShadow ||\n !el.matches(this.skyViewkeeperOmitShadow)));\n if (applicable.length === 0) {\n this.#shadowElement?.classList.remove('sky-viewkeeper-shadow--active');\n return;\n }\n this.#shadowElement?.classList.add('sky-viewkeeper-shadow--active');\n const boundingRectangles = applicable.map((el) => el.getBoundingClientRect());\n const left = boundingRectangles.reduce((num, rect) => Math.min(num, rect.left), Number.POSITIVE_INFINITY);\n const right = boundingRectangles.reduce((num, rect) => Math.max(num, rect.right), Number.NEGATIVE_INFINITY);\n const top = boundingRectangles.reduce((num, rect) => Math.min(num, rect.top), Number.POSITIVE_INFINITY);\n const bottom = boundingRectangles.reduce((num, rect) => Math.max(num, rect.bottom), Number.NEGATIVE_INFINITY);\n this.#renderer.setStyle(this.#shadowElement, 'inset', `${top}px ${window.innerWidth - right}px ${window.innerHeight - bottom}px ${left}px`);\n });\n this.#currentViewkeeperEls = viewkeeperEls;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyViewkeeperDirective, deps: [{ token: i0.ElementRef }, { token: i1.SkyMutationObserverService }, { token: i2.SkyViewkeeperService }, { token: i3.SkyScrollableHostService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyViewkeeperDirective, isStandalone: false, selector: \"[skyViewkeeper]\", inputs: { skyViewkeeper: \"skyViewkeeper\", skyViewkeeperOmitShadow: \"skyViewkeeperOmitShadow\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyViewkeeperDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[skyViewkeeper]',\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SkyMutationObserverService }, { type: i2.SkyViewkeeperService }, { type: i3.SkyScrollableHostService, decorators: [{\n type: Optional\n }] }], propDecorators: { skyViewkeeper: [{\n type: Input\n }], skyViewkeeperOmitShadow: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFZakQsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQyxJQUNXLGFBQWEsQ0FBQyxLQUEyQjtRQUNsRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUU3QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUtELGVBQWUsQ0FBdUI7SUFFdEMscUJBQXFCLENBQTRCO0lBRWpELEdBQUcsQ0FBYTtJQUVoQixvQkFBb0IsQ0FBNkI7SUFFakQsU0FBUyxDQUErQjtJQUV4QyxrQkFBa0IsQ0FBdUM7SUFFekQsK0JBQStCLENBQTRCO0lBRTNELFlBQVksR0FBb0IsRUFBRSxDQUFDO0lBRW5DLGNBQWMsQ0FBdUI7SUFFNUIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUUsY0FBYyxDQUEwQjtJQUV4QyxZQUNFLEVBQWMsRUFDZCxtQkFBK0MsRUFDL0MsYUFBbUMsRUFD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R0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQ3RDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUN6QyxNQUFNLENBQUMsaUJBQWlCLENBQ3pCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQ3JCLElBQUksQ0FBQyxjQUFjLEVBQ25CLE9BQU8sRUFDUCxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsVUFBVSxHQUFHLEtBQUssTUFBTSxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sTUFBTSxJQUFJLElBQUksQ0FDckYsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUwsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGFBQWEsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQzs4R0F6TlUsc0JBQXNCO2tHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCOzswQkEyQ0ksUUFBUTt5Q0F0Q0EsYUFBYTtzQkFEdkIsS0FBSztnQkFZQyx1QkFBdUI7c0JBRDdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLCBmcm9tRXZlbnQsIG9ic2VydmVPbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uL211dGF0aW9uL211dGF0aW9uLW9ic2VydmVyLXNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5U2Nyb2xsYWJsZUhvc3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2Nyb2xsYWJsZS1ob3N0L3Njcm9sbGFibGUtaG9zdC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU2t5Vmlld2tlZXBlciB9IGZyb20gJy4vdmlld2tlZXBlcic7XG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVyU2VydmljZSB9IGZyb20gJy4vdmlld2tlZXBlci5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreVZpZXdrZWVwZXJdJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreVZpZXdrZWVwZXJEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdFxue1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNreVZpZXdrZWVwZXIodmFsdWU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3NreVZpZXdrZWVwZXIgPSB2YWx1ZTtcblxuICAgIHRoaXMuI2RldGVjdEVsZW1lbnRzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNreVZpZXdrZWVwZXIoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfc2t5Vmlld2tlZXBlcjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBza3lWaWV3a2VlcGVyT21pdFNoYWRvdzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNfc2t5Vmlld2tlZXBlcjogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRWaWV3a2VlcGVyRWxzOiBIVE1MRWxlbWVudFtdIHwgdW5kZWZpbmVkO1xuXG4gICNlbDogRWxlbWVudFJlZjtcblxuICAjbXV0YXRpb25PYnNlcnZlclN2YzogU2t5TXV0YXRpb25PYnNlcnZlclNlcnZpY2U7XG5cbiAgI29ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkO1xuXG4gICNzY3JvbGxhYmxlSG9zdFN2YzogU2t5U2Nyb2xsYWJsZUhvc3RTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuXG4gICNzY3JvbGxhYmxlSG9zdFdhdGNoVW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gfCB1bmRlZmluZWQ7XG5cbiAgI3ZpZXdrZWVwZXJzOiBTa3lWaWV3a2VlcGVyW10gPSBbXTtcblxuICAjdmlld2tlZXBlclN2YzogU2t5Vmlld2tlZXBlclNlcnZpY2U7XG5cbiAgcmVhZG9ubHkgI3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyRmFjdG9yeTIpLmNyZWF0ZVJlbmRlcmVyKHVuZGVmaW5lZCwgbnVsbCk7XG4gICNzaGFkb3dFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbDogRWxlbWVudFJlZixcbiAgICBtdXRhdGlvbk9ic2VydmVyU3ZjOiBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZSxcbiAgICB2aWV3a2VlcGVyU3ZjOiBTa3lWaWV3a2VlcGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBzY3JvbGxhYmxlSG9zdFN2Yz86IFNreVNjcm9sbGFibGVIb3N0U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy4jZWwgPSBlbDtcbiAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjID0gbXV0YXRpb25PYnNlcnZlclN2YztcbiAgICB0aGlzLiN2aWV3a2VlcGVyU3ZjID0gdmlld2tlZXBlclN2YztcbiAgICB0aGlzLiNzY3JvbGxhYmxlSG9zdFN2YyA9IHNjcm9sbGFibGVIb3N0U3ZjO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI29ic2VydmVyID0gdGhpcy4jbXV0YXRpb25PYnNlcnZlclN2Yy5jcmVhdGUoKCkgPT5cbiAgICAgIHRoaXMuI2RldGVjdEVsZW1lbnRzKCksXG4gICAgKTtcblxuICAgIHRoaXMuI29ic2VydmVyLm9ic2VydmUodGhpcy4jZWwubmF0aXZlRWxlbWVudCwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNvYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuI3Njcm9sbGFibGVIb3N0V2F0Y2hVbnN1YnNjcmliZT8ubmV4dCgpO1xuICAgIHRoaXMuI3Njcm9sbGFibGVIb3N0V2F0Y2hVbnN1YnNjcmliZT8uY29tcGxldGUoKTtcbiAgICB0aGlzLiNkZXN0cm95Vmlld2tlZXBlcnMoKTtcbiAgICBpZiAodGhpcy4jc2hhZG93RWxlbWVudCkge1xuICAgICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy4jZWwubmF0aXZlRWxlbWVudCwgdGhpcy4jc2hhZG93RWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBzaGFkb3dFbGVtZW50ID0gdGhpcy4jcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgc2hhZG93RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdza3ktdmlld2tlZXBlci1zaGFkb3cnKTtcbiAgICBpZiAodGhpcy4jZWwubmF0aXZlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5pbnNlcnRCZWZvcmUoXG4gICAgICAgIHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHNoYWRvd0VsZW1lbnQsXG4gICAgICAgIHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZCxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQsIHNoYWRvd0VsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLiNzaGFkb3dFbGVtZW50ID0gc2hhZG93RWxlbWVudDtcbiAgfVxuXG4gICNkZXN0cm95Vmlld2tlZXBlcnMoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCB2aWV3a2VlcGVyIG9mIHRoaXMuI3ZpZXdrZWVwZXJzKSB7XG4gICAgICB0aGlzLiN2aWV3a2VlcGVyU3ZjLmRlc3Ryb3kodmlld2tlZXBlcik7XG4gICAgfVxuXG4gICAgdGhpcy4jdmlld2tlZXBlcnMgPSBbXTtcbiAgfVxuXG4gICNnZXRWaWV3a2VlcGVyRWxzKCk6IEhUTUxFbGVtZW50W10ge1xuICAgIGxldCB2aWV3a2VlcGVyRWxzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgICBpZiAodGhpcy5za3lWaWV3a2VlcGVyKSB7XG4gICAgICB2aWV3a2VlcGVyRWxzID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnNreVZpZXdrZWVwZXIpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdFbHMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICh0aGlzLiNlbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yQWxsKGl0ZW0pLFxuICAgICAgICApIGFzIEhUTUxFbGVtZW50W107XG5cbiAgICAgICAgdmlld2tlZXBlckVscyA9IFsuLi52aWV3a2VlcGVyRWxzLCAuLi5tYXRjaGluZ0Vsc107XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpZXdrZWVwZXJFbHM7XG4gIH1cblxuICAjdmlld2tlZXBlckVsc0NoYW5nZWQodmlld2tlZXBlckVsczogSFRNTEVsZW1lbnRbXSk6IGJvb2xlYW4ge1xuICAgIGlmICghdmlld2tlZXBlckVscyAhPT0gIXRoaXMuI2N1cnJlbnRWaWV3a2VlcGVyRWxzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmlld2tlZXBlckVscyAmJiB0aGlzLiNjdXJyZW50Vmlld2tlZXBlckVscykge1xuICAgICAgaWYgKHZpZXdrZWVwZXJFbHMubGVuZ3RoICE9PSB0aGlzLiNjdXJyZW50Vmlld2tlZXBlckVscy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gdmlld2tlZXBlckVscy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgaWYgKHZpZXdrZWVwZXJFbHNbaV0gIT09IHRoaXMuI2N1cnJlbnRWaWV3a2VlcGVyRWxzW2ldKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAjZGV0ZWN0RWxlbWVudHMoKTogdm9pZCB7XG4gICAgY29uc3Qgdmlld2tlZXBlckVscyA9IHRoaXMuI2dldFZpZXdrZWVwZXJFbHMoKTtcblxuICAgIGlmICh0aGlzLiN2aWV3a2VlcGVyRWxzQ2hhbmdlZCh2aWV3a2VlcGVyRWxzKSkge1xuICAgICAgdGhpcy4jc2Nyb2xsYWJsZUhvc3RXYXRjaFVuc3Vic2NyaWJlPy5uZXh0KCk7XG4gICAgICB0aGlzLiNzY3JvbGxhYmxlSG9zdFdhdGNoVW5zdWJzY3JpYmU/LmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLiNzY3JvbGxhYmxlSG9zdFdhdGNoVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgICBpZiAodGhpcy4jc2Nyb2xsYWJsZUhvc3RTdmMpIHtcbiAgICAgICAgdGhpcy4jc2Nyb2xsYWJsZUhvc3RTdmNcbiAgICAgICAgICAud2F0Y2hTY3JvbGxhYmxlSG9zdCh0aGlzLiNlbClcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jc2Nyb2xsYWJsZUhvc3RXYXRjaFVuc3Vic2NyaWJlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChzY3JvbGxhYmxlSG9zdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jZGVzdHJveVZpZXdrZWVwZXJzKCk7XG5cbiAgICAgICAgICAgIGxldCBwcmV2aW91c1ZpZXdrZWVwZXJFbDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgdmlld2tlZXBlckVsIG9mIHZpZXdrZWVwZXJFbHMpIHtcbiAgICAgICAgICAgICAgdGhpcy4jdmlld2tlZXBlcnMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLiN2aWV3a2VlcGVyU3ZjLmNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgICBib3VuZGFyeUVsOiB0aGlzLiNlbC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3Q6XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICA/IHNjcm9sbGFibGVIb3N0XG4gICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICBlbDogdmlld2tlZXBlckVsLFxuICAgICAgICAgICAgICAgICAgc2V0V2lkdGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICB2ZXJ0aWNhbE9mZnNldEVsOiBwcmV2aW91c1ZpZXdrZWVwZXJFbCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICBwcmV2aW91c1ZpZXdrZWVwZXJFbCA9IHZpZXdrZWVwZXJFbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuI3Njcm9sbGFibGVIb3N0V2F0Y2hVbnN1YnNjcmliZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI3NoYWRvd0VsZW1lbnQ/LmNsYXNzTGlzdC5yZW1vdmUoJ3NreS12aWV3a2VlcGVyLXNoYWRvdy0tYWN0aXZlJyk7XG4gICAgICB9KTtcbiAgICAgIGZyb21FdmVudCh2aWV3a2VlcGVyRWxzLCAnYWZ0ZXJWaWV3a2VlcGVyU3luYycpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLiNzY3JvbGxhYmxlSG9zdFdhdGNoVW5zdWJzY3JpYmUpLFxuICAgICAgICAgIG9ic2VydmVPbihhbmltYXRpb25GcmFtZVNjaGVkdWxlciksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXBwbGljYWJsZSA9IHZpZXdrZWVwZXJFbHMuZmlsdGVyKFxuICAgICAgICAgICAgKGVsKSA9PlxuICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3NreS12aWV3a2VlcGVyLWZpeGVkJykgJiZcbiAgICAgICAgICAgICAgKCF0aGlzLnNreVZpZXdrZWVwZXJPbWl0U2hhZG93IHx8XG4gICAgICAgICAgICAgICAgIWVsLm1hdGNoZXModGhpcy5za3lWaWV3a2VlcGVyT21pdFNoYWRvdykpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGFwcGxpY2FibGUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLiNzaGFkb3dFbGVtZW50Py5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgICAgICAgICAnc2t5LXZpZXdrZWVwZXItc2hhZG93LS1hY3RpdmUnLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy4jc2hhZG93RWxlbWVudD8uY2xhc3NMaXN0LmFkZCgnc2t5LXZpZXdrZWVwZXItc2hhZG93LS1hY3RpdmUnKTtcbiAgICAgICAgICBjb25zdCBib3VuZGluZ1JlY3RhbmdsZXMgPSBhcHBsaWNhYmxlLm1hcCgoZWwpID0+XG4gICAgICAgICAgICBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSBib3VuZGluZ1JlY3RhbmdsZXMucmVkdWNlKFxuICAgICAgICAgICAgKG51bSwgcmVjdCkgPT4gTWF0aC5taW4obnVtLCByZWN0LmxlZnQpLFxuICAgICAgICAgICAgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgcmlnaHQgPSBib3VuZGluZ1JlY3RhbmdsZXMucmVkdWNlKFxuICAgICAgICAgICAgKG51bSwgcmVjdCkgPT4gTWF0aC5tYXgobnVtLCByZWN0LnJpZ2h0KSxcbiAgICAgICAgICAgIE51bWJlci5ORUdBVElWRV9JTkZJTklUWSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IHRvcCA9IGJvdW5kaW5nUmVjdGFuZ2xlcy5yZWR1Y2UoXG4gICAgICAgICAgICAobnVtLCByZWN0KSA9PiBNYXRoLm1pbihudW0sIHJlY3QudG9wKSxcbiAgICAgICAgICAgIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IGJvdW5kaW5nUmVjdGFuZ2xlcy5yZWR1Y2UoXG4gICAgICAgICAgICAobnVtLCByZWN0KSA9PiBNYXRoLm1heChudW0sIHJlY3QuYm90dG9tKSxcbiAgICAgICAgICAgIE51bWJlci5ORUdBVElWRV9JTkZJTklUWSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgdGhpcy4jc2hhZG93RWxlbWVudCxcbiAgICAgICAgICAgICdpbnNldCcsXG4gICAgICAgICAgICBgJHt0b3B9cHggJHt3aW5kb3cuaW5uZXJXaWR0aCAtIHJpZ2h0fXB4ICR7d2luZG93LmlubmVySGVpZ2h0IC0gYm90dG9tfXB4ICR7bGVmdH1weGAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI2N1cnJlbnRWaWV3a2VlcGVyRWxzID0gdmlld2tlZXBlckVscztcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { SkyViewkeeperDirective } from './viewkeeper.directive';\nimport * as i0 from \"@angular/core\";\nexport class SkyViewkeeperModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyViewkeeperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyViewkeeperModule, declarations: [SkyViewkeeperDirective], exports: [SkyViewkeeperDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyViewkeeperModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyViewkeeperModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyViewkeeperDirective],\n exports: [SkyViewkeeperDirective],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQU1oRSxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixpQkFIZixzQkFBc0IsYUFDM0Isc0JBQXNCOytHQUVyQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVZpZXdrZWVwZXJEaXJlY3RpdmUgfSBmcm9tICcuL3ZpZXdrZWVwZXIuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5Vmlld2tlZXBlckRpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtTa3lWaWV3a2VlcGVyRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Vmlld2tlZXBlck1vZHVsZSB7fVxuIl19","// Taken from Angular's version.ts file.\n// See: https://github.com/angular/angular/blob/16.2.x/packages/core/src/version.ts\n/**\n * Represents the version of a package.\n * @internal\n */\nexport class Version {\n constructor(full) {\n this.full = full;\n this.major = full.split('.')[0];\n this.minor = full.split('.')[1];\n this.patch = full.split('.').slice(2).join('.');\n }\n}\n/**\n * Represents the version of @skyux/core.\n */\nexport const VERSION = new Version('0.0.0-PLACEHOLDER');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUN4QyxtRkFBbUY7QUFFbkY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLE9BQU87SUFLbEIsWUFBNEIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGFrZW4gZnJvbSBBbmd1bGFyJ3MgdmVyc2lvbi50cyBmaWxlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvMTYuMi54L3BhY2thZ2VzL2NvcmUvc3JjL3ZlcnNpb24udHNcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSB2ZXJzaW9uIG9mIGEgcGFja2FnZS5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgVmVyc2lvbiB7XG4gIHB1YmxpYyByZWFkb25seSBtYWpvcjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbWlub3I6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHBhdGNoOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGZ1bGw6IHN0cmluZykge1xuICAgIHRoaXMubWFqb3IgPSBmdWxsLnNwbGl0KCcuJylbMF07XG4gICAgdGhpcy5taW5vciA9IGZ1bGwuc3BsaXQoJy4nKVsxXTtcbiAgICB0aGlzLnBhdGNoID0gZnVsbC5zcGxpdCgnLicpLnNsaWNlKDIpLmpvaW4oJy4nKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHZlcnNpb24gb2YgQHNreXV4L2NvcmUuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gbmV3IFZlcnNpb24oJzAuMC4wLVBMQUNFSE9MREVSJyk7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9za3l1eC1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1.SkyAffixService","i1.SkyAppWindowRef","observableFromEvent","i1.SkyMutationObserverService","_a","i1.SkyIdService","i1.SkyAppFormat","i2.SkyLogLevel","takeUntil","QUERIES","DEFAULT_BREAKPOINT","i2.SkyNumericService","i1","i1.SkyDynamicComponentService","i1.SkyDynamicComponentLegacyService","debounceTime","i2.SkyAppWindowRef","i3.SkyResizeObserverService","observableOf","i1.SkyViewkeeperHostOptions","i2.SkyViewkeeperService","i3.SkyScrollableHostService"],"mappings":"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"}