@radix-ng/primitives 0.44.0 → 0.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/collection/README.md +1 -0
  2. package/fesm2022/radix-ng-primitives-accordion.mjs +41 -40
  3. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  4. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +22 -22
  5. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  6. package/fesm2022/radix-ng-primitives-arrow.mjs +6 -6
  7. package/fesm2022/radix-ng-primitives-arrow.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +6 -6
  9. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-avatar.mjs +22 -22
  11. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  12. package/fesm2022/radix-ng-primitives-calendar.mjs +104 -103
  13. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  14. package/fesm2022/radix-ng-primitives-checkbox.mjs +51 -41
  15. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-collapsible.mjs +28 -28
  17. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-collection.mjs +89 -0
  19. package/fesm2022/radix-ng-primitives-collection.mjs.map +1 -0
  20. package/fesm2022/radix-ng-primitives-config.mjs +5 -5
  21. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-context-menu.mjs +36 -36
  23. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-core.mjs +33 -24
  25. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-cropper.mjs +54 -53
  27. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-date-field.mjs +48 -47
  29. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-dialog.mjs +34 -34
  31. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  32. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +31 -33
  33. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +41 -43
  35. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-editable.mjs +20 -20
  37. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  38. package/fesm2022/radix-ng-primitives-focus-guards.mjs +3 -3
  39. package/fesm2022/radix-ng-primitives-focus-guards.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-focus-scope.mjs +7 -7
  41. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  42. package/fesm2022/radix-ng-primitives-hover-card.mjs +69 -77
  43. package/fesm2022/radix-ng-primitives-hover-card.mjs.map +1 -1
  44. package/fesm2022/radix-ng-primitives-label.mjs +7 -7
  45. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-menu.mjs +65 -70
  47. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-menubar.mjs +31 -31
  49. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  50. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +113 -105
  51. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-number-field.mjs +48 -47
  53. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  54. package/fesm2022/radix-ng-primitives-pagination.mjs +51 -51
  55. package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-popover.mjs +67 -71
  57. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  58. package/fesm2022/radix-ng-primitives-popper.mjs +61 -56
  59. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  60. package/fesm2022/radix-ng-primitives-portal.mjs +7 -7
  61. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-presence.mjs +4 -4
  63. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  64. package/fesm2022/radix-ng-primitives-progress.mjs +16 -16
  65. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  66. package/fesm2022/radix-ng-primitives-radio.mjs +38 -37
  67. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  68. package/fesm2022/radix-ng-primitives-roving-focus.mjs +38 -34
  69. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  70. package/fesm2022/radix-ng-primitives-select.mjs +41 -43
  71. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  72. package/fesm2022/radix-ng-primitives-select2.mjs +897 -0
  73. package/fesm2022/radix-ng-primitives-select2.mjs.map +1 -0
  74. package/fesm2022/radix-ng-primitives-separator.mjs +11 -17
  75. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  76. package/fesm2022/radix-ng-primitives-slider.mjs +88 -84
  77. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  78. package/fesm2022/radix-ng-primitives-stepper.mjs +55 -53
  79. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  80. package/fesm2022/radix-ng-primitives-switch.mjs +22 -30
  81. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  82. package/fesm2022/radix-ng-primitives-tabs.mjs +38 -38
  83. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  84. package/fesm2022/radix-ng-primitives-time-field.mjs +63 -78
  85. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  86. package/fesm2022/radix-ng-primitives-toggle-group.mjs +24 -24
  87. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  88. package/fesm2022/radix-ng-primitives-toggle.mjs +11 -11
  89. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  90. package/fesm2022/radix-ng-primitives-toolbar.mjs +31 -29
  91. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  92. package/fesm2022/radix-ng-primitives-tooltip.mjs +69 -77
  93. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  94. package/fesm2022/radix-ng-primitives-tooltip2.mjs +57 -62
  95. package/fesm2022/radix-ng-primitives-tooltip2.mjs.map +1 -1
  96. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +31 -31
  97. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  98. package/fesm2022/radix-ng-primitives.mjs.map +1 -1
  99. package/package.json +60 -51
  100. package/select2/README.md +3 -0
  101. package/{accordion/index.d.ts → types/radix-ng-primitives-accordion.d.ts} +61 -60
  102. package/{calendar/index.d.ts → types/radix-ng-primitives-calendar.d.ts} +1 -1
  103. package/{checkbox/index.d.ts → types/radix-ng-primitives-checkbox.d.ts} +33 -29
  104. package/{collapsible/index.d.ts → types/radix-ng-primitives-collapsible.d.ts} +20 -19
  105. package/types/radix-ng-primitives-collection.d.ts +40 -0
  106. package/{core/index.d.ts → types/radix-ng-primitives-core.d.ts} +6 -2
  107. package/{cropper/index.d.ts → types/radix-ng-primitives-cropper.d.ts} +4 -3
  108. package/{date-field/index.d.ts → types/radix-ng-primitives-date-field.d.ts} +4 -4
  109. package/{dialog/index.d.ts → types/radix-ng-primitives-dialog.d.ts} +2 -1
  110. package/{hover-card/index.d.ts → types/radix-ng-primitives-hover-card.d.ts} +3 -4
  111. package/{menu/index.d.ts → types/radix-ng-primitives-menu.d.ts} +1 -1
  112. package/{navigation-menu/index.d.ts → types/radix-ng-primitives-navigation-menu.d.ts} +47 -46
  113. package/{number-field/index.d.ts → types/radix-ng-primitives-number-field.d.ts} +13 -12
  114. package/{popover/index.d.ts → types/radix-ng-primitives-popover.d.ts} +3 -4
  115. package/{popper/index.d.ts → types/radix-ng-primitives-popper.d.ts} +1 -0
  116. package/{progress/index.d.ts → types/radix-ng-primitives-progress.d.ts} +2 -1
  117. package/{radio/index.d.ts → types/radix-ng-primitives-radio.d.ts} +1 -1
  118. package/{roving-focus/index.d.ts → types/radix-ng-primitives-roving-focus.d.ts} +8 -6
  119. package/types/radix-ng-primitives-select2.d.ts +511 -0
  120. package/{slider/index.d.ts → types/radix-ng-primitives-slider.d.ts} +4 -4
  121. package/{stepper/index.d.ts → types/radix-ng-primitives-stepper.d.ts} +17 -16
  122. package/{switch/index.d.ts → types/radix-ng-primitives-switch.d.ts} +3 -2
  123. package/{tabs/index.d.ts → types/radix-ng-primitives-tabs.d.ts} +7 -6
  124. package/{time-field/index.d.ts → types/radix-ng-primitives-time-field.d.ts} +4 -4
  125. package/{toggle-group/index.d.ts → types/radix-ng-primitives-toggle-group.d.ts} +12 -11
  126. package/{tooltip/index.d.ts → types/radix-ng-primitives-tooltip.d.ts} +3 -4
  127. package/{tooltip2/index.d.ts → types/radix-ng-primitives-tooltip2.d.ts} +4 -4
  128. /package/{alert-dialog/index.d.ts → types/radix-ng-primitives-alert-dialog.d.ts} +0 -0
  129. /package/{arrow/index.d.ts → types/radix-ng-primitives-arrow.d.ts} +0 -0
  130. /package/{aspect-ratio/index.d.ts → types/radix-ng-primitives-aspect-ratio.d.ts} +0 -0
  131. /package/{avatar/index.d.ts → types/radix-ng-primitives-avatar.d.ts} +0 -0
  132. /package/{config/index.d.ts → types/radix-ng-primitives-config.d.ts} +0 -0
  133. /package/{context-menu/index.d.ts → types/radix-ng-primitives-context-menu.d.ts} +0 -0
  134. /package/{dismissable-layer/index.d.ts → types/radix-ng-primitives-dismissable-layer.d.ts} +0 -0
  135. /package/{dropdown-menu/index.d.ts → types/radix-ng-primitives-dropdown-menu.d.ts} +0 -0
  136. /package/{editable/index.d.ts → types/radix-ng-primitives-editable.d.ts} +0 -0
  137. /package/{focus-guards/index.d.ts → types/radix-ng-primitives-focus-guards.d.ts} +0 -0
  138. /package/{focus-scope/index.d.ts → types/radix-ng-primitives-focus-scope.d.ts} +0 -0
  139. /package/{label/index.d.ts → types/radix-ng-primitives-label.d.ts} +0 -0
  140. /package/{menubar/index.d.ts → types/radix-ng-primitives-menubar.d.ts} +0 -0
  141. /package/{pagination/index.d.ts → types/radix-ng-primitives-pagination.d.ts} +0 -0
  142. /package/{portal/index.d.ts → types/radix-ng-primitives-portal.d.ts} +0 -0
  143. /package/{presence/index.d.ts → types/radix-ng-primitives-presence.d.ts} +0 -0
  144. /package/{select/index.d.ts → types/radix-ng-primitives-select.d.ts} +0 -0
  145. /package/{separator/index.d.ts → types/radix-ng-primitives-separator.d.ts} +0 -0
  146. /package/{toggle/index.d.ts → types/radix-ng-primitives-toggle.d.ts} +0 -0
  147. /package/{toolbar/index.d.ts → types/radix-ng-primitives-toolbar.d.ts} +0 -0
  148. /package/{visually-hidden/index.d.ts → types/radix-ng-primitives-visually-hidden.d.ts} +0 -0
  149. /package/{index.d.ts → types/radix-ng-primitives.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-core.mjs","sources":["../tmp-esm2022/core/src/accessor/provide-value-accessor.js","../tmp-esm2022/core/src/accessor/control-value-accessor.js","../tmp-esm2022/core/src/auto-focus.directive.js","../tmp-esm2022/core/src/clamp.js","../tmp-esm2022/core/src/document.js","../tmp-esm2022/core/src/element-size.js","../tmp-esm2022/core/src/focus-initial.directive.js","../tmp-esm2022/core/src/getActiveElement.js","../tmp-esm2022/core/src/id-generator.js","../tmp-esm2022/core/src/inject-ng-control.js","../tmp-esm2022/core/src/is-client.js","../tmp-esm2022/core/src/serialize.js","../tmp-esm2022/core/src/is-equal.js","../tmp-esm2022/core/src/is-inside-form.js","../tmp-esm2022/core/src/is-nullish.js","../tmp-esm2022/core/src/is-number.js","../tmp-esm2022/core/src/isValueEqualOrExist.js","../tmp-esm2022/core/src/kbd-constants.js","../tmp-esm2022/core/src/provide-token.js","../tmp-esm2022/core/src/window.js","../tmp-esm2022/core/src/create-context.js","../tmp-esm2022/core/src/chunk.js","../tmp-esm2022/core/src/date-time/comparators.js","../tmp-esm2022/core/src/date-time/calendar.js","../tmp-esm2022/core/src/date-time/formatter.js","../tmp-esm2022/core/src/date-time/parts.js","../tmp-esm2022/core/src/date-time/placeholders.js","../tmp-esm2022/core/src/date-time/utils.js","../tmp-esm2022/core/src/date-time/parser.js","../tmp-esm2022/core/src/date-time/segment.js","../tmp-esm2022/core/src/date-time/types.js","../tmp-esm2022/core/src/date-time/useDateField.js","../tmp-esm2022/core/src/positioning/types.js","../tmp-esm2022/core/src/positioning/constants.js","../tmp-esm2022/core/src/positioning/utils.js","../tmp-esm2022/core/src/useArrowNavigation.js","../tmp-esm2022/core/src/useResizeObserver.js","../tmp-esm2022/core/src/watch.js","../tmp-esm2022/core/radix-ng-primitives-core.js"],"sourcesContent":["import { forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n/**\n * Include in the providers section of a component which utilizes ControlValueAccessor to redundant code.\n *\n * ```ts\n * @Directive({\n * providers: [provideValueAccessor(ExampleDirective)]\n *}\n * export class ExampleDirective{}\n * ```\n */\nexport function provideValueAccessor(type) {\n return {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => type),\n multi: true\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS12YWx1ZS1hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvY29yZS9zcmMvYWNjZXNzb3IvcHJvdmlkZS12YWx1ZS1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUksSUFBYTtJQUNqRCxPQUFPO1FBQ0gsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztRQUNuQyxLQUFLLEVBQUUsSUFBSTtLQUNkLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9yd2FyZFJlZiwgUHJvdmlkZXIsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIEluY2x1ZGUgaW4gdGhlIHByb3ZpZGVycyBzZWN0aW9uIG9mIGEgY29tcG9uZW50IHdoaWNoIHV0aWxpemVzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHRvIHJlZHVuZGFudCBjb2RlLlxuICpcbiAqIGBgYHRzXG4gKiBARGlyZWN0aXZlKHtcbiAqICAgcHJvdmlkZXJzOiBbcHJvdmlkZVZhbHVlQWNjZXNzb3IoRXhhbXBsZURpcmVjdGl2ZSldXG4gKn1cbiAqIGV4cG9ydCBjbGFzcyBFeGFtcGxlRGlyZWN0aXZle31cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVZhbHVlQWNjZXNzb3I8VD4odHlwZTogVHlwZTxUPik6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gdHlwZSksXG4gICAgICAgIG11bHRpOiB0cnVlXG4gICAgfTtcbn1cbiJdfQ==","import { Directive, booleanAttribute, inject, input, linkedSignal, output, untracked } from '@angular/core';\nimport { provideValueAccessor } from './provide-value-accessor';\nimport * as i0 from \"@angular/core\";\n/**\n * A reusable ControlValueAccessor implementation for form controls\n * @template T The type of the control's value\n */\nexport class RdxControlValueAccessor {\n constructor() {\n /**\n * Input for the control's value with alias 'value'\n * @default undefined\n */\n this.valueInput = input(undefined, ...(ngDevMode ? [{ debugName: \"valueInput\", alias: 'value' }] : [{ alias: 'value' }]));\n /**\n * Input for the disabled state with alias 'disabled'\n * Uses booleanAttribute transform to convert string attributes to booleans\n * @default false\n */\n this.disabledInput = input(false, ...(ngDevMode ? [{ debugName: \"disabledInput\", alias: 'disabled',\n transform: booleanAttribute }] : [{\n alias: 'disabled',\n transform: booleanAttribute\n }]));\n this.valueChange = output();\n this._value = linkedSignal(() => this.valueInput(), ...(ngDevMode ? [{ debugName: \"_value\" }] : []));\n /**\n * Readonly access to the current value\n */\n this.value = this._value.asReadonly();\n this._disabled = linkedSignal(() => this.disabledInput(), ...(ngDevMode ? [{ debugName: \"_disabled\" }] : []));\n /**\n * Readonly access to the disabled state\n */\n this.disabled = this._disabled.asReadonly();\n }\n /**\n * Writes a new value to the control (ControlValueAccessor interface)\n * @param value The new value for the control\n */\n writeValue(value) {\n untracked(() => this._value.set(value));\n }\n /**\n * Registers a callback for when the control value changes (ControlValueAccessor interface)\n * @param fn The callback function\n */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * Registers a callback for when the control is touched (ControlValueAccessor interface)\n * @param fn The callback function\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Sets the disabled state of the control (ControlValueAccessor interface)\n * @param isDisabled Whether the control should be disabled\n */\n setDisabledState(isDisabled) {\n this._disabled.set(isDisabled);\n }\n /**\n * Updates the control's value and triggers change detection\n * @param value The new value\n */\n setValue(value) {\n this._value.set(value);\n this.valueChange.emit(value);\n this.onChange?.(value);\n }\n markAsTouched() {\n this.onTouched?.();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxControlValueAccessor, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: RdxControlValueAccessor, isStandalone: true, inputs: { valueInput: { classPropertyName: \"valueInput\", publicName: \"value\", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: \"disabledInput\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\" }, providers: [provideValueAccessor(RdxControlValueAccessor)], exportAs: [\"rdxControlValueAccessor\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxControlValueAccessor, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'rdxControlValueAccessor',\n providers: [provideValueAccessor(RdxControlValueAccessor)]\n }]\n }] });\n/**\n * Provides a type-safe way to inject the RdxControlValueAccessor\n * @template T The type of the control's value\n * @returns An instance of RdxControlValueAccessor<T>\n */\nexport function injectControlValueAccessor() {\n return inject(RdxControlValueAccessor);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvY29yZS9zcmMvYWNjZXNzb3IvY29udHJvbC12YWx1ZS1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRWhFOzs7R0FHRztBQUtILE1BQU0sT0FBTyx1QkFBdUI7SUFKcEM7UUFLSTs7O1dBR0c7UUFDTSxlQUFVLEdBQUcsS0FBSyxDQUFJLFNBQVMsOENBQUksS0FBSyxFQUFFLE9BQU8sT0FBaEIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUMsQ0FBQztRQUU5RDs7OztXQUlHO1FBQ00sa0JBQWEsR0FBRyxLQUFLLENBQXdCLEtBQUssaURBQ3ZELEtBQUssRUFBRSxVQUFVO2dCQUNqQixTQUFTLEVBQUUsZ0JBQWdCLE9BRjhCO2dCQUN6RCxLQUFLLEVBQUUsVUFBVTtnQkFDakIsU0FBUyxFQUFFLGdCQUFnQjthQUM5QixHQUFDLENBQUM7UUFFTSxnQkFBVyxHQUFHLE1BQU0sRUFBSyxDQUFDO1FBRWxCLFdBQU0sR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxrREFBQyxDQUFDO1FBRWhFOztXQUVHO1FBQ00sVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFekIsY0FBUyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLHFEQUFDLENBQUM7UUFFdEU7O1dBRUc7UUFDTSxhQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQW1EbkQ7SUE3Q0c7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLEtBQW9CO1FBQzNCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxFQUFrQztRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsRUFBYztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsVUFBbUI7UUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxLQUFRO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7SUFDdkIsQ0FBQzs4R0FqRlEsdUJBQXVCO2tHQUF2Qix1QkFBdUIsbVdBRnJCLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLENBQUMsQ0FBQzs7MkZBRWpELHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxTQUFTLEVBQUUsQ0FBQyxvQkFBb0IseUJBQXlCLENBQUM7aUJBQzdEOztBQXFGRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLDBCQUEwQjtJQUN0QyxPQUFPLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBib29sZWFuQXR0cmlidXRlLCBpbmplY3QsIGlucHV0LCBsaW5rZWRTaWduYWwsIG91dHB1dCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHByb3ZpZGVWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnLi9wcm92aWRlLXZhbHVlLWFjY2Vzc29yJztcblxuLyoqXG4gKiBBIHJldXNhYmxlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudGF0aW9uIGZvciBmb3JtIGNvbnRyb2xzXG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgY29udHJvbCdzIHZhbHVlXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIGV4cG9ydEFzOiAncmR4Q29udHJvbFZhbHVlQWNjZXNzb3InLFxuICAgIHByb3ZpZGVyczogW3Byb3ZpZGVWYWx1ZUFjY2Vzc29yKFJkeENvbnRyb2xWYWx1ZUFjY2Vzc29yKV1cbn0pXG5leHBvcnQgY2xhc3MgUmR4Q29udHJvbFZhbHVlQWNjZXNzb3I8VD4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogSW5wdXQgZm9yIHRoZSBjb250cm9sJ3MgdmFsdWUgd2l0aCBhbGlhcyAndmFsdWUnXG4gICAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgdmFsdWVJbnB1dCA9IGlucHV0PFQ+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3ZhbHVlJyB9KTtcblxuICAgIC8qKlxuICAgICAqIElucHV0IGZvciB0aGUgZGlzYWJsZWQgc3RhdGUgd2l0aCBhbGlhcyAnZGlzYWJsZWQnXG4gICAgICogVXNlcyBib29sZWFuQXR0cmlidXRlIHRyYW5zZm9ybSB0byBjb252ZXJ0IHN0cmluZyBhdHRyaWJ1dGVzIHRvIGJvb2xlYW5zXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBkaXNhYmxlZElucHV0ID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuICAgICAgICBhbGlhczogJ2Rpc2FibGVkJyxcbiAgICAgICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlXG4gICAgfSk7XG5cbiAgICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxUPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmFsdWUgPSBsaW5rZWRTaWduYWwoKCkgPT4gdGhpcy52YWx1ZUlucHV0KCkpO1xuXG4gICAgLyoqXG4gICAgICogUmVhZG9ubHkgYWNjZXNzIHRvIHRoZSBjdXJyZW50IHZhbHVlXG4gICAgICovXG4gICAgcmVhZG9ubHkgdmFsdWUgPSB0aGlzLl92YWx1ZS5hc1JlYWRvbmx5KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kaXNhYmxlZCA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLmRpc2FibGVkSW5wdXQoKSk7XG5cbiAgICAvKipcbiAgICAgKiBSZWFkb25seSBhY2Nlc3MgdG8gdGhlIGRpc2FibGVkIHN0YXRlXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGlzYWJsZWQgPSB0aGlzLl9kaXNhYmxlZC5hc1JlYWRvbmx5KCk7XG5cbiAgICAvLyBDYWxsYmFja3MgZm9yIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAgb25DaGFuZ2U/OiAodmFsdWU6IFQgfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBvblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogV3JpdGVzIGEgbmV3IHZhbHVlIHRvIHRoZSBjb250cm9sIChDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UpXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSBuZXcgdmFsdWUgZm9yIHRoZSBjb250cm9sXG4gICAgICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogVCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5fdmFsdWUuc2V0KHZhbHVlIGFzIFQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmb3Igd2hlbiB0aGUgY29udHJvbCB2YWx1ZSBjaGFuZ2VzIChDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UpXG4gICAgICogQHBhcmFtIGZuIFRoZSBjYWxsYmFjayBmdW5jdGlvblxuICAgICAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogVCB8IHVuZGVmaW5lZCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZm9yIHdoZW4gdGhlIGNvbnRyb2wgaXMgdG91Y2hlZCAoQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlKVxuICAgICAqIEBwYXJhbSBmbiBUaGUgY2FsbGJhY2sgZnVuY3Rpb25cbiAgICAgKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBjb250cm9sIChDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UpXG4gICAgICogQHBhcmFtIGlzRGlzYWJsZWQgV2hldGhlciB0aGUgY29udHJvbCBzaG91bGQgYmUgZGlzYWJsZWRcbiAgICAgKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQuc2V0KGlzRGlzYWJsZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGNvbnRyb2wncyB2YWx1ZSBhbmQgdHJpZ2dlcnMgY2hhbmdlIGRldGVjdGlvblxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbmV3IHZhbHVlXG4gICAgICovXG4gICAgc2V0VmFsdWUodmFsdWU6IFQpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZT8uKHZhbHVlKTtcbiAgICB9XG5cbiAgICBtYXJrQXNUb3VjaGVkKCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZD8uKCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGVzIGEgdHlwZS1zYWZlIHdheSB0byBpbmplY3QgdGhlIFJkeENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgY29udHJvbCdzIHZhbHVlXG4gKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiBSZHhDb250cm9sVmFsdWVBY2Nlc3NvcjxUPlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q29udHJvbFZhbHVlQWNjZXNzb3I8VD4oKTogUmR4Q29udHJvbFZhbHVlQWNjZXNzb3I8VD4ge1xuICAgIHJldHVybiBpbmplY3QoUmR4Q29udHJvbFZhbHVlQWNjZXNzb3IpO1xufVxuIl19","import { booleanAttribute, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/*\n * <div [rdxAutoFocus]=\"true\"></div>\n */\nexport class RdxAutoFocusDirective {\n constructor() {\n this.#elementRef = inject(ElementRef);\n this.#ngZone = inject(NgZone);\n this._autoSelect = false;\n }\n #elementRef;\n #ngZone;\n /**\n * @default false\n */\n set autoFocus(value) {\n if (value) {\n // Note: Running this outside Angular's zone because `element.focus()` does not trigger change detection.\n this.#ngZone.runOutsideAngular(() => \n // Note: `element.focus()` causes re-layout which might lead to frame drops on slower devices.\n // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#setting-focus\n // `setTimeout` is a macrotask executed within the current rendering frame.\n // Animation tasks are executed in the next rendering frame.\n reqAnimationFrame(() => {\n this.#elementRef.nativeElement.focus();\n if (this._autoSelect && this.#elementRef.nativeElement.select) {\n this.#elementRef.nativeElement.select();\n }\n }));\n }\n }\n // Setter for autoSelect attribute to enable text selection when autoFocus is true.\n set autoSelect(value) {\n this._autoSelect = value;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxAutoFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.3.3\", type: RdxAutoFocusDirective, isStandalone: true, selector: \"[rdxAutoFocus]\", inputs: { autoFocus: [\"rdxAutoFocus\", \"autoFocus\", booleanAttribute], autoSelect: [\"autoSelect\", \"autoSelect\", booleanAttribute] }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxAutoFocusDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdxAutoFocus]',\n standalone: true\n }]\n }], propDecorators: { autoFocus: [{\n type: Input,\n args: [{ alias: 'rdxAutoFocus', transform: booleanAttribute }]\n }], autoSelect: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\nconst availablePrefixes = ['moz', 'ms', 'webkit'];\nfunction requestAnimationFramePolyfill() {\n let lastTime = 0;\n return function (callback) {\n const currTime = new Date().getTime();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n const id = setTimeout(() => {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n}\n// Function to get the appropriate requestAnimationFrame method with fallback to polyfill.\nfunction getRequestAnimationFrame() {\n if (typeof window === 'undefined') {\n return () => 0;\n }\n if (window.requestAnimationFrame) {\n // https://github.com/vuejs/vue/issues/4465\n return window.requestAnimationFrame.bind(window);\n }\n const prefix = availablePrefixes.filter((key) => `${key}RequestAnimationFrame` in window)[0];\n return prefix ? window[`${prefix}RequestAnimationFrame`] : requestAnimationFramePolyfill();\n}\n// Get the requestAnimationFrame function or its polyfill.\nconst reqAnimationFrame = getRequestAnimationFrame();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1mb2N1cy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2F1dG8tZm9jdXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUvRjs7R0FFRztBQU1ILE1BQU0sT0FBTyxxQkFBcUI7SUFKbEM7UUFLSSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWpCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0tBNkIvQjtJQWhDRyxXQUFXLENBQXNCO0lBQ2pDLE9BQU8sQ0FBa0I7SUFJekI7O09BRUc7SUFDSCxJQUNJLFNBQVMsQ0FBQyxLQUFjO1FBQ3hCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUix5R0FBeUc7WUFDekcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsOEZBQThGO1lBQzlGLHVFQUF1RTtZQUN2RSwyRUFBMkU7WUFDM0UsNERBQTREO1lBQzVELGlCQUFpQixDQUFDLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDNUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzVDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO1FBQ04sQ0FBQztJQUNMLENBQUM7SUFFRCxtRkFBbUY7SUFDbkYsSUFDSSxVQUFVLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDOzhHQWhDUSxxQkFBcUI7a0dBQXJCLHFCQUFxQixxR0FTYSxnQkFBZ0IsNENBb0J2QyxnQkFBZ0I7OzJGQTdCM0IscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFXTyxTQUFTO3NCQURaLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFxQnpELFVBQVU7c0JBRGIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7QUFNMUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFbEQsU0FBUyw2QkFBNkI7SUFDbEMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRWpCLE9BQU8sVUFBVSxRQUE4QjtRQUMzQyxNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTNELE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDdkIsUUFBUSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUNwQyxDQUFDLEVBQUUsVUFBVSxDQUFRLENBQUM7UUFFdEIsUUFBUSxHQUFHLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFFakMsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsMEZBQTBGO0FBQzFGLFNBQVMsd0JBQXdCO0lBQzdCLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDaEMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDL0IsMkNBQTJDO1FBQzNDLE9BQU8sTUFBTSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsdUJBQXVCLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0YsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFFLE1BQWMsQ0FBQyxHQUFHLE1BQU0sdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztBQUN4RyxDQUFDO0FBRUQsMERBQTBEO0FBQzFELE1BQU0saUJBQWlCLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qXG4gKiA8ZGl2IFtyZHhBdXRvRm9jdXNdPVwidHJ1ZVwiPjwvZGl2PlxuICovXG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeEF1dG9Gb2N1c10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUmR4QXV0b0ZvY3VzRGlyZWN0aXZlIHtcbiAgICAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICAjbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgICBwcml2YXRlIF9hdXRvU2VsZWN0ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IGFsaWFzOiAncmR4QXV0b0ZvY3VzJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgc2V0IGF1dG9Gb2N1cyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIC8vIE5vdGU6IFJ1bm5pbmcgdGhpcyBvdXRzaWRlIEFuZ3VsYXIncyB6b25lIGJlY2F1c2UgYGVsZW1lbnQuZm9jdXMoKWAgZG9lcyBub3QgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgICAgICAgICAgdGhpcy4jbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICAgICAgLy8gTm90ZTogYGVsZW1lbnQuZm9jdXMoKWAgY2F1c2VzIHJlLWxheW91dCB3aGljaCBtaWdodCBsZWFkIHRvIGZyYW1lIGRyb3BzIG9uIHNsb3dlciBkZXZpY2VzLlxuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3BhdWxpcmlzaC81ZDUyZmIwODFiMzU3MGM4MWUzYSNzZXR0aW5nLWZvY3VzXG4gICAgICAgICAgICAgICAgLy8gYHNldFRpbWVvdXRgIGlzIGEgbWFjcm90YXNrIGV4ZWN1dGVkIHdpdGhpbiB0aGUgY3VycmVudCByZW5kZXJpbmcgZnJhbWUuXG4gICAgICAgICAgICAgICAgLy8gQW5pbWF0aW9uIHRhc2tzIGFyZSBleGVjdXRlZCBpbiB0aGUgbmV4dCByZW5kZXJpbmcgZnJhbWUuXG4gICAgICAgICAgICAgICAgcmVxQW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2F1dG9TZWxlY3QgJiYgdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNlbGVjdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXR0ZXIgZm9yIGF1dG9TZWxlY3QgYXR0cmlidXRlIHRvIGVuYWJsZSB0ZXh0IHNlbGVjdGlvbiB3aGVuIGF1dG9Gb2N1cyBpcyB0cnVlLlxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHNldCBhdXRvU2VsZWN0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2F1dG9TZWxlY3QgPSB2YWx1ZTtcbiAgICB9XG59XG5cbmNvbnN0IGF2YWlsYWJsZVByZWZpeGVzID0gWydtb3onLCAnbXMnLCAnd2Via2l0J107XG5cbmZ1bmN0aW9uIHJlcXVlc3RBbmltYXRpb25GcmFtZVBvbHlmaWxsKCk6IHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUge1xuICAgIGxldCBsYXN0VGltZSA9IDA7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKGNhbGxiYWNrOiBGcmFtZVJlcXVlc3RDYWxsYmFjayk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGN1cnJUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIGNvbnN0IHRpbWVUb0NhbGwgPSBNYXRoLm1heCgwLCAxNiAtIChjdXJyVGltZSAtIGxhc3RUaW1lKSk7XG5cbiAgICAgICAgY29uc3QgaWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGN1cnJUaW1lICsgdGltZVRvQ2FsbCk7XG4gICAgICAgIH0sIHRpbWVUb0NhbGwpIGFzIGFueTtcblxuICAgICAgICBsYXN0VGltZSA9IGN1cnJUaW1lICsgdGltZVRvQ2FsbDtcblxuICAgICAgICByZXR1cm4gaWQ7XG4gICAgfTtcbn1cblxuLy8gRnVuY3Rpb24gdG8gZ2V0IHRoZSBhcHByb3ByaWF0ZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgbWV0aG9kIHdpdGggZmFsbGJhY2sgdG8gcG9seWZpbGwuXG5mdW5jdGlvbiBnZXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKTogdHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiAwO1xuICAgIH1cbiAgICBpZiAod2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSkge1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlL2lzc3Vlcy80NDY1XG4gICAgICAgIHJldHVybiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmaXggPSBhdmFpbGFibGVQcmVmaXhlcy5maWx0ZXIoKGtleSkgPT4gYCR7a2V5fVJlcXVlc3RBbmltYXRpb25GcmFtZWAgaW4gd2luZG93KVswXTtcblxuICAgIHJldHVybiBwcmVmaXggPyAod2luZG93IGFzIGFueSlbYCR7cHJlZml4fVJlcXVlc3RBbmltYXRpb25GcmFtZWBdIDogcmVxdWVzdEFuaW1hdGlvbkZyYW1lUG9seWZpbGwoKTtcbn1cblxuLy8gR2V0IHRoZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZnVuY3Rpb24gb3IgaXRzIHBvbHlmaWxsLlxuY29uc3QgcmVxQW5pbWF0aW9uRnJhbWUgPSBnZXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKTtcbiJdfQ==","/**\n * The `clamp` function restricts a number within a specified range by returning the value itself if it\n * falls within the range, or the closest boundary value if it exceeds the range.\n * @param {number} value - The `value` parameter represents the number that you want to clamp within\n * the specified range defined by `min` and `max` values.\n * @param {number} min - If the `value` parameter is less than the `min` value, the\n * function will return the `min` value.\n * @param {number} max - If the `value` parameter is greater than the `max` value,\n * the function will return `max`.\n * @returns The `clamp` function returns the value of `value` constrained within the range defined by\n * `min` and `max`.\n */\nexport function clamp(value, min = Number.NEGATIVE_INFINITY, max = Number.POSITIVE_INFINITY) {\n return Math.min(max, Math.max(min, value));\n}\n/**\n * The function `roundToStepPrecision` rounds a number to a specified precision step.\n * @param {number} value - The `value` parameter is the number that you want to round to a specific\n * precision based on the `step` parameter.\n * @param {number} step - The `step` parameter in the `roundToStepPrecision` function represents the\n * interval at which you want to round the `value`. For example, if `step` is 0.5, the `value` will be\n * rounded to the nearest half.\n * @returns the `roundedValue` after rounding it to the precision specified by the `step`.\n */\nexport function roundToStepPrecision(value, step) {\n let roundedValue = value;\n const stepString = step.toString();\n const pointIndex = stepString.indexOf('.');\n const precision = pointIndex >= 0 ? stepString.length - pointIndex : 0;\n if (precision > 0) {\n const pow = 10 ** precision;\n roundedValue = Math.round(roundedValue * pow) / pow;\n }\n return roundedValue;\n}\n/**\n * The function `snapValueToStep` snaps a given value to the nearest step within a specified range.\n * @param {number} value - The `value` parameter represents the number that you want to snap to the\n * nearest step value.\n * @param {number | undefined} min - The `min` parameter represents the minimum value that the `value`\n * should be snapped to. If `value` is less than `min`, it will be snapped to `min`. If `min` is not\n * provided (undefined), then the snapping will not consider a minimum value.\n * @param {number | undefined} max - The `max` parameter represents the maximum value that the `value`\n * should be snapped to. It ensures that the snapped value does not exceed this maximum value.\n * @param {number} step - The `step` parameter in the `snapValueToStep` function represents the\n * interval at which the `value` should be snapped to. It determines the granularity of the snapping\n * operation. For example, if `step` is 5, the `value` will be snapped to the nearest multiple of\n * @returns a number that has been snapped to the nearest step value within the specified range of minimum and maximum values.\n */\nexport function snapValueToStep(value, min, max, step) {\n min = Number(min);\n max = Number(max);\n const remainder = (value - (Number.isNaN(min) ? 0 : min)) % step;\n let snappedValue = roundToStepPrecision(Math.abs(remainder) * 2 >= step\n ? value + Math.sign(remainder) * (step - Math.abs(remainder))\n : value - remainder, step);\n if (!Number.isNaN(min)) {\n if (snappedValue < min)\n snappedValue = min;\n else if (!Number.isNaN(max) && snappedValue > max)\n snappedValue = min + Math.floor(roundToStepPrecision((max - min) / step, step)) * step;\n }\n else if (!Number.isNaN(max) && snappedValue > max) {\n snappedValue = Math.floor(roundToStepPrecision(max / step, step)) * step;\n }\n // correct floating point behavior by rounding to step precision\n snappedValue = roundToStepPrecision(snappedValue, step);\n return snappedValue;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhbXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2NsYW1wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FDakIsS0FBYSxFQUNiLE1BQWMsTUFBTSxDQUFDLGlCQUFpQixFQUN0QyxNQUFjLE1BQU0sQ0FBQyxpQkFBaUI7SUFFdEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsSUFBWTtJQUM1RCxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDekIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25DLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsTUFBTSxTQUFTLEdBQUcsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNoQixNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksU0FBUyxDQUFDO1FBQzVCLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDeEQsQ0FBQztJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFhLEVBQUUsR0FBdUIsRUFBRSxHQUF1QixFQUFFLElBQVk7SUFDekcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQixHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNqRSxJQUFJLFlBQVksR0FBRyxvQkFBb0IsQ0FDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSTtRQUMzQixDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsS0FBSyxHQUFHLFNBQVMsRUFDdkIsSUFBSSxDQUNQLENBQUM7SUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3JCLElBQUksWUFBWSxHQUFHLEdBQUc7WUFBRSxZQUFZLEdBQUcsR0FBRyxDQUFDO2FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksR0FBRyxHQUFHO1lBQzdDLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDL0YsQ0FBQztTQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNsRCxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzdFLENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsWUFBWSxHQUFHLG9CQUFvQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV4RCxPQUFPLFlBQVksQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYGNsYW1wYCBmdW5jdGlvbiByZXN0cmljdHMgYSBudW1iZXIgd2l0aGluIGEgc3BlY2lmaWVkIHJhbmdlIGJ5IHJldHVybmluZyB0aGUgdmFsdWUgaXRzZWxmIGlmIGl0XG4gKiBmYWxscyB3aXRoaW4gdGhlIHJhbmdlLCBvciB0aGUgY2xvc2VzdCBib3VuZGFyeSB2YWx1ZSBpZiBpdCBleGNlZWRzIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSAtIFRoZSBgdmFsdWVgIHBhcmFtZXRlciByZXByZXNlbnRzIHRoZSBudW1iZXIgdGhhdCB5b3Ugd2FudCB0byBjbGFtcCB3aXRoaW5cbiAqIHRoZSBzcGVjaWZpZWQgcmFuZ2UgZGVmaW5lZCBieSBgbWluYCBhbmQgYG1heGAgdmFsdWVzLlxuICogQHBhcmFtIHtudW1iZXJ9IG1pbiAtIElmIHRoZSBgdmFsdWVgIHBhcmFtZXRlciBpcyBsZXNzIHRoYW4gdGhlIGBtaW5gIHZhbHVlLCB0aGVcbiAqIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBgbWluYCB2YWx1ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBtYXggLSBJZiB0aGUgYHZhbHVlYCBwYXJhbWV0ZXIgaXMgZ3JlYXRlciB0aGFuIHRoZSBgbWF4YCB2YWx1ZSxcbiAqIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBgbWF4YC5cbiAqIEByZXR1cm5zIFRoZSBgY2xhbXBgIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIGB2YWx1ZWAgY29uc3RyYWluZWQgd2l0aGluIHRoZSByYW5nZSBkZWZpbmVkIGJ5XG4gKiBgbWluYCBhbmQgYG1heGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcChcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIG1pbjogbnVtYmVyID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLFxuICAgIG1heDogbnVtYmVyID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXG4pOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1pbihtYXgsIE1hdGgubWF4KG1pbiwgdmFsdWUpKTtcbn1cblxuLyoqXG4gKiBUaGUgZnVuY3Rpb24gYHJvdW5kVG9TdGVwUHJlY2lzaW9uYCByb3VuZHMgYSBudW1iZXIgdG8gYSBzcGVjaWZpZWQgcHJlY2lzaW9uIHN0ZXAuXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgLSBUaGUgYHZhbHVlYCBwYXJhbWV0ZXIgaXMgdGhlIG51bWJlciB0aGF0IHlvdSB3YW50IHRvIHJvdW5kIHRvIGEgc3BlY2lmaWNcbiAqIHByZWNpc2lvbiBiYXNlZCBvbiB0aGUgYHN0ZXBgIHBhcmFtZXRlci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGVwIC0gVGhlIGBzdGVwYCBwYXJhbWV0ZXIgaW4gdGhlIGByb3VuZFRvU3RlcFByZWNpc2lvbmAgZnVuY3Rpb24gcmVwcmVzZW50cyB0aGVcbiAqIGludGVydmFsIGF0IHdoaWNoIHlvdSB3YW50IHRvIHJvdW5kIHRoZSBgdmFsdWVgLiBGb3IgZXhhbXBsZSwgaWYgYHN0ZXBgIGlzIDAuNSwgdGhlIGB2YWx1ZWAgd2lsbCBiZVxuICogcm91bmRlZCB0byB0aGUgbmVhcmVzdCBoYWxmLlxuICogQHJldHVybnMgdGhlIGByb3VuZGVkVmFsdWVgIGFmdGVyIHJvdW5kaW5nIGl0IHRvIHRoZSBwcmVjaXNpb24gc3BlY2lmaWVkIGJ5IHRoZSBgc3RlcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFRvU3RlcFByZWNpc2lvbih2YWx1ZTogbnVtYmVyLCBzdGVwOiBudW1iZXIpIHtcbiAgICBsZXQgcm91bmRlZFZhbHVlID0gdmFsdWU7XG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAudG9TdHJpbmcoKTtcbiAgICBjb25zdCBwb2ludEluZGV4ID0gc3RlcFN0cmluZy5pbmRleE9mKCcuJyk7XG4gICAgY29uc3QgcHJlY2lzaW9uID0gcG9pbnRJbmRleCA+PSAwID8gc3RlcFN0cmluZy5sZW5ndGggLSBwb2ludEluZGV4IDogMDtcbiAgICBpZiAocHJlY2lzaW9uID4gMCkge1xuICAgICAgICBjb25zdCBwb3cgPSAxMCAqKiBwcmVjaXNpb247XG4gICAgICAgIHJvdW5kZWRWYWx1ZSA9IE1hdGgucm91bmQocm91bmRlZFZhbHVlICogcG93KSAvIHBvdztcbiAgICB9XG4gICAgcmV0dXJuIHJvdW5kZWRWYWx1ZTtcbn1cblxuLyoqXG4gKiBUaGUgZnVuY3Rpb24gYHNuYXBWYWx1ZVRvU3RlcGAgc25hcHMgYSBnaXZlbiB2YWx1ZSB0byB0aGUgbmVhcmVzdCBzdGVwIHdpdGhpbiBhIHNwZWNpZmllZCByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSAtIFRoZSBgdmFsdWVgIHBhcmFtZXRlciByZXByZXNlbnRzIHRoZSBudW1iZXIgdGhhdCB5b3Ugd2FudCB0byBzbmFwIHRvIHRoZVxuICogbmVhcmVzdCBzdGVwIHZhbHVlLlxuICogQHBhcmFtIHtudW1iZXIgfCB1bmRlZmluZWR9IG1pbiAtIFRoZSBgbWluYCBwYXJhbWV0ZXIgcmVwcmVzZW50cyB0aGUgbWluaW11bSB2YWx1ZSB0aGF0IHRoZSBgdmFsdWVgXG4gKiBzaG91bGQgYmUgc25hcHBlZCB0by4gSWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG1pbmAsIGl0IHdpbGwgYmUgc25hcHBlZCB0byBgbWluYC4gSWYgYG1pbmAgaXMgbm90XG4gKiBwcm92aWRlZCAodW5kZWZpbmVkKSwgdGhlbiB0aGUgc25hcHBpbmcgd2lsbCBub3QgY29uc2lkZXIgYSBtaW5pbXVtIHZhbHVlLlxuICogQHBhcmFtIHtudW1iZXIgfCB1bmRlZmluZWR9IG1heCAtIFRoZSBgbWF4YCBwYXJhbWV0ZXIgcmVwcmVzZW50cyB0aGUgbWF4aW11bSB2YWx1ZSB0aGF0IHRoZSBgdmFsdWVgXG4gKiBzaG91bGQgYmUgc25hcHBlZCB0by4gSXQgZW5zdXJlcyB0aGF0IHRoZSBzbmFwcGVkIHZhbHVlIGRvZXMgbm90IGV4Y2VlZCB0aGlzIG1heGltdW0gdmFsdWUuXG4gKiBAcGFyYW0ge251bWJlcn0gc3RlcCAtIFRoZSBgc3RlcGAgcGFyYW1ldGVyIGluIHRoZSBgc25hcFZhbHVlVG9TdGVwYCBmdW5jdGlvbiByZXByZXNlbnRzIHRoZVxuICogaW50ZXJ2YWwgYXQgd2hpY2ggdGhlIGB2YWx1ZWAgc2hvdWxkIGJlIHNuYXBwZWQgdG8uIEl0IGRldGVybWluZXMgdGhlIGdyYW51bGFyaXR5IG9mIHRoZSBzbmFwcGluZ1xuICogb3BlcmF0aW9uLiBGb3IgZXhhbXBsZSwgaWYgYHN0ZXBgIGlzIDUsIHRoZSBgdmFsdWVgIHdpbGwgYmUgc25hcHBlZCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZlxuICogQHJldHVybnMgYSBudW1iZXIgdGhhdCBoYXMgYmVlbiBzbmFwcGVkIHRvIHRoZSBuZWFyZXN0IHN0ZXAgdmFsdWUgd2l0aGluIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgbWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbmFwVmFsdWVUb1N0ZXAodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIgfCB1bmRlZmluZWQsIG1heDogbnVtYmVyIHwgdW5kZWZpbmVkLCBzdGVwOiBudW1iZXIpOiBudW1iZXIge1xuICAgIG1pbiA9IE51bWJlcihtaW4pO1xuICAgIG1heCA9IE51bWJlcihtYXgpO1xuICAgIGNvbnN0IHJlbWFpbmRlciA9ICh2YWx1ZSAtIChOdW1iZXIuaXNOYU4obWluKSA/IDAgOiBtaW4pKSAlIHN0ZXA7XG4gICAgbGV0IHNuYXBwZWRWYWx1ZSA9IHJvdW5kVG9TdGVwUHJlY2lzaW9uKFxuICAgICAgICBNYXRoLmFicyhyZW1haW5kZXIpICogMiA+PSBzdGVwXG4gICAgICAgICAgICA/IHZhbHVlICsgTWF0aC5zaWduKHJlbWFpbmRlcikgKiAoc3RlcCAtIE1hdGguYWJzKHJlbWFpbmRlcikpXG4gICAgICAgICAgICA6IHZhbHVlIC0gcmVtYWluZGVyLFxuICAgICAgICBzdGVwXG4gICAgKTtcblxuICAgIGlmICghTnVtYmVyLmlzTmFOKG1pbikpIHtcbiAgICAgICAgaWYgKHNuYXBwZWRWYWx1ZSA8IG1pbikgc25hcHBlZFZhbHVlID0gbWluO1xuICAgICAgICBlbHNlIGlmICghTnVtYmVyLmlzTmFOKG1heCkgJiYgc25hcHBlZFZhbHVlID4gbWF4KVxuICAgICAgICAgICAgc25hcHBlZFZhbHVlID0gbWluICsgTWF0aC5mbG9vcihyb3VuZFRvU3RlcFByZWNpc2lvbigobWF4IC0gbWluKSAvIHN0ZXAsIHN0ZXApKSAqIHN0ZXA7XG4gICAgfSBlbHNlIGlmICghTnVtYmVyLmlzTmFOKG1heCkgJiYgc25hcHBlZFZhbHVlID4gbWF4KSB7XG4gICAgICAgIHNuYXBwZWRWYWx1ZSA9IE1hdGguZmxvb3Iocm91bmRUb1N0ZXBQcmVjaXNpb24obWF4IC8gc3RlcCwgc3RlcCkpICogc3RlcDtcbiAgICB9XG5cbiAgICAvLyBjb3JyZWN0IGZsb2F0aW5nIHBvaW50IGJlaGF2aW9yIGJ5IHJvdW5kaW5nIHRvIHN0ZXAgcHJlY2lzaW9uXG4gICAgc25hcHBlZFZhbHVlID0gcm91bmRUb1N0ZXBQcmVjaXNpb24oc25hcHBlZFZhbHVlLCBzdGVwKTtcblxuICAgIHJldHVybiBzbmFwcGVkVmFsdWU7XG59XG4iXX0=","import { DOCUMENT, inject } from '@angular/core';\nexport function injectDocument() {\n return inject(DOCUMENT);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2RvY3VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE1BQU0sVUFBVSxjQUFjO0lBQzFCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3REb2N1bWVudCgpOiBEb2N1bWVudCB7XG4gICAgcmV0dXJuIGluamVjdChET0NVTUVOVCk7XG59XG4iXX0=","import { afterNextRender, DestroyRef, signal } from '@angular/core';\nexport function elementSize({ elementRef, injector }) {\n const destroyRef = injector.get(DestroyRef);\n const result = signal({\n width: elementRef.nativeElement.offsetWidth,\n height: elementRef.nativeElement.offsetHeight\n }, ...(ngDevMode ? [{ debugName: \"result\" }] : []));\n afterNextRender(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n const entry = entries[0];\n let width;\n let height;\n if ('borderBoxSize' in entry) {\n const borderSizeEntry = entry['borderBoxSize'];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize['inlineSize'];\n height = borderSize['blockSize'];\n }\n else {\n width = elementRef.nativeElement.offsetWidth;\n height = elementRef.nativeElement.offsetHeight;\n }\n result.set({ width, height });\n });\n destroyRef.onDestroy(() => resizeObserver.disconnect());\n }, { injector: injector });\n return result.asReadonly();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1zaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9jb3JlL3NyYy9lbGVtZW50LXNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQXdCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixNQUFNLFVBQVUsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBK0Q7SUFDN0csTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDbEIsS0FBSyxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsV0FBVztRQUMzQyxNQUFNLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxZQUFZO0tBQ2hELGtEQUFDLENBQUM7SUFFSCxlQUFlLENBQ1gsR0FBRyxFQUFFO1FBQ0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNsRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxLQUFhLENBQUM7WUFDbEIsSUFBSSxNQUFjLENBQUM7WUFFbkIsSUFBSSxlQUFlLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDL0MsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7Z0JBRXpGLEtBQUssR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ2pDLE1BQU0sR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDckMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLEtBQUssR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztnQkFDN0MsTUFBTSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQ25ELENBQUM7WUFFRCxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUMsRUFDRCxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FDekIsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVsZW1lbnRTaXplKHsgZWxlbWVudFJlZiwgaW5qZWN0b3IgfTogeyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjsgaW5qZWN0b3I6IEluamVjdG9yIH0pIHtcbiAgICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0b3IuZ2V0KERlc3Ryb3lSZWYpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHNpZ25hbCh7XG4gICAgICAgIHdpZHRoOiBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgsXG4gICAgICAgIGhlaWdodDogZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodFxuICAgIH0pO1xuXG4gICAgYWZ0ZXJOZXh0UmVuZGVyKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGg6IG51bWJlcjtcbiAgICAgICAgICAgICAgICBsZXQgaGVpZ2h0OiBudW1iZXI7XG5cbiAgICAgICAgICAgICAgICBpZiAoJ2JvcmRlckJveFNpemUnIGluIGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlclNpemVFbnRyeSA9IGVudHJ5Wydib3JkZXJCb3hTaXplJ107XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlclNpemUgPSBBcnJheS5pc0FycmF5KGJvcmRlclNpemVFbnRyeSkgPyBib3JkZXJTaXplRW50cnlbMF0gOiBib3JkZXJTaXplRW50cnk7XG5cbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBib3JkZXJTaXplWydpbmxpbmVTaXplJ107XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGJvcmRlclNpemVbJ2Jsb2NrU2l6ZSddO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKSk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgaW5qZWN0b3I6IGluamVjdG9yIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5hc1JlYWRvbmx5KCk7XG59XG4iXX0=","import { Directive, ElementRef, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class RdxFocusInitialDirective {\n constructor() {\n /** @ignore */\n this.nativeElement = inject(ElementRef).nativeElement;\n }\n /** @ignore */\n focus() {\n this.nativeElement.focus();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxFocusInitialDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: RdxFocusInitialDirective, isStandalone: true, selector: \"[rdxFocusInitial]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxFocusInitialDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdxFocusInitial]'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtaW5pdGlhbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2ZvY3VzLWluaXRpYWwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLOUQsTUFBTSxPQUFPLHdCQUF3QjtJQUhyQztRQUlJLGNBQWM7UUFDRyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUM7S0FNckU7SUFKRyxjQUFjO0lBQ2QsS0FBSztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQzs4R0FQUSx3QkFBd0I7a0dBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFIcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeEZvY3VzSW5pdGlhbF0nXG59KVxuZXhwb3J0IGNsYXNzIFJkeEZvY3VzSW5pdGlhbERpcmVjdGl2ZSB7XG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZUVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbn1cbiJdfQ==","export function getActiveElement() {\n let activeElement = document.activeElement;\n if (activeElement == null) {\n return null;\n }\n while (activeElement != null &&\n activeElement.shadowRoot != null &&\n activeElement.shadowRoot.activeElement != null) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QWN0aXZlRWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvY29yZS9zcmMvZ2V0QWN0aXZlRWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsZ0JBQWdCO0lBQzVCLElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDM0MsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQ0ksYUFBYSxJQUFJLElBQUk7UUFDckIsYUFBYSxDQUFDLFVBQVUsSUFBSSxJQUFJO1FBQ2hDLGFBQWEsQ0FBQyxVQUFVLENBQUMsYUFBYSxJQUFJLElBQUksRUFDaEQsQ0FBQztRQUNDLGFBQWEsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUMzRCxDQUFDO0lBRUQsT0FBTyxhQUFhLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRBY3RpdmVFbGVtZW50KCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICBsZXQgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGFjdGl2ZUVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB3aGlsZSAoXG4gICAgICAgIGFjdGl2ZUVsZW1lbnQgIT0gbnVsbCAmJlxuICAgICAgICBhY3RpdmVFbGVtZW50LnNoYWRvd1Jvb3QgIT0gbnVsbCAmJlxuICAgICAgICBhY3RpdmVFbGVtZW50LnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCAhPSBudWxsXG4gICAgKSB7XG4gICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBhY3RpdmVFbGVtZW50LnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aXZlRWxlbWVudDtcbn1cbiJdfQ==","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\nimport { APP_ID, inject, Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Keeps track of the ID count per prefix. This helps us make the IDs a bit more deterministic\n * like they were before the service was introduced. Note that ideally we wouldn't have to do\n * this, but there are some internal tests that rely on the IDs.\n */\nconst counters = {};\n/** Service that generates unique IDs for DOM nodes. */\nexport class _IdGenerator {\n constructor() {\n this._appId = inject(APP_ID);\n }\n /**\n * Generates a unique ID with a specific prefix.\n * @param prefix Prefix to add to the ID.\n */\n getId(prefix) {\n // Omit the app ID if it's the default `ng`. Since the vast majority of pages have one\n // Angular app on them, we can reduce the amount of breakages by not adding it.\n if (this._appId !== 'ng') {\n prefix += this._appId;\n }\n if (!Object.prototype.hasOwnProperty.call(counters, prefix)) {\n counters[prefix] = 0;\n }\n return `${prefix}${counters[prefix]++}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: _IdGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: _IdGenerator, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: _IdGenerator, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9jb3JlL3NyYy9pZC1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzRDs7OztHQUlHO0FBQ0gsTUFBTSxRQUFRLEdBQTJCLEVBQUUsQ0FBQztBQUU1Qyx1REFBdUQ7QUFFdkQsTUFBTSxPQUFPLFlBQVk7SUFEekI7UUFFcUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztLQW1CNUM7SUFqQkc7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE1BQWM7UUFDaEIsc0ZBQXNGO1FBQ3RGLCtFQUErRTtRQUMvRSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsT0FBTyxHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzVDLENBQUM7OEdBbkJRLFlBQVk7a0hBQVosWUFBWSxjQURDLE1BQU07OzJGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgQVBQX0lELCBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBLZWVwcyB0cmFjayBvZiB0aGUgSUQgY291bnQgcGVyIHByZWZpeC4gVGhpcyBoZWxwcyB1cyBtYWtlIHRoZSBJRHMgYSBiaXQgbW9yZSBkZXRlcm1pbmlzdGljXG4gKiBsaWtlIHRoZXkgd2VyZSBiZWZvcmUgdGhlIHNlcnZpY2Ugd2FzIGludHJvZHVjZWQuIE5vdGUgdGhhdCBpZGVhbGx5IHdlIHdvdWxkbid0IGhhdmUgdG8gZG9cbiAqIHRoaXMsIGJ1dCB0aGVyZSBhcmUgc29tZSBpbnRlcm5hbCB0ZXN0cyB0aGF0IHJlbHkgb24gdGhlIElEcy5cbiAqL1xuY29uc3QgY291bnRlcnM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcblxuLyoqIFNlcnZpY2UgdGhhdCBnZW5lcmF0ZXMgdW5pcXVlIElEcyBmb3IgRE9NIG5vZGVzLiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBfSWRHZW5lcmF0b3Ige1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2FwcElkID0gaW5qZWN0KEFQUF9JRCk7XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgSUQgd2l0aCBhIHNwZWNpZmljIHByZWZpeC5cbiAgICAgKiBAcGFyYW0gcHJlZml4IFByZWZpeCB0byBhZGQgdG8gdGhlIElELlxuICAgICAqL1xuICAgIGdldElkKHByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgLy8gT21pdCB0aGUgYXBwIElEIGlmIGl0J3MgdGhlIGRlZmF1bHQgYG5nYC4gU2luY2UgdGhlIHZhc3QgbWFqb3JpdHkgb2YgcGFnZXMgaGF2ZSBvbmVcbiAgICAgICAgLy8gQW5ndWxhciBhcHAgb24gdGhlbSwgd2UgY2FuIHJlZHVjZSB0aGUgYW1vdW50IG9mIGJyZWFrYWdlcyBieSBub3QgYWRkaW5nIGl0LlxuICAgICAgICBpZiAodGhpcy5fYXBwSWQgIT09ICduZycpIHtcbiAgICAgICAgICAgIHByZWZpeCArPSB0aGlzLl9hcHBJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNvdW50ZXJzLCBwcmVmaXgpKSB7XG4gICAgICAgICAgICBjb3VudGVyc1twcmVmaXhdID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtjb3VudGVyc1twcmVmaXhdKyt9YDtcbiAgICB9XG59XG4iXX0=","import { inject } from '@angular/core';\nimport { FormControlDirective, FormControlName, NgControl, NgModel } from '@angular/forms';\nexport function injectNgControl(params) {\n const ngControl = inject(NgControl, { self: true, optional: true });\n if (!params?.optional && !ngControl)\n throw new Error('NgControl not found');\n if (ngControl instanceof FormControlDirective ||\n ngControl instanceof FormControlName ||\n ngControl instanceof NgModel) {\n return ngControl;\n }\n if (params?.optional) {\n return undefined;\n }\n throw new Error('NgControl is not an instance of FormControlDirective, FormControlName or NgModel');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LW5nLWNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2luamVjdC1uZy1jb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRM0YsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFpRDtJQUM3RSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVwRSxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsSUFBSSxDQUFDLFNBQVM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFFNUUsSUFDSSxTQUFTLFlBQVksb0JBQW9CO1FBQ3pDLFNBQVMsWUFBWSxlQUFlO1FBQ3BDLFNBQVMsWUFBWSxPQUFPLEVBQzlCLENBQUM7UUFDQyxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDbkIsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsa0ZBQWtGLENBQUMsQ0FBQztBQUN4RyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbERpcmVjdGl2ZSwgRm9ybUNvbnRyb2xOYW1lLCBOZ0NvbnRyb2wsIE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ0NvbnRyb2wocGFyYW1zOiB7XG4gICAgb3B0aW9uYWw6IHRydWU7XG59KTogRm9ybUNvbnRyb2xEaXJlY3RpdmUgfCBGb3JtQ29udHJvbE5hbWUgfCBOZ01vZGVsIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5nQ29udHJvbChwYXJhbXM6IHsgb3B0aW9uYWw6IGZhbHNlIH0pOiBGb3JtQ29udHJvbERpcmVjdGl2ZSB8IEZvcm1Db250cm9sTmFtZSB8IE5nTW9kZWw7XG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0TmdDb250cm9sKCk6IEZvcm1Db250cm9sRGlyZWN0aXZlIHwgRm9ybUNvbnRyb2xOYW1lIHwgTmdNb2RlbDtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5nQ29udHJvbChwYXJhbXM/OiB7IG9wdGlvbmFsOiB0cnVlIH0gfCB7IG9wdGlvbmFsOiBmYWxzZSB9KSB7XG4gICAgY29uc3QgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwgeyBzZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIGlmICghcGFyYW1zPy5vcHRpb25hbCAmJiAhbmdDb250cm9sKSB0aHJvdyBuZXcgRXJyb3IoJ05nQ29udHJvbCBub3QgZm91bmQnKTtcblxuICAgIGlmIChcbiAgICAgICAgbmdDb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2xEaXJlY3RpdmUgfHxcbiAgICAgICAgbmdDb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2xOYW1lIHx8XG4gICAgICAgIG5nQ29udHJvbCBpbnN0YW5jZW9mIE5nTW9kZWxcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIG5nQ29udHJvbDtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zPy5vcHRpb25hbCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignTmdDb250cm9sIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBGb3JtQ29udHJvbERpcmVjdGl2ZSwgRm9ybUNvbnRyb2xOYW1lIG9yIE5nTW9kZWwnKTtcbn1cbiJdfQ==","import { Platform } from '@angular/cdk/platform';\nimport { inject } from '@angular/core';\nexport function injectIsClient() {\n return inject(Platform).isBrowser;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9jb3JlL3NyYy9pcy1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsTUFBTSxVQUFVLGNBQWM7SUFDMUIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdElzQ2xpZW50KCkge1xuICAgIHJldHVybiBpbmplY3QoUGxhdGZvcm0pLmlzQnJvd3Nlcjtcbn1cbiJdfQ==","// Originally based on https://github.com/puleos/object-hash v3.0.0 (MIT)\n/**\n * Serializes any input value into a string for hashing.\n *\n * This method uses best efforts to generate stable serialized values.\n * However, it is not designed for security purposes.\n * Keep in mind that there is always a chance of intentional collisions caused by user input.\n *\n * @param input any value to serialize\n * @return {string} serialized string value\n */\nexport function serialize(input) {\n if (typeof input === 'string') {\n return `'${input}'`;\n }\n return new Serializer().serialize(input);\n}\nconst Serializer = /*@__PURE__*/ (function () {\n class Serializer {\n #context = new Map();\n compare(a, b) {\n const typeA = typeof a;\n const typeB = typeof b;\n if (typeA === 'string' && typeB === 'string') {\n return a.localeCompare(b);\n }\n if (typeA === 'number' && typeB === 'number') {\n return a - b;\n }\n return String.prototype.localeCompare.call(this.serialize(a, true), this.serialize(b, true));\n }\n serialize(value, noQuotes) {\n if (value === null) {\n return 'null';\n }\n switch (typeof value) {\n case 'string': {\n return noQuotes ? value : `'${value}'`;\n }\n case 'bigint': {\n return `${value}n`;\n }\n case 'object': {\n return this.$object(value);\n }\n case 'function': {\n return this.$function(value);\n }\n }\n return String(value);\n }\n serializeObject(object) {\n const objString = Object.prototype.toString.call(object);\n if (objString !== '[object Object]') {\n return this.serializeBuiltInType(objString.length < 10 /* '[object a]'.length === 10, the minimum */\n ? `unknown:${objString}`\n : objString.slice(8, -1) /* '[object '.length === 8 */, object);\n }\n const constructor = object.constructor;\n const objName = constructor === Object || constructor === undefined ? '' : constructor.name;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n if (objName !== '' && globalThis[objName] === constructor) {\n return this.serializeBuiltInType(objName, object);\n }\n if ('toJSON' in object && typeof object.toJSON === 'function') {\n const json = object.toJSON();\n return (objName +\n (json !== null && typeof json === 'object' ? this.$object(json) : `(${this.serialize(json)})`));\n }\n const keys = Object.keys(object).sort((a, b) => a.localeCompare(b));\n let content = `${objName}{`;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n content += `${key}:${this.serialize(object[key])}`;\n if (i < keys.length - 1) {\n content += ',';\n }\n }\n return content + '}';\n }\n serializeBuiltInType(type, object) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n const handler = this['$' + type];\n if (handler) {\n return handler.call(this, object);\n }\n if (typeof object.entries === 'function') {\n return this.serializeObjectEntries(type, object.entries());\n }\n throw new Error(`Cannot serialize ${type}`);\n }\n serializeObjectEntries(type, entries) {\n const sortedEntries = Array.from(entries).sort((a, b) => this.compare(a[0], b[0]));\n let content = `${type}{`;\n for (let i = 0; i < sortedEntries.length; i++) {\n const [key, value] = sortedEntries[i];\n content += `${this.serialize(key, true)}:${this.serialize(value)}`;\n if (i < sortedEntries.length - 1) {\n content += ',';\n }\n }\n return content + '}';\n }\n $object(object) {\n let content = this.#context.get(object);\n if (content === undefined) {\n this.#context.set(object, `#${this.#context.size}`);\n content = this.serializeObject(object);\n this.#context.set(object, content);\n }\n return content;\n }\n $function(fn) {\n const fnStr = Function.prototype.toString.call(fn);\n if (fnStr.slice(-15 /* \"[native code] }\".length */) === '[native code] }') {\n return `${fn.name || ''}()[native]`;\n }\n return `${fn.name}(${fn.length})${fnStr.replace(/\\s*\\n\\s*/g, '')}`;\n }\n $Array(arr) {\n let content = '[';\n for (let i = 0; i < arr.length; i++) {\n content += this.serialize(arr[i]);\n if (i < arr.length - 1) {\n content += ',';\n }\n }\n return content + ']';\n }\n $Date(date) {\n try {\n return `Date(${date.toISOString()})`;\n }\n catch {\n return `Date(null)`;\n }\n }\n $ArrayBuffer(arr) {\n return `ArrayBuffer[${new Uint8Array(arr).join(',')}]`;\n }\n $Set(set) {\n return `Set${this.$Array(Array.from(set).sort((a, b) => this.compare(a, b)))}`;\n }\n $Map(map) {\n return this.serializeObjectEntries('Map', map.entries());\n }\n }\n for (const type of ['Error', 'RegExp', 'URL']) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n Serializer.prototype['$' + type] = function (val) {\n return `${type}(${val})`;\n };\n }\n for (const type of [\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array'\n ]) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n Serializer.prototype['$' + type] = function (arr) {\n return `${type}[${arr.join(',')}]`;\n };\n }\n for (const type of ['BigInt64Array', 'BigUint64Array']) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n Serializer.prototype['$' + type] = function (arr) {\n return `${type}[${arr.join('n,')}${arr.length > 0 ? 'n' : ''}]`;\n };\n }\n return Serializer;\n})();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9jb3JlL3NyYy9zZXJpYWxpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUVBQXlFO0FBZXpFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBVTtJQUNoQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxLQUFLLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBQ0QsT0FBTyxJQUFJLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDOUIsTUFBTSxVQUFVO1FBQ1osUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFFckIsT0FBTyxDQUFDLENBQU0sRUFBRSxDQUFNO1lBQ2xCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1lBRXZCLElBQUksS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzNDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixDQUFDO1lBRUQsSUFBSSxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFD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UUFDOUQsNkRBQTZEO1FBQzdELG1CQUFtQjtRQUNuQixVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxVQUFVLEdBQWU7WUFDeEQsT0FBTyxHQUFHLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ3BFLENBQUMsQ0FBQztJQUNOLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gT3JpZ2luYWxseSBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vcHVsZW9zL29iamVjdC1oYXNoIHYzLjAuMCAoTUlUKVxuXG50eXBlIFR5cGVkQXJyYXkgPVxuICAgIHwgSW50OEFycmF5XG4gICAgfCBVaW50OEFycmF5XG4gICAgfCBVaW50OENsYW1wZWRBcnJheVxuICAgIHwgSW50MTZBcnJheVxuICAgIHwgVWludDE2QXJyYXlcbiAgICB8IEludDMyQXJyYXlcbiAgICB8IFVpbnQzMkFycmF5XG4gICAgfCBGbG9hdDMyQXJyYXlcbiAgICB8IEZsb2F0NjRBcnJheVxuICAgIHwgQmlnSW50NjRBcnJheVxuICAgIHwgQmlnVWludDY0QXJyYXk7XG5cbi8qKlxuICogU2VyaWFsaXplcyBhbnkgaW5wdXQgdmFsdWUgaW50byBhIHN0cmluZyBmb3IgaGFzaGluZy5cbiAqXG4gKiBUaGlzIG1ldGhvZCB1c2VzIGJlc3QgZWZmb3J0cyB0byBnZW5lcmF0ZSBzdGFibGUgc2VyaWFsaXplZCB2YWx1ZXMuXG4gKiBIb3dldmVyLCBpdCBpcyBub3QgZGVzaWduZWQgZm9yIHNlY3VyaXR5IHB1cnBvc2VzLlxuICogS2VlcCBpbiBtaW5kIHRoYXQgdGhlcmUgaXMgYWx3YXlzIGEgY2hhbmNlIG9mIGludGVudGlvbmFsIGNvbGxpc2lvbnMgY2F1c2VkIGJ5IHVzZXIgaW5wdXQuXG4gKlxuICogQHBhcmFtIGlucHV0IGFueSB2YWx1ZSB0byBzZXJpYWxpemVcbiAqIEByZXR1cm4ge3N0cmluZ30gc2VyaWFsaXplZCBzdHJpbmcgdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZShpbnB1dDogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gYCcke2lucHV0fSdgO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFNlcmlhbGl6ZXIoKS5zZXJpYWxpemUoaW5wdXQpO1xufVxuXG5jb25zdCBTZXJpYWxpemVyID0gLypAX19QVVJFX18qLyAoZnVuY3Rpb24gKCkge1xuICAgIGNsYXNzIFNlcmlhbGl6ZXIge1xuICAgICAgICAjY29udGV4dCA9IG5ldyBNYXAoKTtcblxuICAgICAgICBjb21wYXJlKGE6IGFueSwgYjogYW55KTogbnVtYmVyIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVBID0gdHlwZW9mIGE7XG4gICAgICAgICAgICBjb25zdCB0eXBlQiA9IHR5cGVvZiBiO1xuXG4gICAgICAgICAgICBpZiAodHlwZUEgPT09ICdzdHJpbmcnICYmIHR5cGVCID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlQSA9PT0gJ251bWJlcicgJiYgdHlwZUIgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGEgLSBiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nLnByb3RvdHlwZS5sb2NhbGVDb21wYXJlLmNhbGwodGhpcy5zZXJpYWxpemUoYSwgdHJ1ZSksIHRoaXMuc2VyaWFsaXplKGIsIHRydWUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlcmlhbGl6ZSh2YWx1ZTogYW55LCBub1F1b3Rlcz86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdudWxsJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub1F1b3RlcyA/IHZhbHVlIDogYCcke3ZhbHVlfSdgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdiaWdpbnQnOiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHt2YWx1ZX1uYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kb2JqZWN0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRmdW5jdGlvbih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlcmlhbGl6ZU9iamVjdChvYmplY3Q6IGFueSk6IHN0cmluZyB7XG4gICAgICAgICAgICBjb25zdCBvYmpTdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KTtcblxuICAgICAgICAgICAgaWYgKG9ialN0cmluZyAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXJpYWxpemVCdWlsdEluVHlwZShcbiAgICAgICAgICAgICAgICAgICAgb2JqU3RyaW5nLmxlbmd0aCA8IDEwIC8qICdbb2JqZWN0IGFdJy5sZW5ndGggPT09IDEwLCB0aGUgbWluaW11bSAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBgdW5rbm93bjoke29ialN0cmluZ31gXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG9ialN0cmluZy5zbGljZSg4LCAtMSkgLyogJ1tvYmplY3QgJy5sZW5ndGggPT09IDggKi8sXG4gICAgICAgICAgICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgY29uc3Qgb2JqTmFtZSA9IGNvbnN0cnVjdG9yID09PSBPYmplY3QgfHwgY29uc3RydWN0b3IgPT09IHVuZGVmaW5lZCA/ICcnIDogY29uc3RydWN0b3IubmFtZTtcblxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgICAgaWYgKG9iak5hbWUgIT09ICcnICYmIGdsb2JhbFRoaXNbb2JqTmFtZV0gPT09IGNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplQnVpbHRJblR5cGUob2JqTmFtZSwgb2JqZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgndG9KU09OJyBpbiBvYmplY3QgJiYgdHlwZW9mIG9iamVjdC50b0pTT04gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gb2JqZWN0LnRvSlNPTigpO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIG9iak5hbWUgK1xuICAgICAgICAgICAgICAgICAgICAoanNvbiAhPT0gbnVsbCAmJiB0eXBlb2YganNvbiA9PT0gJ29iamVjdCcgPyB0aGlzLiRvYmplY3QoanNvbikgOiBgKCR7dGhpcy5zZXJpYWxpemUoanNvbil9KWApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCkuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcbiAgICAgICAgICAgIGxldCBjb250ZW50ID0gYCR7b2JqTmFtZX17YDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICAgICAgICAgICAgY29udGVudCArPSBgJHtrZXl9OiR7dGhpcy5zZXJpYWxpemUob2JqZWN0W2tleV0pfWA7XG4gICAgICAgICAgICAgICAgaWYgKGkgPCBrZXlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCArPSAnLCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQgKyAnfSc7XG4gICAgICAgIH1cblxuICAgICAgICBzZXJpYWxpemVCdWlsdEluVHlwZSh0eXBlOiBzdHJpbmcsIG9iamVjdDogYW55KSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICBjb25zdCBoYW5kbGVyID0gdGhpc1snJCcgKyB0eXBlXTtcbiAgICAgICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXIuY2FsbCh0aGlzLCBvYmplY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmplY3QuZW50cmllcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZU9iamVjdEVudHJpZXModHlwZSwgb2JqZWN0LmVudHJpZXMoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXJpYWxpemUgJHt0eXBlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VyaWFsaXplT2JqZWN0RW50cmllcyh0eXBlOiBzdHJpbmcsIGVudHJpZXM6IEl0ZXJhYmxlPFthbnksIGFueV0+KSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRFbnRyaWVzID0gQXJyYXkuZnJvbShlbnRyaWVzKS5zb3J0KChhLCBiKSA9PiB0aGlzLmNvbXBhcmUoYVswXSwgYlswXSkpO1xuICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBgJHt0eXBlfXtgO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRFbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0gc29ydGVkRW50cmllc1tpXTtcbiAgICAgICAgICAgICAgICBjb250ZW50ICs9IGAke3RoaXMuc2VyaWFsaXplKGtleSwgdHJ1ZSl9OiR7dGhpcy5zZXJpYWxpemUodmFsdWUpfWA7XG4gICAgICAgICAgICAgICAgaWYgKGkgPCBzb3J0ZWRFbnRyaWVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCArPSAnLCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQgKyAnfSc7XG4gICAgICAgIH1cblxuICAgICAgICAkb2JqZWN0KG9iamVjdDogYW55KSB7XG4gICAgICAgICAgICBsZXQgY29udGVudCA9IHRoaXMuI2NvbnRleHQuZ2V0KG9iamVjdCk7XG5cbiAgICAgICAgICAgIGlmIChjb250ZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNjb250ZXh0LnNldChvYmplY3QsIGAjJHt0aGlzLiNjb250ZXh0LnNpemV9YCk7XG4gICAgICAgICAgICAgICAgY29udGVudCA9IHRoaXMuc2VyaWFsaXplT2JqZWN0KG9iamVjdCk7XG4gICAgICAgICAgICAgICAgdGhpcy4jY29udGV4dC5zZXQob2JqZWN0LCBjb250ZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAkZnVuY3Rpb24oZm46IGFueSkge1xuICAgICAgICAgICAgY29uc3QgZm5TdHIgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChmbik7XG4gICAgICAgICAgICBpZiAoZm5TdHIuc2xpY2UoLTE1IC8qIFwiW25hdGl2ZSBjb2RlXSB9XCIubGVuZ3RoICovKSA9PT0gJ1tuYXRpdmUgY29kZV0gfScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Zm4ubmFtZSB8fCAnJ30oKVtuYXRpdmVdYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBgJHtmbi5uYW1lfSgke2ZuLmxlbmd0aH0pJHtmblN0ci5yZXBsYWNlKC9cXHMqXFxuXFxzKi9nLCAnJyl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgICRBcnJheShhcnI6IGFueVtdKSB7XG4gICAgICAgICAgICBsZXQgY29udGVudCA9ICdbJztcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29udGVudCArPSB0aGlzLnNlcmlhbGl6ZShhcnJbaV0pO1xuICAgICAgICAgICAgICAgIGlmIChpIDwgYXJyLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCArPSAnLCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQgKyAnXSc7XG4gICAgICAgIH1cblxuICAgICAgICAkRGF0ZShkYXRlOiBhbnkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBEYXRlKCR7ZGF0ZS50b0lTT1N0cmluZygpfSlgO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBEYXRlKG51bGwpYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICRBcnJheUJ1ZmZlcihhcnI6IEFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gYEFycmF5QnVmZmVyWyR7bmV3IFVpbnQ4QXJyYXkoYXJyKS5qb2luKCcsJyl9XWA7XG4gICAgICAgIH1cblxuICAgICAgICAkU2V0KHNldDogU2V0PGFueT4pIHtcbiAgICAgICAgICAgIHJldHVybiBgU2V0JHt0aGlzLiRBcnJheShBcnJheS5mcm9tKHNldCkuc29ydCgoYSwgYikgPT4gdGhpcy5jb21wYXJlKGEsIGIpKSl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgICRNYXAobWFwOiBNYXA8YW55LCBhbnk+KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXJpYWxpemVPYmplY3RFbnRyaWVzKCdNYXAnLCBtYXAuZW50cmllcygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdHlwZSBvZiBbJ0Vycm9yJywgJ1JlZ0V4cCcsICdVUkwnXSBhcyBjb25zdCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgU2VyaWFsaXplci5wcm90b3R5cGVbJyQnICsgdHlwZV0gPSBmdW5jdGlvbiAodmFsOiBhbnkpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHt0eXBlfSgke3ZhbH0pYDtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgW1xuICAgICAgICAnSW50OEFycmF5JyxcbiAgICAgICAgJ1VpbnQ4QXJyYXknLFxuICAgICAgICAnVWludDhDbGFtcGVkQXJyYXknLFxuICAgICAgICAnSW50MTZBcnJheScsXG4gICAgICAgICdVaW50MTZBcnJheScsXG4gICAgICAgICdJbnQzMkFycmF5JyxcbiAgICAgICAgJ1VpbnQzMkFycmF5JyxcbiAgICAgICAgJ0Zsb2F0MzJBcnJheScsXG4gICAgICAgICdGbG9hdDY0QXJyYXknXG4gICAgXSBhcyBjb25zdCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgU2VyaWFsaXplci5wcm90b3R5cGVbJyQnICsgdHlwZV0gPSBmdW5jdGlvbiAoYXJyOiBUeXBlZEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7dHlwZX1bJHthcnIuam9pbignLCcpfV1gO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdHlwZSBvZiBbJ0JpZ0ludDY0QXJyYXknLCAnQmlnVWludDY0QXJyYXknXSBhcyBjb25zdCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgU2VyaWFsaXplci5wcm90b3R5cGVbJyQnICsgdHlwZV0gPSBmdW5jdGlvbiAoYXJyOiBUeXBlZEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7dHlwZX1bJHthcnIuam9pbignbiwnKX0ke2Fyci5sZW5ndGggPiAwID8gJ24nIDogJyd9XWA7XG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBTZXJpYWxpemVyO1xufSkoKTtcbiJdfQ==","import { serialize } from './serialize';\n/**\n * Compare two objects using reference equality and stable deep hashing.\n * @param {any} object1 First object\n * @param {any} object2 Second object\n * @return {boolean} true if equal and false if not\n */\nexport function isEqual(object1, object2) {\n if (object1 === object2) {\n return true;\n }\n if (serialize(object1) === serialize(object2)) {\n return true;\n }\n return false;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZXF1YWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2lzLWVxdWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEM7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLE9BQVksRUFBRSxPQUFZO0lBQzlDLElBQUksT0FBTyxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gJy4vc2VyaWFsaXplJztcbi8qKlxuICogQ29tcGFyZSB0d28gb2JqZWN0cyB1c2luZyByZWZlcmVuY2UgZXF1YWxpdHkgYW5kIHN0YWJsZSBkZWVwIGhhc2hpbmcuXG4gKiBAcGFyYW0ge2FueX0gb2JqZWN0MSBGaXJzdCBvYmplY3RcbiAqIEBwYXJhbSB7YW55fSBvYmplY3QyIFNlY29uZCBvYmplY3RcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgZXF1YWwgYW5kIGZhbHNlIGlmIG5vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFcXVhbChvYmplY3QxOiBhbnksIG9iamVjdDI6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChvYmplY3QxID09PSBvYmplY3QyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoc2VyaWFsaXplKG9iamVjdDEpID09PSBzZXJpYWxpemUob2JqZWN0MikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbiJdfQ==","export function isInsideForm(el) {\n if (!el || !el.nativeElement) {\n return true;\n }\n return Boolean(el.nativeElement.closest('form'));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtaW5zaWRlLWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2lzLWluc2lkZS1mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxZQUFZLENBQUMsRUFBa0M7SUFDM0QsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnNpZGVGb3JtKGVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoIWVsIHx8ICFlbC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbihlbC5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ2Zvcm0nKSk7XG59XG4iXX0=","export function isNullish(value) {\n return value === null || value === undefined;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtbnVsbGlzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvY29yZS9zcmMvaXMtbnVsbGlzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQVU7SUFDaEMsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc051bGxpc2godmFsdWU6IGFueSk6IHZhbHVlIGlzIG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xufVxuIl19","export const isNumber = (v) => typeof v === 'number';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtbnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9jb3JlL3NyYy9pcy1udW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBTSxFQUFlLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgaXNOdW1iZXIgPSAodjogYW55KTogdiBpcyBudW1iZXIgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInO1xuIl19","import { isEqual } from './is-equal';\nimport { isNullish } from './is-nullish';\n/**\n * The function `isValueEqualOrExist` checks if a value is equal to or exists in another value or\n * array.\n * @param {T | T[] | undefined} base - It represents the base value that you want to compare with the `current` value.\n * @param {T | T[] | undefined} current - The `current` parameter represents the current value that you want to compare with the `base` value or values.\n * @returns The `isValueEqualOrExist` function returns a boolean value. It checks if the `base` value\n * is equal to the `current` value or if the `current` value exists within the `base` value. The\n * function handles cases where `base` can be a single value, an array of values, or undefined.\n */\nexport function isValueEqualOrExist(base, current) {\n if (isNullish(base))\n return false;\n if (Array.isArray(base)) {\n return base.some((val) => isEqual(val, current));\n }\n else {\n return isEqual(base, current);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNWYWx1ZUVxdWFsT3JFeGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvY29yZS9zcmMvaXNWYWx1ZUVxdWFsT3JFeGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUksSUFBeUIsRUFBRSxPQUE0QjtJQUMxRixJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNsQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICcuL2lzLWVxdWFsJztcbmltcG9ydCB7IGlzTnVsbGlzaCB9IGZyb20gJy4vaXMtbnVsbGlzaCc7XG5cbi8qKlxuICogVGhlIGZ1bmN0aW9uIGBpc1ZhbHVlRXF1YWxPckV4aXN0YCBjaGVja3MgaWYgYSB2YWx1ZSBpcyBlcXVhbCB0byBvciBleGlzdHMgaW4gYW5vdGhlciB2YWx1ZSBvclxuICogYXJyYXkuXG4gKiBAcGFyYW0ge1QgfCBUW10gfCB1bmRlZmluZWR9IGJhc2UgLSBJdCByZXByZXNlbnRzIHRoZSBiYXNlIHZhbHVlIHRoYXQgeW91IHdhbnQgdG8gY29tcGFyZSB3aXRoIHRoZSBgY3VycmVudGAgdmFsdWUuXG4gKiBAcGFyYW0ge1QgfCBUW10gfCB1bmRlZmluZWR9IGN1cnJlbnQgLSBUaGUgYGN1cnJlbnRgIHBhcmFtZXRlciByZXByZXNlbnRzIHRoZSBjdXJyZW50IHZhbHVlIHRoYXQgeW91IHdhbnQgdG8gY29tcGFyZSB3aXRoIHRoZSBgYmFzZWAgdmFsdWUgb3IgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIGBpc1ZhbHVlRXF1YWxPckV4aXN0YCBmdW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZS4gSXQgY2hlY2tzIGlmIHRoZSBgYmFzZWAgdmFsdWVcbiAqIGlzIGVxdWFsIHRvIHRoZSBgY3VycmVudGAgdmFsdWUgb3IgaWYgdGhlIGBjdXJyZW50YCB2YWx1ZSBleGlzdHMgd2l0aGluIHRoZSBgYmFzZWAgdmFsdWUuIFRoZVxuICogZnVuY3Rpb24gaGFuZGxlcyBjYXNlcyB3aGVyZSBgYmFzZWAgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBhbiBhcnJheSBvZiB2YWx1ZXMsIG9yIHVuZGVmaW5lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsdWVFcXVhbE9yRXhpc3Q8VD4oYmFzZTogVCB8IFRbXSB8IHVuZGVmaW5lZCwgY3VycmVudDogVCB8IFRbXSB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChpc051bGxpc2goYmFzZSkpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShiYXNlKSkge1xuICAgICAgICByZXR1cm4gYmFzZS5zb21lKCh2YWwpID0+IGlzRXF1YWwodmFsLCBjdXJyZW50KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGlzRXF1YWwoYmFzZSwgY3VycmVudCk7XG4gICAgfVxufVxuIl19","export const ALT = 'Alt';\nexport const ARROW_DOWN = 'ArrowDown';\nexport const ARROW_LEFT = 'ArrowLeft';\nexport const ARROW_RIGHT = 'ArrowRight';\nexport const ARROW_UP = 'ArrowUp';\nexport const BACKSPACE = 'Backspace';\nexport const CAPS_LOCK = 'CapsLock';\nexport const CONTROL = 'Control';\nexport const DELETE = 'Delete';\nexport const END = 'End';\nexport const ENTER = 'Enter';\nexport const ESCAPE = 'Escape';\nexport const F1 = 'F1';\nexport const F10 = 'F10';\nexport const F11 = 'F11';\nexport const F12 = 'F12';\nexport const F2 = 'F2';\nexport const F3 = 'F3';\nexport const F4 = 'F4';\nexport const F5 = 'F5';\nexport const F6 = 'F6';\nexport const F7 = 'F7';\nexport const F8 = 'F8';\nexport const F9 = 'F9';\nexport const HOME = 'Home';\nexport const META = 'Meta';\nexport const PAGE_DOWN = 'PageDown';\nexport const PAGE_UP = 'PageUp';\nexport const SHIFT = 'Shift';\nexport const SPACE = ' ';\nexport const TAB = 'Tab';\nexport const CTRL = 'Control';\nexport const ASTERISK = '*';\nexport const a = 'a';\nexport const P = 'P';\nexport const A = 'A';\nexport const p = 'p';\nexport const n = 'n';\nexport const j = 'j';\nexport const k = 'k';\nexport const SPACE_CODE = 'Space';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2JkLWNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvY29yZS9zcmMva2JkLWNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUM7QUFDdEMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQztBQUN0QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUM7QUFDbEMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUNyQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFDakMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUMvQixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFDN0IsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUMvQixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDekIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQztBQUN6QixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDdkIsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztBQUN2QixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDdkIsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztBQUN2QixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDdkIsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztBQUN2QixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBQzNCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7QUFDM0IsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQztBQUNwQyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFDN0IsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQztBQUN6QixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUM7QUFDOUIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztBQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDckIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDckIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQUxUID0gJ0FsdCc7XG5leHBvcnQgY29uc3QgQVJST1dfRE9XTiA9ICdBcnJvd0Rvd24nO1xuZXhwb3J0IGNvbnN0IEFSUk9XX0xFRlQgPSAnQXJyb3dMZWZ0JztcbmV4cG9ydCBjb25zdCBBUlJPV19SSUdIVCA9ICdBcnJvd1JpZ2h0JztcbmV4cG9ydCBjb25zdCBBUlJPV19VUCA9ICdBcnJvd1VwJztcbmV4cG9ydCBjb25zdCBCQUNLU1BBQ0UgPSAnQmFja3NwYWNlJztcbmV4cG9ydCBjb25zdCBDQVBTX0xPQ0sgPSAnQ2Fwc0xvY2snO1xuZXhwb3J0IGNvbnN0IENPTlRST0wgPSAnQ29udHJvbCc7XG5leHBvcnQgY29uc3QgREVMRVRFID0gJ0RlbGV0ZSc7XG5leHBvcnQgY29uc3QgRU5EID0gJ0VuZCc7XG5leHBvcnQgY29uc3QgRU5URVIgPSAnRW50ZXInO1xuZXhwb3J0IGNvbnN0IEVTQ0FQRSA9ICdFc2NhcGUnO1xuZXhwb3J0IGNvbnN0IEYxID0gJ0YxJztcbmV4cG9ydCBjb25zdCBGMTAgPSAnRjEwJztcbmV4cG9ydCBjb25zdCBGMTEgPSAnRjExJztcbmV4cG9ydCBjb25zdCBGMTIgPSAnRjEyJztcbmV4cG9ydCBjb25zdCBGMiA9ICdGMic7XG5leHBvcnQgY29uc3QgRjMgPSAnRjMnO1xuZXhwb3J0IGNvbnN0IEY0ID0gJ0Y0JztcbmV4cG9ydCBjb25zdCBGNSA9ICdGNSc7XG5leHBvcnQgY29uc3QgRjYgPSAnRjYnO1xuZXhwb3J0IGNvbnN0IEY3ID0gJ0Y3JztcbmV4cG9ydCBjb25zdCBGOCA9ICdGOCc7XG5leHBvcnQgY29uc3QgRjkgPSAnRjknO1xuZXhwb3J0IGNvbnN0IEhPTUUgPSAnSG9tZSc7XG5leHBvcnQgY29uc3QgTUVUQSA9ICdNZXRhJztcbmV4cG9ydCBjb25zdCBQQUdFX0RPV04gPSAnUGFnZURvd24nO1xuZXhwb3J0IGNvbnN0IFBBR0VfVVAgPSAnUGFnZVVwJztcbmV4cG9ydCBjb25zdCBTSElGVCA9ICdTaGlmdCc7XG5leHBvcnQgY29uc3QgU1BBQ0UgPSAnICc7XG5leHBvcnQgY29uc3QgVEFCID0gJ1RhYic7XG5leHBvcnQgY29uc3QgQ1RSTCA9ICdDb250cm9sJztcbmV4cG9ydCBjb25zdCBBU1RFUklTSyA9ICcqJztcbmV4cG9ydCBjb25zdCBhID0gJ2EnO1xuZXhwb3J0IGNvbnN0IFAgPSAnUCc7XG5leHBvcnQgY29uc3QgQSA9ICdBJztcbmV4cG9ydCBjb25zdCBwID0gJ3AnO1xuZXhwb3J0IGNvbnN0IG4gPSAnbic7XG5leHBvcnQgY29uc3QgaiA9ICdqJztcbmV4cG9ydCBjb25zdCBrID0gJ2snO1xuZXhwb3J0IGNvbnN0IFNQQUNFX0NPREUgPSAnU3BhY2UnO1xuIl19","import { forwardRef } from '@angular/core';\n/**\n * Creates an Angular provider that binds the given token to the existing instance\n * of the specified class. This is especially useful when you want multiple\n * tokens (or interfaces) to resolve to the same directive/component instance.\n *\n * @template T - The type associated with the injection token.\n * @param token - The InjectionToken or abstract type you want to provide.\n * @param type - The class type whose existing instance will be used for this token.\n * @returns A Provider configuration object for Angular's DI system.\n *\n * @example\n *\n * @Directive({\n * providers: [\n * provideToken(RdxToggleGroupToken, RdxToggleGroupDirective),\n * provideValueAccessor(RdxToggleGroupDirective)\n * ]\n * })\n * export class RdxToggleGroupDirective {}\n */\nexport function provideToken(token, type) {\n return {\n provide: token,\n useExisting: forwardRef(() => type)\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvY29yZS9zcmMvcHJvdmlkZS10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFrQyxNQUFNLGVBQWUsQ0FBQztBQUUzRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUksS0FBd0IsRUFBRSxJQUFtQjtJQUN6RSxPQUFPO1FBQ0gsT0FBTyxFQUFFLEtBQUs7UUFDZCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztLQUN0QyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcndhcmRSZWYsIEluamVjdGlvblRva2VuLCBQcm92aWRlciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gQW5ndWxhciBwcm92aWRlciB0aGF0IGJpbmRzIHRoZSBnaXZlbiB0b2tlbiB0byB0aGUgZXhpc3RpbmcgaW5zdGFuY2VcbiAqIG9mIHRoZSBzcGVjaWZpZWQgY2xhc3MuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgd2hlbiB5b3Ugd2FudCBtdWx0aXBsZVxuICogdG9rZW5zIChvciBpbnRlcmZhY2VzKSB0byByZXNvbHZlIHRvIHRoZSBzYW1lIGRpcmVjdGl2ZS9jb21wb25lbnQgaW5zdGFuY2UuXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggdGhlIGluamVjdGlvbiB0b2tlbi5cbiAqIEBwYXJhbSB0b2tlbiAtIFRoZSBJbmplY3Rpb25Ub2tlbiBvciBhYnN0cmFjdCB0eXBlIHlvdSB3YW50IHRvIHByb3ZpZGUuXG4gKiBAcGFyYW0gdHlwZSAgLSBUaGUgY2xhc3MgdHlwZSB3aG9zZSBleGlzdGluZyBpbnN0YW5jZSB3aWxsIGJlIHVzZWQgZm9yIHRoaXMgdG9rZW4uXG4gKiBAcmV0dXJucyBBIFByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBBbmd1bGFyJ3MgREkgc3lzdGVtLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogQERpcmVjdGl2ZSh7XG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHByb3ZpZGVUb2tlbihSZHhUb2dnbGVHcm91cFRva2VuLCBSZHhUb2dnbGVHcm91cERpcmVjdGl2ZSksXG4gKiAgICAgcHJvdmlkZVZhbHVlQWNjZXNzb3IoUmR4VG9nZ2xlR3JvdXBEaXJlY3RpdmUpXG4gKiAgIF1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgUmR4VG9nZ2xlR3JvdXBEaXJlY3RpdmUge31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVUb2tlbjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHR5cGU6IFR5cGU8dW5rbm93bj4pOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvdmlkZTogdG9rZW4sXG4gICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IHR5cGUpXG4gICAgfTtcbn1cbiJdfQ==","import { inject, InjectionToken } from '@angular/core';\nimport { injectDocument } from './document';\nexport const WINDOW = new InjectionToken('An abstraction over global window object', {\n factory: () => {\n const { defaultView } = injectDocument();\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n return defaultView;\n }\n});\nexport function injectWindow() {\n return inject(WINDOW);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9jb3JlL3NyYy93aW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQTZCLDBDQUEwQyxFQUFFO0lBQzdHLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDVixNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0NBQ0osQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLFlBQVk7SUFDeEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdERvY3VtZW50IH0gZnJvbSAnLi9kb2N1bWVudCc7XG5cbmV4cG9ydCBjb25zdCBXSU5ET1cgPSBuZXcgSW5qZWN0aW9uVG9rZW48V2luZG93ICYgdHlwZW9mIGdsb2JhbFRoaXM+KCdBbiBhYnN0cmFjdGlvbiBvdmVyIGdsb2JhbCB3aW5kb3cgb2JqZWN0Jywge1xuICAgIGZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgY29uc3QgeyBkZWZhdWx0VmlldyB9ID0gaW5qZWN0RG9jdW1lbnQoKTtcbiAgICAgICAgaWYgKCFkZWZhdWx0Vmlldykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXaW5kb3cgaXMgbm90IGF2YWlsYWJsZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmlldztcbiAgICB9XG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFdpbmRvdygpOiBXaW5kb3cgJiB0eXBlb2YgZ2xvYmFsVGhpcyB7XG4gICAgcmV0dXJuIGluamVjdChXSU5ET1cpO1xufVxuIl19","// Thanks for idea.\n// https://github.com/unovue/reka-ui/blob/v2/packages/core/src/shared/createContext.ts\nimport { inject, InjectionToken } from '@angular/core';\n/**\n * Creates a context with injector and provider functions for a given type\n * @template T The type of the context value\n * @param description Descriptive string for the context (used in token creation)\n * @returns A tuple containing:\n * - injectContext: Function to retrieve the context value\n * - provideContext: Function to create a provider for the context\n */\nexport function createContext(description) {\n const CONTEXT_TOKEN = new InjectionToken(`${description}Context`);\n /**\n * Retrieves the context value from Angular's dependency injection\n * @param optional If true, returns null when context is not provided instead of throwing\n * @returns The context value or null if optional and not provided\n * @throws Error when context is not provided and not optional\n */\n const injectContext = (optional = false) => {\n const value = optional ? inject(CONTEXT_TOKEN, { optional: true }) : inject(CONTEXT_TOKEN);\n if (value == null && !optional) {\n throw new Error(`No context provided for token ${CONTEXT_TOKEN.toString()}`);\n }\n return value;\n };\n /**\n * Creates a provider that can be used to supply the context value\n * @param useFactory Factory function that creates the context value\n * @returns A provider that can be registered in Angular's DI system\n */\n const provideContext = (useFactory) => ({\n provide: CONTEXT_TOKEN,\n useFactory: useFactory\n });\n return [injectContext, provideContext];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2NyZWF0ZS1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQjtBQUNuQixzRkFBc0Y7QUFFdEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFakU7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQ3pCLFdBQW1CO0lBRW5CLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFJLEdBQUcsV0FBVyxTQUFTLENBQUMsQ0FBQztJQUVyRTs7Ozs7T0FLRztJQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssRUFBWSxFQUFFO1FBQ2pELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFM0YsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQyxDQUFDO0lBRUY7Ozs7T0FJRztJQUNILE1BQU0sY0FBYyxHQUFHLENBQUMsVUFBbUIsRUFBWSxFQUFFLENBQUMsQ0FBQztRQUN2RCxPQUFPLEVBQUUsYUFBYTtRQUN0QixVQUFVLEVBQUUsVUFBVTtLQUN6QixDQUFDLENBQUM7SUFFSCxPQUFPLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBVSxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFua3MgZm9yIGlkZWEuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdW5vdnVlL3Jla2EtdWkvYmxvYi92Mi9wYWNrYWdlcy9jb3JlL3NyYy9zaGFyZWQvY3JlYXRlQ29udGV4dC50c1xuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGlvblRva2VuLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjb250ZXh0IHdpdGggaW5qZWN0b3IgYW5kIHByb3ZpZGVyIGZ1bmN0aW9ucyBmb3IgYSBnaXZlbiB0eXBlXG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgY29udGV4dCB2YWx1ZVxuICogQHBhcmFtIGRlc2NyaXB0aW9uIERlc2NyaXB0aXZlIHN0cmluZyBmb3IgdGhlIGNvbnRleHQgKHVzZWQgaW4gdG9rZW4gY3JlYXRpb24pXG4gKiBAcmV0dXJucyBBIHR1cGxlIGNvbnRhaW5pbmc6XG4gKiAgIC0gaW5qZWN0Q29udGV4dDogRnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlIGNvbnRleHQgdmFsdWVcbiAqICAgLSBwcm92aWRlQ29udGV4dDogRnVuY3Rpb24gdG8gY3JlYXRlIGEgcHJvdmlkZXIgZm9yIHRoZSBjb250ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0PFQ+KFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmdcbik6IHJlYWRvbmx5IFtpbmplY3RDb250ZXh0OiAob3B0aW9uYWw/OiBib29sZWFuKSA9PiBUIHwgbnVsbCwgcHJvdmlkZUNvbnRleHQ6ICh1c2VGYWN0b3J5OiAoKSA9PiBUKSA9PiBQcm92aWRlcl0ge1xuICAgIGNvbnN0IENPTlRFWFRfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48VD4oYCR7ZGVzY3JpcHRpb259Q29udGV4dGApO1xuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBjb250ZXh0IHZhbHVlIGZyb20gQW5ndWxhcidzIGRlcGVuZGVuY3kgaW5qZWN0aW9uXG4gICAgICogQHBhcmFtIG9wdGlvbmFsIElmIHRydWUsIHJldHVybnMgbnVsbCB3aGVuIGNvbnRleHQgaXMgbm90IHByb3ZpZGVkIGluc3RlYWQgb2YgdGhyb3dpbmdcbiAgICAgKiBAcmV0dXJucyBUaGUgY29udGV4dCB2YWx1ZSBvciBudWxsIGlmIG9wdGlvbmFsIGFuZCBub3QgcHJvdmlkZWRcbiAgICAgKiBAdGhyb3dzIEVycm9yIHdoZW4gY29udGV4dCBpcyBub3QgcHJvdmlkZWQgYW5kIG5vdCBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbnN0IGluamVjdENvbnRleHQgPSAob3B0aW9uYWwgPSBmYWxzZSk6IFQgfCBudWxsID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25hbCA/IGluamVjdChDT05URVhUX1RPS0VOLCB7IG9wdGlvbmFsOiB0cnVlIH0pIDogaW5qZWN0KENPTlRFWFRfVE9LRU4pO1xuXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsICYmICFvcHRpb25hbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBjb250ZXh0IHByb3ZpZGVkIGZvciB0b2tlbiAke0NPTlRFWFRfVE9LRU4udG9TdHJpbmcoKX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHByb3ZpZGVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3VwcGx5IHRoZSBjb250ZXh0IHZhbHVlXG4gICAgICogQHBhcmFtIHVzZUZhY3RvcnkgRmFjdG9yeSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgdGhlIGNvbnRleHQgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBBIHByb3ZpZGVyIHRoYXQgY2FuIGJlIHJlZ2lzdGVyZWQgaW4gQW5ndWxhcidzIERJIHN5c3RlbVxuICAgICAqL1xuICAgIGNvbnN0IHByb3ZpZGVDb250ZXh0ID0gKHVzZUZhY3Rvcnk6ICgpID0+IFQpOiBQcm92aWRlciA9PiAoe1xuICAgICAgICBwcm92aWRlOiBDT05URVhUX1RPS0VOLFxuICAgICAgICB1c2VGYWN0b3J5OiB1c2VGYWN0b3J5XG4gICAgfSk7XG5cbiAgICByZXR1cm4gW2luamVjdENvbnRleHQsIHByb3ZpZGVDb250ZXh0XSBhcyBjb25zdDtcbn1cbiJdfQ==","/**\n * Splits an array into chunks of a given size.\n * @param arr The array to split.\n * @param size The size of each chunk.\n * @returns An array of arrays, where each sub-array has `size` elements from the original array.\n * @example ```ts\n * const arr = [1, 2, 3, 4, 5, 6, 7, 8];\n * const chunks = chunk(arr, 3);\n * // chunks = [[1, 2, 3], [4, 5, 6], [7, 8]]\n * ```\n */\nexport function chunk(arr, size) {\n const result = [];\n for (let i = 0; i < arr.length; i += size)\n result.push(arr.slice(i, i + size));\n return result;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1bmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2NodW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFJLEdBQVEsRUFBRSxJQUFZO0lBQzNDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksSUFBSTtRQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFL0UsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3BsaXRzIGFuIGFycmF5IGludG8gY2h1bmtzIG9mIGEgZ2l2ZW4gc2l6ZS5cbiAqIEBwYXJhbSBhcnIgVGhlIGFycmF5IHRvIHNwbGl0LlxuICogQHBhcmFtIHNpemUgVGhlIHNpemUgb2YgZWFjaCBjaHVuay5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFycmF5cywgd2hlcmUgZWFjaCBzdWItYXJyYXkgaGFzIGBzaXplYCBlbGVtZW50cyBmcm9tIHRoZSBvcmlnaW5hbCBhcnJheS5cbiAqIEBleGFtcGxlIGBgYHRzXG4gKiBjb25zdCBhcnIgPSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOF07XG4gKiBjb25zdCBjaHVua3MgPSBjaHVuayhhcnIsIDMpO1xuICogLy8gY2h1bmtzID0gW1sxLCAyLCAzXSwgWzQsIDUsIDZdLCBbNywgOF1dXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNodW5rPFQ+KGFycjogVFtdLCBzaXplOiBudW1iZXIpOiBUW11bXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpICs9IHNpemUpIHJlc3VsdC5wdXNoKGFyci5zbGljZShpLCBpICsgc2l6ZSkpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==","import { CalendarDate, CalendarDateTime, createCalendar, DateFormatter, getDayOfWeek, getLocalTimeZone, Time, toCalendar, ZonedDateTime } from '@internationalized/date';\n/**\n * Given a `DateValue` object, convert it to a native `Date` object.\n * If a timezone is provided, the date will be converted to that timezone.\n * If no timezone is provided, the date will be converted to the local timezone.\n */\nexport function toDate(dateValue, tz = getLocalTimeZone()) {\n if (isZonedDateTime(dateValue))\n return dateValue.toDate();\n else\n return dateValue.toDate(tz);\n}\nexport function isCalendarDateTime(dateValue) {\n return dateValue instanceof CalendarDateTime;\n}\nexport function isZonedDateTime(dateValue) {\n return dateValue instanceof ZonedDateTime;\n}\nexport function hasTime(dateValue) {\n return isCalendarDateTime(dateValue) || isZonedDateTime(dateValue);\n}\n/**\n * Given a date, return the number of days in the month.\n */\nexport function getDaysInMonth(date) {\n if (date instanceof Date) {\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n /**\n * By using zero as the day, we get the\n * last day of the previous month, which\n * is the month we originally passed in.\n */\n return new Date(year, month, 0).getDate();\n }\n else {\n return date.set({ day: 100 }).day;\n }\n}\n/**\n * Determine if a date is before the reference date.\n * @param dateToCompare - is this date before the `referenceDate`\n * @param referenceDate - is the `dateToCompare` before this date\n *\n * @see {@link isBeforeOrSame} for inclusive\n */\nexport function isBefore(dateToCompare, referenceDate) {\n return dateToCompare.compare(referenceDate) < 0;\n}\n/**\n * Determine if a date is after the reference date.\n * @param dateToCompare - is this date after the `referenceDate`\n * @param referenceDate - is the `dateToCompare` after this date\n *\n * @see {@link isAfterOrSame} for inclusive\n */\nexport function isAfter(dateToCompare, referenceDate) {\n return dateToCompare.compare(referenceDate) > 0;\n}\n/**\n * Determine if a date is before or the same as the reference date.\n *\n * @param dateToCompare - the date to compare\n * @param referenceDate - the reference date to make the comparison against\n *\n * @see {@link isBefore} for non-inclusive\n */\nexport function isBeforeOrSame(dateToCompare, referenceDate) {\n return dateToCompare.compare(referenceDate) <= 0;\n}\n/**\n * Determine if a date is after or the same as the reference date.\n *\n * @param dateToCompare - is this date after or the same as the `referenceDate`\n * @param referenceDate - is the `dateToCompare` after or the same as this date\n *\n * @see {@link isAfter} for non-inclusive\n */\nexport function isAfterOrSame(dateToCompare, referenceDate) {\n return dateToCompare.compare(referenceDate) >= 0;\n}\n/**\n * Determine if a date is inclusively between a start and end reference date.\n *\n * @param date - is this date inclusively between the `start` and `end` dates\n * @param start - the start reference date to make the comparison against\n * @param end - the end reference date to make the comparison against\n *\n * @see {@link isBetween} for non-inclusive\n */\nexport function isBetweenInclusive(date, start, end) {\n return isAfterOrSame(date, start) && isBeforeOrSame(date, end);\n}\n/**\n * Determine if a date is between a start and end reference date.\n *\n * @param date - is this date between the `start` and `end` dates\n * @param start - the start reference date to make the comparison against\n * @param end - the end reference date to make the comparison against\n *\n * @see {@link isBetweenInclusive} for inclusive\n */\nexport function isBetween(date, start, end) {\n return isAfter(date, start) && isBefore(date, end);\n}\nexport function getLastFirstDayOfWeek(date, firstDayOfWeek, locale) {\n const day = getDayOfWeek(date, locale);\n if (firstDayOfWeek > day)\n return date.subtract({ days: day + 7 - firstDayOfWeek });\n if (firstDayOfWeek === day)\n return date;\n return date.subtract({ days: day - firstDayOfWeek });\n}\nexport function getNextLastDayOfWeek(date, firstDayOfWeek, locale) {\n const day = getDayOfWeek(date, locale);\n const lastDayOfWeek = firstDayOfWeek === 0 ? 6 : firstDayOfWeek - 1;\n if (day === lastDayOfWeek)\n return date;\n if (day > lastDayOfWeek)\n return date.add({ days: 7 - day + lastDayOfWeek });\n return date.add({ days: lastDayOfWeek - day });\n}\nexport function areAllDaysBetweenValid(start, end, isUnavailable, isDisabled) {\n if (isUnavailable === undefined && isDisabled === undefined)\n return true;\n let dCurrent = start.add({ days: 1 });\n if (isDisabled?.(dCurrent) || isUnavailable?.(dCurrent))\n return false;\n const dEnd = end;\n while (dCurrent.compare(dEnd) < 0) {\n dCurrent = dCurrent.add({ days: 1 });\n if (isDisabled?.(dCurrent) || isUnavailable?.(dCurrent))\n return false;\n }\n return true;\n}\n/**\n * A helper function used throughout the various date builders\n * to generate a default `DateValue` using the `defaultValue`,\n * `defaultPlaceholder`, and `granularity` props.\n *\n * It's important to match the `DateValue` type being used\n * elsewhere in the builder, so they behave according to the\n * behavior the user expects based on the props they've provided.\n *\n */\nexport function getDefaultDate(props) {\n const { defaultValue, defaultPlaceholder, granularity = 'day', locale = 'en' } = props;\n if (Array.isArray(defaultValue) && defaultValue.length)\n return defaultValue[defaultValue.length - 1].copy();\n if (defaultValue && !Array.isArray(defaultValue))\n return defaultValue.copy();\n if (defaultPlaceholder)\n return defaultPlaceholder.copy();\n const date = new Date();\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const day = date.getDate();\n const calendarDateTimeGranularities = ['hour', 'minute', 'second'];\n const defaultFormatter = new DateFormatter(locale);\n const calendar = createCalendar(defaultFormatter.resolvedOptions().calendar);\n if (calendarDateTimeGranularities.includes(granularity ?? 'day'))\n return toCalendar(new CalendarDateTime(year, month, day, 0, 0, 0), calendar);\n return toCalendar(new CalendarDate(year, month, day), calendar);\n}\nexport function getDefaultTime(props) {\n const { defaultValue, defaultPlaceholder } = props;\n if (defaultValue) {\n return defaultValue.copy();\n }\n if (defaultPlaceholder) {\n return defaultPlaceholder.copy();\n }\n return new Time(0, 0, 0);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2RhdGUtdGltZS9jb21wYXJhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsWUFBWSxFQUNaLGdCQUFnQixFQUVoQixjQUFjLEVBQ2QsYUFBYSxFQUViLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLFVBQVUsRUFDVixhQUFhLEVBQ2hCLE1BQU0seUJBQXlCLENBQUM7QUFHakM7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsU0FBb0IsRUFBRSxLQUFhLGdCQUFnQixFQUFFO0lBQ3hFLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDOztRQUNyRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxTQUFvQjtJQUNuRCxPQUFPLFNBQVMsWUFBWSxnQkFBZ0IsQ0FBQztBQUNqRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxTQUFvQjtJQUNoRCxPQUFPLFNBQVMsWUFBWSxhQUFhLENBQUM7QUFDOUMsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsU0FBb0I7SUFDeEMsT0FBTyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFzQjtJQUNqRCxJQUFJLElBQUksWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFB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Q0FBQztRQUNmLE9BQU8sWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDckIsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENhbGVuZGFyRGF0ZSxcbiAgICBDYWxlbmRhckRhdGVUaW1lLFxuICAgIENhbGVuZGFySWRlbnRpZmllcixcbiAgICBjcmVhdGVDYWxlbmRhcixcbiAgICBEYXRlRm9ybWF0dGVyLFxuICAgIHR5cGUgRGF0ZVZhbHVlLFxuICAgIGdldERheU9mV2VlayxcbiAgICBnZXRMb2NhbFRpbWVab25lLFxuICAgIFRpbWUsXG4gICAgdG9DYWxlbmRhcixcbiAgICBab25lZERhdGVUaW1lXG59IGZyb20gJ0BpbnRlcm5hdGlvbmFsaXplZC9kYXRlJztcbmltcG9ydCB0eXBlIHsgRGF0ZU1hdGNoZXIgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBHaXZlbiBhIGBEYXRlVmFsdWVgIG9iamVjdCwgY29udmVydCBpdCB0byBhIG5hdGl2ZSBgRGF0ZWAgb2JqZWN0LlxuICogSWYgYSB0aW1lem9uZSBpcyBwcm92aWRlZCwgdGhlIGRhdGUgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhhdCB0aW1lem9uZS5cbiAqIElmIG5vIHRpbWV6b25lIGlzIHByb3ZpZGVkLCB0aGUgZGF0ZSB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgbG9jYWwgdGltZXpvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoZGF0ZVZhbHVlOiBEYXRlVmFsdWUsIHR6OiBzdHJpbmcgPSBnZXRMb2NhbFRpbWVab25lKCkpIHtcbiAgICBpZiAoaXNab25lZERhdGVUaW1lKGRhdGVWYWx1ZSkpIHJldHVybiBkYXRlVmFsdWUudG9EYXRlKCk7XG4gICAgZWxzZSByZXR1cm4gZGF0ZVZhbHVlLnRvRGF0ZSh0eik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbGVuZGFyRGF0ZVRpbWUoZGF0ZVZhbHVlOiBEYXRlVmFsdWUpOiBkYXRlVmFsdWUgaXMgQ2FsZW5kYXJEYXRlVGltZSB7XG4gICAgcmV0dXJuIGRhdGVWYWx1ZSBpbnN0YW5jZW9mIENhbGVuZGFyRGF0ZVRpbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1pvbmVkRGF0ZVRpbWUoZGF0ZVZhbHVlOiBEYXRlVmFsdWUpOiBkYXRlVmFsdWUgaXMgWm9uZWREYXRlVGltZSB7XG4gICAgcmV0dXJuIGRhdGVWYWx1ZSBpbnN0YW5jZW9mIFpvbmVkRGF0ZVRpbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNUaW1lKGRhdGVWYWx1ZTogRGF0ZVZhbHVlKSB7XG4gICAgcmV0dXJuIGlzQ2FsZW5kYXJEYXRlVGltZShkYXRlVmFsdWUpIHx8IGlzWm9uZWREYXRlVGltZShkYXRlVmFsdWUpO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgZGF0ZSwgcmV0dXJuIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgbW9udGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXlzSW5Nb250aChkYXRlOiBEYXRlIHwgRGF0ZVZhbHVlKSB7XG4gICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgMTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJ5IHVzaW5nIHplcm8gYXMgdGhlIGRheSwgd2UgZ2V0IHRoZVxuICAgICAgICAgKiBsYXN0IGRheSBvZiB0aGUgcHJldmlvdXMgbW9udGgsIHdoaWNoXG4gICAgICAgICAqIGlzIHRoZSBtb250aCB3ZSBvcmlnaW5hbGx5IHBhc3NlZCBpbi5cbiAgICAgICAgICovXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMCkuZ2V0RGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkYXRlLnNldCh7IGRheTogMTAwIH0pLmRheTtcbiAgICB9XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgZGF0ZSBpcyBiZWZvcmUgdGhlIHJlZmVyZW5jZSBkYXRlLlxuICogQHBhcmFtIGRhdGVUb0NvbXBhcmUgLSBpcyB0aGlzIGRhdGUgYmVmb3JlIHRoZSBgcmVmZXJlbmNlRGF0ZWBcbiAqIEBwYXJhbSByZWZlcmVuY2VEYXRlIC0gaXMgdGhlIGBkYXRlVG9Db21wYXJlYCBiZWZvcmUgdGhpcyBkYXRlXG4gKlxuICogQHNlZSB7QGxpbmsgaXNCZWZvcmVPclNhbWV9IGZvciBpbmNsdXNpdmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQmVmb3JlKGRhdGVUb0NvbXBhcmU6IERhdGVWYWx1ZSwgcmVmZXJlbmNlRGF0ZTogRGF0ZVZhbHVlKSB7XG4gICAgcmV0dXJuIGRhdGVUb0NvbXBhcmUuY29tcGFyZShyZWZlcmVuY2VEYXRlKSA8IDA7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgZGF0ZSBpcyBhZnRlciB0aGUgcmVmZXJlbmNlIGRhdGUuXG4gKiBAcGFyYW0gZGF0ZVRvQ29tcGFyZSAtIGlzIHRoaXMgZGF0ZSBhZnRlciB0aGUgYHJlZmVyZW5jZURhdGVgXG4gKiBAcGFyYW0gcmVmZXJlbmNlRGF0ZSAtIGlzIHRoZSBgZGF0ZVRvQ29tcGFyZWAgYWZ0ZXIgdGhpcyBkYXRlXG4gKlxuICogQHNlZSB7QGxpbmsgaXNBZnRlck9yU2FtZX0gZm9yIGluY2x1c2l2ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBZnRlcihkYXRlVG9Db21wYXJlOiBEYXRlVmFsdWUsIHJlZmVyZW5jZURhdGU6IERhdGVWYWx1ZSkge1xuICAgIHJldHVybiBkYXRlVG9Db21wYXJlLmNvbXBhcmUocmVmZXJlbmNlRGF0ZSkgPiAwO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIGRhdGUgaXMgYmVmb3JlIG9yIHRoZSBzYW1lIGFzIHRoZSByZWZlcmVuY2UgZGF0ZS5cbiAqXG4gKiBAcGFyYW0gZGF0ZVRvQ29tcGFyZSAtIHRoZSBkYXRlIHRvIGNvbXBhcmVcbiAqIEBwYXJhbSByZWZlcmVuY2VEYXRlIC0gdGhlIHJlZmVyZW5jZSBkYXRlIHRvIG1ha2UgdGhlIGNvbXBhcmlzb24gYWdhaW5zdFxuICpcbiAqIEBzZWUge0BsaW5rIGlzQmVmb3JlfSBmb3Igbm9uLWluY2x1c2l2ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCZWZvcmVPclNhbWUoZGF0ZVRvQ29tcGFyZTogRGF0ZVZhbHVlLCByZWZlcmVuY2VEYXRlOiBEYXRlVmFsdWUpIHtcbiAgICByZXR1cm4gZGF0ZVRvQ29tcGFyZS5jb21wYXJlKHJlZmVyZW5jZURhdGUpIDw9IDA7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgZGF0ZSBpcyBhZnRlciBvciB0aGUgc2FtZSBhcyB0aGUgcmVmZXJlbmNlIGRhdGUuXG4gKlxuICogQHBhcmFtIGRhdGVUb0NvbXBhcmUgLSBpcyB0aGlzIGRhdGUgYWZ0ZXIgb3IgdGhlIHNhbWUgYXMgdGhlIGByZWZlcmVuY2VEYXRlYFxuICogQHBhcmFtIHJlZmVyZW5jZURhdGUgLSBpcyB0aGUgYGRhdGVUb0NvbXBhcmVgIGFmdGVyIG9yIHRoZSBzYW1lIGFzIHRoaXMgZGF0ZVxuICpcbiAqIEBzZWUge0BsaW5rIGlzQWZ0ZXJ9IGZvciBub24taW5jbHVzaXZlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FmdGVyT3JTYW1lKGRhdGVUb0NvbXBhcmU6IERhdGVWYWx1ZSwgcmVmZXJlbmNlRGF0ZTogRGF0ZVZhbHVlKSB7XG4gICAgcmV0dXJuIGRhdGVUb0NvbXBhcmUuY29tcGFyZShyZWZlcmVuY2VEYXRlKSA+PSAwO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIGRhdGUgaXMgaW5jbHVzaXZlbHkgYmV0d2VlbiBhIHN0YXJ0IGFuZCBlbmQgcmVmZXJlbmNlIGRhdGUuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBpcyB0aGlzIGRhdGUgaW5jbHVzaXZlbHkgYmV0d2VlbiB0aGUgYHN0YXJ0YCBhbmQgYGVuZGAgZGF0ZXNcbiAqIEBwYXJhbSBzdGFydCAtIHRoZSBzdGFydCByZWZlcmVuY2UgZGF0ZSB0byBtYWtlIHRoZSBjb21wYXJpc29uIGFnYWluc3RcbiAqIEBwYXJhbSBlbmQgLSB0aGUgZW5kIHJlZmVyZW5jZSBkYXRlIHRvIG1ha2UgdGhlIGNvbXBhcmlzb24gYWdhaW5zdFxuICpcbiAqIEBzZWUge0BsaW5rIGlzQmV0d2Vlbn0gZm9yIG5vbi1pbmNsdXNpdmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQmV0d2VlbkluY2x1c2l2ZShkYXRlOiBEYXRlVmFsdWUsIHN0YXJ0OiBEYXRlVmFsdWUsIGVuZDogRGF0ZVZhbHVlKSB7XG4gICAgcmV0dXJuIGlzQWZ0ZXJPclNhbWUoZGF0ZSwgc3RhcnQpICYmIGlzQmVmb3JlT3JTYW1lKGRhdGUsIGVuZCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgZGF0ZSBpcyBiZXR3ZWVuIGEgc3RhcnQgYW5kIGVuZCByZWZlcmVuY2UgZGF0ZS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIGlzIHRoaXMgZGF0ZSBiZXR3ZWVuIHRoZSBgc3RhcnRgIGFuZCBgZW5kYCBkYXRlc1xuICogQHBhcmFtIHN0YXJ0IC0gdGhlIHN0YXJ0IHJlZmVyZW5jZSBkYXRlIHRvIG1ha2UgdGhlIGNvbXBhcmlzb24gYWdhaW5zdFxuICogQHBhcmFtIGVuZCAtIHRoZSBlbmQgcmVmZXJlbmNlIGRhdGUgdG8gbWFrZSB0aGUgY29tcGFyaXNvbiBhZ2FpbnN0XG4gKlxuICogQHNlZSB7QGxpbmsgaXNCZXR3ZWVuSW5jbHVzaXZlfSBmb3IgaW5jbHVzaXZlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0JldHdlZW4oZGF0ZTogRGF0ZVZhbHVlLCBzdGFydDogRGF0ZVZhbHVlLCBlbmQ6IERhdGVWYWx1ZSkge1xuICAgIHJldHVybiBpc0FmdGVyKGRhdGUsIHN0YXJ0KSAmJiBpc0JlZm9yZShkYXRlLCBlbmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGFzdEZpcnN0RGF5T2ZXZWVrPFQgZXh0ZW5kcyBEYXRlVmFsdWUgPSBEYXRlVmFsdWU+KFxuICAgIGRhdGU6IFQsXG4gICAgZmlyc3REYXlPZldlZWs6IG51bWJlcixcbiAgICBsb2NhbGU6IHN0cmluZ1xuKTogVCB7XG4gICAgY29uc3QgZGF5ID0gZ2V0RGF5T2ZXZWVrKGRhdGUsIGxvY2FsZSk7XG5cbiAgICBpZiAoZmlyc3REYXlPZldlZWsgPiBkYXkpIHJldHVybiBkYXRlLnN1YnRyYWN0KHsgZGF5czogZGF5ICsgNyAtIGZpcnN0RGF5T2ZXZWVrIH0pIGFzIFQ7XG5cbiAgICBpZiAoZmlyc3REYXlPZldlZWsgPT09IGRheSkgcmV0dXJuIGRhdGUgYXMgVDtcblxuICAgIHJldHVybiBkYXRlLnN1YnRyYWN0KHsgZGF5czogZGF5IC0gZmlyc3REYXlPZldlZWsgfSkgYXMgVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5leHRMYXN0RGF5T2ZXZWVrPFQgZXh0ZW5kcyBEYXRlVmFsdWUgPSBEYXRlVmFsdWU+KFxuICAgIGRhdGU6IFQsXG4gICAgZmlyc3REYXlPZldlZWs6IG51bWJlcixcbiAgICBsb2NhbGU6IHN0cmluZ1xuKTogVCB7XG4gICAgY29uc3QgZGF5ID0gZ2V0RGF5T2ZXZWVrKGRhdGUsIGxvY2FsZSk7XG4gICAgY29uc3QgbGFzdERheU9mV2VlayA9IGZpcnN0RGF5T2ZXZWVrID09PSAwID8gNiA6IGZpcnN0RGF5T2ZXZWVrIC0gMTtcblxuICAgIGlmIChkYXkgPT09IGxhc3REYXlPZldlZWspIHJldHVybiBkYXRlIGFzIFQ7XG5cbiAgICBpZiAoZGF5ID4gbGFzdERheU9mV2VlaykgcmV0dXJuIGRhdGUuYWRkKHsgZGF5czogNyAtIGRheSArIGxhc3REYXlPZldlZWsgfSkgYXMgVDtcblxuICAgIHJldHVybiBkYXRlLmFkZCh7IGRheXM6IGxhc3REYXlPZldlZWsgLSBkYXkgfSkgYXMgVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFyZUFsbERheXNCZXR3ZWVuVmFsaWQoXG4gICAgc3RhcnQ6IERhdGVWYWx1ZSxcbiAgICBlbmQ6IERhdGVWYWx1ZSxcbiAgICBpc1VuYXZhaWxhYmxlOiBEYXRlTWF0Y2hlciB8IHVuZGVmaW5lZCxcbiAgICBpc0Rpc2FibGVkOiBEYXRlTWF0Y2hlciB8IHVuZGVmaW5lZFxuKSB7XG4gICAgaWYgKGlzVW5hdmFpbGFibGUgPT09IHVuZGVmaW5lZCAmJiBpc0Rpc2FibGVkID09PSB1bmRlZmluZWQpIHJldHVybiB0cnVlO1xuXG4gICAgbGV0IGRDdXJyZW50ID0gc3RhcnQuYWRkKHsgZGF5czogMSB9KTtcbiAgICBpZiAoaXNEaXNhYmxlZD8uKGRDdXJyZW50KSB8fCBpc1VuYXZhaWxhYmxlPy4oZEN1cnJlbnQpKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBkRW5kID0gZW5kO1xuICAgIHdoaWxlIChkQ3VycmVudC5jb21wYXJlKGRFbmQpIDwgMCkge1xuICAgICAgICBkQ3VycmVudCA9IGRDdXJyZW50LmFkZCh7IGRheXM6IDEgfSk7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkPy4oZEN1cnJlbnQpIHx8IGlzVW5hdmFpbGFibGU/LihkQ3VycmVudCkpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCB0eXBlIFRpbWVWYWx1ZSA9IFRpbWUgfCBDYWxlbmRhckRhdGVUaW1lIHwgWm9uZWREYXRlVGltZTtcblxuZXhwb3J0IHR5cGUgR3JhbnVsYXJpdHkgPSAnZGF5JyB8ICdob3VyJyB8ICdtaW51dGUnIHwgJ3NlY29uZCc7XG5leHBvcnQgdHlwZSBUaW1lR3JhbnVsYXJpdHkgPSAnaG91cicgfCAnbWludXRlJyB8ICdzZWNvbmQnO1xuXG50eXBlIEdldERlZmF1bHREYXRlUHJvcHMgPSB7XG4gICAgZGVmYXVsdFZhbHVlPzogRGF0ZVZhbHVlIHwgRGF0ZVZhbHVlW10gfCB1bmRlZmluZWQ7XG4gICAgZGVmYXVsdFBsYWNlaG9sZGVyPzogRGF0ZVZhbHVlIHwgdW5kZWZpbmVkO1xuICAgIGdyYW51bGFyaXR5PzogR3JhbnVsYXJpdHk7XG4gICAgbG9jYWxlPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBBIGhlbHBlciBmdW5jdGlvbiB1c2VkIHRocm91Z2hvdXQgdGhlIHZhcmlvdXMgZGF0ZSBidWlsZGVyc1xuICogdG8gZ2VuZXJhdGUgYSBkZWZhdWx0IGBEYXRlVmFsdWVgIHVzaW5nIHRoZSBgZGVmYXVsdFZhbHVlYCxcbiAqIGBkZWZhdWx0UGxhY2Vob2xkZXJgLCBhbmQgYGdyYW51bGFyaXR5YCBwcm9wcy5cbiAqXG4gKiBJdCdzIGltcG9ydGFudCB0byBtYXRjaCB0aGUgYERhdGVWYWx1ZWAgdHlwZSBiZWluZyB1c2VkXG4gKiBlbHNld2hlcmUgaW4gdGhlIGJ1aWxkZXIsIHNvIHRoZXkgYmVoYXZlIGFjY29yZGluZyB0byB0aGVcbiAqIGJlaGF2aW9yIHRoZSB1c2VyIGV4cGVjdHMgYmFzZWQgb24gdGhlIHByb3BzIHRoZXkndmUgcHJvdmlkZWQuXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdERhdGUocHJvcHM6IEdldERlZmF1bHREYXRlUHJvcHMpOiBEYXRlVmFsdWUge1xuICAgIGNvbnN0IHsgZGVmYXVsdFZhbHVlLCBkZWZhdWx0UGxhY2Vob2xkZXIsIGdyYW51bGFyaXR5ID0gJ2RheScsIGxvY2FsZSA9ICdlbicgfSA9IHByb3BzO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGVmYXVsdFZhbHVlKSAmJiBkZWZhdWx0VmFsdWUubGVuZ3RoKSByZXR1cm4gZGVmYXVsdFZhbHVlW2RlZmF1bHRWYWx1ZS5sZW5ndGggLSAxXSEuY29weSgpO1xuXG4gICAgaWYgKGRlZmF1bHRWYWx1ZSAmJiAhQXJyYXkuaXNBcnJheShkZWZhdWx0VmFsdWUpKSByZXR1cm4gZGVmYXVsdFZhbHVlLmNvcHkoKTtcblxuICAgIGlmIChkZWZhdWx0UGxhY2Vob2xkZXIpIHJldHVybiBkZWZhdWx0UGxhY2Vob2xkZXIuY29weSgpO1xuXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgY2FsZW5kYXJEYXRlVGltZUdyYW51bGFyaXRpZXMgPSBbJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCddO1xuXG4gICAgY29uc3QgZGVmYXVsdEZvcm1hdHRlciA9IG5ldyBEYXRlRm9ybWF0dGVyKGxvY2FsZSk7XG4gICAgY29uc3QgY2FsZW5kYXIgPSBjcmVhdGVDYWxlbmRhcihkZWZhdWx0Rm9ybWF0dGVyLnJlc29sdmVkT3B0aW9ucygpLmNhbGVuZGFyIGFzIENhbGVuZGFySWRlbnRpZmllcik7XG5cbiAgICBpZiAoY2FsZW5kYXJEYXRlVGltZUdyYW51bGFyaXRpZXMuaW5jbHVkZXMoZ3JhbnVsYXJpdHkgPz8gJ2RheScpKVxuICAgICAgICByZXR1cm4gdG9DYWxlbmRhcihuZXcgQ2FsZW5kYXJEYXRlVGltZSh5ZWFyLCBtb250aCwgZGF5LCAwLCAwLCAwKSwgY2FsZW5kYXIpO1xuXG4gICAgcmV0dXJuIHRvQ2FsZW5kYXIobmV3IENhbGVuZGFyRGF0ZSh5ZWFyLCBtb250aCwgZGF5KSwgY2FsZW5kYXIpO1xufVxuXG50eXBlIEdldERlZmF1bHRUaW1lUHJvcHMgPSB7XG4gICAgZGVmYXVsdFZhbHVlPzogVGltZVZhbHVlIHwgdW5kZWZpbmVkO1xuICAgIGRlZmF1bHRQbGFjZWhvbGRlcj86IFRpbWVWYWx1ZSB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0VGltZShwcm9wczogR2V0RGVmYXVsdFRpbWVQcm9wcyk6IFRpbWVWYWx1ZSB7XG4gICAgY29uc3QgeyBkZWZhdWx0VmFsdWUsIGRlZmF1bHRQbGFjZWhvbGRlciB9ID0gcHJvcHM7XG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWUuY29weSgpO1xuICAgIH1cblxuICAgIGlmIChkZWZhdWx0UGxhY2Vob2xkZXIpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRQbGFjZWhvbGRlci5jb3B5KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBUaW1lKDAsIDAsIDApO1xufVxuIl19","/*\n * Implementation ported from from from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/calendar/create.ts\n */\nimport { CalendarDate, endOfMonth, getDayOfWeek, startOfMonth } from '@internationalized/date';\nimport { chunk } from '../chunk';\nimport { getDaysInMonth, getLastFirstDayOfWeek, getNextLastDayOfWeek } from './comparators';\n/**\n * Retrieves an array of date values representing the days between\n * the provided start and end dates.\n */\nexport function getDaysBetween(start, end) {\n const days = [];\n let dCurrent = start.add({ days: 1 });\n const dEnd = end;\n while (dCurrent.compare(dEnd) < 0) {\n days.push(dCurrent);\n dCurrent = dCurrent.add({ days: 1 });\n }\n return days;\n}\nexport function createMonth(props) {\n const { dateObj, weekStartsOn, fixedWeeks, locale } = props;\n const daysInMonth = getDaysInMonth(dateObj);\n const datesArray = Array.from({ length: daysInMonth }, (_, i) => dateObj.set({ day: i + 1 }));\n const firstDayOfMonth = startOfMonth(dateObj);\n const lastDayOfMonth = endOfMonth(dateObj);\n const lastSunday = getLastFirstDayOfWeek(firstDayOfMonth, weekStartsOn, locale);\n const nextSaturday = getNextLastDayOfWeek(lastDayOfMonth, weekStartsOn, locale);\n const lastMonthDays = getDaysBetween(lastSunday.subtract({ days: 1 }), firstDayOfMonth);\n const nextMonthDays = getDaysBetween(lastDayOfMonth, nextSaturday.add({ days: 1 }));\n const totalDays = lastMonthDays.length + datesArray.length + nextMonthDays.length;\n if (fixedWeeks && totalDays < 42) {\n const extraDays = 42 - totalDays;\n let startFrom = nextMonthDays[nextMonthDays.length - 1];\n if (!startFrom)\n startFrom = endOfMonth(dateObj);\n const extraDaysArray = Array.from({ length: extraDays }, (_, i) => {\n const incr = i + 1;\n return startFrom.add({ days: incr });\n });\n nextMonthDays.push(...extraDaysArray);\n }\n const allDays = lastMonthDays.concat(datesArray, nextMonthDays);\n const weeks = chunk(allDays, 7);\n return {\n value: dateObj,\n dates: allDays,\n weeks: weeks\n };\n}\nexport function createMonths(props) {\n const { numberOfMonths, dateObj, ...monthProps } = props;\n const months = [];\n if (!numberOfMonths || numberOfMonths === 1) {\n months.push(createMonth({\n ...monthProps,\n dateObj\n }));\n return months;\n }\n months.push(createMonth({\n ...monthProps,\n dateObj\n }));\n // Create all the months, starting with the current month\n for (let i = 1; i < numberOfMonths; i++) {\n const nextMonth = dateObj.add({ months: i });\n months.push(createMonth({\n ...monthProps,\n dateObj: nextMonth\n }));\n }\n return months;\n}\n/**\n * Returns the locale-specific week number\n */\nexport function getWeekNumber(date, locale = 'en-US', firstDayOfWeek) {\n const firstDayOfYear = new CalendarDate(date.year, 1, 1);\n const firstDayOfYearWeekday = getDayOfWeek(firstDayOfYear, locale, firstDayOfWeek);\n const firstWeekStart = firstDayOfYear.subtract({ days: firstDayOfYearWeekday });\n // If date is before the first week start It belongs to the last week of the previous year\n if (date.compare(firstWeekStart) < 0) {\n const prevYearDate = new CalendarDate(date.year - 1, 12, 31);\n return getWeekNumber(prevYearDate, locale, firstDayOfWeek);\n }\n const days = getDaysBetween(firstWeekStart, date);\n // Week number is days divided by 7 plus 1\n return Math.floor(days.length / 7) + 1;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2RhdGUtdGltZS9jYWxlbmRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQXdCLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBMEI1Rjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWdCLEVBQUUsR0FBYztJQUMzRCxNQUFNLElBQUksR0FBZ0IsRUFBRSxDQUFDO0lBQzdCLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUM7SUFDakIsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBdUI7SUFDL0MsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztJQUM1RCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLENB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LENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEltcGxlbWVudGF0aW9uIHBvcnRlZCBmcm9tIGZyb20gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbWVsdC11aS9tZWx0LXVpL2Jsb2IvZGV2ZWxvcC9zcmMvbGliL2J1aWxkZXJzL2NhbGVuZGFyL2NyZWF0ZS50c1xuICovXG5cbmltcG9ydCB7IENhbGVuZGFyRGF0ZSwgRGF0ZVZhbHVlLCBEYXlPZldlZWssIGVuZE9mTW9udGgsIGdldERheU9mV2Vlaywgc3RhcnRPZk1vbnRoIH0gZnJvbSAnQGludGVybmF0aW9uYWxpemVkL2RhdGUnO1xuaW1wb3J0IHsgY2h1bmsgfSBmcm9tICcuLi9jaHVuayc7XG5pbXBvcnQgeyBnZXREYXlzSW5Nb250aCwgZ2V0TGFzdEZpcnN0RGF5T2ZXZWVrLCBnZXROZXh0TGFzdERheU9mV2VlayB9IGZyb20gJy4vY29tcGFyYXRvcnMnO1xuaW1wb3J0IHsgTW9udGggfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgQ3JlYXRlTW9udGhQcm9wcyA9IHtcbiAgICAvKipcbiAgICAgKiBUaGUgZGF0ZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBtb250aCdzIGRhdGUgKHVzdWFsbHkgdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGgpLlxuICAgICAqL1xuICAgIGRhdGVPYmo6IERhdGVWYWx1ZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkYXkgb2YgdGhlIHdlZWsgdG8gc3RhcnQgdGhlIGNhbGVuZGFyIG9uICgwIGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSwgZXRjLikuXG4gICAgICovXG4gICAgd2Vla1N0YXJ0c09uOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGFsd2F5cyByZW5kZXIgNiB3ZWVrcyBpbiB0aGUgY2FsZW5kYXIsIGV2ZW4gaWYgdGhlIG1vbnRoIGRvZXNuJ3RcbiAgICAgKiBzcGFuIDYgd2Vla3MuXG4gICAgICovXG4gICAgZml4ZWRXZWVrczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBsb2NhbGUgdG8gdXNlIHdoZW4gY3JlYXRpbmcgdGhlIGNhbGVuZGFyIG1vbnRoLlxuICAgICAqL1xuICAgIGxvY2FsZTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgZGF0ZSB2YWx1ZXMgcmVwcmVzZW50aW5nIHRoZSBkYXlzIGJldHdlZW5cbiAqIHRoZSBwcm92aWRlZCBzdGFydCBhbmQgZW5kIGRhdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF5c0JldHdlZW4oc3RhcnQ6IERhdGVWYWx1ZSwgZW5kOiBEYXRlVmFsdWUpIHtcbiAgICBjb25zdCBkYXlzOiBEYXRlVmFsdWVbXSA9IFtdO1xuICAgIGxldCBkQ3VycmVudCA9IHN0YXJ0LmFkZCh7IGRheXM6IDEgfSk7XG4gICAgY29uc3QgZEVuZCA9IGVuZDtcbiAgICB3aGlsZSAoZEN1cnJlbnQuY29tcGFyZShkRW5kKSA8IDApIHtcbiAgICAgICAgZGF5cy5wdXNoKGRDdXJyZW50KTtcbiAgICAgICAgZEN1cnJlbnQgPSBkQ3VycmVudC5hZGQoeyBkYXlzOiAxIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF5cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vbnRoKHByb3BzOiBDcmVhdGVNb250aFByb3BzKTogTW9udGg8RGF0ZVZhbHVlPiB7XG4gICAgY29uc3QgeyBkYXRlT2JqLCB3ZWVrU3RhcnRzT24sIGZpeGVkV2Vla3MsIGxvY2FsZSB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGF5c0luTW9udGggPSBnZXREYXlzSW5Nb250aChkYXRlT2JqKTtcblxuICAgIGNvbnN0IGRhdGVzQXJyYXkgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBkYXlzSW5Nb250aCB9LCAoXywgaSkgPT4gZGF0ZU9iai5zZXQoeyBkYXk6IGkgKyAxIH0pKTtcblxuICAgIGNvbnN0IGZpcnN0RGF5T2ZNb250aCA9IHN0YXJ0T2ZNb250aChkYXRlT2JqKTtcbiAgICBjb25zdCBsYXN0RGF5T2ZNb250aCA9IGVuZE9mTW9udGgoZGF0ZU9iaik7XG5cbiAgICBjb25zdCBsYXN0U3VuZGF5ID0gZ2V0TGFzdEZpcnN0RGF5T2ZXZWVrKGZpcnN0RGF5T2ZNb250aCwgd2Vla1N0YXJ0c09uLCBsb2NhbGUpO1xuICAgIGNvbnN0IG5leHRTYXR1cmRheSA9IGdldE5leHRMYXN0RGF5T2ZXZWVrKGxhc3REYXlPZk1vbnRoLCB3ZWVrU3RhcnRzT24sIGxvY2FsZSk7XG5cbiAgICBjb25zdCBsYXN0TW9udGhEYXlzID0gZ2V0RGF5c0JldHdlZW4obGFzdFN1bmRheS5zdWJ0cmFjdCh7IGRheXM6IDEgfSksIGZpcnN0RGF5T2ZNb250aCk7XG4gICAgY29uc3QgbmV4dE1vbnRoRGF5cyA9IGdldERheXNCZXR3ZWVuKGxhc3REYXlPZk1vbnRoLCBuZXh0U2F0dXJkYXkuYWRkKHsgZGF5czogMSB9KSk7XG5cbiAgICBjb25zdCB0b3RhbERheXMgPSBsYXN0TW9udGhEYXlzLmxlbmd0aCArIGRhdGVzQXJyYXkubGVuZ3RoICsgbmV4dE1vbnRoRGF5cy5sZW5ndGg7XG5cbiAgICBpZiAoZml4ZWRXZWVrcyAmJiB0b3RhbERheXMgPCA0Mikge1xuICAgICAgICBjb25zdCBleHRyYURheXMgPSA0MiAtIHRvdGFsRGF5cztcblxuICAgICAgICBsZXQgc3RhcnRGcm9tID0gbmV4dE1vbnRoRGF5c1tuZXh0TW9udGhEYXlzLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgIGlmICghc3RhcnRGcm9tKSBzdGFydEZyb20gPSBlbmRPZk1vbnRoKGRhdGVPYmopO1xuXG4gICAgICAgIGNvbnN0IGV4dHJhRGF5c0FycmF5ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogZXh0cmFEYXlzIH0sIChfLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmNyID0gaSArIDE7XG4gICAgICAgICAgICByZXR1cm4gc3RhcnRGcm9tLmFkZCh7IGRheXM6IGluY3IgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBuZXh0TW9udGhEYXlzLnB1c2goLi4uZXh0cmFEYXlzQXJyYXkpO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbERheXMgPSBsYXN0TW9udGhEYXlzLmNvbmNhdChkYXRlc0FycmF5LCBuZXh0TW9udGhEYXlzKTtcblxuICAgIGNvbnN0IHdlZWtzID0gY2h1bmsoYWxsRGF5cywgNyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogZGF0ZU9iaixcbiAgICAgICAgZGF0ZXM6IGFsbERheXMsXG4gICAgICAgIHdlZWtzOiB3ZWVrc1xuICAgIH07XG59XG5cbnR5cGUgU2V0TW9udGhQcm9wcyA9IENyZWF0ZU1vbnRoUHJvcHMgJiB7XG4gICAgbnVtYmVyT2ZNb250aHM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBjdXJyZW50TW9udGhzPzogTW9udGg8RGF0ZVZhbHVlPltdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vbnRocyhwcm9wczogU2V0TW9udGhQcm9wcykge1xuICAgIGNvbnN0IHsgbnVtYmVyT2ZNb250aHMsIGRhdGVPYmosIC4uLm1vbnRoUHJvcHMgfSA9IHByb3BzO1xuXG4gICAgY29uc3QgbW9udGhzOiBNb250aDxEYXRlVmFsdWU+W10gPSBbXTtcblxuICAgIGlmICghbnVtYmVyT2ZNb250aHMgfHwgbnVtYmVyT2ZNb250aHMgPT09IDEpIHtcbiAgICAgICAgbW9udGhzLnB1c2goXG4gICAgICAgICAgICBjcmVhdGVNb250aCh7XG4gICAgICAgICAgICAgICAgLi4ubW9udGhQcm9wcyxcbiAgICAgICAgICAgICAgICBkYXRlT2JqXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbW9udGhzO1xuICAgIH1cblxuICAgIG1vbnRocy5wdXNoKFxuICAgICAgICBjcmVhdGVNb250aCh7XG4gICAgICAgICAgICAuLi5tb250aFByb3BzLFxuICAgICAgICAgICAgZGF0ZU9ialxuICAgICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgYWxsIHRoZSBtb250aHMsIHN0YXJ0aW5nIHdpdGggdGhlIGN1cnJlbnQgbW9udGhcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bWJlck9mTW9udGhzOyBpKyspIHtcbiAgICAgICAgY29uc3QgbmV4dE1vbnRoID0gZGF0ZU9iai5hZGQoeyBtb250aHM6IGkgfSk7XG4gICAgICAgIG1vbnRocy5wdXNoKFxuICAgICAgICAgICAgY3JlYXRlTW9udGgoe1xuICAgICAgICAgICAgICAgIC4uLm1vbnRoUHJvcHMsXG4gICAgICAgICAgICAgICAgZGF0ZU9iajogbmV4dE1vbnRoXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBtb250aHM7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbG9jYWxlLXNwZWNpZmljIHdlZWsgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXZWVrTnVtYmVyKGRhdGU6IERhdGVWYWx1ZSwgbG9jYWxlOiBzdHJpbmcgPSAnZW4tVVMnLCBmaXJzdERheU9mV2Vlaz86IERheU9mV2Vlayk6IG51bWJlciB7XG4gICAgY29uc3QgZmlyc3REYXlPZlllYXIgPSBuZXcgQ2FsZW5kYXJEYXRlKGRhdGUueWVhciwgMSwgMSk7XG5cbiAgICBjb25zdCBmaXJzdERheU9mWWVhcldlZWtkYXkgPSBnZXREYXlPZldlZWsoZmlyc3REYXlPZlllYXIsIGxvY2FsZSwgZmlyc3REYXlPZldlZWspO1xuXG4gICAgY29uc3QgZmlyc3RXZWVrU3RhcnQgPSBmaXJzdERheU9mWWVhci5zdWJ0cmFjdCh7IGRheXM6IGZpcnN0RGF5T2ZZZWFyV2Vla2RheSB9KTtcblxuICAgIC8vIElmIGRhdGUgaXMgYmVmb3JlIHRoZSBmaXJzdCB3ZWVrIHN0YXJ0IEl0IGJlbG9uZ3MgdG8gdGhlIGxhc3Qgd2VlayBvZiB0aGUgcHJldmlvdXMgeWVhclxuICAgIGlmIChkYXRlLmNvbXBhcmUoZmlyc3RXZWVrU3RhcnQpIDwgMCkge1xuICAgICAgICBjb25zdCBwcmV2WWVhckRhdGUgPSBuZXcgQ2FsZW5kYXJEYXRlKGRhdGUueWVhciAtIDEsIDEyLCAzMSk7XG4gICAgICAgIHJldHVybiBnZXRXZWVrTnVtYmVyKHByZXZZZWFyRGF0ZSwgbG9jYWxlLCBmaXJzdERheU9mV2Vlayk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF5cyA9IGdldERheXNCZXR3ZWVuKGZpcnN0V2Vla1N0YXJ0LCBkYXRlKTtcblxuICAgIC8vIFdlZWsgbnVtYmVyIGlzIGRheXMgZGl2aWRlZCBieSA3IHBsdXMgMVxuICAgIHJldHVybiBNYXRoLmZsb29yKGRheXMubGVuZ3RoIC8gNykgKyAxO1xufVxuIl19","import { DateFormatter, getLocalTimeZone, today } from '@internationalized/date';\nimport { hasTime, isZonedDateTime, toDate } from './comparators';\nconst defaultPartOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric'\n};\n/**\n * Creates a wrapper around the `DateFormatter`, which is\n * an improved version of the {@link Intl.DateTimeFormat} API,\n * that is used internally by the various date builders to\n * easily format dates in a consistent way.\n *\n * @see [DateFormatter](https://react-spectrum.adobe.com/internationalized/date/DateFormatter.html)\n */\nexport function createFormatter(initialLocale, opts = {}) {\n let locale = initialLocale;\n function setLocale(newLocale) {\n locale = newLocale;\n }\n function getLocale() {\n return locale;\n }\n function custom(date, options) {\n return new DateFormatter(locale, { ...opts, ...options }).format(date);\n }\n function selectedDate(date, includeTime = true) {\n if (hasTime(date) && includeTime) {\n return custom(toDate(date), {\n dateStyle: 'long',\n timeStyle: 'long'\n });\n }\n else {\n return custom(toDate(date), {\n dateStyle: 'long'\n });\n }\n }\n function fullMonthAndYear(date, options = {}) {\n return new DateFormatter(locale, { ...opts, month: 'long', year: 'numeric', ...options }).format(date);\n }\n function fullMonth(date, options = {}) {\n return new DateFormatter(locale, { ...opts, month: 'long', ...options }).format(date);\n }\n function fullYear(date, options = {}) {\n return new DateFormatter(locale, { ...opts, year: 'numeric', ...options }).format(date);\n }\n function toParts(date, options) {\n if (isZonedDateTime(date)) {\n return new DateFormatter(locale, {\n ...opts,\n ...options,\n timeZone: date.timeZone\n }).formatToParts(toDate(date));\n }\n else {\n return new DateFormatter(locale, { ...opts, ...options }).formatToParts(toDate(date));\n }\n }\n function dayOfWeek(date, length = 'narrow') {\n return new DateFormatter(locale, { ...opts, weekday: length }).format(date);\n }\n function dayPeriod(date, hourCycle = undefined) {\n const parts = new DateFormatter(locale, {\n ...opts,\n hour: 'numeric',\n minute: 'numeric',\n hourCycle: hourCycle === 24 ? 'h23' : undefined\n }).formatToParts(date);\n const value = parts.find((p) => p.type === 'dayPeriod')?.value;\n // Day period can be \"AM\"/\"PM\" or \"a.m.\"/\"p.m.\" in some locales\n if (value === 'PM' || value === 'p.m.') {\n return 'PM';\n }\n return 'AM';\n }\n function part(dateObj, type, options = {}) {\n const opts = { ...defaultPartOptions, ...options };\n const parts = toParts(dateObj, opts);\n const part = parts.find((p) => p.type === type);\n return part ? part.value : '';\n }\n function getMonths() {\n const defaultDate = today(getLocalTimeZone());\n const months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n return months.map((item) => ({ label: fullMonth(toDate(defaultDate.set({ month: item }))), value: item }));\n }\n return {\n setLocale,\n getLocale,\n fullMonth,\n fullYear,\n fullMonthAndYear,\n toParts,\n custom,\n part,\n dayPeriod,\n selectedDate,\n dayOfWeek,\n getMonths\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9jb3JlL3NyYy9kYXRlLXRpbWUvZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQWtCLGdCQUFnQixFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRSxNQUFNLGtCQUFrQixHQUErQjtJQUNuRCxJQUFJLEVBQUUsU0FBUztJQUNmLEtBQUssRUFBRSxTQUFTO0lBQ2hCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsSUFBSSxFQUFFLFNBQVM7SUFDZixNQUFNLEVBQUUsU0FBUztJQUNqQixNQUFNLEVBQUUsU0FBUztDQUNwQixDQUFDO0FBcUJGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLGFBQXFCLEVBQUUsT0FBNkIsRUFBRTtJQUNsRixJQUFJLE1BQU0sR0FBRyxhQUFhLENBQUM7SUFFM0IsU0FBUyxTQUFTLENBQUMsU0FBaUI7UUFDaEMsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUN2QixDQUFDO0lBRUQsU0FBUyxTQUFTO1FBQ2QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELFNBQVMsTUFBTSxDQUFDLElBQVUsRUFBRSxPQUE2QjtRQUNyRCxPQUFPLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELFNBQVMsWUFBWSxDQUFDLElBQWUsRUFBRSxXQUFXLEdBQUcsSUFBSTtRQUNyRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUMv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UUFDTixJQUFJO1FBQ0osU0FBUztRQUNULFlBQVk7UUFDWixTQUFTO1FBQ1QsU0FBUztLQUNaLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZUZvcm1hdHRlciwgdHlwZSBEYXRlVmFsdWUsIGdldExvY2FsVGltZVpvbmUsIHRvZGF5IH0gZnJvbSAnQGludGVybmF0aW9uYWxpemVkL2RhdGUnO1xuaW1wb3J0IHsgaGFzVGltZSwgaXNab25lZERhdGVUaW1lLCB0b0RhdGUgfSBmcm9tICcuL2NvbXBhcmF0b3JzJztcbmltcG9ydCB7IEhvdXJDeWNsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBkZWZhdWx0UGFydE9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge1xuICAgIHllYXI6ICdudW1lcmljJyxcbiAgICBtb250aDogJ251bWVyaWMnLFxuICAgIGRheTogJ251bWVyaWMnLFxuICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICBzZWNvbmQ6ICdudW1lcmljJ1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlRm9ybWF0dGVyT3B0aW9ucyBleHRlbmRzIEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zIHtcbiAgICBjYWxlbmRhcj86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRm9ybWF0dGVyID0ge1xuICAgIGdldExvY2FsZTogKCkgPT4gc3RyaW5nO1xuICAgIHNldExvY2FsZTogKG5ld0xvY2FsZTogc3RyaW5nKSA9PiB2b2lkO1xuICAgIGN1c3RvbTogKGRhdGU6IERhdGUsIG9wdGlvbnM6IERhdGVGb3JtYXR0ZXJPcHRpb25zKSA9PiBzdHJpbmc7XG4gICAgc2VsZWN0ZWREYXRlOiAoZGF0ZTogRGF0ZVZhbHVlLCBpbmNsdWRlVGltZT86IGJvb2xlYW4pID0+IHN0cmluZztcbiAgICBkYXlPZldlZWs6IChkYXRlOiBEYXRlLCBsZW5ndGg/OiBEYXRlRm9ybWF0dGVyT3B0aW9uc1snd2Vla2RheSddKSA9PiBzdHJpbmc7XG4gICAgZnVsbE1vbnRoQW5kWWVhcjogKGRhdGU6IERhdGUsIG9wdGlvbnM/OiBEYXRlRm9ybWF0dGVyT3B0aW9ucykgPT4gc3RyaW5nO1xuICAgIGZ1bGxNb250aDogKGRhdGU6IERhdGUsIG9wdGlvbnM/OiBEYXRlRm9ybWF0dGVyT3B0aW9ucykgPT4gc3RyaW5nO1xuICAgIGZ1bGxZZWFyOiAoZGF0ZTogRGF0ZSwgb3B0aW9ucz86IERhdGVGb3JtYXR0ZXJPcHRpb25zKSA9PiBzdHJpbmc7XG4gICAgZGF5UGVyaW9kOiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuICAgIHBhcnQ6IChkYXRlT2JqOiBEYXRlVmFsdWUsIHR5cGU6IEludGwuRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXMsIG9wdGlvbnM/OiBEYXRlRm9ybWF0dGVyT3B0aW9ucykgPT4gc3RyaW5nO1xuICAgIHRvUGFydHM6IChkYXRlOiBEYXRlVmFsdWUsIG9wdGlvbnM/OiBEYXRlRm9ybWF0dGVyT3B0aW9ucykgPT4gSW50bC5EYXRlVGltZUZvcm1hdFBhcnRbXTtcbiAgICBnZXRNb250aHM6ICgpID0+IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W107XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgYERhdGVGb3JtYXR0ZXJgLCB3aGljaCBpc1xuICogYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiB0aGUge0BsaW5rIEludGwuRGF0ZVRpbWVGb3JtYXR9IEFQSSxcbiAqIHRoYXQgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSB2YXJpb3VzIGRhdGUgYnVpbGRlcnMgdG9cbiAqIGVhc2lseSBmb3JtYXQgZGF0ZXMgaW4gYSBjb25zaXN0ZW50IHdheS5cbiAqXG4gKiBAc2VlIFtEYXRlRm9ybWF0dGVyXShodHRwczovL3JlYWN0LXNwZWN0cnVtLmFkb2JlLmNvbS9pbnRlcm5hdGlvbmFsaXplZC9kYXRlL0RhdGVGb3JtYXR0ZXIuaHRtbClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1hdHRlcihpbml0aWFsTG9jYWxlOiBzdHJpbmcsIG9wdHM6IERhdGVGb3JtYXR0ZXJPcHRpb25zID0ge30pOiBGb3JtYXR0ZXIge1xuICAgIGxldCBsb2NhbGUgPSBpbml0aWFsTG9jYWxlO1xuXG4gICAgZnVuY3Rpb24gc2V0TG9jYWxlKG5ld0xvY2FsZTogc3RyaW5nKSB7XG4gICAgICAgIGxvY2FsZSA9IG5ld0xvY2FsZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3VzdG9tKGRhdGU6IERhdGUsIG9wdGlvbnM6IERhdGVGb3JtYXR0ZXJPcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZUZvcm1hdHRlcihsb2NhbGUsIHsgLi4ub3B0cywgLi4ub3B0aW9ucyB9KS5mb3JtYXQoZGF0ZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2VsZWN0ZWREYXRlKGRhdGU6IERhdGVWYWx1ZSwgaW5jbHVkZVRpbWUgPSB0cnVlKSB7XG4gICAgICAgIGlmIChoYXNUaW1lKGRhdGUpICYmIGluY2x1ZGVUaW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gY3VzdG9tKHRvRGF0ZShkYXRlKSwge1xuICAgICAgICAgICAgICAgIGRhdGVTdHlsZTogJ2xvbmcnLFxuICAgICAgICAgICAgICAgIHRpbWVTdHlsZTogJ2xvbmcnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjdXN0b20odG9EYXRlKGRhdGUpLCB7XG4gICAgICAgICAgICAgICAgZGF0ZVN0eWxlOiAnbG9uZydcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZnVsbE1vbnRoQW5kWWVhcihkYXRlOiBEYXRlLCBvcHRpb25zOiBEYXRlRm9ybWF0dGVyT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZUZvcm1hdHRlcihsb2NhbGUsIHsgLi4ub3B0cywgbW9udGg6ICdsb25nJywgeWVhcjogJ251bWVyaWMnLCAuLi5vcHRpb25zIH0pLmZvcm1hdChkYXRlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmdWxsTW9udGgoZGF0ZTogRGF0ZSwgb3B0aW9uczogRGF0ZUZvcm1hdHRlck9wdGlvbnMgPSB7fSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGVGb3JtYXR0ZXIobG9jYWxlLCB7IC4uLm9wdHMsIG1vbnRoOiAnbG9uZycsIC4uLm9wdGlvbnMgfSkuZm9ybWF0KGRhdGUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZ1bGxZZWFyKGRhdGU6IERhdGUsIG9wdGlvbnM6IERhdGVGb3JtYXR0ZXJPcHRpb25zID0ge30pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlRm9ybWF0dGVyKGxvY2FsZSwgeyAuLi5vcHRzLCB5ZWFyOiAnbnVtZXJpYycsIC4uLm9wdGlvbnMgfSkuZm9ybWF0KGRhdGUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvUGFydHMoZGF0ZTogRGF0ZVZhbHVlLCBvcHRpb25zPzogRGF0ZUZvcm1hdHRlck9wdGlvbnMpIHtcbiAgICAgICAgaWYgKGlzWm9uZWREYXRlVGltZShkYXRlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlRm9ybWF0dGVyKGxvY2FsZSwge1xuICAgICAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICB0aW1lWm9uZTogZGF0ZS50aW1lWm9uZVxuICAgICAgICAgICAgfSkuZm9ybWF0VG9QYXJ0cyh0b0RhdGUoZGF0ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlRm9ybWF0dGVyKGxvY2FsZSwgeyAuLi5vcHRzLCAuLi5vcHRpb25zIH0pLmZvcm1hdFRvUGFydHModG9EYXRlKGRhdGUpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheU9mV2VlayhkYXRlOiBEYXRlLCBsZW5ndGg6IERhdGVGb3JtYXR0ZXJPcHRpb25zWyd3ZWVrZGF5J10gPSAnbmFycm93Jykge1xuICAgICAgICByZXR1cm4gbmV3IERhdGVGb3JtYXR0ZXIobG9jYWxlLCB7IC4uLm9wdHMsIHdlZWtkYXk6IGxlbmd0aCB9KS5mb3JtYXQoZGF0ZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF5UGVyaW9kKGRhdGU6IERhdGUsIGhvdXJDeWNsZTogSG91ckN5Y2xlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gbmV3IERhdGVGb3JtYXR0ZXIobG9jYWxlLCB7XG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICBob3VyQ3ljbGU6IGhvdXJDeWNsZSA9PT0gMjQgPyAnaDIzJyA6IHVuZGVmaW5lZFxuICAgICAgICB9KS5mb3JtYXRUb1BhcnRzKGRhdGUpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcnRzLmZpbmQoKHApID0+IHAudHlwZSA9PT0gJ2RheVBlcmlvZCcpPy52YWx1ZTtcbiAgICAgICAgLy8gRGF5IHBlcmlvZCBjYW4gYmUgXCJBTVwiL1wiUE1cIiBvciBcImEubS5cIi9cInAubS5cIiBpbiBzb21lIGxvY2FsZXNcbiAgICAgICAgaWYgKHZhbHVlID09PSAnUE0nIHx8IHZhbHVlID09PSAncC5tLicpIHtcbiAgICAgICAgICAgIHJldHVybiAnUE0nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnQU0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnQoZGF0ZU9iajogRGF0ZVZhbHVlLCB0eXBlOiBJbnRsLkRhdGVUaW1lRm9ybWF0UGFydFR5cGVzLCBvcHRpb25zOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSB7IC4uLmRlZmF1bHRQYXJ0T3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuICAgICAgICBjb25zdCBwYXJ0cyA9IHRvUGFydHMoZGF0ZU9iaiwgb3B0cyk7XG4gICAgICAgIGNvbnN0IHBhcnQgPSBwYXJ0cy5maW5kKChwKSA9PiBwLnR5cGUgPT09IHR5cGUpO1xuICAgICAgICByZXR1cm4gcGFydCA/IHBhcnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRNb250aHMoKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHREYXRlID0gdG9kYXkoZ2V0TG9jYWxUaW1lWm9uZSgpKTtcbiAgICAgICAgY29uc3QgbW9udGhzID0gWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTJdO1xuICAgICAgICByZXR1cm4gbW9udGhzLm1hcCgoaXRlbSkgPT4gKHsgbGFiZWw6IGZ1bGxNb250aCh0b0RhdGUoZGVmYXVsdERhdGUuc2V0KHsgbW9udGg6IGl0ZW0gfSkpKSwgdmFsdWU6IGl0ZW0gfSkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIHNldExvY2FsZSxcbiAgICAgICAgZ2V0TG9jYWxlLFxuICAgICAgICBmdWxsTW9udGgsXG4gICAgICAgIGZ1bGxZZWFyLFxuICAgICAgICBmdWxsTW9udGhBbmRZZWFyLFxuICAgICAgICB0b1BhcnRzLFxuICAgICAgICBjdXN0b20sXG4gICAgICAgIHBhcnQsXG4gICAgICAgIGRheVBlcmlvZCxcbiAgICAgICAgc2VsZWN0ZWREYXRlLFxuICAgICAgICBkYXlPZldlZWssXG4gICAgICAgIGdldE1vbnRoc1xuICAgIH07XG59XG4iXX0=","/*\n * Implementation ported from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/date-field/_internal/helpers.ts\n */\nexport const DATE_SEGMENT_PARTS = ['day', 'month', 'year'];\nexport const TIME_SEGMENT_PARTS = ['hour', 'minute', 'second', 'dayPeriod'];\nexport const NON_EDITABLE_SEGMENT_PARTS = ['literal', 'timeZoneName'];\nexport const EDITABLE_SEGMENT_PARTS = [...DATE_SEGMENT_PARTS, ...TIME_SEGMENT_PARTS];\nexport const EDITABLE_TIME_SEGMENT_PARTS = [...TIME_SEGMENT_PARTS];\nexport const ALL_SEGMENT_PARTS = [...EDITABLE_SEGMENT_PARTS, ...NON_EDITABLE_SEGMENT_PARTS];\nexport const ALL_EXCEPT_LITERAL_PARTS = ALL_SEGMENT_PARTS.filter((part) => part !== 'literal');\nexport function isDateSegmentPart(part) {\n return DATE_SEGMENT_PARTS.includes(part);\n}\nexport function isTimeSegmentPart(part) {\n return TIME_SEGMENT_PARTS.includes(part);\n}\nexport function isSegmentPart(part) {\n return EDITABLE_SEGMENT_PARTS.includes(part);\n}\nexport function isAnySegmentPart(part) {\n return ALL_SEGMENT_PARTS.includes(part);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2RhdGUtdGltZS9wYXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUlILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQVUsQ0FBQztBQUNwRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBVSxDQUFDO0FBQ3JGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBVSxDQUFDO0FBQy9FLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLGtCQUFrQixDQUFVLENBQUM7QUFDOUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxHQUFHLGtCQUFrQixDQUFVLENBQUM7QUFDNUUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUFHLHNCQUFzQixFQUFFLEdBQUcsMEJBQTBCLENBQVUsQ0FBQztBQUNyRyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQztBQUUvRixNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBYTtJQUMzQyxPQUFPLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUF1QixDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFhO0lBQzNDLE9BQU8sa0JBQWtCLENBQUMsUUFBUSxDQUFDLElBQXVCLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFZO0lBQ3RDLE9BQU8sc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQTJCLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQWE7SUFDMUMsT0FBTyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBMkIsQ0FBQyxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogSW1wbGVtZW50YXRpb24gcG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21lbHQtdWkvbWVsdC11aS9ibG9iL2RldmVsb3Avc3JjL2xpYi9idWlsZGVycy9kYXRlLWZpZWxkL19pbnRlcm5hbC9oZWxwZXJzLnRzXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEYXRlU2VnbWVudFBhcnQsIEVkaXRhYmxlU2VnbWVudFBhcnQsIFNlZ21lbnRQYXJ0LCBUaW1lU2VnbWVudFBhcnQgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IERBVEVfU0VHTUVOVF9QQVJUUyA9IFsnZGF5JywgJ21vbnRoJywgJ3llYXInXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBUSU1FX1NFR01FTlRfUEFSVFMgPSBbJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsICdkYXlQZXJpb2QnXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBOT05fRURJVEFCTEVfU0VHTUVOVF9QQVJUUyA9IFsnbGl0ZXJhbCcsICd0aW1lWm9uZU5hbWUnXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBFRElUQUJMRV9TRUdNRU5UX1BBUlRTID0gWy4uLkRBVEVfU0VHTUVOVF9QQVJUUywgLi4uVElNRV9TRUdNRU5UX1BBUlRTXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBFRElUQUJMRV9USU1FX1NFR01FTlRfUEFSVFMgPSBbLi4uVElNRV9TRUdNRU5UX1BBUlRTXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBBTExfU0VHTUVOVF9QQVJUUyA9IFsuLi5FRElUQUJMRV9TRUdNRU5UX1BBUlRTLCAuLi5OT05fRURJVEFCTEVfU0VHTUVOVF9QQVJUU10gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgQUxMX0VYQ0VQVF9MSVRFUkFMX1BBUlRTID0gQUxMX1NFR01FTlRfUEFSVFMuZmlsdGVyKChwYXJ0KSA9PiBwYXJ0ICE9PSAnbGl0ZXJhbCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlU2VnbWVudFBhcnQocGFydDogdW5rbm93bik6IHBhcnQgaXMgRGF0ZVNlZ21lbnRQYXJ0IHtcbiAgICByZXR1cm4gREFURV9TRUdNRU5UX1BBUlRTLmluY2x1ZGVzKHBhcnQgYXMgRGF0ZVNlZ21lbnRQYXJ0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGltZVNlZ21lbnRQYXJ0KHBhcnQ6IHVua25vd24pOiBwYXJ0IGlzIFRpbWVTZWdtZW50UGFydCB7XG4gICAgcmV0dXJuIFRJTUVfU0VHTUVOVF9QQVJUUy5pbmNsdWRlcyhwYXJ0IGFzIFRpbWVTZWdtZW50UGFydCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlZ21lbnRQYXJ0KHBhcnQ6IHN0cmluZyk6IHBhcnQgaXMgRWRpdGFibGVTZWdtZW50UGFydCB7XG4gICAgcmV0dXJuIEVESVRBQkxFX1NFR01FTlRfUEFSVFMuaW5jbHVkZXMocGFydCBhcyBFZGl0YWJsZVNlZ21lbnRQYXJ0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQW55U2VnbWVudFBhcnQocGFydDogdW5rbm93bik6IHBhcnQgaXMgU2VnbWVudFBhcnQge1xuICAgIHJldHVybiBBTExfU0VHTUVOVF9QQVJUUy5pbmNsdWRlcyhwYXJ0IGFzIEVkaXRhYmxlU2VnbWVudFBhcnQpO1xufVxuIl19","/*\n * Implementation ported from from from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/internal/helpers/date/placeholders.ts\n */\n// prettier-ignore\nconst supportedLocales = [\n 'ach', 'af', 'am', 'an', 'ar', 'ast', 'az', 'be', 'bg', 'bn', 'br', 'bs',\n 'ca', 'cak', 'ckb', 'cs', 'cy', 'da', 'de', 'dsb', 'el', 'en', 'eo', 'es',\n 'et', 'eu', 'fa', 'ff', 'fi', 'fr', 'fy', 'ga', 'gd', 'gl', 'he', 'hr',\n 'hsb', 'hu', 'ia', 'id', 'it', 'ja', 'ka', 'kk', 'kn', 'ko', 'lb', 'lo',\n 'lt', 'lv', 'meh', 'ml', 'ms', 'nl', 'nn', 'no', 'oc', 'pl', 'pt', 'rm',\n 'ro', 'ru', 'sc', 'scn', 'sk', 'sl', 'sr', 'sv', 'szl', 'tg', 'th', 'tr',\n 'uk', 'zh-CN', 'zh-TW',\n];\nconst placeholderFields = ['year', 'month', 'day'];\nconst placeholders = {\n ach: { year: 'mwaka', month: 'dwe', day: 'nino' },\n af: { year: 'jjjj', month: 'mm', day: 'dd' },\n am: { year: 'ዓዓዓዓ', month: 'ሚሜ', day: 'ቀቀ' },\n an: { year: 'aaaa', month: 'mm', day: 'dd' },\n ar: { year: 'سنة', month: 'شهر', day: 'يوم' },\n ast: { year: 'aaaa', month: 'mm', day: 'dd' },\n az: { year: 'iiii', month: 'aa', day: 'gg' },\n be: { year: 'гггг', month: 'мм', day: 'дд' },\n bg: { year: 'гггг', month: 'мм', day: 'дд' },\n bn: { year: 'yyyy', month: 'মিমি', day: 'dd' },\n br: { year: 'bbbb', month: 'mm', day: 'dd' },\n bs: { year: 'gggg', month: 'mm', day: 'dd' },\n ca: { year: 'aaaa', month: 'mm', day: 'dd' },\n cak: { year: 'jjjj', month: 'ii', day: \"q'q'\" },\n ckb: { year: 'ساڵ', month: 'مانگ', day: 'ڕۆژ' },\n cs: { year: 'rrrr', month: 'mm', day: 'dd' },\n cy: { year: 'bbbb', month: 'mm', day: 'dd' },\n da: { year: 'åååå', month: 'mm', day: 'dd' },\n de: { year: 'jjjj', month: 'mm', day: 'tt' },\n dsb: { year: 'llll', month: 'mm', day: 'źź' },\n el: { year: 'εεεε', month: 'μμ', day: 'ηη' },\n en: { year: 'yyyy', month: 'mm', day: 'dd' },\n eo: { year: 'jjjj', month: 'mm', day: 'tt' },\n es: { year: 'aaaa', month: 'mm', day: 'dd' },\n et: { year: 'aaaa', month: 'kk', day: 'pp' },\n eu: { year: 'uuuu', month: 'hh', day: 'ee' },\n fa: { year: 'سال', month: 'ماه', day: 'روز' },\n ff: { year: 'hhhh', month: 'll', day: 'ññ' },\n fi: { year: 'vvvv', month: 'kk', day: 'pp' },\n fr: { year: 'aaaa', month: 'mm', day: 'jj' },\n fy: { year: 'jjjj', month: 'mm', day: 'dd' },\n ga: { year: 'bbbb', month: 'mm', day: 'll' },\n gd: { year: 'bbbb', month: 'mm', day: 'll' },\n gl: { year: 'aaaa', month: 'mm', day: 'dd' },\n he: { year: 'שנה', month: 'חודש', day: 'יום' },\n hr: { year: 'gggg', month: 'mm', day: 'dd' },\n hsb: { year: 'llll', month: 'mm', day: 'dd' },\n hu: { year: 'éééé', month: 'hh', day: 'nn' },\n ia: { year: 'aaaa', month: 'mm', day: 'dd' },\n id: { year: 'tttt', month: 'bb', day: 'hh' },\n it: { year: 'aaaa', month: 'mm', day: 'gg' },\n ja: { year: ' 年 ', month: '月', day: '日' },\n ka: { year: 'წწწწ', month: 'თთ', day: 'რრ' },\n kk: { year: 'жжжж', month: 'аа', day: 'кк' },\n kn: { year: 'ವವವವ', month: 'ಮಿಮೀ', day: 'ದಿದಿ' },\n ko: { year: '연도', month: '월', day: '일' },\n lb: { year: 'jjjj', month: 'mm', day: 'dd' },\n lo: { year: 'ປປປປ', month: 'ດດ', day: 'ວວ' },\n lt: { year: 'mmmm', month: 'mm', day: 'dd' },\n lv: { year: 'gggg', month: 'mm', day: 'dd' },\n meh: { year: 'aaaa', month: 'mm', day: 'dd' },\n ml: { year: 'വർഷം', month: 'മാസം', day: 'തീയതി' },\n ms: { year: 'tttt', month: 'mm', day: 'hh' },\n nl: { year: 'jjjj', month: 'mm', day: 'dd' },\n nn: { year: 'åååå', month: 'mm', day: 'dd' },\n no: { year: 'åååå', month: 'mm', day: 'dd' },\n oc: { year: 'aaaa', month: 'mm', day: 'jj' },\n pl: { year: 'rrrr', month: 'mm', day: 'dd' },\n pt: { year: 'aaaa', month: 'mm', day: 'dd' },\n rm: { year: 'oooo', month: 'mm', day: 'dd' },\n ro: { year: 'aaaa', month: 'll', day: 'zz' },\n ru: { year: 'гггг', month: 'мм', day: 'дд' },\n sc: { year: 'aaaa', month: 'mm', day: 'dd' },\n scn: { year: 'aaaa', month: 'mm', day: 'jj' },\n sk: { year: 'rrrr', month: 'mm', day: 'dd' },\n sl: { year: 'llll', month: 'mm', day: 'dd' },\n sr: { year: 'гггг', month: 'мм', day: 'дд' },\n sv: { year: 'åååå', month: 'mm', day: 'dd' },\n szl: { year: 'rrrr', month: 'mm', day: 'dd' },\n tg: { year: 'сссс', month: 'мм', day: 'рр' },\n th: { year: 'ปปปป', month: 'ดด', day: 'วว' },\n tr: { year: 'yyyy', month: 'aa', day: 'gg' },\n uk: { year: 'рррр', month: 'мм', day: 'дд' },\n 'zh-CN': { year: '年', month: '月', day: '日' },\n 'zh-TW': { year: '年', month: '月', day: '日' }\n};\nfunction getPlaceholderObj(locale) {\n if (!isSupportedLocale(locale)) {\n const localeLanguage = getLocaleLanguage(locale);\n if (!isSupportedLocale(localeLanguage)) {\n return placeholders.en;\n }\n else {\n return placeholders[localeLanguage];\n }\n }\n else {\n return placeholders[locale];\n }\n}\nexport function getPlaceholder(field, value, locale) {\n if (isPlaceholderField(field))\n return getPlaceholderObj(locale)[field];\n if (isDefaultField(field))\n return value;\n if (isTimeField(field))\n return '––';\n return '';\n}\nfunction isSupportedLocale(locale) {\n return supportedLocales.includes(locale);\n}\nfunction isPlaceholderField(field) {\n return placeholderFields.includes(field);\n}\nfunction isTimeField(field) {\n return field === 'hour' || field === 'minute' || field === 'second';\n}\nfunction isDefaultField(field) {\n return field === 'era' || field === 'dayPeriod';\n}\nfunction getLocaleLanguage(locale) {\n if (Intl.Locale) {\n return new Intl.Locale(locale).language;\n }\n return locale.split('-')[0];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9jb3JlL3NyYy9kYXRlLXRpbWUvcGxhY2Vob2xkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsa0JBQWtCO0FBQ2xCLE1BQU0sZ0JBQWdCLEdBQUc7SUFDckIsS0FBSyxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJO0lBQzdELElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSTtJQUM5RCxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUk7SUFDM0QsS0FBSyxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJO0lBQzVELElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSTtJQUM1RCxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUk7SUFDN0QsSUFBSSxFQUFDLE9BQU8sRUFBQyxPQUFPO0NBQ2QsQ0FBQztBQUVYLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBVSxDQUFDO0FBTTVELE1BQU0sWUFBWSxHQUFtQjtJQUNqQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtJQUNqRCxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtJQUM3QyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM3QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM5QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtJQUMvQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtJQUMvQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM3QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtJQUM3QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtJQUM5QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM3QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUN6QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtJQUNoRCxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUN4QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM3QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRTtJQUNqRCxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM3QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM3QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUM1QyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUM1QyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtDQUMvQyxDQUFDO0FBRUYsU0FBUyxpQkFBaUIsQ0FBQyxNQUF1QztJQUM5RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM3QixNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxPQUFPLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDM0IsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0FBQ0wsQ0FBQztBQUlELE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBWSxFQUFFLEtBQWEsRUFBRSxNQUF1QztJQUMvRixJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkUsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDeEMsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDcEMsT0FBTyxFQUFFLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxNQUFjO0lBQ3JDLE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQXlCLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxLQUFjO0lBQ3RDLE9BQU8saUJBQWlCLENBQUMsUUFBUSxDQUFDLEtBQXlCLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYztJQUMvQixPQUFPLEtBQUssS0FBSyxNQUFNLElBQUksS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssUUFBUSxDQUFDO0FBQ3hFLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUFjO0lBQ2xDLE9BQU8sS0FBSyxLQUFLLEtBQUssSUFBSSxLQUFLLEtBQUssV0FBVyxDQUFDO0FBQ3BELENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE1BQWM7SUFDckMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDNUMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEltcGxlbWVudGF0aW9uIHBvcnRlZCBmcm9tIGZyb20gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbWVsdC11aS9tZWx0LXVpL2Jsb2IvZGV2ZWxvcC9zcmMvbGliL2ludGVybmFsL2hlbHBlcnMvZGF0ZS9wbGFjZWhvbGRlcnMudHNcbiAqL1xuXG4vLyBwcmV0dGllci1pZ25vcmVcbmNvbnN0IHN1cHBvcnRlZExvY2FsZXMgPSBbXG4gICAgJ2FjaCcsJ2FmJywnYW0nLCdhbicsJ2FyJywnYXN0JywnYXonLCdiZScsJ2JnJywnYm4nLCdicicsJ2JzJyxcbiAgICAnY2EnLCdjYWsnLCdja2InLCdjcycsJ2N5JywnZGEnLCdkZScsJ2RzYicsJ2VsJywnZW4nLCdlbycsJ2VzJyxcbiAgICAnZXQnLCdldScsJ2ZhJywnZmYnLCdmaScsJ2ZyJywnZnknLCdnYScsJ2dkJywnZ2wnLCdoZScsJ2hyJyxcbiAgICAnaHNiJywnaHUnLCdpYScsJ2lkJywnaXQnLCdqYScsJ2thJywna2snLCdrbicsJ2tvJywnbGInLCdsbycsXG4gICAgJ2x0JywnbHYnLCdtZWgnLCdtbCcsJ21zJywnbmwnLCdubicsJ25vJywnb2MnLCdwbCcsJ3B0Jywncm0nLFxuICAgICdybycsJ3J1Jywnc2MnLCdzY24nLCdzaycsJ3NsJywnc3InLCdzdicsJ3N6bCcsJ3RnJywndGgnLCd0cicsXG4gICAgJ3VrJywnemgtQ04nLCd6aC1UVycsXG5dIGFzIGNvbnN0O1xuXG5jb25zdCBwbGFjZWhvbGRlckZpZWxkcyA9IFsneWVhcicsICdtb250aCcsICdkYXknXSBhcyBjb25zdDtcblxudHlwZSBTdXBwb3J0ZWRMb2NhbGUgPSAodHlwZW9mIHN1cHBvcnRlZExvY2FsZXMpW251bWJlcl07XG50eXBlIFBsYWNlaG9sZGVyRmllbGQgPSAodHlwZW9mIHBsYWNlaG9sZGVyRmllbGRzKVtudW1iZXJdO1xuZXhwb3J0IHR5cGUgUGxhY2Vob2xkZXJNYXAgPSBSZWNvcmQ8U3VwcG9ydGVkTG9jYWxlLCBSZWNvcmQ8UGxhY2Vob2xkZXJGaWVsZCwgc3RyaW5nPj47XG5cbmNvbnN0IHBsYWNlaG9sZGVyczogUGxhY2Vob2xkZXJNYXAgPSB7XG4gICAgYWNoOiB7IHllYXI6ICdtd2FrYScsIG1vbnRoOiAnZHdlJywgZGF5OiAnbmlubycgfSxcbiAgICBhZjogeyB5ZWFyOiAnampqaicsIG1vbnRoOiAnbW0nLCBkYXk6ICdkZCcgfSxcbiAgICBhbTogeyB5ZWFyOiAn4YuT4YuT4YuT4YuTJywgbW9udGg6ICfhiJrhiJwnLCBkYXk6ICfhiYDhiYAnIH0sXG4gICAgYW46IHsgeWVhcjogJ2FhYWEnLCBtb250aDogJ21tJywgZGF5OiAnZGQnIH0sXG4gICAgYXI6IHsgeWVhcjogJ9iz2YbYqScsIG1vbnRoOiAn2LTZh9ixJywgZGF5OiAn2YrZiNmFJyB9LFxuICAgIGFzdDogeyB5ZWFyOiAnYWFhYScsIG1vbnRoOiAnbW0nLCBkYXk6ICdkZCcgfSxcbiAgICBhejogeyB5ZWFyOiAnaWlpaScsIG1vbnRoOiAnYWEnLCBkYXk6ICdnZycgfSxcbiAgICBiZTogeyB5ZWFyOiAn0LPQs9Cz0LMnLCBtb250aDogJ9C80LwnLCBkYXk6ICfQtNC0JyB9LFxuICAgIGJnOiB7IHllYXI6ICfQs9Cz0LPQsycsIG1vbnRoOiAn0LzQvCcsIGRheTogJ9C00LQnIH0sXG4gICAgYm46IHsgeWVhcjogJ3l5eXknLCBtb250aDogJ+CmruCmv+CmruCmvycsIGRheTogJ2RkJyB9LFxuICAgIGJyOiB7IHllYXI6ICdiYmJiJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIGJzOiB7IHllYXI6ICdnZ2dnJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIGNhOiB7IHllYXI6ICdhYWFhJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIGNhazogeyB5ZWFyOiAnampqaicsIG1vbnRoOiAnaWknLCBkYXk6IFwicSdxJ1wiIH0sXG4gICAgY2tiOiB7IHllYXI6ICfYs9in2rUnLCBtb250aDogJ9mF2KfZhtqvJywgZGF5OiAn2pXbhtqYJyB9LFxuICAgIGNzOiB7IHllYXI6ICdycnJyJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIGN5OiB7IHllYXI6ICdiYmJiJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIGRhOiB7IHllYXI6ICfDpcOlw6XDpScsIG1vbnRoOiAnbW0nLCBkYXk6ICdkZCcgfSxcbiAgICBkZTogeyB5ZWFyOiAnampqaicsIG1vbnRoOiAnbW0nLCBkYXk6ICd0dCcgfSxcbiAgICBkc2I6IHsgeWVhcjogJ2xsbGwnLCBtb250aDogJ21tJywgZGF5OiAnxbrFuicgfSxcbiAgICBlbDogeyB5ZWFyOiAnzrXOtc61zrUnLCBtb250aDogJ868zrwnLCBkYXk6ICfOt863JyB9LFxuICAgIGVuOiB7IHllYXI6ICd5eXl5JywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIGVvOiB7IHllYXI6ICdqampqJywgbW9udGg6ICdtbScsIGRheTogJ3R0JyB9LFxuICAgIGVzOiB7IHllYXI6ICdhYWFhJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIGV0OiB7IHllYXI6ICdhYWFhJywgbW9udGg6ICdraycsIGRheTogJ3BwJyB9LFxuICAgIGV1OiB7IHllYXI6ICd1dXV1JywgbW9udGg6ICdoaCcsIGRheTogJ2VlJyB9LFxuICAgIGZhOiB7IHllYXI6ICfYs9in2YQnLCBtb250aDogJ9mF2KfZhycsIGRheTogJ9ix2YjYsicgfSxcbiAgICBmZjogeyB5ZWFyOiAnaGhoaCcsIG1vbnRoOiAnbGwnLCBkYXk6ICfDscOxJyB9LFxuICAgIGZpOiB7IHllYXI6ICd2dnZ2JywgbW9udGg6ICdraycsIGRheTogJ3BwJyB9LFxuICAgIGZyOiB7IHllYXI6ICdhYWFhJywgbW9udGg6ICdtbScsIGRheTogJ2pqJyB9LFxuICAgIGZ5OiB7IHllYXI6ICdqampqJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIGdhOiB7IHllYXI6ICdiYmJiJywgbW9udGg6ICdtbScsIGRheTogJ2xsJyB9LFxuICAgIGdkOiB7IHllYXI6ICdiYmJiJywgbW9udGg6ICdtbScsIGRheTogJ2xsJyB9LFxuICAgIGdsOiB7IHllYXI6ICdhYWFhJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIGhlOiB7IHllYXI6ICfXqdeg15QnLCBtb250aDogJ9eX15XXk9epJywgZGF5OiAn15nXldedJyB9LFxuICAgIGhyOiB7IHllYXI6ICdnZ2dnJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIGhzYjogeyB5ZWFyOiAnbGxsbCcsIG1vbnRoOiAnbW0nLCBkYXk6ICdkZCcgfSxcbiAgICBodTogeyB5ZWFyOiAnw6nDqcOpw6knLCBtb250aDogJ2hoJywgZGF5OiAnbm4nIH0sXG4gICAgaWE6IHsgeWVhcjogJ2FhYWEnLCBtb250aDogJ21tJywgZGF5OiAnZGQnIH0sXG4gICAgaWQ6IHsgeWVhcjogJ3R0dHQnLCBtb250aDogJ2JiJywgZGF5OiAnaGgnIH0sXG4gICAgaXQ6IHsgeWVhcjogJ2FhYWEnLCBtb250aDogJ21tJywgZGF5OiAnZ2cnIH0sXG4gICAgamE6IHsgeWVhcjogJyDlubQgJywgbW9udGg6ICfmnIgnLCBkYXk6ICfml6UnIH0sXG4gICAga2E6IHsgeWVhcjogJ+GDrOGDrOGDrOGDrCcsIG1vbnRoOiAn4YOX4YOXJywgZGF5OiAn4YOg4YOgJyB9LFxuICAgIGtrOiB7IHllYXI6ICfQttC20LbQticsIG1vbnRoOiAn0LDQsCcsIGRheTogJ9C60LonIH0sXG4gICAga246IHsgeWVhcjogJ+CyteCyteCyteCytScsIG1vbnRoOiAn4LKu4LK/4LKu4LOAJywgZGF5OiAn4LKm4LK/4LKm4LK/JyB9LFxuICAgIGtvOiB7IHllYXI6ICfsl7Drj4QnLCBtb250aDogJ+yblCcsIGRheTogJ+ydvCcgfSxcbiAgICBsYjogeyB5ZWFyOiAnampqaicsIG1vbnRoOiAnbW0nLCBkYXk6ICdkZCcgfSxcbiAgICBsbzogeyB5ZWFyOiAn4Lqb4Lqb4Lqb4LqbJywgbW9udGg6ICfgupTgupQnLCBkYXk6ICfguqfguqcnIH0sXG4gICAgbHQ6IHsgeWVhcjogJ21tbW0nLCBtb250aDogJ21tJywgZGF5OiAnZGQnIH0sXG4gICAgbHY6IHsgeWVhcjogJ2dnZ2cnLCBtb250aDogJ21tJywgZGF5OiAnZGQnIH0sXG4gICAgbWVoOiB7IHllYXI6ICdhYWFhJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIG1sOiB7IHllYXI6ICfgtLXgtbzgtLfgtIInLCBtb250aDogJ+C0ruC0vuC0uOC0gicsIGRheTogJ+C0pOC1gOC0r+C0pOC0vycgfSxcbiAgICBtczogeyB5ZWFyOiAndHR0dCcsIG1vbnRoOiAnbW0nLCBkYXk6ICdoaCcgfSxcbiAgICBubDogeyB5ZWFyOiAnampqaicsIG1vbnRoOiAnbW0nLCBkYXk6ICdkZCcgfSxcbiAgICBubjogeyB5ZWFyOiAnw6XDpcOlw6UnLCBtb250aDogJ21tJywgZGF5OiAnZGQnIH0sXG4gICAgbm86IHsgeWVhcjogJ8Olw6XDpcOlJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIG9jOiB7IHllYXI6ICdhYWFhJywgbW9udGg6ICdtbScsIGRheTogJ2pqJyB9LFxuICAgIHBsOiB7IHllYXI6ICdycnJyJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIHB0OiB7IHllYXI6ICdhYWFhJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIHJtOiB7IHllYXI6ICdvb29vJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIHJvOiB7IHllYXI6ICdhYWFhJywgbW9udGg6ICdsbCcsIGRheTogJ3p6JyB9LFxuICAgIHJ1OiB7IHllYXI6ICfQs9Cz0LPQsycsIG1vbnRoOiAn0LzQvCcsIGRheTogJ9C00LQnIH0sXG4gICAgc2M6IHsgeWVhcjogJ2FhYWEnLCBtb250aDogJ21tJywgZGF5OiAnZGQnIH0sXG4gICAgc2NuOiB7IHllYXI6ICdhYWFhJywgbW9udGg6ICdtbScsIGRheTogJ2pqJyB9LFxuICAgIHNrOiB7IHllYXI6ICdycnJyJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIHNsOiB7IHllYXI6ICdsbGxsJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIHNyOiB7IHllYXI6ICfQs9Cz0LPQsycsIG1vbnRoOiAn0LzQvCcsIGRheTogJ9C00LQnIH0sXG4gICAgc3Y6IHsgeWVhcjogJ8Olw6XDpcOlJywgbW9udGg6ICdtbScsIGRheTogJ2RkJyB9LFxuICAgIHN6bDogeyB5ZWFyOiAncnJycicsIG1vbnRoOiAnbW0nLCBkYXk6ICdkZCcgfSxcbiAgICB0ZzogeyB5ZWFyOiAn0YHRgdGB0YEnLCBtb250aDogJ9C80LwnLCBkYXk6ICfRgNGAJyB9LFxuICAgIHRoOiB7IHllYXI6ICfguJvguJvguJvguJsnLCBtb250aDogJ+C4lOC4lCcsIGRheTogJ+C4p+C4pycgfSxcbiAgICB0cjogeyB5ZWFyOiAneXl5eScsIG1vbnRoOiAnYWEnLCBkYXk6ICdnZycgfSxcbiAgICB1azogeyB5ZWFyOiAn0YDRgNGA0YAnLCBtb250aDogJ9C80LwnLCBkYXk6ICfQtNC0JyB9LFxuICAgICd6aC1DTic6IHsgeWVhcjogJ+W5tCcsIG1vbnRoOiAn5pyIJywgZGF5OiAn5pelJyB9LFxuICAgICd6aC1UVyc6IHsgeWVhcjogJ+W5tCcsIG1vbnRoOiAn5pyIJywgZGF5OiAn5pelJyB9XG59O1xuXG5mdW5jdGlvbiBnZXRQbGFjZWhvbGRlck9iaihsb2NhbGU6IFN1cHBvcnRlZExvY2FsZSB8IChzdHJpbmcgJiB7fSkpIHtcbiAgICBpZiAoIWlzU3VwcG9ydGVkTG9jYWxlKGxvY2FsZSkpIHtcbiAgICAgICAgY29uc3QgbG9jYWxlTGFuZ3VhZ2UgPSBnZXRMb2NhbGVMYW5ndWFnZShsb2NhbGUpO1xuICAgICAgICBpZiAoIWlzU3VwcG9ydGVkTG9jYWxlKGxvY2FsZUxhbmd1YWdlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBsYWNlaG9sZGVycy5lbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwbGFjZWhvbGRlcnNbbG9jYWxlTGFuZ3VhZ2VdO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBsYWNlaG9sZGVyc1tsb2NhbGVdO1xuICAgIH1cbn1cblxudHlwZSBGaWVsZCA9ICdlcmEnIHwgJ3llYXInIHwgJ21vbnRoJyB8ICdkYXknIHwgJ2hvdXInIHwgJ21pbnV0ZScgfCAnc2Vjb25kJyB8ICdkYXlQZXJpb2QnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGxhY2Vob2xkZXIoZmllbGQ6IEZpZWxkLCB2YWx1ZTogc3RyaW5nLCBsb2NhbGU6IFN1cHBvcnRlZExvY2FsZSB8IChzdHJpbmcgJiB7fSkpIHtcbiAgICBpZiAoaXNQbGFjZWhvbGRlckZpZWxkKGZpZWxkKSkgcmV0dXJuIGdldFBsYWNlaG9sZGVyT2JqKGxvY2FsZSlbZmllbGRdO1xuICAgIGlmIChpc0RlZmF1bHRGaWVsZChmaWVsZCkpIHJldHVybiB2YWx1ZTtcbiAgICBpZiAoaXNUaW1lRmllbGQoZmllbGQpKSByZXR1cm4gJ+KAk+KAkyc7XG4gICAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBpc1N1cHBvcnRlZExvY2FsZShsb2NhbGU6IHN0cmluZyk6IGxvY2FsZSBpcyBTdXBwb3J0ZWRMb2NhbGUge1xuICAgIHJldHVybiBzdXBwb3J0ZWRMb2NhbGVzLmluY2x1ZGVzKGxvY2FsZSBhcyBTdXBwb3J0ZWRMb2NhbGUpO1xufVxuXG5mdW5jdGlvbiBpc1BsYWNlaG9sZGVyRmllbGQoZmllbGQ6IHVua25vd24pOiBmaWVsZCBpcyBQbGFjZWhvbGRlckZpZWxkIHtcbiAgICByZXR1cm4gcGxhY2Vob2xkZXJGaWVsZHMuaW5jbHVkZXMoZmllbGQgYXMgUGxhY2Vob2xkZXJGaWVsZCk7XG59XG5cbmZ1bmN0aW9uIGlzVGltZUZpZWxkKGZpZWxkOiB1bmtub3duKTogZmllbGQgaXMgJ2hvdXInIHwgJ21pbnV0ZScgfCAnc2Vjb25kJyB7XG4gICAgcmV0dXJuIGZpZWxkID09PSAnaG91cicgfHwgZmllbGQgPT09ICdtaW51dGUnIHx8IGZpZWxkID09PSAnc2Vjb25kJztcbn1cblxuZnVuY3Rpb24gaXNEZWZhdWx0RmllbGQoZmllbGQ6IHVua25vd24pOiBmaWVsZCBpcyAnZXJhJyB8ICdkYXlQZXJpb2QnIHtcbiAgICByZXR1cm4gZmllbGQgPT09ICdlcmEnIHx8IGZpZWxkID09PSAnZGF5UGVyaW9kJztcbn1cblxuZnVuY3Rpb24gZ2V0TG9jYWxlTGFuZ3VhZ2UobG9jYWxlOiBzdHJpbmcpIHtcbiAgICBpZiAoSW50bC5Mb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnRsLkxvY2FsZShsb2NhbGUpLmxhbmd1YWdlO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYWxlLnNwbGl0KCctJylbMF0hO1xufVxuIl19","export function getOptsByGranularity(granularity, hourCycle, isTimeValue = false) {\n const opts = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n timeZoneName: 'short',\n hourCycle: normalizeHourCycle(hourCycle),\n hour12: normalizeHour12(hourCycle)\n };\n if (isTimeValue) {\n delete opts.year;\n delete opts.month;\n delete opts.day;\n }\n if (granularity === 'day') {\n delete opts.second;\n delete opts.hour;\n delete opts.minute;\n delete opts.timeZoneName;\n }\n if (granularity === 'hour') {\n delete opts.minute;\n delete opts.second;\n }\n if (granularity === 'minute')\n delete opts.second;\n return opts;\n}\nexport function normalizeDateStep(step) {\n return {\n year: step?.year ?? 1,\n month: step?.month ?? 1,\n day: step?.day ?? 1,\n hour: step?.hour ?? 1,\n minute: step?.minute ?? 1,\n second: step?.second ?? 1,\n millisecond: step?.millisecond ?? 1\n };\n}\nexport function handleCalendarInitialFocus(calendar) {\n const selectedDay = calendar.querySelector('[data-selected]');\n if (selectedDay)\n return selectedDay.focus();\n const today = calendar.querySelector('[data-today]');\n if (today)\n return today.focus();\n const firstDay = calendar.querySelector('[data-rdx-calendar-day]');\n if (firstDay)\n return firstDay.focus();\n}\nexport function normalizeHourCycle(hourCycle) {\n if (hourCycle === 24)\n return 'h23';\n if (hourCycle === 12)\n return 'h11';\n return undefined;\n}\nexport function normalizeHour12(hourCycle) {\n if (hourCycle === 24)\n return false;\n if (hourCycle === 12)\n return true;\n return undefined;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2RhdGUtdGltZS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsV0FBd0IsRUFBRSxTQUFvQixFQUFFLGNBQXVCLEtBQUs7SUFDN0csTUFBTSxJQUFJLEdBQStCO1FBQ3JDLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLFNBQVM7UUFDaEIsR0FBRyxFQUFFLFNBQVM7UUFDZCxJQUFJLEVBQUUsU0FBUztRQUNmLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxPQUFPO1FBQ3JCLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7UUFDeEMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUM7S0FDckMsQ0FBQztJQUNGLElBQUksV0FBVyxFQUFFLENBQUM7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxXQUFXLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFDRCxJQUFJLFdBQVcsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLFdBQVcsS0FBSyxRQUFRO1FBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBRWpELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBZTtJQUM3QyxPQUFPO1FBQ0gsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQztRQUNyQixLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssSUFBSSxDQUFDO1FBQ3ZCLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQztRQUNyQixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDO1FBQ3pCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUM7UUFDekIsV0FBVyxFQUFFLElBQUksRUFBRSxXQUFXLElBQUksQ0FBQztLQUN0QyxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxRQUFxQjtJQUM1RCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFjLGlCQUFpQixDQUFDLENBQUM7SUFDM0UsSUFBSSxXQUFXO1FBQUUsT0FBTyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFNUMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBYyxjQUFjLENBQUMsQ0FBQztJQUNsRSxJQUFJLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVoQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFjLHlCQUF5QixDQUFDLENBQUM7SUFDaEYsSUFBSSxRQUFRO1FBQUUsT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDMUMsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxTQUFvQjtJQUNuRCxJQUFJLFNBQVMsS0FBSyxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDbkMsSUFBSSxTQUFTLEtBQUssRUFBRTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ25DLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFNBQW9CO0lBQ2hELElBQUksU0FBUyxLQUFLLEVBQUU7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNuQyxJQUFJLFNBQVMsS0FBSyxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDbEMsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYW51bGFyaXR5IH0gZnJvbSAnLi9jb21wYXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRlU3RlcCwgSG91ckN5Y2xlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcHRzQnlHcmFudWxhcml0eShncmFudWxhcml0eTogR3JhbnVsYXJpdHksIGhvdXJDeWNsZTogSG91ckN5Y2xlLCBpc1RpbWVWYWx1ZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgY29uc3Qgb3B0czogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7XG4gICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICAgIHNlY29uZDogJzItZGlnaXQnLFxuICAgICAgICB0aW1lWm9uZU5hbWU6ICdzaG9ydCcsXG4gICAgICAgIGhvdXJDeWNsZTogbm9ybWFsaXplSG91ckN5Y2xlKGhvdXJDeWNsZSksXG4gICAgICAgIGhvdXIxMjogbm9ybWFsaXplSG91cjEyKGhvdXJDeWNsZSlcbiAgICB9O1xuICAgIGlmIChpc1RpbWVWYWx1ZSkge1xuICAgICAgICBkZWxldGUgb3B0cy55ZWFyO1xuICAgICAgICBkZWxldGUgb3B0cy5tb250aDtcbiAgICAgICAgZGVsZXRlIG9wdHMuZGF5O1xuICAgIH1cblxuICAgIGlmIChncmFudWxhcml0eSA9PT0gJ2RheScpIHtcbiAgICAgICAgZGVsZXRlIG9wdHMuc2Vjb25kO1xuICAgICAgICBkZWxldGUgb3B0cy5ob3VyO1xuICAgICAgICBkZWxldGUgb3B0cy5taW51dGU7XG4gICAgICAgIGRlbGV0ZSBvcHRzLnRpbWVab25lTmFtZTtcbiAgICB9XG4gICAgaWYgKGdyYW51bGFyaXR5ID09PSAnaG91cicpIHtcbiAgICAgICAgZGVsZXRlIG9wdHMubWludXRlO1xuICAgICAgICBkZWxldGUgb3B0cy5zZWNvbmQ7XG4gICAgfVxuXG4gICAgaWYgKGdyYW51bGFyaXR5ID09PSAnbWludXRlJykgZGVsZXRlIG9wdHMuc2Vjb25kO1xuXG4gICAgcmV0dXJuIG9wdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVEYXRlU3RlcChzdGVwPzogRGF0ZVN0ZXApOiBEYXRlU3RlcCB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeWVhcjogc3RlcD8ueWVhciA/PyAxLFxuICAgICAgICBtb250aDogc3RlcD8ubW9udGggPz8gMSxcbiAgICAgICAgZGF5OiBzdGVwPy5kYXkgPz8gMSxcbiAgICAgICAgaG91cjogc3RlcD8uaG91ciA/PyAxLFxuICAgICAgICBtaW51dGU6IHN0ZXA/Lm1pbnV0ZSA/PyAxLFxuICAgICAgICBzZWNvbmQ6IHN0ZXA/LnNlY29uZCA/PyAxLFxuICAgICAgICBtaWxsaXNlY29uZDogc3RlcD8ubWlsbGlzZWNvbmQgPz8gMVxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVDYWxlbmRhckluaXRpYWxGb2N1cyhjYWxlbmRhcjogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBzZWxlY3RlZERheSA9IGNhbGVuZGFyLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCdbZGF0YS1zZWxlY3RlZF0nKTtcbiAgICBpZiAoc2VsZWN0ZWREYXkpIHJldHVybiBzZWxlY3RlZERheS5mb2N1cygpO1xuXG4gICAgY29uc3QgdG9kYXkgPSBjYWxlbmRhci5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignW2RhdGEtdG9kYXldJyk7XG4gICAgaWYgKHRvZGF5KSByZXR1cm4gdG9kYXkuZm9jdXMoKTtcblxuICAgIGNvbnN0IGZpcnN0RGF5ID0gY2FsZW5kYXIucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJ1tkYXRhLXJkeC1jYWxlbmRhci1kYXldJyk7XG4gICAgaWYgKGZpcnN0RGF5KSByZXR1cm4gZmlyc3REYXkuZm9jdXMoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUhvdXJDeWNsZShob3VyQ3ljbGU6IEhvdXJDeWNsZSkge1xuICAgIGlmIChob3VyQ3ljbGUgPT09IDI0KSByZXR1cm4gJ2gyMyc7XG4gICAgaWYgKGhvdXJDeWNsZSA9PT0gMTIpIHJldHVybiAnaDExJztcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSG91cjEyKGhvdXJDeWNsZTogSG91ckN5Y2xlKSB7XG4gICAgaWYgKGhvdXJDeWNsZSA9PT0gMjQpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoaG91ckN5Y2xlID09PSAxMikgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==","import { isZonedDateTime, toDate } from './comparators';\nimport { DATE_SEGMENT_PARTS, EDITABLE_SEGMENT_PARTS, isDateSegmentPart, isSegmentPart, TIME_SEGMENT_PARTS } from './parts';\nimport { getPlaceholder } from './placeholders';\nimport { getOptsByGranularity, normalizeHourCycle } from './utils';\nconst calendarDateTimeGranularities = ['hour', 'minute', 'second'];\nexport function syncTimeSegmentValues(props) {\n return Object.fromEntries(TIME_SEGMENT_PARTS.map((part) => {\n if (part === 'dayPeriod')\n return [part, props.formatter.dayPeriod(toDate(props.value))];\n return [part, props.value[part]];\n }));\n}\nexport function initializeSegmentValues(granularity) {\n const initialParts = EDITABLE_SEGMENT_PARTS.map((part) => {\n if (part === 'dayPeriod')\n return [part, 'AM'];\n return [part, null];\n }).filter(([key]) => {\n if (key === 'literal' || key === null)\n return false;\n if (granularity === 'minute' && key === 'second')\n return false;\n if (granularity === 'hour' && (key === 'second' || key === 'minute'))\n return false;\n if (granularity === 'day')\n return !calendarDateTimeGranularities.includes(key) && key !== 'dayPeriod';\n else\n return true;\n });\n return Object.fromEntries(initialParts);\n}\nexport function syncSegmentValues(props) {\n const { formatter } = props;\n const dateValues = DATE_SEGMENT_PARTS.map((part) => {\n return [part, props.value[part]];\n });\n if ('hour' in props.value) {\n const timeValues = syncTimeSegmentValues({ value: props.value, formatter });\n return { ...Object.fromEntries(dateValues), ...timeValues };\n }\n return Object.fromEntries(dateValues);\n}\nfunction createContentObj(props) {\n const { segmentValues, formatter, locale } = props;\n function getPartContent(part) {\n if ('hour' in segmentValues) {\n const value = segmentValues[part];\n if (value !== null) {\n if (part === 'day') {\n return formatter.part(props.dateRef.set({\n [part]: value,\n /**\n * Edge case for the day field:\n *\n * 1. If the month is filled,\n * we need to ensure that the day snaps to the maximum value of that month.\n * 2. If the month is not filled,\n * we default to the month with the maximum number of days (here just using January, 31 days),\n * so that user can input any possible day.\n */\n month: segmentValues.month ?? 1\n }), part, { hourCycle: normalizeHourCycle(props.hourCycle) });\n }\n return formatter.part(props.dateRef.set({ [part]: value }), part, {\n hourCycle: normalizeHourCycle(props.hourCycle)\n });\n }\n else {\n return getPlaceholder(part, '', locale());\n }\n }\n else {\n if (isDateSegmentPart(part)) {\n const value = segmentValues[part];\n if (value !== null) {\n if (part === 'day') {\n return formatter.part(props.dateRef.set({\n [part]: value,\n // Same logic as above for the day field\n month: segmentValues.month ?? 1\n }), part);\n }\n return formatter.part(props.dateRef.set({ [part]: value }), part);\n }\n else {\n return getPlaceholder(part, '', locale());\n }\n }\n return '';\n }\n }\n const content = Object.keys(segmentValues).reduce((obj, part) => {\n if (!isSegmentPart(part))\n return obj;\n if ('hour' in segmentValues && part === 'dayPeriod') {\n const value = segmentValues[part];\n if (value !== null)\n obj[part] = value;\n else\n obj[part] = getPlaceholder(part, 'AM', locale());\n }\n else {\n obj[part] = getPartContent(part);\n }\n return obj;\n }, {});\n return content;\n}\nfunction createContentArr(props) {\n const { granularity, formatter, contentObj, hideTimeZone, hourCycle, isTimeValue } = props;\n const parts = formatter.toParts(props.dateRef, getOptsByGranularity(granularity, hourCycle, isTimeValue));\n const segmentContentArr = parts\n .map((part) => {\n const defaultParts = ['literal', 'timeZoneName', null];\n if (defaultParts.includes(part.type) || !isSegmentPart(part.type)) {\n return {\n part: part.type,\n value: part.value\n };\n }\n return {\n part: part.type,\n value: contentObj[part.type]\n };\n })\n .filter((segment) => {\n if (segment.part === null || segment.value === null)\n return false;\n if (segment.part === 'timeZoneName' && (!isZonedDateTime(props.dateRef) || hideTimeZone))\n return false;\n return true;\n });\n return segmentContentArr;\n}\nexport function createContent(props) {\n const contentObj = createContentObj(props);\n const contentArr = createContentArr({\n contentObj,\n ...props\n });\n return {\n obj: contentObj,\n arr: contentArr\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9jb3JlL3NyYy9kYXRlLXRpbWUvcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ3JCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFbkUsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFZbkUsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQWlDO0lBQ25FLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FDckIsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDNUIsSUFBSSxJQUFJLEtBQUssV0FBVztZQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEYsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQXVCLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQyxDQUNjLENBQUM7QUFDekIsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxXQUF3QjtJQUM1RCxNQUFNLFlBQVksR0FBRyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNyRCxJQUFJ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QUk7Z0JBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2FBQ3BCLENBQUM7UUFDTixDQUFDO1FBRUQsT0FBTztZQUNILElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUMvQixDQUFDO0lBQ04sQ0FBQyxDQUFDO1NBQ0QsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFtRCxFQUFFO1FBQ2pFLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxJQUFJO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDbEUsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGNBQWMsSUFBSSxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxZQUFZLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUV2RyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztJQUVQLE9BQU8saUJBQWlCLENBQUM7QUFDN0IsQ0FBQztBQUlELE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBeUI7SUFDbkQsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFM0MsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFDaEMsVUFBVTtRQUNWLEdBQUcsS0FBSztLQUNYLENBQUMsQ0FBQztJQUVILE9BQU87UUFDSCxHQUFHLEVBQUUsVUFBVTtRQUNmLEdBQUcsRUFBRSxVQUFVO0tBQ2xCLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXRTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVGaWVsZHMsIERhdGVWYWx1ZSB9IGZyb20gJ0BpbnRlcm5hdGlvbmFsaXplZC9kYXRlJztcbmltcG9ydCB7IEdyYW51bGFyaXR5LCBpc1pvbmVkRGF0ZVRpbWUsIHRvRGF0ZSB9IGZyb20gJy4vY29tcGFyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybWF0dGVyIH0gZnJvbSAnLi9mb3JtYXR0ZXInO1xuaW1wb3J0IHtcbiAgICBEQVRFX1NFR01FTlRfUEFSVFMsXG4gICAgRURJVEFCTEVfU0VHTUVOVF9QQVJUUyxcbiAgICBpc0RhdGVTZWdtZW50UGFydCxcbiAgICBpc1NlZ21lbnRQYXJ0LFxuICAgIFRJTUVfU0VHTUVOVF9QQVJUU1xufSBmcm9tICcuL3BhcnRzJztcbmltcG9ydCB7IGdldFBsYWNlaG9sZGVyIH0gZnJvbSAnLi9wbGFjZWhvbGRlcnMnO1xuaW1wb3J0IHsgRGF0ZVNlZ21lbnRQYXJ0LCBIb3VyQ3ljbGUsIFNlZ21lbnRDb250ZW50T2JqLCBTZWdtZW50UGFydCwgU2VnbWVudFZhbHVlT2JqLCBUaW1lU2VnbWVudFBhcnQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGdldE9wdHNCeUdyYW51bGFyaXR5LCBub3JtYWxpemVIb3VyQ3ljbGUgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgY2FsZW5kYXJEYXRlVGltZUdyYW51bGFyaXRpZXMgPSBbJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCddO1xuXG50eXBlIFN5bmNEYXRlU2VnbWVudFZhbHVlc1Byb3BzID0ge1xuICAgIHZhbHVlOiBEYXRlVmFsdWU7XG4gICAgZm9ybWF0dGVyOiBGb3JtYXR0ZXI7XG59O1xuXG50eXBlIFN5bmNUaW1lU2VnbWVudFZhbHVlc1Byb3BzID0ge1xuICAgIHZhbHVlOiBEYXRlVmFsdWU7XG4gICAgZm9ybWF0dGVyOiBGb3JtYXR0ZXI7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc3luY1RpbWVTZWdtZW50VmFsdWVzKHByb3BzOiBTeW5jVGltZVNlZ21lbnRWYWx1ZXNQcm9wcykge1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIFRJTUVfU0VHTUVOVF9QQVJUUy5tYXAoKHBhcnQpID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJ0ID09PSAnZGF5UGVyaW9kJykgcmV0dXJuIFtwYXJ0LCBwcm9wcy5mb3JtYXR0ZXIuZGF5UGVyaW9kKHRvRGF0ZShwcm9wcy52YWx1ZSkpXTtcbiAgICAgICAgICAgIHJldHVybiBbcGFydCwgcHJvcHMudmFsdWVbcGFydCBhcyBrZXlvZiBEYXRlVmFsdWVdXTtcbiAgICAgICAgfSlcbiAgICApIGFzIFNlZ21lbnRWYWx1ZU9iajtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVTZWdtZW50VmFsdWVzKGdyYW51bGFyaXR5OiBHcmFudWxhcml0eSk6IFNlZ21lbnRWYWx1ZU9iaiB7XG4gICAgY29uc3QgaW5pdGlhbFBhcnRzID0gRURJVEFCTEVfU0VHTUVOVF9QQVJUUy5tYXAoKHBhcnQpID0+IHtcbiAgICAgICAgaWYgKHBhcnQgPT09ICdkYXlQZXJpb2QnKSByZXR1cm4gW3BhcnQsICdBTSddO1xuXG4gICAgICAgIHJldHVybiBbcGFydCwgbnVsbF07XG4gICAgfSkuZmlsdGVyKChba2V5XSkgPT4ge1xuICAgICAgICBpZiAoa2V5ID09PSAnbGl0ZXJhbCcgfHwga2V5ID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChncmFudWxhcml0eSA9PT0gJ21pbnV0ZScgJiYga2V5ID09PSAnc2Vjb25kJykgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT09ICdob3VyJyAmJiAoa2V5ID09PSAnc2Vjb25kJyB8fCBrZXkgPT09ICdtaW51dGUnKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT09ICdkYXknKSByZXR1cm4gIWNhbGVuZGFyRGF0ZVRpbWVHcmFudWxhcml0aWVzLmluY2x1ZGVzKGtleSkgJiYga2V5ICE9PSAnZGF5UGVyaW9kJztcbiAgICAgICAgZWxzZSByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoaW5pdGlhbFBhcnRzKTtcbn1cblxudHlwZSBTaGFyZWRDb250ZW50UHJvcHMgPSB7XG4gICAgZ3JhbnVsYXJpdHk6IEdyYW51bGFyaXR5O1xuICAgIGRhdGVSZWY6IERhdGVWYWx1ZTtcbiAgICBmb3JtYXR0ZXI6IEZvcm1hdHRlcjtcbiAgICBoaWRlVGltZVpvbmU6IGJvb2xlYW47XG4gICAgaG91ckN5Y2xlOiBIb3VyQ3ljbGU7XG4gICAgaXNUaW1lVmFsdWU/OiBib29sZWFuO1xufTtcblxudHlwZSBDcmVhdGVDb250ZW50T2JqUHJvcHMgPSBTaGFyZWRDb250ZW50UHJvcHMgJiB7XG4gICAgc2VnbWVudFZhbHVlczogU2VnbWVudFZhbHVlT2JqO1xuICAgIGxvY2FsZTogSW5wdXRTaWduYWw8c3RyaW5nPjtcbn07XG5cbnR5cGUgQ3JlYXRlQ29udGVudEFyclByb3BzID0gU2hhcmVkQ29udGVudFByb3BzICYge1xuICAgIGNvbnRlbnRPYmo6IFNlZ21lbnRDb250ZW50T2JqO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHN5bmNTZWdtZW50VmFsdWVzKHByb3BzOiBTeW5jRGF0ZVNlZ21lbnRWYWx1ZXNQcm9wcykge1xuICAgIGNvbnN0IHsgZm9ybWF0dGVyIH0gPSBwcm9wcztcblxuICAgIGNvbnN0IGRhdGVWYWx1ZXMgPSBEQVRFX1NFR01FTlRfUEFSVFMubWFwKChwYXJ0KSA9PiB7XG4gICAgICAgIHJldHVybiBbcGFydCwgcHJvcHMudmFsdWVbcGFydF1dO1xuICAgIH0pO1xuICAgIGlmICgnaG91cicgaW4gcHJvcHMudmFsdWUpIHtcbiAgICAgICAgY29uc3QgdGltZVZhbHVlcyA9IHN5bmNUaW1lU2VnbWVudFZhbHVlcyh7IHZhbHVlOiBwcm9wcy52YWx1ZSwgZm9ybWF0dGVyIH0pO1xuXG4gICAgICAgIHJldHVybiB7IC4uLk9iamVjdC5mcm9tRW50cmllcyhkYXRlVmFsdWVzKSwgLi4udGltZVZhbHVlcyB9IGFzIFNlZ21lbnRWYWx1ZU9iajtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGRhdGVWYWx1ZXMpIGFzIFNlZ21lbnRWYWx1ZU9iajtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29udGVudE9iaihwcm9wczogQ3JlYXRlQ29udGVudE9ialByb3BzKSB7XG4gICAgY29uc3QgeyBzZWdtZW50VmFsdWVzLCBmb3JtYXR0ZXIsIGxvY2FsZSB9ID0gcHJvcHM7XG4gICAgZnVuY3Rpb24gZ2V0UGFydENvbnRlbnQocGFydDogRGF0ZVNlZ21lbnRQYXJ0IHwgVGltZVNlZ21lbnRQYXJ0KSB7XG4gICAgICAgIGlmICgnaG91cicgaW4gc2VnbWVudFZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBzZWdtZW50VmFsdWVzW3BhcnRdO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnQgPT09ICdkYXknKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZXIucGFydChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRhdGVSZWYuc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFydCBhcyBrZXlvZiBEYXRlRmllbGRzXTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogRWRnZSBjYXNlIGZvciB0aGUgZGF5IGZpZWxkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gSWYgdGhlIG1vbnRoIGlzIGZpbGxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGRheSBzbmFwcyB0byB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGF0IG1vbnRoLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIElmIHRoZSBtb250aCBpcyBub3QgZmlsbGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgd2UgZGVmYXVsdCB0byB0aGUgbW9udGggd2l0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGF5cyAoaGVyZSBqdXN0IHVzaW5nIEphbnVhcnksIDMxIGRheXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgc28gdGhhdCB1c2VyIGNhbiBpbnB1dCBhbnkgcG9zc2libGUgZGF5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiBzZWdtZW50VmFsdWVzLm1vbnRoID8/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFydCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaG91ckN5Y2xlOiBub3JtYWxpemVIb3VyQ3ljbGUocHJvcHMuaG91ckN5Y2xlKSB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZXIucGFydChwcm9wcy5kYXRlUmVmLnNldCh7IFtwYXJ0XTogdmFsdWUgfSksIHBhcnQsIHtcbiAgICAgICAgICAgICAgICAgICAgaG91ckN5Y2xlOiBub3JtYWxpemVIb3VyQ3ljbGUocHJvcHMuaG91ckN5Y2xlKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UGxhY2Vob2xkZXIocGFydCwgJycsIGxvY2FsZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc0RhdGVTZWdtZW50UGFydChwYXJ0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2VnbWVudFZhbHVlc1twYXJ0XTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnQgPT09ICdkYXknKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVyLnBhcnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuZGF0ZVJlZi5zZXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFydF06IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYW1lIGxvZ2ljIGFzIGFib3ZlIGZvciB0aGUgZGF5IGZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiBzZWdtZW50VmFsdWVzLm1vbnRoID8/IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlci5wYXJ0KHByb3BzLmRhdGVSZWYuc2V0KHsgW3BhcnRdOiB2YWx1ZSB9KSwgcGFydCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFBsYWNlaG9sZGVyKHBhcnQsICcnLCBsb2NhbGUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudCA9IE9iamVjdC5rZXlzKHNlZ21lbnRWYWx1ZXMpLnJlZHVjZSgob2JqLCBwYXJ0KSA9PiB7XG4gICAgICAgIGlmICghaXNTZWdtZW50UGFydChwYXJ0KSkgcmV0dXJuIG9iajtcbiAgICAgICAgaWYgKCdob3VyJyBpbiBzZWdtZW50VmFsdWVzICYmIHBhcnQgPT09ICdkYXlQZXJpb2QnKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNlZ21lbnRWYWx1ZXNbcGFydF07XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkgb2JqW3BhcnRdID0gdmFsdWU7XG4gICAgICAgICAgICBlbHNlIG9ialtwYXJ0XSA9IGdldFBsYWNlaG9sZGVyKHBhcnQsICdBTScsIGxvY2FsZSgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9ialtwYXJ0XSA9IGdldFBhcnRDb250ZW50KHBhcnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCB7fSBhcyBTZWdtZW50Q29udGVudE9iaik7XG5cbiAgICByZXR1cm4gY29udGVudDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29udGVudEFycihwcm9wczogQ3JlYXRlQ29udGVudEFyclByb3BzKSB7XG4gICAgY29uc3QgeyBncmFudWxhcml0eSwgZm9ybWF0dGVyLCBjb250ZW50T2JqLCBoaWRlVGltZVpvbmUsIGhvdXJDeWNsZSwgaXNUaW1lVmFsdWUgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVyLnRvUGFydHMocHJvcHMuZGF0ZVJlZiwgZ2V0T3B0c0J5R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHksIGhvdXJDeWNsZSwgaXNUaW1lVmFsdWUpKTtcblxuICAgIGNvbnN0IHNlZ21lbnRDb250ZW50QXJyID0gcGFydHNcbiAgICAgICAgLm1hcCgocGFydCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFBhcnRzID0gWydsaXRlcmFsJywgJ3RpbWVab25lTmFtZScsIG51bGxdO1xuXG4gICAgICAgICAgICBpZiAoZGVmYXVsdFBhcnRzLmluY2x1ZGVzKHBhcnQudHlwZSkgfHwgIWlzU2VnbWVudFBhcnQocGFydC50eXBlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnQ6IHBhcnQudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhcnQudmFsdWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHBhcnQ6IHBhcnQudHlwZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY29udGVudE9ialtwYXJ0LnR5cGVdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKChzZWdtZW50KTogc2VnbWVudCBpcyB7IHBhcnQ6IFNlZ21lbnRQYXJ0OyB2YWx1ZTogc3RyaW5nIH0gPT4ge1xuICAgICAgICAgICAgaWYgKHNlZ21lbnQucGFydCA9PT0gbnVsbCB8fCBzZWdtZW50LnZhbHVlID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBpZiAoc2VnbWVudC5wYXJ0ID09PSAndGltZVpvbmVOYW1lJyAmJiAoIWlzWm9uZWREYXRlVGltZShwcm9wcy5kYXRlUmVmKSB8fCBoaWRlVGltZVpvbmUpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcblxuICAgIHJldHVybiBzZWdtZW50Q29udGVudEFycjtcbn1cblxudHlwZSBDcmVhdGVDb250ZW50UHJvcHMgPSBDcmVhdGVDb250ZW50T2JqUHJvcHM7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZW50KHByb3BzOiBDcmVhdGVDb250ZW50UHJvcHMpIHtcbiAgICBjb25zdCBjb250ZW50T2JqID0gY3JlYXRlQ29udGVudE9iaihwcm9wcyk7XG5cbiAgICBjb25zdCBjb250ZW50QXJyID0gY3JlYXRlQ29udGVudEFycih7XG4gICAgICAgIGNvbnRlbnRPYmosXG4gICAgICAgIC4uLnByb3BzXG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBvYmo6IGNvbnRlbnRPYmosXG4gICAgICAgIGFycjogY29udGVudEFyclxuICAgIH07XG59XG4iXX0=","import { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BACKSPACE, ENTER, SPACE } from '../kbd-constants';\nexport function isSegmentNavigationKey(key) {\n if (key === ARROW_RIGHT || key === ARROW_LEFT)\n return true;\n return false;\n}\nexport function isNumberString(value) {\n if (Number.isNaN(Number.parseInt(value)))\n return false;\n return true;\n}\nexport function isAcceptableSegmentKey(key) {\n const acceptableSegmentKeys = [\n ENTER,\n ARROW_UP,\n ARROW_DOWN,\n ARROW_LEFT,\n ARROW_RIGHT,\n BACKSPACE,\n SPACE,\n 'a',\n 'A',\n 'p',\n 'P'\n ];\n if (acceptableSegmentKeys.includes(key))\n return true;\n if (isNumberString(key))\n return true;\n return false;\n}\nexport function getSegmentElements(parentElement) {\n return Array.from(parentElement.querySelectorAll('[data-rdx-date-field-segment]')).filter((item) => item.getAttribute('data-rdx-date-field-segment') !== 'literal');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvY29yZS9zcmMvZGF0ZS10aW1lL3NlZ21lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFHLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxHQUFXO0lBQzlDLElBQUksR0FBRyxLQUFLLFdBQVcsSUFBSSxHQUFHLEtBQUssVUFBVTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDeEMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN2RCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEdBQVc7SUFDOUMsTUFBTSxxQkFBcUIsR0FBRztRQUMxQixLQUFLO1FBQ0wsUUFBUTtRQUNSLFVBQVU7UUFDVixVQUFVO1FBQ1YsV0FBVztRQUNYLFNBQVM7UUFDVCxLQUFLO1FBQ0wsR0FBRztRQUNILEdBQUc7UUFDSCxHQUFHO1FBQ0gsR0FBRztLQUNOLENBQUM7SUFDRixJQUFJLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNyRCxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNyQyxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLGFBQTBCO0lBQ3pELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDckYsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsNkJBQTZCLENBQUMsS0FBSyxTQUFTLENBQzNFLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVJST1dfRE9XTiwgQVJST1dfTEVGVCwgQVJST1dfUklHSFQsIEFSUk9XX1VQLCBCQUNLU1BBQ0UsIEVOVEVSLCBTUEFDRSB9IGZyb20gJy4uL2tiZC1jb25zdGFudHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNTZWdtZW50TmF2aWdhdGlvbktleShrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkgPT09IEFSUk9XX1JJR0hUIHx8IGtleSA9PT0gQVJST1dfTEVGVCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXJTdHJpbmcodmFsdWU6IHN0cmluZykge1xuICAgIGlmIChOdW1iZXIuaXNOYU4oTnVtYmVyLnBhcnNlSW50KHZhbHVlKSkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWNjZXB0YWJsZVNlZ21lbnRLZXkoa2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBhY2NlcHRhYmxlU2VnbWVudEtleXMgPSBbXG4gICAgICAgIEVOVEVSLFxuICAgICAgICBBUlJPV19VUCxcbiAgICAgICAgQVJST1dfRE9XTixcbiAgICAgICAgQVJST1dfTEVGVCxcbiAgICAgICAgQVJST1dfUklHSFQsXG4gICAgICAgIEJBQ0tTUEFDRSxcbiAgICAgICAgU1BBQ0UsXG4gICAgICAgICdhJyxcbiAgICAgICAgJ0EnLFxuICAgICAgICAncCcsXG4gICAgICAgICdQJ1xuICAgIF07XG4gICAgaWYgKGFjY2VwdGFibGVTZWdtZW50S2V5cy5pbmNsdWRlcyhrZXkpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoaXNOdW1iZXJTdHJpbmcoa2V5KSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VnbWVudEVsZW1lbnRzKHBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShwYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJkeC1kYXRlLWZpZWxkLXNlZ21lbnRdJykpLmZpbHRlcihcbiAgICAgICAgKGl0ZW0pID0+IGl0ZW0uZ2V0QXR0cmlidXRlKCdkYXRhLXJkeC1kYXRlLWZpZWxkLXNlZ21lbnQnKSAhPT0gJ2xpdGVyYWwnXG4gICAgKTtcbn1cbiJdfQ==","/*\n * Implementation ported from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/internal/helpers/date/types.ts\n */\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL2RhdGUtdGltZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBJbXBsZW1lbnRhdGlvbiBwb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbWVsdC11aS9tZWx0LXVpL2Jsb2IvZGV2ZWxvcC9zcmMvbGliL2ludGVybmFsL2hlbHBlcnMvZGF0ZS90eXBlcy50c1xuICovXG5cbmltcG9ydCB0eXBlIHsgRGF0ZVZhbHVlIH0gZnJvbSAnQGludGVybmF0aW9uYWxpemVkL2RhdGUnO1xuaW1wb3J0IHsgREFURV9TRUdNRU5UX1BBUlRTLCBFRElUQUJMRV9TRUdNRU5UX1BBUlRTLCBOT05fRURJVEFCTEVfU0VHTUVOVF9QQVJUUywgVElNRV9TRUdNRU5UX1BBUlRTIH0gZnJvbSAnLi9wYXJ0cyc7XG5cbmV4cG9ydCB0eXBlIERhdGVNYXRjaGVyID0gKGRhdGU6IERhdGVWYWx1ZSkgPT4gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgRGF0ZVN0ZXAgPSB7XG4gICAgeWVhcj86IG51bWJlcjtcbiAgICBtb250aD86IG51bWJlcjtcbiAgICBkYXk/OiBudW1iZXI7XG4gICAgaG91cj86IG51bWJlcjtcbiAgICBtaW51dGU/OiBudW1iZXI7XG4gICAgc2Vjb25kPzogbnVtYmVyO1xuICAgIG1pbGxpc2Vjb25kPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0ge1xuICAgIHN0YXJ0OiBEYXRlVmFsdWUgfCB1bmRlZmluZWQ7XG4gICAgZW5kOiBEYXRlVmFsdWUgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBIb3VyQ3ljbGUgPSAxMiB8IDI0IHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgdHlwZSBNb250aDxUPiA9IHtcbiAgICAvKipcbiAgICAgKiBBIGBEYXRlVmFsdWVgIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBtb250aC4gU2luY2UgZGF5c1xuICAgICAqIGZyb20gdGhlIHByZXZpb3VzIGFuZCBuZXh0IG1vbnRocyBtYXkgYmUgaW5jbHVkZWQgaW4gdGhlXG4gICAgICogY2FsZW5kYXIgZ3JpZCwgd2UgbmVlZCBhIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIHZhbHVlXG4gICAgICogdGhlIGdyaWQgaXMgcmVwcmVzZW50aW5nLlxuICAgICAqL1xuICAgIHZhbHVlOiBEYXRlVmFsdWU7XG5cbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiAocm93cykgYXJyYXlzIHJlcHJlc2VudGluZyB0aGUgd2Vla3MgaW4gdGhlIGNhbGVuZGFyLlxuICAgICAqIEVhY2ggc3ViLWFycmF5IHJlcHJlc2VudHMgYSB3ZWVrLCBhbmQgY29udGFpbnMgdGhlIGRhdGVzIGZvciBlYWNoXG4gICAgICogZGF5IGluIHRoYXQgd2Vlay4gVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZnVsIGZvciByZW5kZXJpbmcgdGhlIGNhbGVuZGFyXG4gICAgICogZ3JpZCB1c2luZyBhIHRhYmxlLCB3aGVyZSBlYWNoIHJvdyByZXByZXNlbnRzIGEgd2VlayBhbmQgZWFjaCBjZWxsXG4gICAgICogcmVwcmVzZW50cyBhIGRheS5cbiAgICAgKi9cbiAgICB3ZWVrczogVFtdW107XG5cbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiAoY2VsbHMpIGFsbCB0aGUgZGF0ZXMgaW4gdGhlIGN1cnJlbnQgbW9udGgsIGluY2x1ZGluZyBkYXRlcyBmcm9tXG4gICAgICogdGhlIHByZXZpb3VzIGFuZCBuZXh0IG1vbnRocyB0aGF0IGFyZSB1c2VkIHRvIGZpbGwgb3V0IHRoZSBjYWxlbmRhciBncmlkLlxuICAgICAqIFRoaXMgYXJyYXkgaXMgdXNlZnVsIGZvciByZW5kZXJpbmcgdGhlIGNhbGVuZGFyIGdyaWQgaW4gYSBjdXN0b21pemFibGUgd2F5LFxuICAgICAqIGFzIGl0IHByb3ZpZGVzIGFsbCB0aGUgZGF0ZXMgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkIGluIHRoZSBncmlkIGluIGEgZmxhdFxuICAgICAqIGFycmF5LlxuICAgICAqL1xuICAgIGRhdGVzOiBUW107XG59O1xuXG5leHBvcnQgdHlwZSBEYXRlU2VnbWVudFBhcnQgPSAodHlwZW9mIERBVEVfU0VHTUVOVF9QQVJUUylbbnVtYmVyXTtcbmV4cG9ydCB0eXBlIFRpbWVTZWdtZW50UGFydCA9ICh0eXBlb2YgVElNRV9TRUdNRU5UX1BBUlRTKVtudW1iZXJdO1xuZXhwb3J0IHR5cGUgRWRpdGFibGVTZWdtZW50UGFydCA9ICh0eXBlb2YgRURJVEFCTEVfU0VHTUVOVF9QQVJUUylbbnVtYmVyXTtcbmV4cG9ydCB0eXBlIE5vbkVkaXRhYmxlU2VnbWVudFBhcnQgPSAodHlwZW9mIE5PTl9FRElUQUJMRV9TRUdNRU5UX1BBUlRTKVtudW1iZXJdO1xuZXhwb3J0IHR5cGUgU2VnbWVudFBhcnQgPSBFZGl0YWJsZVNlZ21lbnRQYXJ0IHwgTm9uRWRpdGFibGVTZWdtZW50UGFydDtcblxuZXhwb3J0IHR5cGUgQW55RXhjZXB0TGl0ZXJhbCA9IEV4Y2x1ZGU8U2VnbWVudFBhcnQsICdsaXRlcmFsJz47XG5cbmV4cG9ydCB0eXBlIERheVBlcmlvZCA9ICdBTScgfCAnUE0nIHwgbnVsbDtcbmV4cG9ydCB0eXBlIERhdGVTZWdtZW50T2JqID0ge1xuICAgIFtLIGluIERhdGVTZWdtZW50UGFydF06IG51bWJlciB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBUaW1lU2VnbWVudE9iaiA9IHtcbiAgICBbSyBpbiBUaW1lU2VnbWVudFBhcnRdOiBLIGV4dGVuZHMgJ2RheVBlcmlvZCcgPyBEYXlQZXJpb2QgOiBudW1iZXIgfCBudWxsO1xufTtcbmV4cG9ydCB0eXBlIERhdGVBbmRUaW1lU2VnbWVudE9iaiA9IERhdGVTZWdtZW50T2JqICYgVGltZVNlZ21lbnRPYmo7XG5leHBvcnQgdHlwZSBTZWdtZW50VmFsdWVPYmogPSBEYXRlU2VnbWVudE9iaiB8IERhdGVBbmRUaW1lU2VnbWVudE9iajtcbmV4cG9ydCB0eXBlIFNlZ21lbnRDb250ZW50T2JqID0gUmVjb3JkPEVkaXRhYmxlU2VnbWVudFBhcnQsIHN0cmluZz47XG4iXX0=","// https://github.com/unovue/reka-ui/blob/v2/packages/core/src/shared/date/useDateField.ts\nimport { computed } from '@angular/core';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BACKSPACE, SHIFT, TAB } from '../kbd-constants';\nimport { getDaysInMonth, toDate } from './comparators';\nimport { isAcceptableSegmentKey, isNumberString, isSegmentNavigationKey } from './segment';\nfunction commonSegmentAttrs(props) {\n return {\n role: 'spinbutton',\n contenteditable: true,\n tabindex: props.disabled ? undefined : 0,\n spellcheck: false,\n inputmode: 'numeric',\n autocorrect: 'off',\n enterkeyhint: 'next',\n style: 'caret-color: transparent;'\n };\n}\nfunction daySegmentAttrs(props) {\n const { segmentValues, placeholder } = props;\n const isEmpty = segmentValues.day === null;\n const date = segmentValues.day ? placeholder.set({ day: segmentValues.day }) : placeholder;\n const valueNow = date.day;\n const valueMin = 1;\n const valueMax = getDaysInMonth(date);\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'day,',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\nfunction monthSegmentAttrs(props) {\n const { segmentValues, placeholder, formatter } = props;\n const isEmpty = segmentValues.month === null;\n const date = segmentValues.month ? placeholder.set({ month: segmentValues.month }) : placeholder;\n const valueNow = date.month;\n const valueMin = 1;\n const valueMax = 12;\n const valueText = isEmpty ? 'Empty' : `${valueNow} - ${formatter.fullMonth(toDate(date))}`;\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'month, ',\n contenteditable: true,\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\nfunction yearSegmentAttrs(props) {\n const { segmentValues, placeholder } = props;\n const isEmpty = segmentValues.year === null;\n const date = segmentValues.year ? placeholder.set({ year: segmentValues.year }) : placeholder;\n const valueMin = 1;\n const valueMax = 9999;\n const valueNow = date.year;\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'year, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\nfunction hourSegmentAttrs(props) {\n const { segmentValues, hourCycle, placeholder } = props;\n if (!('hour' in segmentValues) || !('hour' in placeholder))\n return {};\n const isEmpty = segmentValues.hour === null;\n const date = segmentValues.hour ? placeholder.set({ hour: segmentValues.hour }) : placeholder;\n const valueMin = hourCycle === 12 ? 1 : 0;\n const valueMax = hourCycle === 12 ? 12 : 23;\n const valueNow = date.hour;\n const valueText = isEmpty ? 'Empty' : `${valueNow} ${segmentValues.dayPeriod ?? ''}`;\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'hour, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\nfunction minuteSegmentAttrs(props) {\n const { segmentValues, placeholder } = props;\n if (!('minute' in segmentValues) || !('minute' in placeholder))\n return {};\n const isEmpty = segmentValues.minute === null;\n const date = segmentValues.minute ? placeholder.set({ minute: segmentValues.minute }) : placeholder;\n const valueNow = date.minute;\n const valueMin = 0;\n const valueMax = 59;\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'minute, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\nfunction secondSegmentAttrs(props) {\n const { segmentValues, placeholder } = props;\n if (!('second' in segmentValues) || !('second' in placeholder))\n return {};\n const isEmpty = segmentValues.second === null;\n const date = segmentValues.second ? placeholder.set({ second: segmentValues.second }) : placeholder;\n const valueNow = date.second;\n const valueMin = 0;\n const valueMax = 59;\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'second, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\nfunction dayPeriodSegmentAttrs(props) {\n const { segmentValues } = props;\n if (!('dayPeriod' in segmentValues))\n return {};\n const valueMin = 0;\n const valueMax = 12;\n const valueNow = segmentValues.hour ? (segmentValues.hour > 12 ? segmentValues.hour - 12 : segmentValues.hour) : 0;\n const valueText = segmentValues.dayPeriod ?? 'AM';\n return {\n ...commonSegmentAttrs(props),\n inputmode: 'text',\n 'aria-label': 'AM/PM',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText\n };\n}\nfunction literalSegmentAttrs(_props) {\n return {\n 'aria-hidden': true,\n 'data-segment': 'literal'\n };\n}\nfunction timeZoneSegmentAttrs(props) {\n return {\n role: 'textbox',\n 'aria-label': 'timezone, ',\n 'data-readonly': true,\n 'data-segment': 'timeZoneName',\n tabindex: props.disabled ? undefined : 0,\n style: 'caret-color: transparent;'\n };\n}\nfunction eraSegmentAttrs(props) {\n const { segmentValues, placeholder } = props;\n const valueMin = 0;\n const valueMax = 0;\n const valueNow = 0;\n const valueText = 'era' in segmentValues ? segmentValues.era : placeholder.era;\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'era',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText\n };\n}\nexport const segmentBuilders = {\n day: {\n attrs: daySegmentAttrs\n },\n month: {\n attrs: monthSegmentAttrs\n },\n year: {\n attrs: yearSegmentAttrs\n },\n hour: {\n attrs: hourSegmentAttrs\n },\n minute: {\n attrs: minuteSegmentAttrs\n },\n second: {\n attrs: secondSegmentAttrs\n },\n dayPeriod: {\n attrs: dayPeriodSegmentAttrs\n },\n literal: {\n attrs: literalSegmentAttrs\n },\n timeZoneName: {\n attrs: timeZoneSegmentAttrs\n },\n era: {\n attrs: eraSegmentAttrs\n }\n};\nexport function useDateField(props) {\n function handleSegmentClick(e) {\n const disabled = props.disabled();\n if (disabled)\n e.preventDefault();\n }\n function deleteValue(prevValue) {\n props.hasLeftFocus.set(false);\n if (prevValue === null)\n return prevValue;\n const str = prevValue.toString();\n if (str.length === 1) {\n props.modelValue.set(undefined);\n return null;\n }\n return Number.parseInt(str.slice(0, -1));\n }\n function dateTimeValueIncrementation({ e, part, dateRef, prevValue, hourCycle }) {\n const step = props.step()[part] ?? 1;\n const sign = e.key === ARROW_UP ? step : -step;\n if (prevValue === null)\n return dateRef[part];\n if (part === 'hour' && 'hour' in dateRef) {\n const cycleArgs = [\n part,\n sign,\n { hourCycle }\n ];\n return dateRef.set({ [part]: prevValue }).cycle(...cycleArgs)[part];\n }\n const cycleArgs = [part, sign];\n if (part === 'day' && props.segmentValues().month !== null)\n return dateRef\n .set({ [part]: prevValue, month: props.segmentValues().month })\n .cycle(...cycleArgs)[part];\n return dateRef.set({ [part]: prevValue }).cycle(...cycleArgs)[part];\n }\n function updateDayOrMonth(max, num, prev) {\n let moveToNext = false;\n const maxStart = Math.floor(max / 10);\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n if (prev === null) {\n /**\n * If the user types a 0 as the first number, we want\n * to keep track of that so that when they type the next\n * number, we can move to the next segment.\n */\n if (num === 0) {\n props.lastKeyZero.set(true);\n return { value: null, moveToNext };\n }\n /**\n * If the last key was a 0, or if the first number is\n * greater than the max start digit (0-3 in most cases), then\n * we want to move to the next segment, since it's not possible\n * to continue typing a valid number in this segment.\n */\n if (props.lastKeyZero() || num > maxStart) {\n // move to next\n moveToNext = true;\n }\n props.lastKeyZero.set(false);\n /**\n * If none of the above conditions are met, then we can just\n * return the number as the segment value and continue typing\n * in this segment.\n */\n return { value: num, moveToNext };\n }\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n const digits = prev.toString().length;\n const total = Number.parseInt(prev.toString() + num.toString());\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n if (digits === 2 || total > max) {\n /**\n * As we're doing elsewhere, we're checking if the number is greater\n * than the max start digit (0-3 in most months), and if so, we're\n * going to move to the next segment.\n */\n if (num > maxStart || total > max) {\n // move to next\n moveToNext = true;\n }\n return { value: num, moveToNext };\n }\n // move to next\n moveToNext = true;\n return { value: total, moveToNext };\n }\n function updateYear(num, prev) {\n let moveToNext = false;\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n // probably not implement, kind of weird\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n if (prev === null)\n return { value: num === 0 ? 1 : num, moveToNext };\n const str = prev.toString() + num.toString();\n if (str.length > 4)\n return { value: num === 0 ? 1 : num, moveToNext };\n if (str.length === 4)\n moveToNext = true;\n const int = Number.parseInt(str);\n return { value: int, moveToNext };\n }\n function updateHour(num, prev) {\n const max = 24;\n let moveToNext = false;\n const maxStart = Math.floor(max / 10);\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n // probably not implement, kind of weird\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n if (prev === null) {\n /**\n * If the user types a 0 as the first number, we want\n * to keep track of that so that when they type the next\n * number, we can move to the next segment.\n */\n if (num === 0) {\n props.lastKeyZero.set(true);\n return { value: 0, moveToNext };\n }\n /**\n * If the last key was a 0, or if the first number is\n * greater than the max start digit (0-3 in most cases), then\n * we want to move to the next segment, since it's not possible\n * to continue typing a valid number in this segment.\n */\n if (props.lastKeyZero() || num > maxStart) {\n // move to next\n moveToNext = true;\n }\n props.lastKeyZero.set(false);\n /**\n * If none of the above conditions are met, then we can just\n * return the number as the segment value and continue typing\n * in this segment.\n */\n return { value: num, moveToNext };\n }\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n const digits = prev.toString().length;\n const total = Number.parseInt(prev.toString() + num.toString());\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n if (digits === 2 || total > max) {\n /**\n * As we're doing elsewhere, we're checking if the number is greater\n * than the max start digit (0-3 in most months), and if so, we're\n * going to move to the next segment.\n */\n if (num > maxStart) {\n // move to next\n moveToNext = true;\n }\n return { value: num, moveToNext };\n }\n // move to next\n moveToNext = true;\n return { value: total, moveToNext };\n }\n function updateMinuteOrSecond(num, prev) {\n const max = 59;\n let moveToNext = false;\n const maxStart = Math.floor(max / 10);\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n if (prev === null) {\n /**\n * If the user types a 0 as the first number, we want\n * to keep track of that so that when they type the next\n * number, we can move to the next segment.\n */\n if (num === 0) {\n props.lastKeyZero.set(true);\n return { value: 0, moveToNext };\n }\n /**\n * If the last key was a 0, or if the first number is\n * greater than the max start digit (0-3 in most cases), then\n * we want to move to the next segment, since it's not possible\n * to continue typing a valid number in this segment.\n */\n if (props.lastKeyZero() || num > maxStart) {\n // move to next\n moveToNext = true;\n }\n props.lastKeyZero.set(false);\n /**\n * If none of the above conditions are met, then we can just\n * return the number as the segment value and continue typing\n * in this segment.\n */\n return { value: num, moveToNext };\n }\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n const digits = prev.toString().length;\n const total = Number.parseInt(prev.toString() + num.toString());\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n if (digits === 2 || total > max) {\n /**\n * As we're doing elsewhere, we're checking if the number is greater\n * than the max start digit (0-3 in most months), and if so, we're\n * going to move to the next segment.\n */\n if (num > maxStart) {\n // move to next\n moveToNext = true;\n }\n return { value: num, moveToNext };\n }\n // move to next\n moveToNext = true;\n return { value: total, moveToNext };\n }\n function minuteSecondIncrementation({ e, part, dateRef, prevValue }) {\n const step = props.step()[part] ?? 1;\n const sign = e.key === ARROW_UP ? step : -step;\n const min = 0;\n const max = 59;\n if (prevValue === null)\n return sign > 0 ? min : max;\n const cycleArgs = [part, sign];\n return dateRef.set({ [part]: prevValue }).cycle(...cycleArgs)[part];\n }\n const attributes = computed(() => segmentBuilders[props.part]?.attrs({\n disabled: props.disabled(),\n placeholder: props.placeholder(),\n hourCycle: props.hourCycle,\n segmentValues: props.segmentValues(),\n formatter: props.formatter\n }) ?? {}, ...(ngDevMode ? [{ debugName: \"attributes\" }] : []));\n function handleMonthSegmentKeydown(e) {\n if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key))\n return;\n const prevValue = props.segmentValues().month;\n if (e.key === ARROW_DOWN || e.key === ARROW_UP) {\n props.segmentValues.update((prev) => ({\n ...prev,\n month: dateTimeValueIncrementation({\n e,\n part: 'month',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n return;\n }\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateDayOrMonth(12, num, prevValue);\n props.segmentValues.update((prev) => ({ ...prev, month: value }));\n if (moveToNext)\n props.focusNext();\n }\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, month: deleteValue(prevValue) }));\n }\n }\n function handleDaySegmentKeydown(e) {\n if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key))\n return;\n const prevValue = props.segmentValues().day;\n if (e.key === ARROW_DOWN || e.key === ARROW_UP) {\n props.segmentValues.update((prev) => ({\n ...prev,\n day: dateTimeValueIncrementation({\n e,\n part: 'day',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n return;\n }\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const segmentMonthValue = props.segmentValues().month;\n const daysInMonth = segmentMonthValue\n ? getDaysInMonth(props.placeholder().set({ month: segmentMonthValue }))\n : getDaysInMonth(props.placeholder());\n const { value, moveToNext } = updateDayOrMonth(daysInMonth, num, prevValue);\n props.segmentValues.update((prev) => ({ ...prev, day: value }));\n if (moveToNext)\n props.focusNext();\n }\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, day: deleteValue(prevValue) }));\n }\n }\n function handleYearSegmentKeydown(e) {\n if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key))\n return;\n const prevValue = props.segmentValues().year;\n if (e.key === ARROW_DOWN || e.key === ARROW_UP) {\n props.segmentValues.update((prev) => ({\n ...prev,\n year: dateTimeValueIncrementation({\n e,\n part: 'year',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n return;\n }\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateYear(num, prevValue);\n props.segmentValues.update((prev) => ({ ...prev, year: value }));\n if (moveToNext)\n props.focusNext();\n }\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, year: deleteValue(prevValue) }));\n }\n }\n function handleHourSegmentKeydown(e) {\n const dateRef = props.placeholder();\n const values = props.segmentValues();\n if (!isAcceptableSegmentKey(e.key) ||\n isSegmentNavigationKey(e.key) ||\n !('hour' in dateRef) ||\n !('hour' in values))\n return;\n const prevValue = values.hour;\n const hourCycle = props.hourCycle;\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n props.segmentValues.update((prev) => ({\n ...prev,\n hour: dateTimeValueIncrementation({\n e,\n part: 'hour',\n dateRef: props.placeholder(),\n prevValue,\n hourCycle\n })\n }));\n if ('dayPeriod' in props.segmentValues() && values.hour != null) {\n if (values.hour < 12)\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n else if (values.hour)\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n }\n return;\n }\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateHour(num, prevValue);\n if ('dayPeriod' in props.segmentValues() && value && value > 12)\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n else if ('dayPeriod' in props.segmentValues() && value)\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: value }));\n if (moveToNext)\n props.focusNext();\n }\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, hour: deleteValue(prevValue) }));\n }\n }\n function handleMinuteSegmentKeydown(e) {\n const dateRef = props.placeholder();\n const values = props.segmentValues();\n if (!isAcceptableSegmentKey(e.key) ||\n isSegmentNavigationKey(e.key) ||\n !('minute' in dateRef) ||\n !('minute' in values))\n return;\n const prevValue = values.minute;\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n props.segmentValues.update((prev) => ({\n ...prev,\n minute: minuteSecondIncrementation({\n e,\n part: 'minute',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n }\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateMinuteOrSecond(num, prevValue);\n props.segmentValues.update((prev) => ({ ...prev, minute: value }));\n if (moveToNext)\n props.focusNext();\n }\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, minute: deleteValue(prevValue) }));\n }\n }\n function handleSecondSegmentKeydown(e) {\n const dateRef = props.placeholder();\n const values = props.segmentValues();\n if (!isAcceptableSegmentKey(e.key) ||\n isSegmentNavigationKey(e.key) ||\n !('second' in dateRef) ||\n !('second' in values))\n return;\n const prevValue = values.second;\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n props.segmentValues.update((prev) => ({\n ...prev,\n second: minuteSecondIncrementation({\n e,\n part: 'second',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n }\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateMinuteOrSecond(num, prevValue);\n props.segmentValues.update((prev) => ({ ...prev, second: value }));\n if (moveToNext)\n props.focusNext();\n }\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, second: deleteValue(prevValue) }));\n }\n }\n function handleDayPeriodSegmentKeydown(e) {\n if (((!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key)) && e.key !== 'a' && e.key !== 'p') ||\n !('hour' in props.placeholder()) ||\n !('dayPeriod' in props.segmentValues()))\n return;\n const values = props.segmentValues();\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n if (values.dayPeriod === 'AM') {\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour + 12 }));\n return;\n }\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour - 12 }));\n return;\n }\n if (['a', 'A'].includes(e.key) && values.dayPeriod !== 'AM') {\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour - 12 }));\n return;\n }\n if (['p', 'P'].includes(e.key) && values.dayPeriod !== 'PM') {\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour + 12 }));\n }\n }\n function handleSegmentKeydown(e) {\n const disabled = props.disabled();\n const readonly = props.readonly();\n if (e.key !== TAB)\n e.preventDefault();\n if (disabled || readonly)\n return;\n const segmentKeydownHandlers = {\n month: handleMonthSegmentKeydown,\n day: handleDaySegmentKeydown,\n year: handleYearSegmentKeydown,\n hour: handleHourSegmentKeydown,\n minute: handleMinuteSegmentKeydown,\n second: handleSecondSegmentKeydown,\n dayPeriod: handleDayPeriodSegmentKeydown,\n timeZoneName: () => { }\n };\n segmentKeydownHandlers[props.part](e);\n if (![ARROW_LEFT, ARROW_RIGHT].includes(e.key) &&\n e.key !== TAB &&\n e.key !== SHIFT &&\n isAcceptableSegmentKey(e.key)) {\n if (Object.values(props.segmentValues()).every((item) => item !== null)) {\n const updateObject = { ...props.segmentValues() };\n let dateRef = props.placeholder().copy();\n Object.keys(updateObject).forEach((part) => {\n const value = updateObject[part];\n dateRef = dateRef.set({ [part]: value });\n });\n props.modelValue.set(dateRef.copy());\n }\n }\n }\n return {\n handleSegmentClick,\n handleSegmentKeydown,\n attributes\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlRGF0ZUZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9jb3JlL3NyYy9kYXRlLXRpbWUvdXNlRGF0ZUZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBGQUEwRjtBQUUxRixPQUFPLEVBQUUsUUFBUSxFQUFvRCxNQUFNLGVBQWUsQ0FBQztBQUUzRixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQXlDM0YsU0FBUyxrQkFBa0IsQ0FBQyxLQUF1QjtJQUMvQyxPQUFPO1FBQ0gsSUFBSSxFQUFFLFlBQVk7UUFDbEIsZUFBZSxFQUFFLElBQUk7UUFDckIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxVQUFVLEVBQUUsS0FBSztRQUNqQixTQUFTLEVBQUUsU0FBUztRQUNwQixXQUFXLEVBQUUsS0FBSztRQUNsQixZQUFZLEVBQUUsTUFBTTtRQUNwQixLQUFLLEVBQUUsMkJBQTJCO0tBQ3JDLENBQUM7QUFDTixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsS0FBdUI7SUFDNUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDN0MsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUM7SUFDM0MsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FB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LEVBQUU7b0JBQ3ZDLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUF3QixDQUFDLENBQUM7b0JBQ3JELE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDLENBQUMsQ0FBQztnQkFFSCxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0gsa0JBQWtCO1FBQ2xCLG9CQUFvQjtRQUNwQixVQUFVO0tBQ2IsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vdW5vdnVlL3Jla2EtdWkvYmxvYi92Mi9wYWNrYWdlcy9jb3JlL3NyYy9zaGFyZWQvZGF0ZS91c2VEYXRlRmllbGQudHNcblxuaW1wb3J0IHsgY29tcHV0ZWQsIElucHV0U2lnbmFsLCBNb2RlbFNpZ25hbCwgU2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXRlVGltZSwgQ3ljbGVUaW1lT3B0aW9ucywgRGF0ZUZpZWxkcywgRGF0ZVZhbHVlLCBUaW1lRmllbGRzIH0gZnJvbSAnQGludGVybmF0aW9uYWxpemVkL2RhdGUnO1xuaW1wb3J0IHsgQVJST1dfRE9XTiwgQVJST1dfTEVGVCwgQVJST1dfUklHSFQsIEFSUk9XX1VQLCBCQUNLU1BBQ0UsIFNISUZULCBUQUIgfSBmcm9tICcuLi9rYmQtY29uc3RhbnRzJztcbmltcG9ydCB7IGdldERheXNJbk1vbnRoLCB0b0RhdGUgfSBmcm9tICcuL2NvbXBhcmF0b3JzJztcbmltcG9ydCB7IEZvcm1hdHRlciB9IGZyb20gJy4vZm9ybWF0dGVyJztcbmltcG9ydCB7IGlzQWNjZXB0YWJsZVNlZ21lbnRLZXksIGlzTnVtYmVyU3RyaW5nLCBpc1NlZ21lbnROYXZpZ2F0aW9uS2V5IH0gZnJvbSAnLi9zZWdtZW50JztcbmltcG9ydCB7IEFueUV4Y2VwdExpdGVyYWwsIERhdGVBbmRUaW1lU2VnbWVudE9iaiwgRGF0ZVN0ZXAsIEhvdXJDeWNsZSwgU2VnbWVudFBhcnQsIFNlZ21lbnRWYWx1ZU9iaiB9IGZyb20gJy4vdHlwZXMnO1xuXG50eXBlIE1pbnV0ZVNlY29uZEluY3JlbWVudFByb3BzID0ge1xuICAgIGU6IEtleWJvYXJkRXZlbnQ7XG4gICAgcGFydDoga2V5b2YgVGltZUZpZWxkcztcbiAgICBkYXRlUmVmOiBEYXRlVmFsdWU7XG4gICAgcHJldlZhbHVlOiBudW1iZXIgfCBudWxsO1xufTtcblxudHlwZSBEYXRlVGltZVZhbHVlSW5jcmVtZW50YXRpb24gPSB7XG4gICAgZTogS2V5Ym9hcmRFdmVudDtcbiAgICBwYXJ0OiBrZXlvZiBPbWl0PERhdGVGaWVsZHMsICdlcmEnPiB8IGtleW9mIFRpbWVGaWVsZHM7XG4gICAgZGF0ZVJlZjogRGF0ZVZhbHVlO1xuICAgIHByZXZWYWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgICBob3VyQ3ljbGU/OiBIb3VyQ3ljbGU7XG59O1xuXG5leHBvcnQgdHlwZSBVc2VEYXRlRmllbGRQcm9wcyA9IHtcbiAgICBoYXNMZWZ0Rm9jdXM6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+O1xuICAgIGxhc3RLZXlaZXJvOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPjtcbiAgICBwbGFjZWhvbGRlcjogTW9kZWxTaWduYWw8RGF0ZVZhbHVlPiB8IFdyaXRhYmxlU2lnbmFsPERhdGVWYWx1ZT47XG4gICAgaG91ckN5Y2xlOiBIb3VyQ3ljbGU7XG4gICAgZm9ybWF0dGVyOiBGb3JtYXR0ZXI7XG4gICAgc2VnbWVudFZhbHVlczogV3JpdGFibGVTaWduYWw8U2VnbWVudFZhbHVlT2JqPjtcbiAgICBzdGVwOiBTaWduYWw8RGF0ZVN0ZXA+O1xuICAgIGRpc2FibGVkOiBJbnB1dFNpZ25hbDxib29sZWFuPjtcbiAgICByZWFkb25seTogSW5wdXRTaWduYWw8Ym9vbGVhbj47XG4gICAgcGFydDogU2VnbWVudFBhcnQ7XG4gICAgbW9kZWxWYWx1ZTogTW9kZWxTaWduYWw8RGF0ZVZhbHVlIHwgdW5kZWZpbmVkPiB8IFdyaXRhYmxlU2lnbmFsPERhdGVWYWx1ZSB8IHVuZGVmaW5lZD47XG4gICAgZm9jdXNOZXh0OiAoKSA9PiB2b2lkO1xufTtcblxudHlwZSBTZWdtZW50QXR0clByb3BzID0ge1xuICAgIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHNlZ21lbnRWYWx1ZXM6IFNlZ21lbnRWYWx1ZU9iajtcbiAgICBob3VyQ3ljbGU6IEhvdXJDeWNsZTtcbiAgICBwbGFjZWhvbGRlcjogRGF0ZVZhbHVlO1xuICAgIGZvcm1hdHRlcjogRm9ybWF0dGVyO1xufTtcblxuZnVuY3Rpb24gY29tbW9uU2VnbWVudEF0dHJzKHByb3BzOiBTZWdtZW50QXR0clByb3BzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm9sZTogJ3NwaW5idXR0b24nLFxuICAgICAgICBjb250ZW50ZWRpdGFibGU6IHRydWUsXG4gICAgICAgIHRhYmluZGV4OiBwcm9wcy5kaXNhYmxlZCA/IHVuZGVmaW5lZCA6IDAsXG4gICAgICAgIHNwZWxsY2hlY2s6IGZhbHNlLFxuICAgICAgICBpbnB1dG1vZGU6ICdudW1lcmljJyxcbiAgICAgICAgYXV0b2NvcnJlY3Q6ICdvZmYnLFxuICAgICAgICBlbnRlcmtleWhpbnQ6ICduZXh0JyxcbiAgICAgICAgc3R5bGU6ICdjYXJldC1jb2xvcjogdHJhbnNwYXJlbnQ7J1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGRheVNlZ21lbnRBdHRycyhwcm9wczogU2VnbWVudEF0dHJQcm9wcykge1xuICAgIGNvbnN0IHsgc2VnbWVudFZhbHVlcywgcGxhY2Vob2xkZXIgfSA9IHByb3BzO1xuICAgIGNvbnN0IGlzRW1wdHkgPSBzZWdtZW50VmFsdWVzLmRheSA9PT0gbnVsbDtcbiAgICBjb25zdCBkYXRlID0gc2VnbWVudFZhbHVlcy5kYXkgPyBwbGFjZWhvbGRlci5zZXQoeyBkYXk6IHNlZ21lbnRWYWx1ZXMuZGF5IH0pIDogcGxhY2Vob2xkZXI7XG5cbiAgICBjb25zdCB2YWx1ZU5vdyA9IGRhdGUuZGF5O1xuICAgIGNvbnN0IHZhbHVlTWluID0gMTtcbiAgICBjb25zdCB2YWx1ZU1heCA9IGdldERheXNJbk1vbnRoKGRhdGUpO1xuICAgIGNvbnN0IHZhbHVlVGV4dCA9IGlzRW1wdHkgPyAnRW1wdHknIDogYCR7dmFsdWVOb3d9YDtcblxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbW1vblNlZ21lbnRBdHRycyhwcm9wcyksXG4gICAgICAgICdhcmlhLWxhYmVsJzogJ2RheSwnLFxuICAgICAgICAnYXJpYS12YWx1ZW1pbic6IHZhbHVlTWluLFxuICAgICAgICAnYXJpYS12YWx1ZW1heCc6IHZhbHVlTWF4LFxuICAgICAgICAnYXJpYS12YWx1ZW5vdyc6IHZhbHVlTm93LFxuICAgICAgICAnYXJpYS12YWx1ZXRleHQnOiB2YWx1ZVRleHQsXG4gICAgICAgICdkYXRhLXBsYWNlaG9sZGVyJzogaXNFbXB0eSA/ICcnIDogdW5kZWZpbmVkXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gbW9udGhTZWdtZW50QXR0cnMocHJvcHM6IFNlZ21lbnRBdHRyUHJvcHMpIHtcbiAgICBjb25zdCB7IHNlZ21lbnRWYWx1ZXMsIHBsYWNlaG9sZGVyLCBmb3JtYXR0ZXIgfSA9IHByb3BzO1xuICAgIGNvbnN0IGlzRW1wdHkgPSBzZWdtZW50VmFsdWVzLm1vbnRoID09PSBudWxsO1xuICAgIGNvbnN0IGRhdGUgPSBzZWdtZW50VmFsdWVzLm1vbnRoID8gcGxhY2Vob2xkZXIuc2V0KHsgbW9udGg6IHNlZ21lbnRWYWx1ZXMubW9udGggfSkgOiBwbGFjZWhvbGRlcjtcbiAgICBjb25zdCB2YWx1ZU5vdyA9IGRhdGUubW9udGg7XG4gICAgY29uc3QgdmFsdWVNaW4gPSAxO1xuICAgIGNvbnN0IHZhbHVlTWF4ID0gMTI7XG4gICAgY29uc3QgdmFsdWVUZXh0ID0gaXNFbXB0eSA/ICdFbXB0eScgOiBgJHt2YWx1ZU5vd30gLSAke2Zvcm1hdHRlci5mdWxsTW9udGgodG9EYXRlKGRhdGUpKX1gO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY29tbW9uU2VnbWVudEF0dHJzKHByb3BzKSxcbiAgICAgICAgJ2FyaWEtbGFiZWwnOiAnbW9udGgsICcsXG4gICAgICAgIGNvbnRlbnRlZGl0YWJsZTogdHJ1ZSxcbiAgICAgICAgJ2FyaWEtdmFsdWVtaW4nOiB2YWx1ZU1pbixcbiAgICAgICAgJ2FyaWEtdmFsdWVtYXgnOiB2YWx1ZU1heCxcbiAgICAgICAgJ2FyaWEtdmFsdWVub3cnOiB2YWx1ZU5vdyxcbiAgICAgICAgJ2FyaWEtdmFsdWV0ZXh0JzogdmFsdWVUZXh0LFxuICAgICAgICAnZGF0YS1wbGFjZWhvbGRlcic6IGlzRW1wdHkgPyAnJyA6IHVuZGVmaW5lZFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIHllYXJTZWdtZW50QXR0cnMocHJvcHM6IFNlZ21lbnRBdHRyUHJvcHMpIHtcbiAgICBjb25zdCB7IHNlZ21lbnRWYWx1ZXMsIHBsYWNlaG9sZGVyIH0gPSBwcm9wcztcbiAgICBjb25zdCBpc0VtcHR5ID0gc2VnbWVudFZhbHVlcy55ZWFyID09PSBudWxsO1xuICAgIGNvbnN0IGRhdGUgPSBzZWdtZW50VmFsdWVzLnllYXIgPyBwbGFjZWhvbGRlci5zZXQoeyB5ZWFyOiBzZWdtZW50VmFsdWVzLnllYXIgfSkgOiBwbGFjZWhvbGRlcjtcbiAgICBjb25zdCB2YWx1ZU1pbiA9IDE7XG4gICAgY29uc3QgdmFsdWVNYXggPSA5OTk5O1xuICAgIGNvbnN0IHZhbHVlTm93ID0gZGF0ZS55ZWFyO1xuICAgIGNvbnN0IHZhbHVlVGV4dCA9IGlzRW1wdHkgPyAnRW1wdHknIDogYCR7dmFsdWVOb3d9YDtcblxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbW1vblNlZ21lbnRBdHRycyhwcm9wcyksXG4gICAgICAgICdhcmlhLWxhYmVsJzogJ3llYXIsICcsXG4gICAgICAgICdhcmlhLXZhbHVlbWluJzogdmFsdWVNaW4sXG4gICAgICAgICdhcmlhLXZhbHVlbWF4JzogdmFsdWVNYXgsXG4gICAgICAgICdhcmlhLXZhbHVlbm93JzogdmFsdWVOb3csXG4gICAgICAgICdhcmlhLXZhbHVldGV4dCc6IHZhbHVlVGV4dCxcbiAgICAgICAgJ2RhdGEtcGxhY2Vob2xkZXInOiBpc0VtcHR5ID8gJycgOiB1bmRlZmluZWRcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBob3VyU2VnbWVudEF0dHJzKHByb3BzOiBTZWdtZW50QXR0clByb3BzKSB7XG4gICAgY29uc3QgeyBzZWdtZW50VmFsdWVzLCBob3VyQ3ljbGUsIHBsYWNlaG9sZGVyIH0gPSBwcm9wcztcblxuICAgIGlmICghKCdob3VyJyBpbiBzZWdtZW50VmFsdWVzKSB8fCAhKCdob3VyJyBpbiBwbGFjZWhvbGRlcikpIHJldHVybiB7fTtcbiAgICBjb25zdCBpc0VtcHR5ID0gc2VnbWVudFZhbHVlcy5ob3VyID09PSBudWxsO1xuICAgIGNvbnN0IGRhdGUgPSBzZWdtZW50VmFsdWVzLmhvdXIgPyBwbGFjZWhvbGRlci5zZXQoeyBob3VyOiBzZWdtZW50VmFsdWVzLmhvdXIgfSkgOiBwbGFjZWhvbGRlcjtcbiAgICBjb25zdCB2YWx1ZU1pbiA9IGhvdXJDeWNsZSA9PT0gMTIgPyAxIDogMDtcbiAgICBjb25zdCB2YWx1ZU1heCA9IGhvdXJDeWNsZSA9PT0gMTIgPyAxMiA6IDIzO1xuICAgIGNvbnN0IHZhbHVlTm93ID0gZGF0ZS5ob3VyO1xuICAgIGNvbnN0IHZhbHVlVGV4dCA9IGlzRW1wdHkgPyAnRW1wdHknIDogYCR7dmFsdWVOb3d9ICR7c2VnbWVudFZhbHVlcy5kYXlQZXJpb2QgPz8gJyd9YDtcblxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbW1vblNlZ21lbnRBdHRycyhwcm9wcyksXG4gICAgICAgICdhcmlhLWxhYmVsJzogJ2hvdXIsICcsXG4gICAgICAgICdhcmlhLXZhbHVlbWluJzogdmFsdWVNaW4sXG4gICAgICAgICdhcmlhLXZhbHVlbWF4JzogdmFsdWVNYXgsXG4gICAgICAgICdhcmlhLXZhbHVlbm93JzogdmFsdWVOb3csXG4gICAgICAgICdhcmlhLXZhbHVldGV4dCc6IHZhbHVlVGV4dCxcbiAgICAgICAgJ2RhdGEtcGxhY2Vob2xkZXInOiBpc0VtcHR5ID8gJycgOiB1bmRlZmluZWRcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBtaW51dGVTZWdtZW50QXR0cnMocHJvcHM6IFNlZ21lbnRBdHRyUHJvcHMpIHtcbiAgICBjb25zdCB7IHNlZ21lbnRWYWx1ZXMsIHBsYWNlaG9sZGVyIH0gPSBwcm9wcztcbiAgICBpZiAoISgnbWludXRlJyBpbiBzZWdtZW50VmFsdWVzKSB8fCAhKCdtaW51dGUnIGluIHBsYWNlaG9sZGVyKSkgcmV0dXJuIHt9O1xuICAgIGNvbnN0IGlzRW1wdHkgPSBzZWdtZW50VmFsdWVzLm1pbnV0ZSA9PT0gbnVsbDtcbiAgICBjb25zdCBkYXRlID0gc2VnbWVudFZhbHVlcy5taW51dGUgPyBwbGFjZWhvbGRlci5zZXQoeyBtaW51dGU6IHNlZ21lbnRWYWx1ZXMubWludXRlIH0pIDogcGxhY2Vob2xkZXI7XG4gICAgY29uc3QgdmFsdWVOb3cgPSBkYXRlLm1pbnV0ZTtcbiAgICBjb25zdCB2YWx1ZU1pbiA9IDA7XG4gICAgY29uc3QgdmFsdWVNYXggPSA1OTtcbiAgICBjb25zdCB2YWx1ZVRleHQgPSBpc0VtcHR5ID8gJ0VtcHR5JyA6IGAke3ZhbHVlTm93fWA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5jb21tb25TZWdtZW50QXR0cnMocHJvcHMpLFxuICAgICAgICAnYXJpYS1sYWJlbCc6ICdtaW51dGUsICcsXG4gICAgICAgICdhcmlhLXZhbHVlbWluJzogdmFsdWVNaW4sXG4gICAgICAgICdhcmlhLXZhbHVlbWF4JzogdmFsdWVNYXgsXG4gICAgICAgICdhcmlhLXZhbHVlbm93JzogdmFsdWVOb3csXG4gICAgICAgICdhcmlhLXZhbHVldGV4dCc6IHZhbHVlVGV4dCxcbiAgICAgICAgJ2RhdGEtcGxhY2Vob2xkZXInOiBpc0VtcHR5ID8gJycgOiB1bmRlZmluZWRcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBzZWNvbmRTZWdtZW50QXR0cnMocHJvcHM6IFNlZ21lbnRBdHRyUHJvcHMpIHtcbiAgICBjb25zdCB7IHNlZ21lbnRWYWx1ZXMsIHBsYWNlaG9sZGVyIH0gPSBwcm9wcztcbiAgICBpZiAoISgnc2Vjb25kJyBpbiBzZWdtZW50VmFsdWVzKSB8fCAhKCdzZWNvbmQnIGluIHBsYWNlaG9sZGVyKSkgcmV0dXJuIHt9O1xuICAgIGNvbnN0IGlzRW1wdHkgPSBzZWdtZW50VmFsdWVzLnNlY29uZCA9PT0gbnVsbDtcbiAgICBjb25zdCBkYXRlID0gc2VnbWVudFZhbHVlcy5zZWNvbmQgPyBwbGFjZWhvbGRlci5zZXQoeyBzZWNvbmQ6IHNlZ21lbnRWYWx1ZXMuc2Vjb25kIH0pIDogcGxhY2Vob2xkZXI7XG4gICAgY29uc3QgdmFsdWVOb3cgPSBkYXRlLnNlY29uZDtcbiAgICBjb25zdCB2YWx1ZU1pbiA9IDA7XG4gICAgY29uc3QgdmFsdWVNYXggPSA1OTtcbiAgICBjb25zdCB2YWx1ZVRleHQgPSBpc0VtcHR5ID8gJ0VtcHR5JyA6IGAke3ZhbHVlTm93fWA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5jb21tb25TZWdtZW50QXR0cnMocHJvcHMpLFxuICAgICAgICAnYXJpYS1sYWJlbCc6ICdzZWNvbmQsICcsXG4gICAgICAgICdhcmlhLXZhbHVlbWluJzogdmFsdWVNaW4sXG4gICAgICAgICdhcmlhLXZhbHVlbWF4JzogdmFsdWVNYXgsXG4gICAgICAgICdhcmlhLXZhbHVlbm93JzogdmFsdWVOb3csXG4gICAgICAgICdhcmlhLXZhbHVldGV4dCc6IHZhbHVlVGV4dCxcbiAgICAgICAgJ2RhdGEtcGxhY2Vob2xkZXInOiBpc0VtcHR5ID8gJycgOiB1bmRlZmluZWRcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBkYXlQZXJpb2RTZWdtZW50QXR0cnMocHJvcHM6IFNlZ21lbnRBdHRyUHJvcHMpIHtcbiAgICBjb25zdCB7IHNlZ21lbnRWYWx1ZXMgfSA9IHByb3BzO1xuICAgIGlmICghKCdkYXlQZXJpb2QnIGluIHNlZ21lbnRWYWx1ZXMpKSByZXR1cm4ge307XG5cbiAgICBjb25zdCB2YWx1ZU1pbiA9IDA7XG4gICAgY29uc3QgdmFsdWVNYXggPSAxMjtcbiAgICBjb25zdCB2YWx1ZU5vdyA9IHNlZ21lbnRWYWx1ZXMuaG91ciA/IChzZWdtZW50VmFsdWVzLmhvdXIgPiAxMiA/IHNlZ21lbnRWYWx1ZXMuaG91ciAtIDEyIDogc2VnbWVudFZhbHVlcy5ob3VyKSA6IDA7XG4gICAgY29uc3QgdmFsdWVUZXh0ID0gc2VnbWVudFZhbHVlcy5kYXlQZXJpb2QgPz8gJ0FNJztcblxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbW1vblNlZ21lbnRBdHRycyhwcm9wcyksXG4gICAgICAgIGlucHV0bW9kZTogJ3RleHQnLFxuICAgICAgICAnYXJpYS1sYWJlbCc6ICdBTS9QTScsXG4gICAgICAgICdhcmlhLXZhbHVlbWluJzogdmFsdWVNaW4sXG4gICAgICAgICdhcmlhLXZhbHVlbWF4JzogdmFsdWVNYXgsXG4gICAgICAgICdhcmlhLXZhbHVlbm93JzogdmFsdWVOb3csXG4gICAgICAgICdhcmlhLXZhbHVldGV4dCc6IHZhbHVlVGV4dFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGxpdGVyYWxTZWdtZW50QXR0cnMoX3Byb3BzOiBTZWdtZW50QXR0clByb3BzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgJ2FyaWEtaGlkZGVuJzogdHJ1ZSxcbiAgICAgICAgJ2RhdGEtc2VnbWVudCc6ICdsaXRlcmFsJ1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIHRpbWVab25lU2VnbWVudEF0dHJzKHByb3BzOiBTZWdtZW50QXR0clByb3BzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm9sZTogJ3RleHRib3gnLFxuICAgICAgICAnYXJpYS1sYWJlbCc6ICd0aW1lem9uZSwgJyxcbiAgICAgICAgJ2RhdGEtcmVhZG9ubHknOiB0cnVlLFxuICAgICAgICAnZGF0YS1zZWdtZW50JzogJ3RpbWVab25lTmFtZScsXG4gICAgICAgIHRhYmluZGV4OiBwcm9wcy5kaXNhYmxlZCA/IHVuZGVmaW5lZCA6IDAsXG4gICAgICAgIHN0eWxlOiAnY2FyZXQtY29sb3I6IHRyYW5zcGFyZW50OydcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBlcmFTZWdtZW50QXR0cnMocHJvcHM6IFNlZ21lbnRBdHRyUHJvcHMpIHtcbiAgICBjb25zdCB7IHNlZ21lbnRWYWx1ZXMsIHBsYWNlaG9sZGVyIH0gPSBwcm9wcztcblxuICAgIGNvbnN0IHZhbHVlTWluID0gMDtcbiAgICBjb25zdCB2YWx1ZU1heCA9IDA7XG4gICAgY29uc3QgdmFsdWVOb3cgPSAwO1xuICAgIGNvbnN0IHZhbHVlVGV4dCA9ICdlcmEnIGluIHNlZ21lbnRWYWx1ZXMgPyBzZWdtZW50VmFsdWVzLmVyYSA6IHBsYWNlaG9sZGVyLmVyYTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbW1vblNlZ21lbnRBdHRycyhwcm9wcyksXG4gICAgICAgICdhcmlhLWxhYmVsJzogJ2VyYScsXG4gICAgICAgICdhcmlhLXZhbHVlbWluJzogdmFsdWVNaW4sXG4gICAgICAgICdhcmlhLXZhbHVlbWF4JzogdmFsdWVNYXgsXG4gICAgICAgICdhcmlhLXZhbHVlbm93JzogdmFsdWVOb3csXG4gICAgICAgICdhcmlhLXZhbHVldGV4dCc6IHZhbHVlVGV4dFxuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBzZWdtZW50QnVpbGRlcnMgPSB7XG4gICAgZGF5OiB7XG4gICAgICAgIGF0dHJzOiBkYXlTZWdtZW50QXR0cnNcbiAgICB9LFxuICAgIG1vbnRoOiB7XG4gICAgICAgIGF0dHJzOiBtb250aFNlZ21lbnRBdHRyc1xuICAgIH0sXG4gICAgeWVhcjoge1xuICAgICAgICBhdHRyczogeWVhclNlZ21lbnRBdHRyc1xuICAgIH0sXG4gICAgaG91cjoge1xuICAgICAgICBhdHRyczogaG91clNlZ21lbnRBdHRyc1xuICAgIH0sXG4gICAgbWludXRlOiB7XG4gICAgICAgIGF0dHJzOiBtaW51dGVTZWdtZW50QXR0cnNcbiAgICB9LFxuICAgIHNlY29uZDoge1xuICAgICAgICBhdHRyczogc2Vjb25kU2VnbWVudEF0dHJzXG4gICAgfSxcbiAgICBkYXlQZXJpb2Q6IHtcbiAgICAgICAgYXR0cnM6IGRheVBlcmlvZFNlZ21lbnRBdHRyc1xuICAgIH0sXG4gICAgbGl0ZXJhbDoge1xuICAgICAgICBhdHRyczogbGl0ZXJhbFNlZ21lbnRBdHRyc1xuICAgIH0sXG4gICAgdGltZVpvbmVOYW1lOiB7XG4gICAgICAgIGF0dHJzOiB0aW1lWm9uZVNlZ21lbnRBdHRyc1xuICAgIH0sXG4gICAgZXJhOiB7XG4gICAgICAgIGF0dHJzOiBlcmFTZWdtZW50QXR0cnNcbiAgICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlRGF0ZUZpZWxkKHByb3BzOiBVc2VEYXRlRmllbGRQcm9wcykge1xuICAgIGZ1bmN0aW9uIGhhbmRsZVNlZ21lbnRDbGljayhlOiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVkID0gcHJvcHMuZGlzYWJsZWQoKTtcbiAgICAgICAgaWYgKGRpc2FibGVkKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVsZXRlVmFsdWUocHJldlZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIHByb3BzLmhhc0xlZnRGb2N1cy5zZXQoZmFsc2UpO1xuXG4gICAgICAgIGlmIChwcmV2VmFsdWUgPT09IG51bGwpIHJldHVybiBwcmV2VmFsdWU7XG5cbiAgICAgICAgY29uc3Qgc3RyID0gcHJldlZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChzdHIubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBwcm9wcy5tb2RlbFZhbHVlLnNldCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTnVtYmVyLnBhcnNlSW50KHN0ci5zbGljZSgwLCAtMSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRhdGVUaW1lVmFsdWVJbmNyZW1lbnRhdGlvbih7XG4gICAgICAgIGUsXG4gICAgICAgIHBhcnQsXG4gICAgICAgIGRhdGVSZWYsXG4gICAgICAgIHByZXZWYWx1ZSxcbiAgICAgICAgaG91ckN5Y2xlXG4gICAgfTogRGF0ZVRpbWVWYWx1ZUluY3JlbWVudGF0aW9uKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgc3RlcCA9IHByb3BzLnN0ZXAoKVtwYXJ0XSA/PyAxO1xuICAgICAgICBjb25zdCBzaWduID0gZS5rZXkgPT09IEFSUk9XX1VQID8gc3RlcCA6IC1zdGVwO1xuXG4gICAgICAgIGlmIChwcmV2VmFsdWUgPT09IG51bGwpIHJldHVybiBkYXRlUmVmW3BhcnQgYXMga2V5b2YgT21pdDxEYXRlRmllbGRzLCAnZXJhJz5dO1xuXG4gICAgICAgIGlmIChwYXJ0ID09PSAnaG91cicgJiYgJ2hvdXInIGluIGRhdGVSZWYpIHtcbiAgICAgICAgICAgIGNvbnN0IGN5Y2xlQXJnczogW2tleW9mIERhdGVGaWVsZHMgfCBrZXlvZiBUaW1lRmllbGRzLCBudW1iZXIsIEN5Y2xlVGltZU9wdGlvbnM/XSA9IFtcbiAgICAgICAgICAgICAgICBwYXJ0LFxuICAgICAgICAgICAgICAgIHNpZ24sXG4gICAgICAgICAgICAgICAgeyBob3VyQ3ljbGUgfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlUmVmLnNldCh7IFtwYXJ0IGFzIGtleW9mIERhdGVWYWx1ZV06IHByZXZWYWx1ZSB9KS5jeWNsZSguLi5jeWNsZUFyZ3MpW3BhcnRdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3ljbGVBcmdzOiBba2V5b2YgRGF0ZUZpZWxkcywgbnVtYmVyXSA9IFtwYXJ0IGFzIGtleW9mIERhdGVGaWVsZHMsIHNpZ25dO1xuICAgICAgICBpZiAocGFydCA9PT0gJ2RheScgJiYgcHJvcHMuc2VnbWVudFZhbHVlcygpLm1vbnRoICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIGRhdGVSZWZcbiAgICAgICAgICAgICAgICAuc2V0KHsgW3BhcnQgYXMga2V5b2YgRGF0ZVZhbHVlXTogcHJldlZhbHVlLCBtb250aDogcHJvcHMuc2VnbWVudFZhbHVlcygpLm1vbnRoISB9KVxuICAgICAgICAgICAgICAgIC5jeWNsZSguLi5jeWNsZUFyZ3MpW3BhcnQgYXMga2V5b2YgT21pdDxEYXRlRmllbGRzLCAnZXJhJz5dO1xuXG4gICAgICAgIHJldHVybiBkYXRlUmVmLnNldCh7IFtwYXJ0IGFzIGtleW9mIERhdGVWYWx1ZV06IHByZXZWYWx1ZSB9KS5jeWNsZSguLi5jeWNsZUFyZ3MpW1xuICAgICAgICAgICAgcGFydCBhcyBrZXlvZiBPbWl0PERhdGVGaWVsZHMsICdlcmEnPlxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZURheU9yTW9udGgobWF4OiBudW1iZXIsIG51bTogbnVtYmVyLCBwcmV2OiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIGxldCBtb3ZlVG9OZXh0ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG1heFN0YXJ0ID0gTWF0aC5mbG9vcihtYXggLyAxMCk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHRoZSB1c2VyIGhhcyBsZWZ0IHRoZSBzZWdtZW50LCB3ZSB3YW50IHRvIHJlc2V0IHRoZVxuICAgICAgICAgKiBgcHJldmAgdmFsdWUgc28gdGhhdCB3ZSBjYW4gc3RhcnQgdGhlIHNlZ21lbnQgb3ZlciBhZ2FpblxuICAgICAgICAgKiB3aGVuIHRoZSB1c2VyIHR5cGVzIGEgbnVtYmVyLlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHByb3BzLmhhc0xlZnRGb2N1cygpKSB7XG4gICAgICAgICAgICBwcm9wcy5oYXNMZWZ0Rm9jdXMuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHByZXYgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByZXYgPT09IG51bGwpIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSWYgdGhlIHVzZXIgdHlwZXMgYSAwIGFzIHRoZSBmaXJzdCBudW1iZXIsIHdlIHdhbnRcbiAgICAgICAgICAgICAqIHRvIGtlZXAgdHJhY2sgb2YgdGhhdCBzbyB0aGF0IHdoZW4gdGhleSB0eXBlIHRoZSBuZXh0XG4gICAgICAgICAgICAgKiBudW1iZXIsIHdlIGNhbiBtb3ZlIHRvIHRoZSBuZXh0IHNlZ21lbnQuXG4gICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgaWYgKG51bSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHByb3BzLmxhc3RLZXlaZXJvLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbnVsbCwgbW92ZVRvTmV4dCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJZiB0aGUgbGFzdCBrZXkgd2FzIGEgMCwgb3IgaWYgdGhlIGZpcnN0IG51bWJlciBpc1xuICAgICAgICAgICAgICogZ3JlYXRlciB0aGFuIHRoZSBtYXggc3RhcnQgZGlnaXQgKDAtMyBpbiBtb3N0IGNhc2VzKSwgdGhlblxuICAgICAgICAgICAgICogd2Ugd2FudCB0byBtb3ZlIHRvIHRoZSBuZXh0IHNlZ21lbnQsIHNpbmNlIGl0J3Mgbm90IHBvc3NpYmxlXG4gICAgICAgICAgICAgKiB0byBjb250aW51ZSB0eXBpbmcgYSB2YWxpZCBudW1iZXIgaW4gdGhpcyBzZWdtZW50LlxuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIGlmIChwcm9wcy5sYXN0S2V5WmVybygpIHx8IG51bSA+IG1heFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgLy8gbW92ZSB0byBuZXh0XG4gICAgICAgICAgICAgICAgbW92ZVRvTmV4dCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcm9wcy5sYXN0S2V5WmVyby5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJZiBub25lIG9mIHRoZSBhYm92ZSBjb25kaXRpb25zIGFyZSBtZXQsIHRoZW4gd2UgY2FuIGp1c3RcbiAgICAgICAgICAgICAqIHJldHVybiB0aGUgbnVtYmVyIGFzIHRoZSBzZWdtZW50IHZhbHVlIGFuZCBjb250aW51ZSB0eXBpbmdcbiAgICAgICAgICAgICAqIGluIHRoaXMgc2VnbWVudC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG51bSwgbW92ZVRvTmV4dCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHRoZSBudW1iZXIgb2YgZGlnaXRzIGlzIDIsIG9yIGlmIHRoZSB0b3RhbCB3aXRoIHRoZSBleGlzdGluZyBkaWdpdFxuICAgICAgICAgKiBhbmQgdGhlIHByZXNzZWQgZGlnaXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGlzXG4gICAgICAgICAqIG1vbnRoLCB0aGVuIHdlIHdpbGwgcmVzZXQgdGhlIHNlZ21lbnQgYXMgaWYgdGhlIHVzZXIgaGFkIHByZXNzZWQgdGhlXG4gICAgICAgICAqIGJhY2tzcGFjZSBrZXkgYW5kIHRoZW4gdHlwZWQgdGhlIG51bWJlci5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGRpZ2l0cyA9IHByZXYudG9TdHJpbmcoKS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHRvdGFsID0gTnVtYmVyLnBhcnNlSW50KHByZXYudG9TdHJpbmcoKSArIG51bS50b1N0cmluZygpKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHRoZSBudW1iZXIgb2YgZGlnaXRzIGlzIDIsIG9yIGlmIHRoZSB0b3RhbCB3aXRoIHRoZSBleGlzdGluZyBkaWdpdFxuICAgICAgICAgKiBhbmQgdGhlIHByZXNzZWQgZGlnaXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGlzXG4gICAgICAgICAqIG1vbnRoLCB0aGVuIHdlIHdpbGwgcmVzZXQgdGhlIHNlZ21lbnQgYXMgaWYgdGhlIHVzZXIgaGFkIHByZXNzZWQgdGhlXG4gICAgICAgICAqIGJhY2tzcGFjZSBrZXkgYW5kIHRoZW4gdHlwZWQgdGhlIG51bWJlci5cbiAgICAgICAgICovXG5cbiAgICAgICAgaWYgKGRpZ2l0cyA9PT0gMiB8fCB0b3RhbCA+IG1heCkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBcyB3ZSdyZSBkb2luZyBlbHNld2hlcmUsIHdlJ3JlIGNoZWNraW5nIGlmIHRoZSBudW1iZXIgaXMgZ3JlYXRlclxuICAgICAgICAgICAgICogdGhhbiB0aGUgbWF4IHN0YXJ0IGRpZ2l0ICgwLTMgaW4gbW9zdCBtb250aHMpLCBhbmQgaWYgc28sIHdlJ3JlXG4gICAgICAgICAgICAgKiBnb2luZyB0byBtb3ZlIHRvIHRoZSBuZXh0IHNlZ21lbnQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmIChudW0gPiBtYXhTdGFydCB8fCB0b3RhbCA+IG1heCkge1xuICAgICAgICAgICAgICAgIC8vIG1vdmUgdG8gbmV4dFxuICAgICAgICAgICAgICAgIG1vdmVUb05leHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG51bSwgbW92ZVRvTmV4dCB9O1xuICAgICAgICB9XG4gICAgICAgIC8vIG1vdmUgdG8gbmV4dFxuICAgICAgICBtb3ZlVG9OZXh0ID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHRvdGFsLCBtb3ZlVG9OZXh0IH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlWWVhcihudW06IG51bWJlciwgcHJldjogbnVtYmVyIHwgbnVsbCkge1xuICAgICAgICBsZXQgbW92ZVRvTmV4dCA9IGZhbHNlO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiB0aGUgdXNlciBoYXMgbGVmdCB0aGUgc2VnbWVudCwgd2Ugd2FudCB0byByZXNldCB0aGVcbiAgICAgICAgICogYHByZXZgIHZhbHVlIHNvIHRoYXQgd2UgY2FuIHN0YXJ0IHRoZSBzZWdtZW50IG92ZXIgYWdhaW5cbiAgICAgICAgICogd2hlbiB0aGUgdXNlciB0eXBlcyBhIG51bWJlci5cbiAgICAgICAgICovXG4gICAgICAgIC8vIHByb2JhYmx5IG5vdCBpbXBsZW1lbnQsIGtpbmQgb2Ygd2VpcmRcbiAgICAgICAgaWYgKHByb3BzLmhhc0xlZnRGb2N1cygpKSB7XG4gICAgICAgICAgICBwcm9wcy5oYXNMZWZ0Rm9jdXMuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHByZXYgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByZXYgPT09IG51bGwpIHJldHVybiB7IHZhbHVlOiBudW0gPT09IDAgPyAxIDogbnVtLCBtb3ZlVG9OZXh0IH07XG5cbiAgICAgICAgY29uc3Qgc3RyID0gcHJldi50b1N0cmluZygpICsgbnVtLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgaWYgKHN0ci5sZW5ndGggPiA0KSByZXR1cm4geyB2YWx1ZTogbnVtID09PSAwID8gMSA6IG51bSwgbW92ZVRvTmV4dCB9O1xuXG4gICAgICAgIGlmIChzdHIubGVuZ3RoID09PSA0KSBtb3ZlVG9OZXh0ID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpbnQgPSBOdW1iZXIucGFyc2VJbnQoc3RyKTtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IGludCwgbW92ZVRvTmV4dCB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZUhvdXIobnVtOiBudW1iZXIsIHByZXY6IG51bWJlciB8IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWF4ID0gMjQ7XG4gICAgICAgIGxldCBtb3ZlVG9OZXh0ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG1heFN0YXJ0ID0gTWF0aC5mbG9vcihtYXggLyAxMCk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHRoZSB1c2VyIGhhcyBsZWZ0IHRoZSBzZWdtZW50LCB3ZSB3YW50IHRvIHJlc2V0IHRoZVxuICAgICAgICAgKiBgcHJldmAgdmFsdWUgc28gdGhhdCB3ZSBjYW4gc3RhcnQgdGhlIHNlZ21lbnQgb3ZlciBhZ2FpblxuICAgICAgICAgKiB3aGVuIHRoZSB1c2VyIHR5cGVzIGEgbnVtYmVyLlxuICAgICAgICAgKi9cbiAgICAgICAgLy8gcHJvYmFibHkgbm90IGltcGxlbWVudCwga2luZCBvZiB3ZWlyZFxuICAgICAgICBpZiAocHJvcHMuaGFzTGVmdEZvY3VzKCkpIHtcbiAgICAgICAgICAgIHByb3BzLmhhc0xlZnRGb2N1cy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgcHJldiA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJldiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJZiB0aGUgdXNlciB0eXBlcyBhIDAgYXMgdGhlIGZpcnN0IG51bWJlciwgd2Ugd2FudFxuICAgICAgICAgICAgICogdG8ga2VlcCB0cmFjayBvZiB0aGF0IHNvIHRoYXQgd2hlbiB0aGV5IHR5cGUgdGhlIG5leHRcbiAgICAgICAgICAgICAqIG51bWJlciwgd2UgY2FuIG1vdmUgdG8gdGhlIG5leHQgc2VnbWVudC5cbiAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICBpZiAobnVtID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMubGFzdEtleVplcm8uc2V0KHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiAwLCBtb3ZlVG9OZXh0IH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIElmIHRoZSBsYXN0IGtleSB3YXMgYSAwLCBvciBpZiB0aGUgZmlyc3QgbnVtYmVyIGlzXG4gICAgICAgICAgICAgKiBncmVhdGVyIHRoYW4gdGhlIG1heCBzdGFydCBkaWdpdCAoMC0zIGluIG1vc3QgY2FzZXMpLCB0aGVuXG4gICAgICAgICAgICAgKiB3ZSB3YW50IHRvIG1vdmUgdG8gdGhlIG5leHQgc2VnbWVudCwgc2luY2UgaXQncyBub3QgcG9zc2libGVcbiAgICAgICAgICAgICAqIHRvIGNvbnRpbnVlIHR5cGluZyBhIHZhbGlkIG51bWJlciBpbiB0aGlzIHNlZ21lbnQuXG4gICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgaWYgKHByb3BzLmxhc3RLZXlaZXJvKCkgfHwgbnVtID4gbWF4U3RhcnQpIHtcbiAgICAgICAgICAgICAgICAvLyBtb3ZlIHRvIG5leHRcbiAgICAgICAgICAgICAgICBtb3ZlVG9OZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb3BzLmxhc3RLZXlaZXJvLnNldChmYWxzZSk7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIElmIG5vbmUgb2YgdGhlIGFib3ZlIGNvbmRpdGlvbnMgYXJlIG1ldCwgdGhlbiB3ZSBjYW4ganVzdFxuICAgICAgICAgICAgICogcmV0dXJuIHRoZSBudW1iZXIgYXMgdGhlIHNlZ21lbnQgdmFsdWUgYW5kIGNvbnRpbnVlIHR5cGluZ1xuICAgICAgICAgICAgICogaW4gdGhpcyBzZWdtZW50LlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbnVtLCBtb3ZlVG9OZXh0IH07XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgdGhlIG51bWJlciBvZiBkaWdpdHMgaXMgMiwgb3IgaWYgdGhlIHRvdGFsIHdpdGggdGhlIGV4aXN0aW5nIGRpZ2l0XG4gICAgICAgICAqIGFuZCB0aGUgcHJlc3NlZCBkaWdpdCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gdmFsdWUgZm9yIHRoaXNcbiAgICAgICAgICogbW9udGgsIHRoZW4gd2Ugd2lsbCByZXNldCB0aGUgc2VnbWVudCBhcyBpZiB0aGUgdXNlciBoYWQgcHJlc3NlZCB0aGVcbiAgICAgICAgICogYmFja3NwYWNlIGtleSBhbmQgdGhlbiB0eXBlZCB0aGUgbnVtYmVyLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgZGlnaXRzID0gcHJldi50b1N0cmluZygpLmxlbmd0aDtcbiAgICAgICAgY29uc3QgdG90YWwgPSBOdW1iZXIucGFyc2VJbnQocHJldi50b1N0cmluZygpICsgbnVtLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBpcyAyLCBvciBpZiB0aGUgdG90YWwgd2l0aCB0aGUgZXhpc3RpbmcgZGlnaXRcbiAgICAgICAgICogYW5kIHRoZSBwcmVzc2VkIGRpZ2l0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSB2YWx1ZSBmb3IgdGhpc1xuICAgICAgICAgKiBtb250aCwgdGhlbiB3ZSB3aWxsIHJlc2V0IHRoZSBzZWdtZW50IGFzIGlmIHRoZSB1c2VyIGhhZCBwcmVzc2VkIHRoZVxuICAgICAgICAgKiBiYWNrc3BhY2Uga2V5IGFuZCB0aGVuIHR5cGVkIHRoZSBudW1iZXIuXG4gICAgICAgICAqL1xuXG4gICAgICAgIGlmIChkaWdpdHMgPT09IDIgfHwgdG90YWwgPiBtYXgpIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQXMgd2UncmUgZG9pbmcgZWxzZXdoZXJlLCB3ZSdyZSBjaGVja2luZyBpZiB0aGUgbnVtYmVyIGlzIGdyZWF0ZXJcbiAgICAgICAgICAgICAqIHRoYW4gdGhlIG1heCBzdGFydCBkaWdpdCAoMC0zIGluIG1vc3QgbW9udGhzKSwgYW5kIGlmIHNvLCB3ZSdyZVxuICAgICAgICAgICAgICogZ29pbmcgdG8gbW92ZSB0byB0aGUgbmV4dCBzZWdtZW50LlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAobnVtID4gbWF4U3RhcnQpIHtcbiAgICAgICAgICAgICAgICAvLyBtb3ZlIHRvIG5leHRcbiAgICAgICAgICAgICAgICBtb3ZlVG9OZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBudW0sIG1vdmVUb05leHQgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyBtb3ZlIHRvIG5leHRcbiAgICAgICAgbW92ZVRvTmV4dCA9IHRydWU7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiB0b3RhbCwgbW92ZVRvTmV4dCB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZU1pbnV0ZU9yU2Vjb25kKG51bTogbnVtYmVyLCBwcmV2OiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IG1heCA9IDU5O1xuICAgICAgICBsZXQgbW92ZVRvTmV4dCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBtYXhTdGFydCA9IE1hdGguZmxvb3IobWF4IC8gMTApO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiB0aGUgdXNlciBoYXMgbGVmdCB0aGUgc2VnbWVudCwgd2Ugd2FudCB0byByZXNldCB0aGVcbiAgICAgICAgICogYHByZXZgIHZhbHVlIHNvIHRoYXQgd2UgY2FuIHN0YXJ0IHRoZSBzZWdtZW50IG92ZXIgYWdhaW5cbiAgICAgICAgICogd2hlbiB0aGUgdXNlciB0eXBlcyBhIG51bWJlci5cbiAgICAgICAgICovXG4gICAgICAgIGlmIChwcm9wcy5oYXNMZWZ0Rm9jdXMoKSkge1xuICAgICAgICAgICAgcHJvcHMuaGFzTGVmdEZvY3VzLnNldChmYWxzZSk7XG4gICAgICAgICAgICBwcmV2ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmV2ID09PSBudWxsKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIElmIHRoZSB1c2VyIHR5cGVzIGEgMCBhcyB0aGUgZmlyc3QgbnVtYmVyLCB3ZSB3YW50XG4gICAgICAgICAgICAgKiB0byBrZWVwIHRyYWNrIG9mIHRoYXQgc28gdGhhdCB3aGVuIHRoZXkgdHlwZSB0aGUgbmV4dFxuICAgICAgICAgICAgICogbnVtYmVyLCB3ZSBjYW4gbW92ZSB0byB0aGUgbmV4dCBzZWdtZW50LlxuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIGlmIChudW0gPT09IDApIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5sYXN0S2V5WmVyby5zZXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IDAsIG1vdmVUb05leHQgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSWYgdGhlIGxhc3Qga2V5IHdhcyBhIDAsIG9yIGlmIHRoZSBmaXJzdCBudW1iZXIgaXNcbiAgICAgICAgICAgICAqIGdyZWF0ZXIgdGhhbiB0aGUgbWF4IHN0YXJ0IGRpZ2l0ICgwLTMgaW4gbW9zdCBjYXNlcyksIHRoZW5cbiAgICAgICAgICAgICAqIHdlIHdhbnQgdG8gbW92ZSB0byB0aGUgbmV4dCBzZWdtZW50LCBzaW5jZSBpdCdzIG5vdCBwb3NzaWJsZVxuICAgICAgICAgICAgICogdG8gY29udGludWUgdHlwaW5nIGEgdmFsaWQgbnVtYmVyIGluIHRoaXMgc2VnbWVudC5cbiAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICBpZiAocHJvcHMubGFzdEtleVplcm8oKSB8fCBudW0gPiBtYXhTdGFydCkge1xuICAgICAgICAgICAgICAgIC8vIG1vdmUgdG8gbmV4dFxuICAgICAgICAgICAgICAgIG1vdmVUb05leHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvcHMubGFzdEtleVplcm8uc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSWYgbm9uZSBvZiB0aGUgYWJvdmUgY29uZGl0aW9ucyBhcmUgbWV0LCB0aGVuIHdlIGNhbiBqdXN0XG4gICAgICAgICAgICAgKiByZXR1cm4gdGhlIG51bWJlciBhcyB0aGUgc2VnbWVudCB2YWx1ZSBhbmQgY29udGludWUgdHlwaW5nXG4gICAgICAgICAgICAgKiBpbiB0aGlzIHNlZ21lbnQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBudW0sIG1vdmVUb05leHQgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBpcyAyLCBvciBpZiB0aGUgdG90YWwgd2l0aCB0aGUgZXhpc3RpbmcgZGlnaXRcbiAgICAgICAgICogYW5kIHRoZSBwcmVzc2VkIGRpZ2l0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSB2YWx1ZSBmb3IgdGhpc1xuICAgICAgICAgKiBtb250aCwgdGhlbiB3ZSB3aWxsIHJlc2V0IHRoZSBzZWdtZW50IGFzIGlmIHRoZSB1c2VyIGhhZCBwcmVzc2VkIHRoZVxuICAgICAgICAgKiBiYWNrc3BhY2Uga2V5IGFuZCB0aGVuIHR5cGVkIHRoZSBudW1iZXIuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBkaWdpdHMgPSBwcmV2LnRvU3RyaW5nKCkubGVuZ3RoO1xuICAgICAgICBjb25zdCB0b3RhbCA9IE51bWJlci5wYXJzZUludChwcmV2LnRvU3RyaW5nKCkgKyBudW0udG9TdHJpbmcoKSk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHRoZSBudW1iZXIgb2YgZGlnaXRzIGlzIDIsIG9yIGlmIHRoZSB0b3RhbCB3aXRoIHRoZSBleGlzdGluZyBkaWdpdFxuICAgICAgICAgKiBhbmQgdGhlIHByZXNzZWQgZGlnaXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGlzXG4gICAgICAgICAqIG1vbnRoLCB0aGVuIHdlIHdpbGwgcmVzZXQgdGhlIHNlZ21lbnQgYXMgaWYgdGhlIHVzZXIgaGFkIHByZXNzZWQgdGhlXG4gICAgICAgICAqIGJhY2tzcGFjZSBrZXkgYW5kIHRoZW4gdHlwZWQgdGhlIG51bWJlci5cbiAgICAgICAgICovXG5cbiAgICAgICAgaWYgKGRpZ2l0cyA9PT0gMiB8fCB0b3RhbCA+IG1heCkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBcyB3ZSdyZSBkb2luZyBlbHNld2hlcmUsIHdlJ3JlIGNoZWNraW5nIGlmIHRoZSBudW1iZXIgaXMgZ3JlYXRlclxuICAgICAgICAgICAgICogdGhhbiB0aGUgbWF4IHN0YXJ0IGRpZ2l0ICgwLTMgaW4gbW9zdCBtb250aHMpLCBhbmQgaWYgc28sIHdlJ3JlXG4gICAgICAgICAgICAgKiBnb2luZyB0byBtb3ZlIHRvIHRoZSBuZXh0IHNlZ21lbnQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmIChudW0gPiBtYXhTdGFydCkge1xuICAgICAgICAgICAgICAgIC8vIG1vdmUgdG8gbmV4dFxuICAgICAgICAgICAgICAgIG1vdmVUb05leHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG51bSwgbW92ZVRvTmV4dCB9O1xuICAgICAgICB9XG4gICAgICAgIC8vIG1vdmUgdG8gbmV4dFxuICAgICAgICBtb3ZlVG9OZXh0ID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHRvdGFsLCBtb3ZlVG9OZXh0IH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWludXRlU2Vjb25kSW5jcmVtZW50YXRpb24oeyBlLCBwYXJ0LCBkYXRlUmVmLCBwcmV2VmFsdWUgfTogTWludXRlU2Vjb25kSW5jcmVtZW50UHJvcHMpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBzdGVwID0gcHJvcHMuc3RlcCgpW3BhcnRdID8/IDE7XG4gICAgICAgIGNvbnN0IHNpZ24gPSBlLmtleSA9PT0gQVJST1dfVVAgPyBzdGVwIDogLXN0ZXA7XG4gICAgICAgIGNvbnN0IG1pbiA9IDA7XG4gICAgICAgIGNvbnN0IG1heCA9IDU5O1xuXG4gICAgICAgIGlmIChwcmV2VmFsdWUgPT09IG51bGwpIHJldHVybiBzaWduID4gMCA/IG1pbiA6IG1heDtcblxuICAgICAgICBjb25zdCBjeWNsZUFyZ3M6IFtrZXlvZiBUaW1lRmllbGRzLCBudW1iZXJdID0gW3BhcnQsIHNpZ25dO1xuICAgICAgICByZXR1cm4gKGRhdGVSZWYgYXMgQ2FsZW5kYXJEYXRlVGltZSkuc2V0KHsgW3BhcnRdOiBwcmV2VmFsdWUgfSkuY3ljbGUoLi4uY3ljbGVBcmdzKVtwYXJ0XTtcbiAgICB9XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgICBzZWdtZW50QnVpbGRlcnNbcHJvcHMucGFydF0/LmF0dHJzKHtcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQoKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHMucGxhY2Vob2xkZXIoKSxcbiAgICAgICAgICAgICAgICBob3VyQ3ljbGU6IHByb3BzLmhvdXJDeWNsZSxcbiAgICAgICAgICAgICAgICBzZWdtZW50VmFsdWVzOiBwcm9wcy5zZWdtZW50VmFsdWVzKCksXG4gICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBwcm9wcy5mb3JtYXR0ZXJcbiAgICAgICAgICAgIH0pID8/IHt9XG4gICAgKTtcblxuICAgIGZ1bmN0aW9uIGhhbmRsZU1vbnRoU2VnbWVudEtleWRvd24oZTogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoIWlzQWNjZXB0YWJsZVNlZ21lbnRLZXkoZS5rZXkpIHx8IGlzU2VnbWVudE5hdmlnYXRpb25LZXkoZS5rZXkpKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcHJldlZhbHVlID0gcHJvcHMuc2VnbWVudFZhbHVlcygpLm1vbnRoO1xuXG4gICAgICAgIGlmIChlLmtleSA9PT0gQVJST1dfRE9XTiB8fCBlLmtleSA9PT0gQVJST1dfVVApIHtcbiAgICAgICAgICAgIHByb3BzLnNlZ21lbnRWYWx1ZXMudXBkYXRlKChwcmV2KSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgICAgbW9udGg6IGRhdGVUaW1lVmFsdWVJbmNyZW1lbnRhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIGUsXG4gICAgICAgICAgICAgICAgICAgIHBhcnQ6ICdtb250aCcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGVSZWY6IHByb3BzLnBsYWNlaG9sZGVyKCksXG4gICAgICAgICAgICAgICAgICAgIHByZXZWYWx1ZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNOdW1iZXJTdHJpbmcoZS5rZXkpKSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIucGFyc2VJbnQoZS5rZXkpO1xuICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSwgbW92ZVRvTmV4dCB9ID0gdXBkYXRlRGF5T3JNb250aCgxMiwgbnVtLCBwcmV2VmFsdWUpO1xuXG4gICAgICAgICAgICBwcm9wcy5zZWdtZW50VmFsdWVzLnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgbW9udGg6IHZhbHVlIH0pKTtcblxuICAgICAgICAgICAgaWYgKG1vdmVUb05leHQpIHByb3BzLmZvY3VzTmV4dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGUua2V5ID09PSBCQUNLU1BBQ0UpIHtcbiAgICAgICAgICAgIHByb3BzLmhhc0xlZnRGb2N1cy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgcHJvcHMuc2VnbWVudFZhbHVlcy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIG1vbnRoOiBkZWxldGVWYWx1ZShwcmV2VmFsdWUpIH0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZURheVNlZ21lbnRLZXlkb3duKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKCFpc0FjY2VwdGFibGVTZWdtZW50S2V5KGUua2V5KSB8fCBpc1NlZ21lbnROYXZpZ2F0aW9uS2V5KGUua2V5KSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IHByb3BzLnNlZ21lbnRWYWx1ZXMoKS5kYXk7XG5cbiAgICAgICAgaWYgKGUua2V5ID09PSBBUlJPV19ET1dOIHx8IGUua2V5ID09PSBBUlJPV19VUCkge1xuICAgICAgICAgICAgcHJvcHMuc2VnbWVudFZhbHVlcy51cGRhdGUoKHByZXYpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgICBkYXk6IGRhdGVUaW1lVmFsdWVJbmNyZW1lbnRhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIGUsXG4gICAgICAgICAgICAgICAgICAgIHBhcnQ6ICdkYXknLFxuICAgICAgICAgICAgICAgICAgICBkYXRlUmVmOiBwcm9wcy5wbGFjZWhvbGRlcigpLFxuICAgICAgICAgICAgICAgICAgICBwcmV2VmFsdWVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTnVtYmVyU3RyaW5nKGUua2V5KSkge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyLnBhcnNlSW50KGUua2V5KTtcbiAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRNb250aFZhbHVlID0gcHJvcHMuc2VnbWVudFZhbHVlcygpLm1vbnRoO1xuXG4gICAgICAgICAgICBjb25zdCBkYXlzSW5Nb250aCA9IHNlZ21lbnRNb250aFZhbHVlXG4gICAgICAgICAgICAgICAgPyBnZXREYXlzSW5Nb250aChwcm9wcy5wbGFjZWhvbGRlcigpLnNldCh7IG1vbnRoOiBzZWdtZW50TW9udGhWYWx1ZSB9KSlcbiAgICAgICAgICAgICAgICA6IGdldERheXNJbk1vbnRoKHByb3BzLnBsYWNlaG9sZGVyKCkpO1xuXG4gICAgICAgICAgICBjb25zdCB7IHZhbHVlLCBtb3ZlVG9OZXh0IH0gPSB1cGRhdGVEYXlPck1vbnRoKGRheXNJbk1vbnRoLCBudW0sIHByZXZWYWx1ZSk7XG5cbiAgICAgICAgICAgIHByb3BzLnNlZ21lbnRWYWx1ZXMudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBkYXk6IHZhbHVlIH0pKTtcblxuICAgICAgICAgICAgaWYgKG1vdmVUb05leHQpIHByb3BzLmZvY3VzTmV4dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGUua2V5ID09PSBCQUNLU1BBQ0UpIHtcbiAgICAgICAgICAgIHByb3BzLmhhc0xlZnRGb2N1cy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgcHJvcHMuc2VnbWVudFZhbHVlcy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIGRheTogZGVsZXRlVmFsdWUocHJldlZhbHVlKSB9KSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVZZWFyU2VnbWVudEtleWRvd24oZTogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoIWlzQWNjZXB0YWJsZVNlZ21lbnRLZXkoZS5rZXkpIHx8IGlzU2VnbWVudE5hdmlnYXRpb25LZXkoZS5rZXkpKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcHJldlZhbHVlID0gcHJvcHMuc2VnbWVudFZhbHVlcygpLnllYXI7XG5cbiAgICAgICAgaWYgKGUua2V5ID09PSBBUlJPV19ET1dOIHx8IGUua2V5ID09PSBBUlJPV19VUCkge1xuICAgICAgICAgICAgcHJvcHMuc2VnbWVudFZhbHVlcy51cGRhdGUoKHByZXYpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgICB5ZWFyOiBkYXRlVGltZVZhbHVlSW5jcmVtZW50YXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBlLFxuICAgICAgICAgICAgICAgICAgICBwYXJ0OiAneWVhcicsXG4gICAgICAgICAgICAgICAgICAgIGRhdGVSZWY6IHByb3BzLnBsYWNlaG9sZGVyKCksXG4gICAgICAgICAgICAgICAgICAgIHByZXZWYWx1ZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNOdW1iZXJTdHJpbmcoZS5rZXkpKSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIucGFyc2VJbnQoZS5rZXkpO1xuICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSwgbW92ZVRvTmV4dCB9ID0gdXBkYXRlWWVhcihudW0sIHByZXZWYWx1ZSk7XG5cbiAgICAgICAgICAgIHByb3BzLnNlZ21lbnRWYWx1ZXMudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCB5ZWFyOiB2YWx1ZSB9KSk7XG5cbiAgICAgICAgICAgIGlmIChtb3ZlVG9OZXh0KSBwcm9wcy5mb2N1c05leHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlLmtleSA9PT0gQkFDS1NQQUNFKSB7XG4gICAgICAgICAgICBwcm9wcy5oYXNMZWZ0Rm9jdXMuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHByb3BzLnNlZ21lbnRWYWx1ZXMudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCB5ZWFyOiBkZWxldGVWYWx1ZShwcmV2VmFsdWUpIH0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUhvdXJTZWdtZW50S2V5ZG93bihlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGRhdGVSZWYgPSBwcm9wcy5wbGFjZWhvbGRlcigpO1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBwcm9wcy5zZWdtZW50VmFsdWVzKCkgYXMgRGF0ZUFuZFRpbWVTZWdtZW50T2JqO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFpc0FjY2VwdGFibGVTZWdtZW50S2V5KGUua2V5KSB8fFxuICAgICAgICAgICAgaXNTZWdtZW50TmF2aWdhdGlvbktleShlLmtleSkgfHxcbiAgICAgICAgICAgICEoJ2hvdXInIGluIGRhdGVSZWYpIHx8XG4gICAgICAgICAgICAhKCdob3VyJyBpbiB2YWx1ZXMpXG4gICAgICAgIClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBwcmV2VmFsdWUgPSB2YWx1ZXMuaG91cjtcblxuICAgICAgICBjb25zdCBob3VyQ3ljbGUgPSBwcm9wcy5ob3VyQ3ljbGU7XG5cbiAgICAgICAgaWYgKGUua2V5ID09PSBBUlJPV19VUCB8fCBlLmtleSA9PT0gQVJST1dfRE9XTikge1xuICAgICAgICAgICAgcHJvcHMuc2VnbWVudFZhbHVlcy51cGRhdGUoKHByZXYpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgICBob3VyOiBkYXRlVGltZVZhbHVlSW5jcmVtZW50YXRpb24oe1xuICAgICAgICAgICAgICAgICAgICBlLFxuICAgICAgICAgICAgICAgICAgICBwYXJ0OiAnaG91cicsXG4gICAgICAgICAgICAgICAgICAgIGRhdGVSZWY6IHByb3BzLnBsYWNlaG9sZGVyKCksXG4gICAgICAgICAgICAgICAgICAgIHByZXZWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgaG91ckN5Y2xlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgaWYgKCdkYXlQZXJpb2QnIGluIHByb3BzLnNlZ21lbnRWYWx1ZXMoKSAmJiB2YWx1ZXMuaG91ciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5ob3VyIDwgMTIpIHByb3BzLnNlZ21lbnRWYWx1ZXMudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBkYXlQZXJpb2Q6ICdBTScgfSkpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlcy5ob3VyKSBwcm9wcy5zZWdtZW50VmFsdWVzLnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgZGF5UGVyaW9kOiAnUE0nIH0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTnVtYmVyU3RyaW5nKGUua2V5KSkge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyLnBhcnNlSW50KGUua2V5KTtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUsIG1vdmVUb05leHQgfSA9IHVwZGF0ZUhvdXIobnVtLCBwcmV2VmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAoJ2RheVBlcmlvZCcgaW4gcHJvcHMuc2VnbWVudFZhbHVlcygpICYmIHZhbHVlICYmIHZhbHVlID4gMTIpXG4gICAgICAgICAgICAgICAgcHJvcHMuc2VnbWVudFZhbHVlcy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIGRheVBlcmlvZDogJ0FNJyB9KSk7XG4gICAgICAgICAgICBlbHNlIGlmICgnZGF5UGVyaW9kJyBpbiBwcm9wcy5zZWdtZW50VmFsdWVzKCkgJiYgdmFsdWUpXG4gICAgICAgICAgICAgICAgcHJvcHMuc2VnbWVudFZhbHVlcy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIGRheVBlcmlvZDogJ1BNJyB9KSk7XG5cbiAgICAgICAgICAgIHByb3BzLnNlZ21lbnRWYWx1ZXMudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBob3VyOiB2YWx1ZSB9KSk7XG5cbiAgICAgICAgICAgIGlmIChtb3ZlVG9OZXh0KSBwcm9wcy5mb2N1c05leHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlLmtleSA9PT0gQkFDS1NQQUNFKSB7XG4gICAgICAgICAgICBwcm9wcy5oYXNMZWZ0Rm9jdXMuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHByb3BzLnNlZ21lbnRWYWx1ZXMudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBob3VyOiBkZWxldGVWYWx1ZShwcmV2VmFsdWUpIH0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZU1pbnV0ZVNlZ21lbnRLZXlkb3duKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgZGF0ZVJlZiA9IHByb3BzLnBsYWNlaG9sZGVyKCk7XG5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gcHJvcHMuc2VnbWVudFZhbHVlcygpIGFzIERhdGVBbmRUaW1lU2VnbWVudE9iajtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhaXNBY2NlcHRhYmxlU2VnbWVudEtleShlLmtleSkgfHxcbiAgICAgICAgICAgIGlzU2VnbWVudE5hdmlnYXRpb25LZXkoZS5rZXkpIHx8XG4gICAgICAgICAgICAhKCdtaW51dGUnIGluIGRhdGVSZWYpIHx8XG4gICAgICAgICAgICAhKCdtaW51dGUnIGluIHZhbHVlcylcbiAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IHZhbHVlcy5taW51dGU7XG5cbiAgICAgICAgaWYgKGUua2V5ID09PSBBUlJPV19VUCB8fCBlLmtleSA9PT0gQVJST1dfRE9XTikge1xuICAgICAgICAgICAgcHJvcHMuc2VnbWVudFZhbHVlcy51cGRhdGUoKHByZXYpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgICBtaW51dGU6IG1pbnV0ZVNlY29uZEluY3JlbWVudGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgZSxcbiAgICAgICAgICAgICAgICAgICAgcGFydDogJ21pbnV0ZScsXG4gICAgICAgICAgICAgICAgICAgIGRhdGVSZWY6IHByb3BzLnBsYWNlaG9sZGVyKCksXG4gICAgICAgICAgICAgICAgICAgIHByZXZWYWx1ZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNOdW1iZXJTdHJpbmcoZS5rZXkpKSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIucGFyc2VJbnQoZS5rZXkpO1xuXG4gICAgICAgICAgICBjb25zdCB7IHZhbHVlLCBtb3ZlVG9OZXh0IH0gPSB1cGRhdGVNaW51dGVPclNlY29uZChudW0sIHByZXZWYWx1ZSk7XG5cbiAgICAgICAgICAgIHByb3BzLnNlZ21lbnRWYWx1ZXMudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBtaW51dGU6IHZhbHVlIH0pKTtcblxuICAgICAgICAgICAgaWYgKG1vdmVUb05leHQpIHByb3BzLmZvY3VzTmV4dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGUua2V5ID09PSBCQUNLU1BBQ0UpIHtcbiAgICAgICAgICAgIHByb3BzLmhhc0xlZnRGb2N1cy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgcHJvcHMuc2VnbWVudFZhbHVlcy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIG1pbnV0ZTogZGVsZXRlVmFsdWUocHJldlZhbHVlKSB9KSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTZWNvbmRTZWdtZW50S2V5ZG93bihlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGRhdGVSZWYgPSBwcm9wcy5wbGFjZWhvbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHByb3BzLnNlZ21lbnRWYWx1ZXMoKSBhcyBEYXRlQW5kVGltZVNlZ21lbnRPYmo7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWlzQWNjZXB0YWJsZVNlZ21lbnRLZXkoZS5rZXkpIHx8XG4gICAgICAgICAgICBpc1NlZ21lbnROYXZpZ2F0aW9uS2V5KGUua2V5KSB8fFxuICAgICAgICAgICAgISgnc2Vjb25kJyBpbiBkYXRlUmVmKSB8fFxuICAgICAgICAgICAgISgnc2Vjb25kJyBpbiB2YWx1ZXMpXG4gICAgICAgIClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBwcmV2VmFsdWUgPSB2YWx1ZXMuc2Vjb25kO1xuXG4gICAgICAgIGlmIChlLmtleSA9PT0gQVJST1dfVVAgfHwgZS5rZXkgPT09IEFSUk9XX0RPV04pIHtcbiAgICAgICAgICAgIHByb3BzLnNlZ21lbnRWYWx1ZXMudXBkYXRlKChwcmV2KSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgICAgc2Vjb25kOiBtaW51dGVTZWNvbmRJbmNyZW1lbnRhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIGUsXG4gICAgICAgICAgICAgICAgICAgIHBhcnQ6ICdzZWNvbmQnLFxuICAgICAgICAgICAgICAgICAgICBkYXRlUmVmOiBwcm9wcy5wbGFjZWhvbGRlcigpLFxuICAgICAgICAgICAgICAgICAgICBwcmV2VmFsdWVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTnVtYmVyU3RyaW5nKGUua2V5KSkge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyLnBhcnNlSW50KGUua2V5KTtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUsIG1vdmVUb05leHQgfSA9IHVwZGF0ZU1pbnV0ZU9yU2Vjb25kKG51bSwgcHJldlZhbHVlKTtcblxuICAgICAgICAgICAgcHJvcHMuc2VnbWVudFZhbHVlcy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIHNlY29uZDogdmFsdWUgfSkpO1xuXG4gICAgICAgICAgICBpZiAobW92ZVRvTmV4dCkgcHJvcHMuZm9jdXNOZXh0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZS5rZXkgPT09IEJBQ0tTUEFDRSkge1xuICAgICAgICAgICAgcHJvcHMuaGFzTGVmdEZvY3VzLnNldChmYWxzZSk7XG4gICAgICAgICAgICBwcm9wcy5zZWdtZW50VmFsdWVzLnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgc2Vjb25kOiBkZWxldGVWYWx1ZShwcmV2VmFsdWUpIH0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZURheVBlcmlvZFNlZ21lbnRLZXlkb3duKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKCghaXNBY2NlcHRhYmxlU2VnbWVudEtleShlLmtleSkgfHwgaXNTZWdtZW50TmF2aWdhdGlvbktleShlLmtleSkpICYmIGUua2V5ICE9PSAnYScgJiYgZS5rZXkgIT09ICdwJykgfHxcbiAgICAgICAgICAgICEoJ2hvdXInIGluIHByb3BzLnBsYWNlaG9sZGVyKCkpIHx8XG4gICAgICAgICAgICAhKCdkYXlQZXJpb2QnIGluIHByb3BzLnNlZ21lbnRWYWx1ZXMoKSlcbiAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHByb3BzLnNlZ21lbnRWYWx1ZXMoKSBhcyBEYXRlQW5kVGltZVNlZ21lbnRPYmo7XG5cbiAgICAgICAgaWYgKGUua2V5ID09PSBBUlJPV19VUCB8fCBlLmtleSA9PT0gQVJST1dfRE9XTikge1xuICAgICAgICAgICAgaWYgKHZhbHVlcy5kYXlQZXJpb2QgPT09ICdBTScpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5zZWdtZW50VmFsdWVzLnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgZGF5UGVyaW9kOiAnUE0nIH0pKTtcbiAgICAgICAgICAgICAgICBwcm9wcy5zZWdtZW50VmFsdWVzLnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgaG91cjogdmFsdWVzLmhvdXIhICsgMTIgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb3BzLnNlZ21lbnRWYWx1ZXMudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBkYXlQZXJpb2Q6ICdBTScgfSkpO1xuICAgICAgICAgICAgcHJvcHMuc2VnbWVudFZhbHVlcy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIGhvdXI6IHZhbHVlcy5ob3VyISAtIDEyIH0pKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChbJ2EnLCAnQSddLmluY2x1ZGVzKGUua2V5KSAmJiB2YWx1ZXMuZGF5UGVyaW9kICE9PSAnQU0nKSB7XG4gICAgICAgICAgICBwcm9wcy5zZWdtZW50VmFsdWVzLnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgZGF5UGVyaW9kOiAnQU0nIH0pKTtcbiAgICAgICAgICAgIHByb3BzLnNlZ21lbnRWYWx1ZXMudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBob3VyOiB2YWx1ZXMuaG91ciEgLSAxMiB9KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoWydwJywgJ1AnXS5pbmNsdWRlcyhlLmtleSkgJiYgdmFsdWVzLmRheVBlcmlvZCAhPT0gJ1BNJykge1xuICAgICAgICAgICAgcHJvcHMuc2VnbWVudFZhbHVlcy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIGRheVBlcmlvZDogJ1BNJyB9KSk7XG4gICAgICAgICAgICBwcm9wcy5zZWdtZW50VmFsdWVzLnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgaG91cjogdmFsdWVzLmhvdXIhICsgMTIgfSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU2VnbWVudEtleWRvd24oZTogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkKCk7XG4gICAgICAgIGNvbnN0IHJlYWRvbmx5ID0gcHJvcHMucmVhZG9ubHkoKTtcblxuICAgICAgICBpZiAoZS5rZXkgIT09IFRBQikgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmIChkaXNhYmxlZCB8fCByZWFkb25seSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHNlZ21lbnRLZXlkb3duSGFuZGxlcnMgPSB7XG4gICAgICAgICAgICBtb250aDogaGFuZGxlTW9udGhTZWdtZW50S2V5ZG93bixcbiAgICAgICAgICAgIGRheTogaGFuZGxlRGF5U2VnbWVudEtleWRvd24sXG4gICAgICAgICAgICB5ZWFyOiBoYW5kbGVZZWFyU2VnbWVudEtleWRvd24sXG4gICAgICAgICAgICBob3VyOiBoYW5kbGVIb3VyU2VnbWVudEtleWRvd24sXG4gICAgICAgICAgICBtaW51dGU6IGhhbmRsZU1pbnV0ZVNlZ21lbnRLZXlkb3duLFxuICAgICAgICAgICAgc2Vjb25kOiBoYW5kbGVTZWNvbmRTZWdtZW50S2V5ZG93bixcbiAgICAgICAgICAgIGRheVBlcmlvZDogaGFuZGxlRGF5UGVyaW9kU2VnbWVudEtleWRvd24sXG4gICAgICAgICAgICB0aW1lWm9uZU5hbWU6ICgpID0+IHt9XG4gICAgICAgIH0gYXMgY29uc3Q7XG5cbiAgICAgICAgc2VnbWVudEtleWRvd25IYW5kbGVyc1twcm9wcy5wYXJ0IGFzIGtleW9mIHR5cGVvZiBzZWdtZW50S2V5ZG93bkhhbmRsZXJzXShlKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhW0FSUk9XX0xFRlQsIEFSUk9XX1JJR0hUXS5pbmNsdWRlcyhlLmtleSkgJiZcbiAgICAgICAgICAgIGUua2V5ICE9PSBUQUIgJiZcbiAgICAgICAgICAgIGUua2V5ICE9PSBTSElGVCAmJlxuICAgICAgICAgICAgaXNBY2NlcHRhYmxlU2VnbWVudEtleShlLmtleSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnZhbHVlcyhwcm9wcy5zZWdtZW50VmFsdWVzKCkpLmV2ZXJ5KChpdGVtKSA9PiBpdGVtICE9PSBudWxsKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZU9iamVjdCA9IHsgLi4uKHByb3BzLnNlZ21lbnRWYWx1ZXMoKSBhcyBSZWNvcmQ8QW55RXhjZXB0TGl0ZXJhbCwgbnVtYmVyPikgfTtcblxuICAgICAgICAgICAgICAgIGxldCBkYXRlUmVmID0gcHJvcHMucGxhY2Vob2xkZXIoKS5jb3B5KCk7XG5cbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh1cGRhdGVPYmplY3QpLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB1cGRhdGVPYmplY3RbcGFydCBhcyBBbnlFeGNlcHRMaXRlcmFsXTtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVJlZiA9IGRhdGVSZWYuc2V0KHsgW3BhcnRdOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHByb3BzLm1vZGVsVmFsdWUuc2V0KGRhdGVSZWYuY29weSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGhhbmRsZVNlZ21lbnRDbGljayxcbiAgICAgICAgaGFuZGxlU2VnbWVudEtleWRvd24sXG4gICAgICAgIGF0dHJpYnV0ZXNcbiAgICB9O1xufVxuIl19","export var RdxPositionSide;\n(function (RdxPositionSide) {\n RdxPositionSide[\"Top\"] = \"top\";\n RdxPositionSide[\"Right\"] = \"right\";\n RdxPositionSide[\"Bottom\"] = \"bottom\";\n RdxPositionSide[\"Left\"] = \"left\";\n})(RdxPositionSide || (RdxPositionSide = {}));\nexport var RdxPositionAlign;\n(function (RdxPositionAlign) {\n RdxPositionAlign[\"Start\"] = \"start\";\n RdxPositionAlign[\"Center\"] = \"center\";\n RdxPositionAlign[\"End\"] = \"end\";\n})(RdxPositionAlign || (RdxPositionAlign = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL3Bvc2l0aW9uaW5nL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLGVBS1g7QUFMRCxXQUFZLGVBQWU7SUFDdkIsOEJBQVcsQ0FBQTtJQUNYLGtDQUFlLENBQUE7SUFDZixvQ0FBaUIsQ0FBQTtJQUNqQixnQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxlQUFlLEtBQWYsZUFBZSxRQUsxQjtBQUVELE1BQU0sQ0FBTixJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDeEIsbUNBQWUsQ0FBQTtJQUNmLHFDQUFpQixDQUFBO0lBQ2pCLCtCQUFXLENBQUE7QUFDZixDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbmV4cG9ydCBlbnVtIFJkeFBvc2l0aW9uU2lkZSB7XG4gICAgVG9wID0gJ3RvcCcsXG4gICAgUmlnaHQgPSAncmlnaHQnLFxuICAgIEJvdHRvbSA9ICdib3R0b20nLFxuICAgIExlZnQgPSAnbGVmdCdcbn1cblxuZXhwb3J0IGVudW0gUmR4UG9zaXRpb25BbGlnbiB7XG4gICAgU3RhcnQgPSAnc3RhcnQnLFxuICAgIENlbnRlciA9ICdjZW50ZXInLFxuICAgIEVuZCA9ICdlbmQnXG59XG5cbmV4cG9ydCB0eXBlIFJkeFBvc2l0aW9uU2lkZUFuZEFsaWduID0geyBzaWRlOiBSZHhQb3NpdGlvblNpZGU7IGFsaWduOiBSZHhQb3NpdGlvbkFsaWduIH07XG5leHBvcnQgdHlwZSBSZHhQb3NpdGlvblNpZGVBbmRBbGlnbk9mZnNldHMgPSB7IHNpZGVPZmZzZXQ6IG51bWJlcjsgYWxpZ25PZmZzZXQ6IG51bWJlciB9O1xuXG5leHBvcnQgdHlwZSBSZHhQb3NpdGlvbnMgPSBSZWFkb25seTx7XG4gICAgW2tleSBpbiBSZHhQb3NpdGlvblNpZGVdOiBSZWFkb25seTx7XG4gICAgICAgIFtrZXkgaW4gUmR4UG9zaXRpb25BbGlnbl06IFJlYWRvbmx5PENvbm5lY3Rpb25Qb3NpdGlvblBhaXI+O1xuICAgIH0+O1xufT47XG5cbmV4cG9ydCB0eXBlIFJkeFBvc2l0aW9uaW5nRGVmYXVsdHMgPSBSZWFkb25seTx7XG4gICAgb2Zmc2V0czogUmVhZG9ubHk8e1xuICAgICAgICBzaWRlOiBudW1iZXI7XG4gICAgICAgIGFsaWduOiBudW1iZXI7XG4gICAgfT47XG4gICAgYXJyb3c6IFJlYWRvbmx5PHtcbiAgICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICAgICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgfT47XG59PjtcblxuZXhwb3J0IHR5cGUgUmR4QWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnMgPSBSZWFkb25seU1hcDxcbiAgICBgJHtSZHhQb3NpdGlvblNpZGV9fCR7UmR4UG9zaXRpb25BbGlnbn1gLFxuICAgIENvbm5lY3Rpb25Qb3NpdGlvblBhaXJcbj47XG5leHBvcnQgdHlwZSBSZHhBcnJvd1Bvc2l0aW9uUGFyYW1zID0ge1xuICAgIHRvcDogc3RyaW5nO1xuICAgIGxlZnQ6IHN0cmluZztcbiAgICB0cmFuc2Zvcm06IHN0cmluZztcbiAgICB0cmFuc2Zvcm1PcmlnaW46IHN0cmluZztcbn07XG4iXX0=","import { RdxPositionAlign, RdxPositionSide } from './types';\nexport const RDX_POSITIONS = {\n [RdxPositionSide.Top]: {\n [RdxPositionAlign.Center]: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n },\n [RdxPositionSide.Right]: {\n [RdxPositionAlign.Center]: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center'\n },\n [RdxPositionAlign.Start]: {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom'\n }\n },\n [RdxPositionSide.Bottom]: {\n [RdxPositionAlign.Center]: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }\n },\n [RdxPositionSide.Left]: {\n [RdxPositionAlign.Center]: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n }\n};\nexport const RDX_POSITIONING_DEFAULTS = {\n offsets: {\n side: 4,\n align: 0\n },\n arrow: {\n width: 8,\n height: 6\n }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9jb3JlL3NyYy9wb3NpdGlvbmluZy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUF3QyxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFbEcsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFpQjtJQUN2QyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNuQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsUUFBUSxFQUFFLFFBQVE7WUFDbEIsUUFBUSxFQUFFLFFBQVE7U0FDckI7UUFDRCxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsUUFBUSxFQUFFLE9BQU87WUFDakIsUUFBUSxFQUFFLFFBQVE7U0FDckI7UUFDRCxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsT0FBTyxFQUFFLEtBQUs7WUFDZCxRQUFRLEVBQUUsS0FBSztZQUNmLFFBQVEsRUFBRSxRQUFRO1NBQ3JCO0tBQ0o7SUFDRCxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNyQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsT0FBTyxFQUFFLFFBQVE7WUFDakIsUUFBUSxFQUFFLE9BQU87WUFDakIsUUFBUSxFQUFFLFFBQVE7U0FDckI7UUFDRCxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsT0FBTyxFQUFFLEtBQUs7WUFDZCxRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsS0FBSztTQUNsQjtRQUNELENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxPQUFPLEVBQUUsUUFBUTtZQUNqQixRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsUUFBUTtTQUNyQjtLQUNKO0lBQ0QsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdEIsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN2QixPQUFPLEVBQUUsUUFBUTtZQUNqQixPQUFPLEVBQUUsUUFBUTtZQUNqQixRQUFRLEVBQUUsUUFBUTtZQUNsQixRQUFRLEVBQUUsS0FBSztTQUNsQjtRQUNELENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLFFBQVE7WUFDakIsUUFBUSxFQUFFLE9BQU87WUFDakIsUUFBUSxFQUFFLEtBQUs7U0FDbEI7UUFDRCxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsT0FBTyxFQUFFLFFBQVE7WUFDakIsUUFBUSxFQUFFLEtBQUs7WUFDZixRQUFRLEVBQUUsS0FBSztTQUNsQjtLQUNKO0lBQ0QsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDcEIsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN2QixPQUFPLEVBQUUsT0FBTztZQUNoQixPQUFPLEVBQUUsUUFBUTtZQUNqQixRQUFRLEVBQUUsS0FBSztZQUNmLFFBQVEsRUFBRSxRQUFRO1NBQ3JCO1FBQ0QsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN0QixPQUFPLEVBQUUsT0FBTztZQUNoQixPQUFPLEVBQUUsS0FBSztZQUNkLFFBQVEsRUFBRSxLQUFLO1lBQ2YsUUFBUSxFQUFFLEtBQUs7U0FDbEI7UUFDRCxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsUUFBUSxFQUFFLFFBQVE7U0FDckI7S0FDSjtDQUNLLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBMkI7SUFDNUQsT0FBTyxFQUFFO1FBQ0wsSUFBSSxFQUFFLENBQUM7UUFDUCxLQUFLLEVBQUUsQ0FBQztLQUNYO0lBQ0QsS0FBSyxFQUFFO1FBQ0gsS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLEVBQUUsQ0FBQztLQUNaO0NBQ0ssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJkeFBvc2l0aW9uQWxpZ24sIFJkeFBvc2l0aW9uaW5nRGVmYXVsdHMsIFJkeFBvc2l0aW9ucywgUmR4UG9zaXRpb25TaWRlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBSRFhfUE9TSVRJT05TOiBSZHhQb3NpdGlvbnMgPSB7XG4gICAgW1JkeFBvc2l0aW9uU2lkZS5Ub3BdOiB7XG4gICAgICAgIFtSZHhQb3NpdGlvbkFsaWduLkNlbnRlcl06IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICBvdmVybGF5WDogJ2NlbnRlcicsXG4gICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgICAgICAgfSxcbiAgICAgICAgW1JkeFBvc2l0aW9uQWxpZ24uU3RhcnRdOiB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgICAgICB9LFxuICAgICAgICBbUmR4UG9zaXRpb25BbGlnbi5FbmRdOiB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFtSZHhQb3NpdGlvblNpZGUuUmlnaHRdOiB7XG4gICAgICAgIFtSZHhQb3NpdGlvbkFsaWduLkNlbnRlcl06IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ2NlbnRlcicsXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnY2VudGVyJ1xuICAgICAgICB9LFxuICAgICAgICBbUmR4UG9zaXRpb25BbGlnbi5TdGFydF06IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgICAgICB9LFxuICAgICAgICBbUmR4UG9zaXRpb25BbGlnbi5FbmRdOiB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgW1JkeFBvc2l0aW9uU2lkZS5Cb3R0b21dOiB7XG4gICAgICAgIFtSZHhQb3NpdGlvbkFsaWduLkNlbnRlcl06IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICBvdmVybGF5WDogJ2NlbnRlcicsXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCdcbiAgICAgICAgfSxcbiAgICAgICAgW1JkeFBvc2l0aW9uQWxpZ24uU3RhcnRdOiB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgICAgICB9LFxuICAgICAgICBbUmR4UG9zaXRpb25BbGlnbi5FbmRdOiB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFtSZHhQb3NpdGlvblNpZGUuTGVmdF06IHtcbiAgICAgICAgW1JkeFBvc2l0aW9uQWxpZ24uQ2VudGVyXToge1xuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9yaWdpblk6ICdjZW50ZXInLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICdjZW50ZXInXG4gICAgICAgIH0sXG4gICAgICAgIFtSZHhQb3NpdGlvbkFsaWduLlN0YXJ0XToge1xuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgIH0sXG4gICAgICAgIFtSZHhQb3NpdGlvbkFsaWduLkVuZF06IHtcbiAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgICAgICB9XG4gICAgfVxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFJEWF9QT1NJVElPTklOR19ERUZBVUxUUzogUmR4UG9zaXRpb25pbmdEZWZhdWx0cyA9IHtcbiAgICBvZmZzZXRzOiB7XG4gICAgICAgIHNpZGU6IDQsXG4gICAgICAgIGFsaWduOiAwXG4gICAgfSxcbiAgICBhcnJvdzoge1xuICAgICAgICB3aWR0aDogOCxcbiAgICAgICAgaGVpZ2h0OiA2XG4gICAgfVxufSBhcyBjb25zdDtcbiJdfQ==","import { RDX_POSITIONS } from './constants';\nimport { RdxPositionAlign, RdxPositionSide } from './types';\nexport function getContentPosition(sideAndAlignWithOffsets) {\n const { side, align, sideOffset, alignOffset } = sideAndAlignWithOffsets;\n const position = {\n ...(RDX_POSITIONS[side]?.[align] ?? RDX_POSITIONS[RdxPositionSide.Top][RdxPositionAlign.Center])\n };\n if (sideOffset || alignOffset) {\n if ([RdxPositionSide.Top, RdxPositionSide.Bottom].includes(side)) {\n if (sideOffset) {\n position.offsetY = side === RdxPositionSide.Top ? -sideOffset : sideOffset;\n }\n if (alignOffset) {\n position.offsetX = alignOffset;\n }\n }\n else {\n if (sideOffset) {\n position.offsetX = side === RdxPositionSide.Left ? -sideOffset : sideOffset;\n }\n if (alignOffset) {\n position.offsetY = alignOffset;\n }\n }\n }\n return position;\n}\nlet allPossibleConnectedPositions;\nexport function getAllPossibleConnectedPositions() {\n if (!allPossibleConnectedPositions) {\n allPossibleConnectedPositions = new Map();\n }\n if (allPossibleConnectedPositions.size < 1) {\n for (const [side, aligns] of Object.entries(RDX_POSITIONS)) {\n for (const [align, position] of Object.entries(aligns)) {\n allPossibleConnectedPositions.set(`${side}|${align}`, position);\n }\n }\n }\n return allPossibleConnectedPositions;\n}\nexport function getSideAndAlignFromAllPossibleConnectedPositions(position) {\n const allPossibleConnectedPositions = getAllPossibleConnectedPositions();\n let sideAndAlign;\n allPossibleConnectedPositions.forEach((value, key) => {\n if (position.originX === value.originX &&\n position.originY === value.originY &&\n position.overlayX === value.overlayX &&\n position.overlayY === value.overlayY) {\n const sideAndAlignArray = key.split('|');\n sideAndAlign = {\n side: sideAndAlignArray[0],\n align: sideAndAlignArray[1]\n };\n }\n });\n if (!sideAndAlign) {\n throw Error(`[Rdx positioning] cannot infer both side and align from the given position (${JSON.stringify(position)})`);\n }\n return sideAndAlign;\n}\nexport function getArrowPositionParams(sideAndAlign, arrowWidthAndHeight, triggerWidthAndHeight) {\n const posParams = {\n top: '',\n left: '',\n transform: '',\n transformOrigin: 'center center 0px'\n };\n if ([RdxPositionSide.Top, RdxPositionSide.Bottom].includes(sideAndAlign.side)) {\n if (sideAndAlign.side === RdxPositionSide.Top) {\n posParams.top = '100%';\n }\n else {\n posParams.top = `-${arrowWidthAndHeight.height}px`;\n posParams.transform = `rotate(180deg)`;\n }\n if (sideAndAlign.align === RdxPositionAlign.Start) {\n posParams.left = `${(triggerWidthAndHeight.width - arrowWidthAndHeight.width) / 2}px`;\n }\n else if (sideAndAlign.align === RdxPositionAlign.Center) {\n posParams.left = `calc(50% - ${arrowWidthAndHeight.width / 2}px)`;\n }\n else if (sideAndAlign.align === RdxPositionAlign.End) {\n posParams.left = `calc(100% - ${(triggerWidthAndHeight.width + arrowWidthAndHeight.width) / 2}px)`;\n }\n }\n else if ([RdxPositionSide.Left, RdxPositionSide.Right].includes(sideAndAlign.side)) {\n if (sideAndAlign.side === RdxPositionSide.Left) {\n posParams.left = `calc(100% - ${arrowWidthAndHeight.width}px)`;\n posParams.transform = `rotate(-90deg)`;\n posParams.transformOrigin = 'top right 0px';\n }\n else {\n posParams.left = `0`;\n posParams.transform = `rotate(90deg)`;\n posParams.transformOrigin = 'top left 0px';\n }\n if (sideAndAlign.align === RdxPositionAlign.Start) {\n posParams.top = `${(triggerWidthAndHeight.height - arrowWidthAndHeight.width) / 2}px`;\n }\n else if (sideAndAlign.align === RdxPositionAlign.Center) {\n posParams.top = `calc(50% - ${arrowWidthAndHeight.width / 2}px)`;\n }\n else if (sideAndAlign.align === RdxPositionAlign.End) {\n posParams.top = `calc(100% - ${(triggerWidthAndHeight.height + arrowWidthAndHeight.width) / 2}px)`;\n }\n }\n return posParams;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL3Bvc2l0aW9uaW5nL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUdILGdCQUFnQixFQUNoQixlQUFlLEVBR2xCLE1BQU0sU0FBUyxDQUFDO0FBRWpCLE1BQU0sVUFBVSxrQkFBa0IsQ0FDOUIsdUJBQWlGO0lBRWpGLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyx1QkFBdUIsQ0FBQztJQUN6RSxNQUFNLFFBQVEsR0FBc0I7UUFDaEMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLGFBQWEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDbkcsQ0FBQztJQUNGLElBQUksVUFBVSxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvRCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxLQUFLLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7WUFDL0UsQ0FBQztZQUNELElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2QsUUFBUSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUM7WUFDbkMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDYixR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Q0FBQztZQUNyQixTQUFTLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQztZQUN0QyxTQUFTLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsSUFBSSxZQUFZLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hELFNBQVMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUMxRixDQUFDO2FBQU0sSUFBSSxZQUFZLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hELFNBQVMsQ0FBQyxHQUFHLEdBQUcsY0FBYyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDckUsQ0FBQzthQUFNLElBQUksWUFBWSxDQUFDLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNyRCxTQUFTLENBQUMsR0FBRyxHQUFHLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDdkcsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBSRFhfUE9TSVRJT05TIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgICBSZHhBbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucyxcbiAgICBSZHhBcnJvd1Bvc2l0aW9uUGFyYW1zLFxuICAgIFJkeFBvc2l0aW9uQWxpZ24sXG4gICAgUmR4UG9zaXRpb25TaWRlLFxuICAgIFJkeFBvc2l0aW9uU2lkZUFuZEFsaWduLFxuICAgIFJkeFBvc2l0aW9uU2lkZUFuZEFsaWduT2Zmc2V0c1xufSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRlbnRQb3NpdGlvbihcbiAgICBzaWRlQW5kQWxpZ25XaXRoT2Zmc2V0czogUmR4UG9zaXRpb25TaWRlQW5kQWxpZ24gJiBSZHhQb3NpdGlvblNpZGVBbmRBbGlnbk9mZnNldHNcbik6IENvbm5lY3RlZFBvc2l0aW9uIHtcbiAgICBjb25zdCB7IHNpZGUsIGFsaWduLCBzaWRlT2Zmc2V0LCBhbGlnbk9mZnNldCB9ID0gc2lkZUFuZEFsaWduV2l0aE9mZnNldHM7XG4gICAgY29uc3QgcG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgICAgICAuLi4oUkRYX1BPU0lUSU9OU1tzaWRlXT8uW2FsaWduXSA/PyBSRFhfUE9TSVRJT05TW1JkeFBvc2l0aW9uU2lkZS5Ub3BdW1JkeFBvc2l0aW9uQWxpZ24uQ2VudGVyXSlcbiAgICB9O1xuICAgIGlmIChzaWRlT2Zmc2V0IHx8IGFsaWduT2Zmc2V0KSB7XG4gICAgICAgIGlmIChbUmR4UG9zaXRpb25TaWRlLlRvcCwgUmR4UG9zaXRpb25TaWRlLkJvdHRvbV0uaW5jbHVkZXMoc2lkZSkpIHtcbiAgICAgICAgICAgIGlmIChzaWRlT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb24ub2Zmc2V0WSA9IHNpZGUgPT09IFJkeFBvc2l0aW9uU2lkZS5Ub3AgPyAtc2lkZU9mZnNldCA6IHNpZGVPZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWxpZ25PZmZzZXQpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbi5vZmZzZXRYID0gYWxpZ25PZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc2lkZU9mZnNldCkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uLm9mZnNldFggPSBzaWRlID09PSBSZHhQb3NpdGlvblNpZGUuTGVmdCA/IC1zaWRlT2Zmc2V0IDogc2lkZU9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhbGlnbk9mZnNldCkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uLm9mZnNldFkgPSBhbGlnbk9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcG9zaXRpb247XG59XG5cbmxldCBhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9uczogUmR4QWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnM7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnMoKSB7XG4gICAgaWYgKCFhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucykge1xuICAgICAgICBhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucyA9IG5ldyBNYXAoKTtcbiAgICB9XG4gICAgaWYgKGFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zLnNpemUgPCAxKSB7XG4gICAgICAgIGZvciAoY29uc3QgW3NpZGUsIGFsaWduc10gb2YgT2JqZWN0LmVudHJpZXMoUkRYX1BPU0lUSU9OUykpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2FsaWduLCBwb3NpdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoYWxpZ25zKSkge1xuICAgICAgICAgICAgICAgIChhbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucyBhcyBNYXA8YW55LCBhbnk+KS5zZXQoYCR7c2lkZX18JHthbGlnbn1gLCBwb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2lkZUFuZEFsaWduRnJvbUFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zKFxuICAgIHBvc2l0aW9uOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyXG4pOiBSZHhQb3NpdGlvblNpZGVBbmRBbGlnbiB7XG4gICAgY29uc3QgYWxsUG9zc2libGVDb25uZWN0ZWRQb3NpdGlvbnMgPSBnZXRBbGxQb3NzaWJsZUNvbm5lY3RlZFBvc2l0aW9ucygpO1xuICAgIGxldCBzaWRlQW5kQWxpZ246IFJkeFBvc2l0aW9uU2lkZUFuZEFsaWduIHwgdW5kZWZpbmVkO1xuICAgIGFsbFBvc3NpYmxlQ29ubmVjdGVkUG9zaXRpb25zLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgcG9zaXRpb24ub3JpZ2luWCA9PT0gdmFsdWUub3JpZ2luWCAmJlxuICAgICAgICAgICAgcG9zaXRpb24ub3JpZ2luWSA9PT0gdmFsdWUub3JpZ2luWSAmJlxuICAgICAgICAgICAgcG9zaXRpb24ub3ZlcmxheVggPT09IHZhbHVlLm92ZXJsYXlYICYmXG4gICAgICAgICAgICBwb3NpdGlvbi5vdmVybGF5WSA9PT0gdmFsdWUub3ZlcmxheVlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBzaWRlQW5kQWxpZ25BcnJheSA9IGtleS5zcGxpdCgnfCcpO1xuICAgICAgICAgICAgc2lkZUFuZEFsaWduID0ge1xuICAgICAgICAgICAgICAgIHNpZGU6IHNpZGVBbmRBbGlnbkFycmF5WzBdIGFzIFJkeFBvc2l0aW9uU2lkZSxcbiAgICAgICAgICAgICAgICBhbGlnbjogc2lkZUFuZEFsaWduQXJyYXlbMV0gYXMgUmR4UG9zaXRpb25BbGlnblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghc2lkZUFuZEFsaWduKSB7XG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgYFtSZHggcG9zaXRpb25pbmddIGNhbm5vdCBpbmZlciBib3RoIHNpZGUgYW5kIGFsaWduIGZyb20gdGhlIGdpdmVuIHBvc2l0aW9uICgke0pTT04uc3RyaW5naWZ5KHBvc2l0aW9uKX0pYFxuICAgICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gc2lkZUFuZEFsaWduO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXJyb3dQb3NpdGlvblBhcmFtcyhcbiAgICBzaWRlQW5kQWxpZ246IFJkeFBvc2l0aW9uU2lkZUFuZEFsaWduLFxuICAgIGFycm93V2lkdGhBbmRIZWlnaHQ6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSxcbiAgICB0cmlnZ2VyV2lkdGhBbmRIZWlnaHQ6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfVxuKTogUmR4QXJyb3dQb3NpdGlvblBhcmFtcyB7XG4gICAgY29uc3QgcG9zUGFyYW1zOiBSZHhBcnJvd1Bvc2l0aW9uUGFyYW1zID0ge1xuICAgICAgICB0b3A6ICcnLFxuICAgICAgICBsZWZ0OiAnJyxcbiAgICAgICAgdHJhbnNmb3JtOiAnJyxcbiAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiAnY2VudGVyIGNlbnRlciAwcHgnXG4gICAgfTtcblxuICAgIGlmIChbUmR4UG9zaXRpb25TaWRlLlRvcCwgUmR4UG9zaXRpb25TaWRlLkJvdHRvbV0uaW5jbHVkZXMoc2lkZUFuZEFsaWduLnNpZGUpKSB7XG4gICAgICAgIGlmIChzaWRlQW5kQWxpZ24uc2lkZSA9PT0gUmR4UG9zaXRpb25TaWRlLlRvcCkge1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRvcCA9ICcxMDAlJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy50b3AgPSBgLSR7YXJyb3dXaWR0aEFuZEhlaWdodC5oZWlnaHR9cHhgO1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRyYW5zZm9ybSA9IGByb3RhdGUoMTgwZGVnKWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2lkZUFuZEFsaWduLmFsaWduID09PSBSZHhQb3NpdGlvbkFsaWduLlN0YXJ0KSB7XG4gICAgICAgICAgICBwb3NQYXJhbXMubGVmdCA9IGAkeyh0cmlnZ2VyV2lkdGhBbmRIZWlnaHQud2lkdGggLSBhcnJvd1dpZHRoQW5kSGVpZ2h0LndpZHRoKSAvIDJ9cHhgO1xuICAgICAgICB9IGVsc2UgaWYgKHNpZGVBbmRBbGlnbi5hbGlnbiA9PT0gUmR4UG9zaXRpb25BbGlnbi5DZW50ZXIpIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy5sZWZ0ID0gYGNhbGMoNTAlIC0gJHthcnJvd1dpZHRoQW5kSGVpZ2h0LndpZHRoIC8gMn1weClgO1xuICAgICAgICB9IGVsc2UgaWYgKHNpZGVBbmRBbGlnbi5hbGlnbiA9PT0gUmR4UG9zaXRpb25BbGlnbi5FbmQpIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy5sZWZ0ID0gYGNhbGMoMTAwJSAtICR7KHRyaWdnZXJXaWR0aEFuZEhlaWdodC53aWR0aCArIGFycm93V2lkdGhBbmRIZWlnaHQud2lkdGgpIC8gMn1weClgO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChbUmR4UG9zaXRpb25TaWRlLkxlZnQsIFJkeFBvc2l0aW9uU2lkZS5SaWdodF0uaW5jbHVkZXMoc2lkZUFuZEFsaWduLnNpZGUpKSB7XG4gICAgICAgIGlmIChzaWRlQW5kQWxpZ24uc2lkZSA9PT0gUmR4UG9zaXRpb25TaWRlLkxlZnQpIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy5sZWZ0ID0gYGNhbGMoMTAwJSAtICR7YXJyb3dXaWR0aEFuZEhlaWdodC53aWR0aH1weClgO1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRyYW5zZm9ybSA9IGByb3RhdGUoLTkwZGVnKWA7XG4gICAgICAgICAgICBwb3NQYXJhbXMudHJhbnNmb3JtT3JpZ2luID0gJ3RvcCByaWdodCAwcHgnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zUGFyYW1zLmxlZnQgPSBgMGA7XG4gICAgICAgICAgICBwb3NQYXJhbXMudHJhbnNmb3JtID0gYHJvdGF0ZSg5MGRlZylgO1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRyYW5zZm9ybU9yaWdpbiA9ICd0b3AgbGVmdCAwcHgnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpZGVBbmRBbGlnbi5hbGlnbiA9PT0gUmR4UG9zaXRpb25BbGlnbi5TdGFydCkge1xuICAgICAgICAgICAgcG9zUGFyYW1zLnRvcCA9IGAkeyh0cmlnZ2VyV2lkdGhBbmRIZWlnaHQuaGVpZ2h0IC0gYXJyb3dXaWR0aEFuZEhlaWdodC53aWR0aCkgLyAyfXB4YDtcbiAgICAgICAgfSBlbHNlIGlmIChzaWRlQW5kQWxpZ24uYWxpZ24gPT09IFJkeFBvc2l0aW9uQWxpZ24uQ2VudGVyKSB7XG4gICAgICAgICAgICBwb3NQYXJhbXMudG9wID0gYGNhbGMoNTAlIC0gJHthcnJvd1dpZHRoQW5kSGVpZ2h0LndpZHRoIC8gMn1weClgO1xuICAgICAgICB9IGVsc2UgaWYgKHNpZGVBbmRBbGlnbi5hbGlnbiA9PT0gUmR4UG9zaXRpb25BbGlnbi5FbmQpIHtcbiAgICAgICAgICAgIHBvc1BhcmFtcy50b3AgPSBgY2FsYygxMDAlIC0gJHsodHJpZ2dlcldpZHRoQW5kSGVpZ2h0LmhlaWdodCArIGFycm93V2lkdGhBbmRIZWlnaHQud2lkdGgpIC8gMn1weClgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc1BhcmFtcztcbn1cbiJdfQ==","// made by https://reka-ui.com/\nconst ignoredElement = ['INPUT', 'TEXTAREA'];\n/**\n * Allow arrow navigation for every html element with data-rdx-collection-item tag\n *\n * @param e Keyboard event\n * @param currentElement Event initiator element or any element that wants to handle the navigation\n * @param parentElement Parent element where contains all the collection items, this will collect every item to be used when nav\n * @param options further options\n * @returns the navigated html element or null if none\n */\nexport function useArrowNavigation(e, currentElement, parentElement, options = {}) {\n if (!currentElement || (options.enableIgnoredElement && ignoredElement.includes(currentElement.nodeName)))\n return null;\n const { arrowKeyOptions = 'both', attributeName = '[data-rdx-collection-item]', itemsArray = [], loop = true, dir = 'ltr', preventScroll = true, focus = false } = options;\n const [right, left, up, down, home, end] = [\n e.key === 'ArrowRight',\n e.key === 'ArrowLeft',\n e.key === 'ArrowUp',\n e.key === 'ArrowDown',\n e.key === 'Home',\n e.key === 'End'\n ];\n const goingVertical = up || down;\n const goingHorizontal = right || left;\n if (!home &&\n !end &&\n ((!goingVertical && !goingHorizontal) ||\n (arrowKeyOptions === 'vertical' && goingHorizontal) ||\n (arrowKeyOptions === 'horizontal' && goingVertical))) {\n return null;\n }\n const allCollectionItems = parentElement\n ? Array.from(parentElement.querySelectorAll(attributeName))\n : itemsArray;\n if (!allCollectionItems.length)\n return null;\n if (preventScroll)\n e.preventDefault();\n let item = null;\n if (goingHorizontal || goingVertical) {\n const goForward = goingVertical ? down : dir === 'ltr' ? right : left;\n item = findNextFocusableElement(allCollectionItems, currentElement, {\n goForward,\n loop\n });\n }\n else if (home) {\n item = allCollectionItems.length ? allCollectionItems[0] : null;\n }\n else if (end) {\n item = allCollectionItems.length ? allCollectionItems[allCollectionItems.length - 1] : null;\n }\n if (focus)\n item?.focus();\n return item;\n}\n/**\n * Recursive function to find the next focusable element to avoid disabled elements\n *\n * @param elements Elements to navigate\n * @param currentElement Current active element\n * @param options\n * @param iterations\n * @returns next focusable element\n */\nfunction findNextFocusableElement(elements, currentElement, options, iterations = elements.length) {\n if (--iterations === 0)\n return null;\n const index = elements.indexOf(currentElement);\n const newIndex = options.goForward ? index + 1 : index - 1;\n if (!options.loop && (newIndex < 0 || newIndex >= elements.length))\n return null;\n const adjustedNewIndex = (newIndex + elements.length) % elements.length;\n const candidate = elements[adjustedNewIndex];\n if (!candidate)\n return null;\n const isDisabled = candidate.hasAttribute('disabled') && candidate.getAttribute('disabled') !== 'false';\n if (isDisabled) {\n return findNextFocusableElement(elements, candidate, options, iterations);\n }\n return candidate;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlQXJyb3dOYXZpZ2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9jb3JlL3NyYy91c2VBcnJvd05hdmlnYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBa0UvQixNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUU3Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FDOUIsQ0FBZ0IsRUFDaEIsY0FBMkIsRUFDM0IsYUFBc0MsRUFDdEMsVUFBa0MsRUFBRTtJQUVwQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JHLE9BQU8sSUFBSSxDQUFDO0lBRWhCLE1BQU0sRUFDRixlQUFlLEdBQUcsTUFBTSxFQUN4QixhQUFhLEdBQUcsNEJBQTRCLEVBQzVDLFVBQVUsR0FBRyxFQUFFLEVBQ2YsSUFBSSxHQUFHLElBQUksRUFDWCxHQUFHLEdBQUcsS0FBSyxFQUNYLGFBQWEsR0FBRyxJQUFJLEVBQ3BCLEtBQUssR0FBRyxLQUFLLEVBQ2hCLEdBQUcsT0FBTyxDQUFDO0lBRVosTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUc7UUFDdkMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxZQUFZO1FBQ3RCLENBQUMsQ0FBQyxHQUFHLEtBQUssV0FBVztRQUNyQixDQUFDLENBQUMsR0FBRyxLQUFLLFNBQVM7UUFDbkIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxXQUFXO1FBQ3JCLENBQUMsQ0FBQyxHQUFHLEtBQUssTUFBTTtRQUNoQixDQUFDLENBQUMsR0FBRyxLQUFLLEtBQUs7S0FDbEIsQ0FBQztJQUNGLE1B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SSxTQUFTLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLE9BQU8sQ0FBQztJQUN4RyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2IsT0FBTyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIG1hZGUgYnkgaHR0cHM6Ly9yZWthLXVpLmNvbS9cblxuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuXG50eXBlIEFycm93S2V5T3B0aW9ucyA9ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgfCAnYm90aCc7XG5cbmludGVyZmFjZSBBcnJvd05hdmlnYXRpb25PcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBUaGUgYXJyb3cga2V5IG9wdGlvbnMgdG8gYWxsb3cgbmF2aWdhdGlvblxuICAgICAqXG4gICAgICogQGRlZmF1bHRWYWx1ZSBcImJvdGhcIlxuICAgICAqL1xuICAgIGFycm93S2V5T3B0aW9ucz86IEFycm93S2V5T3B0aW9ucztcblxuICAgIC8qKlxuICAgICAqIFRoZSBhdHRyaWJ1dGUgbmFtZSB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGl0ZW1zIGluIHRoZSBwYXJlbnQgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0VmFsdWUgXCJkYXRhLXJkeC1jb2xsZWN0aW9uLWl0ZW1cIlxuICAgICAqL1xuICAgIGF0dHJpYnV0ZU5hbWU/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcGFyZW50IGVsZW1lbnQgd2hlcmUgY29udGFpbnMgYWxsIHRoZSBjb2xsZWN0aW9uIGl0ZW1zLCB0aGlzIHdpbGwgY29sbGVjdCBldmVyeSBpdGVtIHRvIGJlIHVzZWQgd2hlbiBuYXZcbiAgICAgKiBJdCB3aWxsIGJlIGlnbm9yZWQgaWYgYXR0cmlidXRlTmFtZSBpcyBwcm92aWRlZFxuICAgICAqXG4gICAgICogQGRlZmF1bHRWYWx1ZSBbXVxuICAgICAqL1xuICAgIGl0ZW1zQXJyYXk/OiBIVE1MRWxlbWVudFtdO1xuXG4gICAgLyoqXG4gICAgICogQWxsb3cgbG9vcCBuYXZpZ2F0aW9uLiBJZiBmYWxzZSwgaXQgd2lsbCBzdG9wIGF0IHRoZSBmaXJzdCBhbmQgbGFzdCBlbGVtZW50XG4gICAgICpcbiAgICAgKiBAZGVmYXVsdFZhbHVlIHRydWVcbiAgICAgKi9cbiAgICBsb29wPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcmllbnRhdGlvbiBvZiB0aGUgY29sbGVjdGlvblxuICAgICAqXG4gICAgICogQGRlZmF1bHRWYWx1ZSBcImx0clwiXG4gICAgICovXG4gICAgZGlyPzogRGlyZWN0aW9uO1xuXG4gICAgLyoqXG4gICAgICogUHJldmVudCB0aGUgc2Nyb2xsIHdoZW4gbmF2aWdhdGluZy4gVGhpcyBoYXBwZW5zIHdoZW4gdGhlIGRpcmVjdGlvbiBvZiB0aGVcbiAgICAgKiBrZXkgbWF0Y2hlcyB0aGUgc2Nyb2xsIGRpcmVjdGlvbiBvZiBhbnkgYW5jZXN0b3Igc2Nyb2xsYWJsZSBlbGVtZW50cy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgICAqL1xuICAgIHByZXZlbnRTY3JvbGw/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQnkgZGVmYXVsdCBhbGwgY3VycmVudEVsZW1lbnQgd291bGQgdHJpZ2dlciBuYXZpZ2F0aW9uLiBJZiBgdHJ1ZWAsIGN1cnJlbnRFbGVtZW50IG5vZGVOYW1lIGluIHRoZSBpZ25vcmUgbGlzdCB3aWxsIHJldHVybiBudWxsXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAgICovXG4gICAgZW5hYmxlSWdub3JlZEVsZW1lbnQ/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRm9jdXMgdGhlIGVsZW1lbnQgYWZ0ZXIgbmF2aWdhdGlvblxuICAgICAqXG4gICAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgICAqL1xuICAgIGZvY3VzPzogYm9vbGVhbjtcbn1cblxuY29uc3QgaWdub3JlZEVsZW1lbnQgPSBbJ0lOUFVUJywgJ1RFWFRBUkVBJ107XG5cbi8qKlxuICogQWxsb3cgYXJyb3cgbmF2aWdhdGlvbiBmb3IgZXZlcnkgaHRtbCBlbGVtZW50IHdpdGggZGF0YS1yZHgtY29sbGVjdGlvbi1pdGVtIHRhZ1xuICpcbiAqIEBwYXJhbSBlICAgICAgICAgICAgICAgS2V5Ym9hcmQgZXZlbnRcbiAqIEBwYXJhbSBjdXJyZW50RWxlbWVudCAgRXZlbnQgaW5pdGlhdG9yIGVsZW1lbnQgb3IgYW55IGVsZW1lbnQgdGhhdCB3YW50cyB0byBoYW5kbGUgdGhlIG5hdmlnYXRpb25cbiAqIEBwYXJhbSBwYXJlbnRFbGVtZW50ICAgUGFyZW50IGVsZW1lbnQgd2hlcmUgY29udGFpbnMgYWxsIHRoZSBjb2xsZWN0aW9uIGl0ZW1zLCB0aGlzIHdpbGwgY29sbGVjdCBldmVyeSBpdGVtIHRvIGJlIHVzZWQgd2hlbiBuYXZcbiAqIEBwYXJhbSBvcHRpb25zICAgICAgICAgZnVydGhlciBvcHRpb25zXG4gKiBAcmV0dXJucyAgICAgICAgICAgICAgIHRoZSBuYXZpZ2F0ZWQgaHRtbCBlbGVtZW50IG9yIG51bGwgaWYgbm9uZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQXJyb3dOYXZpZ2F0aW9uKFxuICAgIGU6IEtleWJvYXJkRXZlbnQsXG4gICAgY3VycmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIHBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IEFycm93TmF2aWdhdGlvbk9wdGlvbnMgPSB7fVxuKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoIWN1cnJlbnRFbGVtZW50IHx8IChvcHRpb25zLmVuYWJsZUlnbm9yZWRFbGVtZW50ICYmIGlnbm9yZWRFbGVtZW50LmluY2x1ZGVzKGN1cnJlbnRFbGVtZW50Lm5vZGVOYW1lKSkpXG4gICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgY29uc3Qge1xuICAgICAgICBhcnJvd0tleU9wdGlvbnMgPSAnYm90aCcsXG4gICAgICAgIGF0dHJpYnV0ZU5hbWUgPSAnW2RhdGEtcmR4LWNvbGxlY3Rpb24taXRlbV0nLFxuICAgICAgICBpdGVtc0FycmF5ID0gW10sXG4gICAgICAgIGxvb3AgPSB0cnVlLFxuICAgICAgICBkaXIgPSAnbHRyJyxcbiAgICAgICAgcHJldmVudFNjcm9sbCA9IHRydWUsXG4gICAgICAgIGZvY3VzID0gZmFsc2VcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IFtyaWdodCwgbGVmdCwgdXAsIGRvd24sIGhvbWUsIGVuZF0gPSBbXG4gICAgICAgIGUua2V5ID09PSAnQXJyb3dSaWdodCcsXG4gICAgICAgIGUua2V5ID09PSAnQXJyb3dMZWZ0JyxcbiAgICAgICAgZS5rZXkgPT09ICdBcnJvd1VwJyxcbiAgICAgICAgZS5rZXkgPT09ICdBcnJvd0Rvd24nLFxuICAgICAgICBlLmtleSA9PT0gJ0hvbWUnLFxuICAgICAgICBlLmtleSA9PT0gJ0VuZCdcbiAgICBdO1xuICAgIGNvbnN0IGdvaW5nVmVydGljYWwgPSB1cCB8fCBkb3duO1xuICAgIGNvbnN0IGdvaW5nSG9yaXpvbnRhbCA9IHJpZ2h0IHx8IGxlZnQ7XG4gICAgaWYgKFxuICAgICAgICAhaG9tZSAmJlxuICAgICAgICAhZW5kICYmXG4gICAgICAgICgoIWdvaW5nVmVydGljYWwgJiYgIWdvaW5nSG9yaXpvbnRhbCkgfHxcbiAgICAgICAgICAgIChhcnJvd0tleU9wdGlvbnMgPT09ICd2ZXJ0aWNhbCcgJiYgZ29pbmdIb3Jpem9udGFsKSB8fFxuICAgICAgICAgICAgKGFycm93S2V5T3B0aW9ucyA9PT0gJ2hvcml6b250YWwnICYmIGdvaW5nVmVydGljYWwpKVxuICAgICkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBhbGxDb2xsZWN0aW9uSXRlbXM6IEhUTUxFbGVtZW50W10gPSBwYXJlbnRFbGVtZW50XG4gICAgICAgID8gQXJyYXkuZnJvbShwYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYXR0cmlidXRlTmFtZSkpXG4gICAgICAgIDogaXRlbXNBcnJheTtcblxuICAgIGlmICghYWxsQ29sbGVjdGlvbkl0ZW1zLmxlbmd0aCkgcmV0dXJuIG51bGw7XG5cbiAgICBpZiAocHJldmVudFNjcm9sbCkgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgbGV0IGl0ZW06IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAoZ29pbmdIb3Jpem9udGFsIHx8IGdvaW5nVmVydGljYWwpIHtcbiAgICAgICAgY29uc3QgZ29Gb3J3YXJkID0gZ29pbmdWZXJ0aWNhbCA/IGRvd24gOiBkaXIgPT09ICdsdHInID8gcmlnaHQgOiBsZWZ0O1xuICAgICAgICBpdGVtID0gZmluZE5leHRGb2N1c2FibGVFbGVtZW50KGFsbENvbGxlY3Rpb25JdGVtcywgY3VycmVudEVsZW1lbnQsIHtcbiAgICAgICAgICAgIGdvRm9yd2FyZCxcbiAgICAgICAgICAgIGxvb3BcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChob21lKSB7XG4gICAgICAgIGl0ZW0gPSBhbGxDb2xsZWN0aW9uSXRlbXMubGVuZ3RoID8gYWxsQ29sbGVjdGlvbkl0ZW1zWzBdIDogbnVsbDtcbiAgICB9IGVsc2UgaWYgKGVuZCkge1xuICAgICAgICBpdGVtID0gYWxsQ29sbGVjdGlvbkl0ZW1zLmxlbmd0aCA/IGFsbENvbGxlY3Rpb25JdGVtc1thbGxDb2xsZWN0aW9uSXRlbXMubGVuZ3RoIC0gMV0gOiBudWxsO1xuICAgIH1cblxuICAgIGlmIChmb2N1cykgaXRlbT8uZm9jdXMoKTtcblxuICAgIHJldHVybiBpdGVtO1xufVxuXG5pbnRlcmZhY2UgRmluZE5leHRGb2N1c2FibGVFbGVtZW50T3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBzZWFyY2ggZm9yd2FyZHMgb3IgYmFja3dhcmRzLlxuICAgICAqL1xuICAgIGdvRm9yd2FyZDogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGFsbG93IGxvb3BpbmcgdGhlIHNlYXJjaC4gSWYgZmFsc2UsIGl0IHdpbGwgc3RvcCBhdCB0aGUgZmlyc3QvbGFzdCBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGxvb3A/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBuZXh0IGZvY3VzYWJsZSBlbGVtZW50IHRvIGF2b2lkIGRpc2FibGVkIGVsZW1lbnRzXG4gKlxuICogQHBhcmFtIGVsZW1lbnRzIEVsZW1lbnRzIHRvIG5hdmlnYXRlXG4gKiBAcGFyYW0gY3VycmVudEVsZW1lbnQgQ3VycmVudCBhY3RpdmUgZWxlbWVudFxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEBwYXJhbSBpdGVyYXRpb25zXG4gKiBAcmV0dXJucyBuZXh0IGZvY3VzYWJsZSBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIGZpbmROZXh0Rm9jdXNhYmxlRWxlbWVudChcbiAgICBlbGVtZW50czogSFRNTEVsZW1lbnRbXSxcbiAgICBjdXJyZW50RWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgb3B0aW9uczogRmluZE5leHRGb2N1c2FibGVFbGVtZW50T3B0aW9ucyxcbiAgICBpdGVyYXRpb25zID0gZWxlbWVudHMubGVuZ3RoXG4pOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGlmICgtLWl0ZXJhdGlvbnMgPT09IDApIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgaW5kZXggPSBlbGVtZW50cy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcbiAgICBjb25zdCBuZXdJbmRleCA9IG9wdGlvbnMuZ29Gb3J3YXJkID8gaW5kZXggKyAxIDogaW5kZXggLSAxO1xuXG4gICAgaWYgKCFvcHRpb25zLmxvb3AgJiYgKG5ld0luZGV4IDwgMCB8fCBuZXdJbmRleCA+PSBlbGVtZW50cy5sZW5ndGgpKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGFkanVzdGVkTmV3SW5kZXggPSAobmV3SW5kZXggKyBlbGVtZW50cy5sZW5ndGgpICUgZWxlbWVudHMubGVuZ3RoO1xuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IGVsZW1lbnRzW2FkanVzdGVkTmV3SW5kZXhdO1xuICAgIGlmICghY2FuZGlkYXRlKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSBjYW5kaWRhdGUuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpICYmIGNhbmRpZGF0ZS5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgIT09ICdmYWxzZSc7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGZpbmROZXh0Rm9jdXNhYmxlRWxlbWVudChlbGVtZW50cywgY2FuZGlkYXRlLCBvcHRpb25zLCBpdGVyYXRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhbmRpZGF0ZTtcbn1cbiJdfQ==","import { effect, ElementRef } from '@angular/core';\n/**\n * Creates a resize observer effect for element\n *\n * @param options Configuration options\n * @param options.injector Angular injector\n * @param options.element Signal returning the element to observe\n * @param options.onResize Callback when element is resized\n * @returns EffectRef that can be destroyed when needed\n */\nexport function resizeEffect(options) {\n return effect((onCleanup) => {\n const elementOrRef = options.element();\n if (!elementOrRef)\n return;\n // Extract native element from ElementRef or use directly if it's HTMLElement\n const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n const resizeObserver = new ResizeObserver(options.onResize);\n resizeObserver.observe(element);\n onCleanup(() => resizeObserver.disconnect());\n }, { injector: options.injector });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUmVzaXplT2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL3VzZVJlc2l6ZU9ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQWEsVUFBVSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVoRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsT0FJNUI7SUFDRyxPQUFPLE1BQU0sQ0FDVCxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ1YsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUUxQiw2RUFBNkU7UUFDN0UsTUFBTSxPQUFPLEdBQUcsWUFBWSxZQUFZLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1FBRS9GLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1RCxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWhDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUNqQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVmZmVjdCwgRWZmZWN0UmVmLCBFbGVtZW50UmVmLCBJbmplY3RvciwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJlc2l6ZSBvYnNlcnZlciBlZmZlY3QgZm9yIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnNcbiAqIEBwYXJhbSBvcHRpb25zLmluamVjdG9yIEFuZ3VsYXIgaW5qZWN0b3JcbiAqIEBwYXJhbSBvcHRpb25zLmVsZW1lbnQgU2lnbmFsIHJldHVybmluZyB0aGUgZWxlbWVudCB0byBvYnNlcnZlXG4gKiBAcGFyYW0gb3B0aW9ucy5vblJlc2l6ZSBDYWxsYmFjayB3aGVuIGVsZW1lbnQgaXMgcmVzaXplZFxuICogQHJldHVybnMgRWZmZWN0UmVmIHRoYXQgY2FuIGJlIGRlc3Ryb3llZCB3aGVuIG5lZWRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzaXplRWZmZWN0KG9wdGlvbnM6IHtcbiAgICBpbmplY3RvcjogSW5qZWN0b3I7XG4gICAgZWxlbWVudDogU2lnbmFsPEVsZW1lbnRSZWYgfCBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICAgIG9uUmVzaXplOiBSZXNpemVPYnNlcnZlckNhbGxiYWNrO1xufSk6IEVmZmVjdFJlZiB7XG4gICAgcmV0dXJuIGVmZmVjdChcbiAgICAgICAgKG9uQ2xlYW51cCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudE9yUmVmID0gb3B0aW9ucy5lbGVtZW50KCk7XG4gICAgICAgICAgICBpZiAoIWVsZW1lbnRPclJlZikgcmV0dXJuO1xuXG4gICAgICAgICAgICAvLyBFeHRyYWN0IG5hdGl2ZSBlbGVtZW50IGZyb20gRWxlbWVudFJlZiBvciB1c2UgZGlyZWN0bHkgaWYgaXQncyBIVE1MRWxlbWVudFxuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRPclJlZiBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgPyBlbGVtZW50T3JSZWYubmF0aXZlRWxlbWVudCA6IGVsZW1lbnRPclJlZjtcblxuICAgICAgICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIob3B0aW9ucy5vblJlc2l6ZSk7XG4gICAgICAgICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBvbkNsZWFudXAoKCkgPT4gcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpKTtcbiAgICAgICAgfSxcbiAgICAgICAgeyBpbmplY3Rvcjogb3B0aW9ucy5pbmplY3RvciB9XG4gICAgKTtcbn1cbiJdfQ==","// https://ngxtension.netlify.app/utilities/signals/explicit-effect/\nimport { effect, untracked } from '@angular/core';\n/**\n * This explicit effect function will take the dependencies and the function to run when the dependencies change.\n *\n * @example\n * ```typescript\n * import { watch } from 'radix-ng/primitives/core';\n *\n * const count = signal(0);\n * const state = signal('idle');\n *\n * watch([count, state], ([count, state], cleanup) => {\n * console.log('count updated', count, state);\n *\n * cleanup(() => {\n * console.log('cleanup');\n * });\n * });\n * ```\n *\n * @param deps - The dependencies that the effect will run on\n * @param fn - The function to run when the dependencies change\n * @param options - The options for the effect with the addition of defer (it allows the computation to run on first change, not immediately)\n */\nexport function watch(deps, fn, options) {\n let defer = options && options.defer;\n return effect((onCleanup) => {\n const depValues = deps.map((s) => s());\n untracked(() => {\n if (!defer) {\n fn(depValues, onCleanup);\n }\n defer = false;\n });\n }, options);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2NvcmUvc3JjL3dhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9FQUFvRTtBQUVwRSxPQUFPLEVBQTJELE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFtQjNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FDakIsSUFBK0MsRUFDL0MsRUFBOEQsRUFDOUQsT0FBaUQ7SUFFakQsSUFBSSxLQUFLLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDckMsT0FBTyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1QsRUFBRSxDQUFDLFNBQWdCLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vbmd4dGVuc2lvbi5uZXRsaWZ5LmFwcC91dGlsaXRpZXMvc2lnbmFscy9leHBsaWNpdC1lZmZlY3QvXG5cbmltcG9ydCB7IENyZWF0ZUVmZmVjdE9wdGlvbnMsIEVmZmVjdENsZWFudXBSZWdpc3RlckZuLCBFZmZlY3RSZWYsIGVmZmVjdCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogV2Ugd2FudCB0byBoYXZlIHRoZSBUdXBsZSBpbiBvcmRlciB0byB1c2UgdGhlIHR5cGVzIGluIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVcbiAqL1xudHlwZSBFeHBsaWNpdEVmZmVjdFZhbHVlczxUPiA9IHtcbiAgICBbSyBpbiBrZXlvZiBUXTogKCkgPT4gVFtLXTtcbn07XG5cbi8qKlxuICogRXh0ZW5kIHRoZSByZWd1bGFyIHNldCBvZiBlZmZlY3Qgb3B0aW9uc1xuICovXG5kZWNsYXJlIGludGVyZmFjZSBDcmVhdGVFeHBsaWNpdEVmZmVjdE9wdGlvbnMgZXh0ZW5kcyBDcmVhdGVFZmZlY3RPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBPcHRpb24gdGhhdCBhbGxvd3MgdGhlIGNvbXB1dGF0aW9uIG5vdCB0byBleGVjdXRlIGltbWVkaWF0ZWx5LCBidXQgb25seSBydW4gb24gZmlyc3QgY2hhbmdlLlxuICAgICAqL1xuICAgIGRlZmVyPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGlzIGV4cGxpY2l0IGVmZmVjdCBmdW5jdGlvbiB3aWxsIHRha2UgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBkZXBlbmRlbmNpZXMgY2hhbmdlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyB3YXRjaCB9IGZyb20gJ3JhZGl4LW5nL3ByaW1pdGl2ZXMvY29yZSc7XG4gKlxuICogY29uc3QgY291bnQgPSBzaWduYWwoMCk7XG4gKiBjb25zdCBzdGF0ZSA9IHNpZ25hbCgnaWRsZScpO1xuICpcbiAqIHdhdGNoKFtjb3VudCwgc3RhdGVdLCAoW2NvdW50LCBzdGF0ZV0sIGNsZWFudXApID0+IHtcbiAqICAgY29uc29sZS5sb2coJ2NvdW50IHVwZGF0ZWQnLCBjb3VudCwgc3RhdGUpO1xuICpcbiAqICAgY2xlYW51cCgoKSA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coJ2NsZWFudXAnKTtcbiAqICAgfSk7XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBkZXBzIC0gVGhlIGRlcGVuZGVuY2llcyB0aGF0IHRoZSBlZmZlY3Qgd2lsbCBydW4gb25cbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgZGVwZW5kZW5jaWVzIGNoYW5nZVxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGVmZmVjdCB3aXRoIHRoZSBhZGRpdGlvbiBvZiBkZWZlciAoaXQgYWxsb3dzIHRoZSBjb21wdXRhdGlvbiB0byBydW4gb24gZmlyc3QgY2hhbmdlLCBub3QgaW1tZWRpYXRlbHkpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YXRjaDxJbnB1dCBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSwgUGFyYW1zID0gSW5wdXQ+KFxuICAgIGRlcHM6IHJlYWRvbmx5IFsuLi5FeHBsaWNpdEVmZmVjdFZhbHVlczxJbnB1dD5dLFxuICAgIGZuOiAoZGVwczogUGFyYW1zLCBvbkNsZWFudXA6IEVmZmVjdENsZWFudXBSZWdpc3RlckZuKSA9PiB2b2lkLFxuICAgIG9wdGlvbnM/OiBDcmVhdGVFeHBsaWNpdEVmZmVjdE9wdGlvbnMgfCB1bmRlZmluZWRcbik6IEVmZmVjdFJlZiB7XG4gICAgbGV0IGRlZmVyID0gb3B0aW9ucyAmJiBvcHRpb25zLmRlZmVyO1xuICAgIHJldHVybiBlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuICAgICAgICBjb25zdCBkZXBWYWx1ZXMgPSBkZXBzLm1hcCgocykgPT4gcygpKTtcbiAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghZGVmZXIpIHtcbiAgICAgICAgICAgICAgICBmbihkZXBWYWx1ZXMgYXMgYW55LCBvbkNsZWFudXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmZXIgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfSwgb3B0aW9ucyk7XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy1jb3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9jb3JlL3JhZGl4LW5nLXByaW1pdGl2ZXMtY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AAClD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE;AACnD,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;AACnD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AACjD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;AACjD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;AAClD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AACjD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAC7C,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;AACpD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAC5C,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AACjD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;AACrD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AACjD,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAA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"}
1
+ {"version":3,"file":"radix-ng-primitives-core.mjs","sources":["../../../packages/primitives/core/src/accessor/provide-value-accessor.ts","../../../packages/primitives/core/src/accessor/control-value-accessor.ts","../../../packages/primitives/core/src/auto-focus.directive.ts","../../../packages/primitives/core/src/clamp.ts","../../../packages/primitives/core/src/document.ts","../../../packages/primitives/core/src/element-size.ts","../../../packages/primitives/core/src/focus-initial.directive.ts","../../../packages/primitives/core/src/getActiveElement.ts","../../../packages/primitives/core/src/id-generator.ts","../../../packages/primitives/core/src/inject-ng-control.ts","../../../packages/primitives/core/src/is-client.ts","../../../packages/primitives/core/src/serialize.ts","../../../packages/primitives/core/src/is-equal.ts","../../../packages/primitives/core/src/is-inside-form.ts","../../../packages/primitives/core/src/is-nullish.ts","../../../packages/primitives/core/src/is-number.ts","../../../packages/primitives/core/src/isValueEqualOrExist.ts","../../../packages/primitives/core/src/kbd-constants.ts","../../../packages/primitives/core/src/provide-token.ts","../../../packages/primitives/core/src/window.ts","../../../packages/primitives/core/src/create-context.ts","../../../packages/primitives/core/src/chunk.ts","../../../packages/primitives/core/src/date-time/comparators.ts","../../../packages/primitives/core/src/date-time/calendar.ts","../../../packages/primitives/core/src/date-time/formatter.ts","../../../packages/primitives/core/src/date-time/parts.ts","../../../packages/primitives/core/src/date-time/placeholders.ts","../../../packages/primitives/core/src/date-time/utils.ts","../../../packages/primitives/core/src/date-time/parser.ts","../../../packages/primitives/core/src/date-time/segment.ts","../../../packages/primitives/core/src/date-time/types.ts","../../../packages/primitives/core/src/date-time/useDateField.ts","../../../packages/primitives/core/src/handleAndDispatchCustomEvent.ts","../../../packages/primitives/core/src/positioning/types.ts","../../../packages/primitives/core/src/positioning/constants.ts","../../../packages/primitives/core/src/positioning/utils.ts","../../../packages/primitives/core/src/useArrowNavigation.ts","../../../packages/primitives/core/src/useResizeObserver.ts","../../../packages/primitives/core/src/watch.ts","../../../packages/primitives/core/radix-ng-primitives-core.ts"],"sourcesContent":["import { forwardRef, Provider, Type } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Include in the providers section of a component which utilizes ControlValueAccessor to redundant code.\n *\n * ```ts\n * @Directive({\n * providers: [provideValueAccessor(ExampleDirective)]\n *}\n * export class ExampleDirective{}\n * ```\n */\nexport function provideValueAccessor<T>(type: Type<T>): Provider {\n return {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => type),\n multi: true\n };\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, booleanAttribute, inject, input, linkedSignal, output, untracked } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor } from './provide-value-accessor';\n\n/**\n * A reusable ControlValueAccessor implementation for form controls\n * @template T The type of the control's value\n */\n@Directive({\n exportAs: 'rdxControlValueAccessor',\n providers: [provideValueAccessor(RdxControlValueAccessor)]\n})\nexport class RdxControlValueAccessor<T> implements ControlValueAccessor {\n /**\n * Input for the control's value with alias 'value'\n * @default undefined\n */\n readonly valueInput = input<T>(undefined, { alias: 'value' });\n\n /**\n * Input for the disabled state with alias 'disabled'\n * Uses booleanAttribute transform to convert string attributes to booleans\n * @default false\n */\n readonly disabledInput = input<boolean, BooleanInput>(false, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n readonly valueChange = output<T>();\n\n private readonly _value = linkedSignal(() => this.valueInput());\n\n /**\n * Readonly access to the current value\n */\n readonly value = this._value.asReadonly();\n\n private readonly _disabled = linkedSignal(() => this.disabledInput());\n\n /**\n * Readonly access to the disabled state\n */\n readonly disabled = this._disabled.asReadonly();\n\n // Callbacks for ControlValueAccessor\n onChange?: (value: T | undefined) => void;\n private onTouched?: () => void;\n\n /**\n * Writes a new value to the control (ControlValueAccessor interface)\n * @param value The new value for the control\n */\n writeValue(value: T | undefined): void {\n untracked(() => this._value.set(value as T));\n }\n\n /**\n * Registers a callback for when the control value changes (ControlValueAccessor interface)\n * @param fn The callback function\n */\n registerOnChange(fn: (value: T | undefined) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a callback for when the control is touched (ControlValueAccessor interface)\n * @param fn The callback function\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control (ControlValueAccessor interface)\n * @param isDisabled Whether the control should be disabled\n */\n setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n /**\n * Updates the control's value and triggers change detection\n * @param value The new value\n */\n setValue(value: T) {\n this._value.set(value);\n this.valueChange.emit(value);\n this.onChange?.(value);\n }\n\n markAsTouched() {\n this.onTouched?.();\n }\n}\n\n/**\n * Provides a type-safe way to inject the RdxControlValueAccessor\n * @template T The type of the control's value\n * @returns An instance of RdxControlValueAccessor<T>\n */\nexport function injectControlValueAccessor<T>(): RdxControlValueAccessor<T> {\n return inject(RdxControlValueAccessor);\n}\n","import { booleanAttribute, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\n\n/*\n * <div [rdxAutoFocus]=\"true\"></div>\n */\n\n@Directive({\n selector: '[rdxAutoFocus]',\n standalone: true\n})\nexport class RdxAutoFocusDirective {\n #elementRef = inject(ElementRef);\n #ngZone = inject(NgZone);\n\n private _autoSelect = false;\n\n /**\n * @default false\n */\n @Input({ alias: 'rdxAutoFocus', transform: booleanAttribute })\n set autoFocus(value: boolean) {\n if (value) {\n // Note: Running this outside Angular's zone because `element.focus()` does not trigger change detection.\n this.#ngZone.runOutsideAngular(() =>\n // Note: `element.focus()` causes re-layout which might lead to frame drops on slower devices.\n // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#setting-focus\n // `setTimeout` is a macrotask executed within the current rendering frame.\n // Animation tasks are executed in the next rendering frame.\n reqAnimationFrame(() => {\n this.#elementRef.nativeElement.focus();\n if (this._autoSelect && this.#elementRef.nativeElement.select) {\n this.#elementRef.nativeElement.select();\n }\n })\n );\n }\n }\n\n // Setter for autoSelect attribute to enable text selection when autoFocus is true.\n @Input({ transform: booleanAttribute })\n set autoSelect(value: boolean) {\n this._autoSelect = value;\n }\n}\n\nconst availablePrefixes = ['moz', 'ms', 'webkit'];\n\nfunction requestAnimationFramePolyfill(): typeof requestAnimationFrame {\n let lastTime = 0;\n\n return function (callback: FrameRequestCallback): number {\n const currTime = new Date().getTime();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n\n const id = setTimeout(() => {\n callback(currTime + timeToCall);\n }, timeToCall) as any;\n\n lastTime = currTime + timeToCall;\n\n return id;\n };\n}\n\n// Function to get the appropriate requestAnimationFrame method with fallback to polyfill.\nfunction getRequestAnimationFrame(): typeof requestAnimationFrame {\n if (typeof window === 'undefined') {\n return () => 0;\n }\n if (window.requestAnimationFrame) {\n // https://github.com/vuejs/vue/issues/4465\n return window.requestAnimationFrame.bind(window);\n }\n\n const prefix = availablePrefixes.filter((key) => `${key}RequestAnimationFrame` in window)[0];\n\n return prefix ? (window as any)[`${prefix}RequestAnimationFrame`] : requestAnimationFramePolyfill();\n}\n\n// Get the requestAnimationFrame function or its polyfill.\nconst reqAnimationFrame = getRequestAnimationFrame();\n","/**\n * The `clamp` function restricts a number within a specified range by returning the value itself if it\n * falls within the range, or the closest boundary value if it exceeds the range.\n * @param {number} value - The `value` parameter represents the number that you want to clamp within\n * the specified range defined by `min` and `max` values.\n * @param {number} min - If the `value` parameter is less than the `min` value, the\n * function will return the `min` value.\n * @param {number} max - If the `value` parameter is greater than the `max` value,\n * the function will return `max`.\n * @returns The `clamp` function returns the value of `value` constrained within the range defined by\n * `min` and `max`.\n */\nexport function clamp(\n value: number,\n min: number = Number.NEGATIVE_INFINITY,\n max: number = Number.POSITIVE_INFINITY\n): number {\n return Math.min(max, Math.max(min, value));\n}\n\n/**\n * The function `roundToStepPrecision` rounds a number to a specified precision step.\n * @param {number} value - The `value` parameter is the number that you want to round to a specific\n * precision based on the `step` parameter.\n * @param {number} step - The `step` parameter in the `roundToStepPrecision` function represents the\n * interval at which you want to round the `value`. For example, if `step` is 0.5, the `value` will be\n * rounded to the nearest half.\n * @returns the `roundedValue` after rounding it to the precision specified by the `step`.\n */\nexport function roundToStepPrecision(value: number, step: number) {\n let roundedValue = value;\n const stepString = step.toString();\n const pointIndex = stepString.indexOf('.');\n const precision = pointIndex >= 0 ? stepString.length - pointIndex : 0;\n if (precision > 0) {\n const pow = 10 ** precision;\n roundedValue = Math.round(roundedValue * pow) / pow;\n }\n return roundedValue;\n}\n\n/**\n * The function `snapValueToStep` snaps a given value to the nearest step within a specified range.\n * @param {number} value - The `value` parameter represents the number that you want to snap to the\n * nearest step value.\n * @param {number | undefined} min - The `min` parameter represents the minimum value that the `value`\n * should be snapped to. If `value` is less than `min`, it will be snapped to `min`. If `min` is not\n * provided (undefined), then the snapping will not consider a minimum value.\n * @param {number | undefined} max - The `max` parameter represents the maximum value that the `value`\n * should be snapped to. It ensures that the snapped value does not exceed this maximum value.\n * @param {number} step - The `step` parameter in the `snapValueToStep` function represents the\n * interval at which the `value` should be snapped to. It determines the granularity of the snapping\n * operation. For example, if `step` is 5, the `value` will be snapped to the nearest multiple of\n * @returns a number that has been snapped to the nearest step value within the specified range of minimum and maximum values.\n */\nexport function snapValueToStep(value: number, min: number | undefined, max: number | undefined, step: number): number {\n min = Number(min);\n max = Number(max);\n const remainder = (value - (Number.isNaN(min) ? 0 : min)) % step;\n let snappedValue = roundToStepPrecision(\n Math.abs(remainder) * 2 >= step\n ? value + Math.sign(remainder) * (step - Math.abs(remainder))\n : value - remainder,\n step\n );\n\n if (!Number.isNaN(min)) {\n if (snappedValue < min) snappedValue = min;\n else if (!Number.isNaN(max) && snappedValue > max)\n snappedValue = min + Math.floor(roundToStepPrecision((max - min) / step, step)) * step;\n } else if (!Number.isNaN(max) && snappedValue > max) {\n snappedValue = Math.floor(roundToStepPrecision(max / step, step)) * step;\n }\n\n // correct floating point behavior by rounding to step precision\n snappedValue = roundToStepPrecision(snappedValue, step);\n\n return snappedValue;\n}\n","import { DOCUMENT, inject } from '@angular/core';\n\nexport function injectDocument(): Document {\n return inject(DOCUMENT);\n}\n","import { afterNextRender, DestroyRef, ElementRef, Injector, signal } from '@angular/core';\n\nexport function elementSize({ elementRef, injector }: { elementRef: ElementRef<HTMLElement>; injector: Injector }) {\n const destroyRef = injector.get(DestroyRef);\n const result = signal({\n width: elementRef.nativeElement.offsetWidth,\n height: elementRef.nativeElement.offsetHeight\n });\n\n afterNextRender(\n () => {\n const resizeObserver = new ResizeObserver((entries) => {\n const entry = entries[0];\n let width: number;\n let height: number;\n\n if ('borderBoxSize' in entry) {\n const borderSizeEntry = entry['borderBoxSize'];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n\n width = borderSize['inlineSize'];\n height = borderSize['blockSize'];\n } else {\n width = elementRef.nativeElement.offsetWidth;\n height = elementRef.nativeElement.offsetHeight;\n }\n\n result.set({ width, height });\n });\n\n destroyRef.onDestroy(() => resizeObserver.disconnect());\n },\n { injector: injector }\n );\n\n return result.asReadonly();\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[rdxFocusInitial]'\n})\nexport class RdxFocusInitialDirective {\n /** @ignore */\n private readonly nativeElement = inject(ElementRef).nativeElement;\n\n /** @ignore */\n focus(): void {\n this.nativeElement.focus();\n }\n}\n","export function getActiveElement(): Element | null {\n let activeElement = document.activeElement;\n if (activeElement == null) {\n return null;\n }\n\n while (\n activeElement != null &&\n activeElement.shadowRoot != null &&\n activeElement.shadowRoot.activeElement != null\n ) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n\n return activeElement;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport { APP_ID, inject, Injectable } from '@angular/core';\n\n/**\n * Keeps track of the ID count per prefix. This helps us make the IDs a bit more deterministic\n * like they were before the service was introduced. Note that ideally we wouldn't have to do\n * this, but there are some internal tests that rely on the IDs.\n */\nconst counters: Record<string, number> = {};\n\n/** Service that generates unique IDs for DOM nodes. */\n@Injectable({ providedIn: 'root' })\nexport class _IdGenerator {\n private readonly _appId = inject(APP_ID);\n\n /**\n * Generates a unique ID with a specific prefix.\n * @param prefix Prefix to add to the ID.\n */\n getId(prefix: string): string {\n // Omit the app ID if it's the default `ng`. Since the vast majority of pages have one\n // Angular app on them, we can reduce the amount of breakages by not adding it.\n if (this._appId !== 'ng') {\n prefix += this._appId;\n }\n\n if (!Object.prototype.hasOwnProperty.call(counters, prefix)) {\n counters[prefix] = 0;\n }\n\n return `${prefix}${counters[prefix]++}`;\n }\n}\n","import { inject } from '@angular/core';\nimport { FormControlDirective, FormControlName, NgControl, NgModel } from '@angular/forms';\n\nexport function injectNgControl(params: {\n optional: true;\n}): FormControlDirective | FormControlName | NgModel | undefined;\nexport function injectNgControl(params: { optional: false }): FormControlDirective | FormControlName | NgModel;\nexport function injectNgControl(): FormControlDirective | FormControlName | NgModel;\n\nexport function injectNgControl(params?: { optional: true } | { optional: false }) {\n const ngControl = inject(NgControl, { self: true, optional: true });\n\n if (!params?.optional && !ngControl) throw new Error('NgControl not found');\n\n if (\n ngControl instanceof FormControlDirective ||\n ngControl instanceof FormControlName ||\n ngControl instanceof NgModel\n ) {\n return ngControl;\n }\n\n if (params?.optional) {\n return undefined;\n }\n\n throw new Error('NgControl is not an instance of FormControlDirective, FormControlName or NgModel');\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { inject } from '@angular/core';\n\nexport function injectIsClient() {\n return inject(Platform).isBrowser;\n}\n","// Originally based on https://github.com/puleos/object-hash v3.0.0 (MIT)\n\ntype TypedArray =\n | Int8Array\n | Uint8Array\n | Uint8ClampedArray\n | Int16Array\n | Uint16Array\n | Int32Array\n | Uint32Array\n | Float32Array\n | Float64Array\n | BigInt64Array\n | BigUint64Array;\n\n/**\n * Serializes any input value into a string for hashing.\n *\n * This method uses best efforts to generate stable serialized values.\n * However, it is not designed for security purposes.\n * Keep in mind that there is always a chance of intentional collisions caused by user input.\n *\n * @param input any value to serialize\n * @return {string} serialized string value\n */\nexport function serialize(input: any): string {\n if (typeof input === 'string') {\n return `'${input}'`;\n }\n return new Serializer().serialize(input);\n}\n\nconst Serializer = /*@__PURE__*/ (function () {\n class Serializer {\n #context = new Map();\n\n compare(a: any, b: any): number {\n const typeA = typeof a;\n const typeB = typeof b;\n\n if (typeA === 'string' && typeB === 'string') {\n return a.localeCompare(b);\n }\n\n if (typeA === 'number' && typeB === 'number') {\n return a - b;\n }\n\n return String.prototype.localeCompare.call(this.serialize(a, true), this.serialize(b, true));\n }\n\n serialize(value: any, noQuotes?: boolean): string {\n if (value === null) {\n return 'null';\n }\n\n switch (typeof value) {\n case 'string': {\n return noQuotes ? value : `'${value}'`;\n }\n case 'bigint': {\n return `${value}n`;\n }\n case 'object': {\n return this.$object(value);\n }\n case 'function': {\n return this.$function(value);\n }\n }\n\n return String(value);\n }\n\n serializeObject(object: any): string {\n const objString = Object.prototype.toString.call(object);\n\n if (objString !== '[object Object]') {\n return this.serializeBuiltInType(\n objString.length < 10 /* '[object a]'.length === 10, the minimum */\n ? `unknown:${objString}`\n : objString.slice(8, -1) /* '[object '.length === 8 */,\n object\n );\n }\n\n const constructor = object.constructor;\n const objName = constructor === Object || constructor === undefined ? '' : constructor.name;\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n if (objName !== '' && globalThis[objName] === constructor) {\n return this.serializeBuiltInType(objName, object);\n }\n if ('toJSON' in object && typeof object.toJSON === 'function') {\n const json = object.toJSON();\n return (\n objName +\n (json !== null && typeof json === 'object' ? this.$object(json) : `(${this.serialize(json)})`)\n );\n }\n\n const keys = Object.keys(object).sort((a, b) => a.localeCompare(b));\n let content = `${objName}{`;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n content += `${key}:${this.serialize(object[key])}`;\n if (i < keys.length - 1) {\n content += ',';\n }\n }\n return content + '}';\n }\n\n serializeBuiltInType(type: string, object: any) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n const handler = this['$' + type];\n if (handler) {\n return handler.call(this, object);\n }\n if (typeof object.entries === 'function') {\n return this.serializeObjectEntries(type, object.entries());\n }\n throw new Error(`Cannot serialize ${type}`);\n }\n\n serializeObjectEntries(type: string, entries: Iterable<[any, any]>) {\n const sortedEntries = Array.from(entries).sort((a, b) => this.compare(a[0], b[0]));\n let content = `${type}{`;\n for (let i = 0; i < sortedEntries.length; i++) {\n const [key, value] = sortedEntries[i];\n content += `${this.serialize(key, true)}:${this.serialize(value)}`;\n if (i < sortedEntries.length - 1) {\n content += ',';\n }\n }\n return content + '}';\n }\n\n $object(object: any) {\n let content = this.#context.get(object);\n\n if (content === undefined) {\n this.#context.set(object, `#${this.#context.size}`);\n content = this.serializeObject(object);\n this.#context.set(object, content);\n }\n\n return content;\n }\n\n $function(fn: any) {\n const fnStr = Function.prototype.toString.call(fn);\n if (fnStr.slice(-15 /* \"[native code] }\".length */) === '[native code] }') {\n return `${fn.name || ''}()[native]`;\n }\n return `${fn.name}(${fn.length})${fnStr.replace(/\\s*\\n\\s*/g, '')}`;\n }\n\n $Array(arr: any[]) {\n let content = '[';\n for (let i = 0; i < arr.length; i++) {\n content += this.serialize(arr[i]);\n if (i < arr.length - 1) {\n content += ',';\n }\n }\n return content + ']';\n }\n\n $Date(date: any) {\n try {\n return `Date(${date.toISOString()})`;\n } catch {\n return `Date(null)`;\n }\n }\n\n $ArrayBuffer(arr: ArrayBuffer) {\n return `ArrayBuffer[${new Uint8Array(arr).join(',')}]`;\n }\n\n $Set(set: Set<any>) {\n return `Set${this.$Array(Array.from(set).sort((a, b) => this.compare(a, b)))}`;\n }\n\n $Map(map: Map<any, any>) {\n return this.serializeObjectEntries('Map', map.entries());\n }\n }\n\n for (const type of ['Error', 'RegExp', 'URL'] as const) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n Serializer.prototype['$' + type] = function (val: any) {\n return `${type}(${val})`;\n };\n }\n\n for (const type of [\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array'\n ] as const) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n Serializer.prototype['$' + type] = function (arr: TypedArray) {\n return `${type}[${arr.join(',')}]`;\n };\n }\n\n for (const type of ['BigInt64Array', 'BigUint64Array'] as const) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n Serializer.prototype['$' + type] = function (arr: TypedArray) {\n return `${type}[${arr.join('n,')}${arr.length > 0 ? 'n' : ''}]`;\n };\n }\n return Serializer;\n})();\n","import { serialize } from './serialize';\n/**\n * Compare two objects using reference equality and stable deep hashing.\n * @param {any} object1 First object\n * @param {any} object2 Second object\n * @return {boolean} true if equal and false if not\n */\nexport function isEqual(object1: any, object2: any): boolean {\n if (object1 === object2) {\n return true;\n }\n if (serialize(object1) === serialize(object2)) {\n return true;\n }\n return false;\n}\n","import { ElementRef } from '@angular/core';\n\nexport function isInsideForm(el: ElementRef<HTMLElement> | null): boolean {\n if (!el || !el.nativeElement) {\n return true;\n }\n return Boolean(el.nativeElement.closest('form'));\n}\n","export function isNullish(value: any): value is null | undefined {\n return value === null || value === undefined;\n}\n","export const isNumber = (v: any): v is number => typeof v === 'number';\n","import { isEqual } from './is-equal';\nimport { isNullish } from './is-nullish';\n\n/**\n * The function `isValueEqualOrExist` checks if a value is equal to or exists in another value or\n * array.\n * @param {T | T[] | undefined} base - It represents the base value that you want to compare with the `current` value.\n * @param {T | T[] | undefined} current - The `current` parameter represents the current value that you want to compare with the `base` value or values.\n * @returns The `isValueEqualOrExist` function returns a boolean value. It checks if the `base` value\n * is equal to the `current` value or if the `current` value exists within the `base` value. The\n * function handles cases where `base` can be a single value, an array of values, or undefined.\n */\nexport function isValueEqualOrExist<T>(base: T | T[] | undefined, current: T | T[] | undefined) {\n if (isNullish(base)) return false;\n if (Array.isArray(base)) {\n return base.some((val) => isEqual(val, current));\n } else {\n return isEqual(base, current);\n }\n}\n","export const ALT = 'Alt';\nexport const ARROW_DOWN = 'ArrowDown';\nexport const ARROW_LEFT = 'ArrowLeft';\nexport const ARROW_RIGHT = 'ArrowRight';\nexport const ARROW_UP = 'ArrowUp';\nexport const BACKSPACE = 'Backspace';\nexport const CAPS_LOCK = 'CapsLock';\nexport const CONTROL = 'Control';\nexport const DELETE = 'Delete';\nexport const END = 'End';\nexport const ENTER = 'Enter';\nexport const ESCAPE = 'Escape';\nexport const F1 = 'F1';\nexport const F10 = 'F10';\nexport const F11 = 'F11';\nexport const F12 = 'F12';\nexport const F2 = 'F2';\nexport const F3 = 'F3';\nexport const F4 = 'F4';\nexport const F5 = 'F5';\nexport const F6 = 'F6';\nexport const F7 = 'F7';\nexport const F8 = 'F8';\nexport const F9 = 'F9';\nexport const HOME = 'Home';\nexport const META = 'Meta';\nexport const PAGE_DOWN = 'PageDown';\nexport const PAGE_UP = 'PageUp';\nexport const SHIFT = 'Shift';\nexport const SPACE = ' ';\nexport const TAB = 'Tab';\nexport const CTRL = 'Control';\nexport const ASTERISK = '*';\nexport const a = 'a';\nexport const P = 'P';\nexport const A = 'A';\nexport const p = 'p';\nexport const n = 'n';\nexport const j = 'j';\nexport const k = 'k';\nexport const SPACE_CODE = 'Space';\n","import { forwardRef, InjectionToken, Provider, Type } from '@angular/core';\n\n/**\n * Creates an Angular provider that binds the given token to the existing instance\n * of the specified class. This is especially useful when you want multiple\n * tokens (or interfaces) to resolve to the same directive/component instance.\n *\n * @template T - The type associated with the injection token.\n * @param token - The InjectionToken or abstract type you want to provide.\n * @param type - The class type whose existing instance will be used for this token.\n * @returns A Provider configuration object for Angular's DI system.\n *\n * @example\n *\n * @Directive({\n * providers: [\n * provideToken(RdxToggleGroupToken, RdxToggleGroupDirective),\n * provideValueAccessor(RdxToggleGroupDirective)\n * ]\n * })\n * export class RdxToggleGroupDirective {}\n */\nexport function provideToken<T>(token: InjectionToken<T>, type: Type<unknown>): Provider {\n return {\n provide: token,\n useExisting: forwardRef(() => type)\n };\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport { injectDocument } from './document';\n\nexport const WINDOW = new InjectionToken<Window & typeof globalThis>('An abstraction over global window object', {\n factory: () => {\n const { defaultView } = injectDocument();\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n return defaultView;\n }\n});\n\nexport function injectWindow(): Window & typeof globalThis {\n return inject(WINDOW);\n}\n","// Thanks for idea.\n// https://github.com/unovue/reka-ui/blob/v2/packages/core/src/shared/createContext.ts\n\nimport { inject, InjectionToken, Provider } from '@angular/core';\n\n/**\n * Creates a context with injector and provider functions for a given type\n * @template T The type of the context value\n * @param description Descriptive string for the context (used in token creation)\n * @returns A tuple containing:\n * - injectContext: Function to retrieve the context value\n * - provideContext: Function to create a provider for the context\n */\nexport function createContext<T>(\n description: string\n): readonly [injectContext: (optional?: boolean) => T | null, provideContext: (useFactory: () => T) => Provider] {\n const CONTEXT_TOKEN = new InjectionToken<T>(`${description}Context`);\n\n /**\n * Retrieves the context value from Angular's dependency injection\n * @param optional If true, returns null when context is not provided instead of throwing\n * @returns The context value or null if optional and not provided\n * @throws Error when context is not provided and not optional\n */\n const injectContext = (optional = false): T | null => {\n const value = optional ? inject(CONTEXT_TOKEN, { optional: true }) : inject(CONTEXT_TOKEN);\n\n if (value == null && !optional) {\n throw new Error(`No context provided for token ${CONTEXT_TOKEN.toString()}`);\n }\n\n return value;\n };\n\n /**\n * Creates a provider that can be used to supply the context value\n * @param useFactory Factory function that creates the context value\n * @returns A provider that can be registered in Angular's DI system\n */\n const provideContext = (useFactory: () => T): Provider => ({\n provide: CONTEXT_TOKEN,\n useFactory: useFactory\n });\n\n return [injectContext, provideContext] as const;\n}\n","/**\n * Splits an array into chunks of a given size.\n * @param arr The array to split.\n * @param size The size of each chunk.\n * @returns An array of arrays, where each sub-array has `size` elements from the original array.\n * @example ```ts\n * const arr = [1, 2, 3, 4, 5, 6, 7, 8];\n * const chunks = chunk(arr, 3);\n * // chunks = [[1, 2, 3], [4, 5, 6], [7, 8]]\n * ```\n */\nexport function chunk<T>(arr: T[], size: number): T[][] {\n const result = [];\n for (let i = 0; i < arr.length; i += size) result.push(arr.slice(i, i + size));\n\n return result;\n}\n","import {\n CalendarDate,\n CalendarDateTime,\n CalendarIdentifier,\n createCalendar,\n DateFormatter,\n type DateValue,\n getDayOfWeek,\n getLocalTimeZone,\n Time,\n toCalendar,\n ZonedDateTime\n} from '@internationalized/date';\nimport type { DateMatcher } from './types';\n\n/**\n * Given a `DateValue` object, convert it to a native `Date` object.\n * If a timezone is provided, the date will be converted to that timezone.\n * If no timezone is provided, the date will be converted to the local timezone.\n */\nexport function toDate(dateValue: DateValue, tz: string = getLocalTimeZone()) {\n if (isZonedDateTime(dateValue)) return dateValue.toDate();\n else return dateValue.toDate(tz);\n}\n\nexport function isCalendarDateTime(dateValue: DateValue): dateValue is CalendarDateTime {\n return dateValue instanceof CalendarDateTime;\n}\n\nexport function isZonedDateTime(dateValue: DateValue): dateValue is ZonedDateTime {\n return dateValue instanceof ZonedDateTime;\n}\n\nexport function hasTime(dateValue: DateValue) {\n return isCalendarDateTime(dateValue) || isZonedDateTime(dateValue);\n}\n\n/**\n * Given a date, return the number of days in the month.\n */\nexport function getDaysInMonth(date: Date | DateValue) {\n if (date instanceof Date) {\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n /**\n * By using zero as the day, we get the\n * last day of the previous month, which\n * is the month we originally passed in.\n */\n return new Date(year, month, 0).getDate();\n } else {\n return date.set({ day: 100 }).day;\n }\n}\n\n/**\n * Determine if a date is before the reference date.\n * @param dateToCompare - is this date before the `referenceDate`\n * @param referenceDate - is the `dateToCompare` before this date\n *\n * @see {@link isBeforeOrSame} for inclusive\n */\nexport function isBefore(dateToCompare: DateValue, referenceDate: DateValue) {\n return dateToCompare.compare(referenceDate) < 0;\n}\n\n/**\n * Determine if a date is after the reference date.\n * @param dateToCompare - is this date after the `referenceDate`\n * @param referenceDate - is the `dateToCompare` after this date\n *\n * @see {@link isAfterOrSame} for inclusive\n */\nexport function isAfter(dateToCompare: DateValue, referenceDate: DateValue) {\n return dateToCompare.compare(referenceDate) > 0;\n}\n\n/**\n * Determine if a date is before or the same as the reference date.\n *\n * @param dateToCompare - the date to compare\n * @param referenceDate - the reference date to make the comparison against\n *\n * @see {@link isBefore} for non-inclusive\n */\nexport function isBeforeOrSame(dateToCompare: DateValue, referenceDate: DateValue) {\n return dateToCompare.compare(referenceDate) <= 0;\n}\n\n/**\n * Determine if a date is after or the same as the reference date.\n *\n * @param dateToCompare - is this date after or the same as the `referenceDate`\n * @param referenceDate - is the `dateToCompare` after or the same as this date\n *\n * @see {@link isAfter} for non-inclusive\n */\nexport function isAfterOrSame(dateToCompare: DateValue, referenceDate: DateValue) {\n return dateToCompare.compare(referenceDate) >= 0;\n}\n\n/**\n * Determine if a date is inclusively between a start and end reference date.\n *\n * @param date - is this date inclusively between the `start` and `end` dates\n * @param start - the start reference date to make the comparison against\n * @param end - the end reference date to make the comparison against\n *\n * @see {@link isBetween} for non-inclusive\n */\nexport function isBetweenInclusive(date: DateValue, start: DateValue, end: DateValue) {\n return isAfterOrSame(date, start) && isBeforeOrSame(date, end);\n}\n\n/**\n * Determine if a date is between a start and end reference date.\n *\n * @param date - is this date between the `start` and `end` dates\n * @param start - the start reference date to make the comparison against\n * @param end - the end reference date to make the comparison against\n *\n * @see {@link isBetweenInclusive} for inclusive\n */\nexport function isBetween(date: DateValue, start: DateValue, end: DateValue) {\n return isAfter(date, start) && isBefore(date, end);\n}\n\nexport function getLastFirstDayOfWeek<T extends DateValue = DateValue>(\n date: T,\n firstDayOfWeek: number,\n locale: string\n): T {\n const day = getDayOfWeek(date, locale);\n\n if (firstDayOfWeek > day) return date.subtract({ days: day + 7 - firstDayOfWeek }) as T;\n\n if (firstDayOfWeek === day) return date as T;\n\n return date.subtract({ days: day - firstDayOfWeek }) as T;\n}\n\nexport function getNextLastDayOfWeek<T extends DateValue = DateValue>(\n date: T,\n firstDayOfWeek: number,\n locale: string\n): T {\n const day = getDayOfWeek(date, locale);\n const lastDayOfWeek = firstDayOfWeek === 0 ? 6 : firstDayOfWeek - 1;\n\n if (day === lastDayOfWeek) return date as T;\n\n if (day > lastDayOfWeek) return date.add({ days: 7 - day + lastDayOfWeek }) as T;\n\n return date.add({ days: lastDayOfWeek - day }) as T;\n}\n\nexport function areAllDaysBetweenValid(\n start: DateValue,\n end: DateValue,\n isUnavailable: DateMatcher | undefined,\n isDisabled: DateMatcher | undefined\n) {\n if (isUnavailable === undefined && isDisabled === undefined) return true;\n\n let dCurrent = start.add({ days: 1 });\n if (isDisabled?.(dCurrent) || isUnavailable?.(dCurrent)) return false;\n\n const dEnd = end;\n while (dCurrent.compare(dEnd) < 0) {\n dCurrent = dCurrent.add({ days: 1 });\n if (isDisabled?.(dCurrent) || isUnavailable?.(dCurrent)) return false;\n }\n return true;\n}\n\nexport type TimeValue = Time | CalendarDateTime | ZonedDateTime;\n\nexport type Granularity = 'day' | 'hour' | 'minute' | 'second';\nexport type TimeGranularity = 'hour' | 'minute' | 'second';\n\ntype GetDefaultDateProps = {\n defaultValue?: DateValue | DateValue[] | undefined;\n defaultPlaceholder?: DateValue | undefined;\n granularity?: Granularity;\n locale?: string;\n};\n\n/**\n * A helper function used throughout the various date builders\n * to generate a default `DateValue` using the `defaultValue`,\n * `defaultPlaceholder`, and `granularity` props.\n *\n * It's important to match the `DateValue` type being used\n * elsewhere in the builder, so they behave according to the\n * behavior the user expects based on the props they've provided.\n *\n */\nexport function getDefaultDate(props: GetDefaultDateProps): DateValue {\n const { defaultValue, defaultPlaceholder, granularity = 'day', locale = 'en' } = props;\n\n if (Array.isArray(defaultValue) && defaultValue.length) return defaultValue[defaultValue.length - 1]!.copy();\n\n if (defaultValue && !Array.isArray(defaultValue)) return defaultValue.copy();\n\n if (defaultPlaceholder) return defaultPlaceholder.copy();\n\n const date = new Date();\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const day = date.getDate();\n const calendarDateTimeGranularities = ['hour', 'minute', 'second'];\n\n const defaultFormatter = new DateFormatter(locale);\n const calendar = createCalendar(defaultFormatter.resolvedOptions().calendar as CalendarIdentifier);\n\n if (calendarDateTimeGranularities.includes(granularity ?? 'day'))\n return toCalendar(new CalendarDateTime(year, month, day, 0, 0, 0), calendar);\n\n return toCalendar(new CalendarDate(year, month, day), calendar);\n}\n\ntype GetDefaultTimeProps = {\n defaultValue?: TimeValue | undefined;\n defaultPlaceholder?: TimeValue | undefined;\n};\n\nexport function getDefaultTime(props: GetDefaultTimeProps): TimeValue {\n const { defaultValue, defaultPlaceholder } = props;\n\n if (defaultValue) {\n return defaultValue.copy();\n }\n\n if (defaultPlaceholder) {\n return defaultPlaceholder.copy();\n }\n\n return new Time(0, 0, 0);\n}\n","/*\n * Implementation ported from from from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/calendar/create.ts\n */\n\nimport { CalendarDate, DateValue, DayOfWeek, endOfMonth, getDayOfWeek, startOfMonth } from '@internationalized/date';\nimport { chunk } from '../chunk';\nimport { getDaysInMonth, getLastFirstDayOfWeek, getNextLastDayOfWeek } from './comparators';\nimport { Month } from './types';\n\nexport type CreateMonthProps = {\n /**\n * The date object representing the month's date (usually the first day of the month).\n */\n dateObj: DateValue;\n\n /**\n * The day of the week to start the calendar on (0 for Sunday, 1 for Monday, etc.).\n */\n weekStartsOn: number;\n\n /**\n * Whether to always render 6 weeks in the calendar, even if the month doesn't\n * span 6 weeks.\n */\n fixedWeeks: boolean;\n\n /**\n * The locale to use when creating the calendar month.\n */\n locale: string;\n};\n\n/**\n * Retrieves an array of date values representing the days between\n * the provided start and end dates.\n */\nexport function getDaysBetween(start: DateValue, end: DateValue) {\n const days: DateValue[] = [];\n let dCurrent = start.add({ days: 1 });\n const dEnd = end;\n while (dCurrent.compare(dEnd) < 0) {\n days.push(dCurrent);\n dCurrent = dCurrent.add({ days: 1 });\n }\n return days;\n}\n\nexport function createMonth(props: CreateMonthProps): Month<DateValue> {\n const { dateObj, weekStartsOn, fixedWeeks, locale } = props;\n const daysInMonth = getDaysInMonth(dateObj);\n\n const datesArray = Array.from({ length: daysInMonth }, (_, i) => dateObj.set({ day: i + 1 }));\n\n const firstDayOfMonth = startOfMonth(dateObj);\n const lastDayOfMonth = endOfMonth(dateObj);\n\n const lastSunday = getLastFirstDayOfWeek(firstDayOfMonth, weekStartsOn, locale);\n const nextSaturday = getNextLastDayOfWeek(lastDayOfMonth, weekStartsOn, locale);\n\n const lastMonthDays = getDaysBetween(lastSunday.subtract({ days: 1 }), firstDayOfMonth);\n const nextMonthDays = getDaysBetween(lastDayOfMonth, nextSaturday.add({ days: 1 }));\n\n const totalDays = lastMonthDays.length + datesArray.length + nextMonthDays.length;\n\n if (fixedWeeks && totalDays < 42) {\n const extraDays = 42 - totalDays;\n\n let startFrom = nextMonthDays[nextMonthDays.length - 1];\n\n if (!startFrom) startFrom = endOfMonth(dateObj);\n\n const extraDaysArray = Array.from({ length: extraDays }, (_, i) => {\n const incr = i + 1;\n return startFrom.add({ days: incr });\n });\n nextMonthDays.push(...extraDaysArray);\n }\n\n const allDays = lastMonthDays.concat(datesArray, nextMonthDays);\n\n const weeks = chunk(allDays, 7);\n\n return {\n value: dateObj,\n dates: allDays,\n weeks: weeks\n };\n}\n\ntype SetMonthProps = CreateMonthProps & {\n numberOfMonths: number | undefined;\n currentMonths?: Month<DateValue>[];\n};\n\nexport function createMonths(props: SetMonthProps) {\n const { numberOfMonths, dateObj, ...monthProps } = props;\n\n const months: Month<DateValue>[] = [];\n\n if (!numberOfMonths || numberOfMonths === 1) {\n months.push(\n createMonth({\n ...monthProps,\n dateObj\n })\n );\n return months;\n }\n\n months.push(\n createMonth({\n ...monthProps,\n dateObj\n })\n );\n\n // Create all the months, starting with the current month\n for (let i = 1; i < numberOfMonths; i++) {\n const nextMonth = dateObj.add({ months: i });\n months.push(\n createMonth({\n ...monthProps,\n dateObj: nextMonth\n })\n );\n }\n\n return months;\n}\n\n/**\n * Returns the locale-specific week number\n */\nexport function getWeekNumber(date: DateValue, locale: string = 'en-US', firstDayOfWeek?: DayOfWeek): number {\n const firstDayOfYear = new CalendarDate(date.year, 1, 1);\n\n const firstDayOfYearWeekday = getDayOfWeek(firstDayOfYear, locale, firstDayOfWeek);\n\n const firstWeekStart = firstDayOfYear.subtract({ days: firstDayOfYearWeekday });\n\n // If date is before the first week start It belongs to the last week of the previous year\n if (date.compare(firstWeekStart) < 0) {\n const prevYearDate = new CalendarDate(date.year - 1, 12, 31);\n return getWeekNumber(prevYearDate, locale, firstDayOfWeek);\n }\n\n const days = getDaysBetween(firstWeekStart, date);\n\n // Week number is days divided by 7 plus 1\n return Math.floor(days.length / 7) + 1;\n}\n","import { DateFormatter, type DateValue, getLocalTimeZone, today } from '@internationalized/date';\nimport { hasTime, isZonedDateTime, toDate } from './comparators';\nimport { HourCycle } from './types';\n\nconst defaultPartOptions: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric'\n};\n\nexport interface DateFormatterOptions extends Intl.DateTimeFormatOptions {\n calendar?: string;\n}\n\nexport type Formatter = {\n getLocale: () => string;\n setLocale: (newLocale: string) => void;\n custom: (date: Date, options: DateFormatterOptions) => string;\n selectedDate: (date: DateValue, includeTime?: boolean) => string;\n dayOfWeek: (date: Date, length?: DateFormatterOptions['weekday']) => string;\n fullMonthAndYear: (date: Date, options?: DateFormatterOptions) => string;\n fullMonth: (date: Date, options?: DateFormatterOptions) => string;\n fullYear: (date: Date, options?: DateFormatterOptions) => string;\n dayPeriod: (date: Date) => string;\n part: (dateObj: DateValue, type: Intl.DateTimeFormatPartTypes, options?: DateFormatterOptions) => string;\n toParts: (date: DateValue, options?: DateFormatterOptions) => Intl.DateTimeFormatPart[];\n getMonths: () => { label: string; value: number }[];\n};\n\n/**\n * Creates a wrapper around the `DateFormatter`, which is\n * an improved version of the {@link Intl.DateTimeFormat} API,\n * that is used internally by the various date builders to\n * easily format dates in a consistent way.\n *\n * @see [DateFormatter](https://react-spectrum.adobe.com/internationalized/date/DateFormatter.html)\n */\nexport function createFormatter(initialLocale: string, opts: DateFormatterOptions = {}): Formatter {\n let locale = initialLocale;\n\n function setLocale(newLocale: string) {\n locale = newLocale;\n }\n\n function getLocale() {\n return locale;\n }\n\n function custom(date: Date, options: DateFormatterOptions) {\n return new DateFormatter(locale, { ...opts, ...options }).format(date);\n }\n\n function selectedDate(date: DateValue, includeTime = true) {\n if (hasTime(date) && includeTime) {\n return custom(toDate(date), {\n dateStyle: 'long',\n timeStyle: 'long'\n });\n } else {\n return custom(toDate(date), {\n dateStyle: 'long'\n });\n }\n }\n\n function fullMonthAndYear(date: Date, options: DateFormatterOptions = {}) {\n return new DateFormatter(locale, { ...opts, month: 'long', year: 'numeric', ...options }).format(date);\n }\n\n function fullMonth(date: Date, options: DateFormatterOptions = {}) {\n return new DateFormatter(locale, { ...opts, month: 'long', ...options }).format(date);\n }\n\n function fullYear(date: Date, options: DateFormatterOptions = {}) {\n return new DateFormatter(locale, { ...opts, year: 'numeric', ...options }).format(date);\n }\n\n function toParts(date: DateValue, options?: DateFormatterOptions) {\n if (isZonedDateTime(date)) {\n return new DateFormatter(locale, {\n ...opts,\n ...options,\n timeZone: date.timeZone\n }).formatToParts(toDate(date));\n } else {\n return new DateFormatter(locale, { ...opts, ...options }).formatToParts(toDate(date));\n }\n }\n\n function dayOfWeek(date: Date, length: DateFormatterOptions['weekday'] = 'narrow') {\n return new DateFormatter(locale, { ...opts, weekday: length }).format(date);\n }\n\n function dayPeriod(date: Date, hourCycle: HourCycle | undefined = undefined) {\n const parts = new DateFormatter(locale, {\n ...opts,\n hour: 'numeric',\n minute: 'numeric',\n hourCycle: hourCycle === 24 ? 'h23' : undefined\n }).formatToParts(date);\n const value = parts.find((p) => p.type === 'dayPeriod')?.value;\n // Day period can be \"AM\"/\"PM\" or \"a.m.\"/\"p.m.\" in some locales\n if (value === 'PM' || value === 'p.m.') {\n return 'PM';\n }\n return 'AM';\n }\n\n function part(dateObj: DateValue, type: Intl.DateTimeFormatPartTypes, options: Intl.DateTimeFormatOptions = {}) {\n const opts = { ...defaultPartOptions, ...options };\n const parts = toParts(dateObj, opts);\n const part = parts.find((p) => p.type === type);\n return part ? part.value : '';\n }\n\n function getMonths() {\n const defaultDate = today(getLocalTimeZone());\n const months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n return months.map((item) => ({ label: fullMonth(toDate(defaultDate.set({ month: item }))), value: item }));\n }\n\n return {\n setLocale,\n getLocale,\n fullMonth,\n fullYear,\n fullMonthAndYear,\n toParts,\n custom,\n part,\n dayPeriod,\n selectedDate,\n dayOfWeek,\n getMonths\n };\n}\n","/*\n * Implementation ported from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/builders/date-field/_internal/helpers.ts\n */\n\nimport type { DateSegmentPart, EditableSegmentPart, SegmentPart, TimeSegmentPart } from './types';\n\nexport const DATE_SEGMENT_PARTS = ['day', 'month', 'year'] as const;\nexport const TIME_SEGMENT_PARTS = ['hour', 'minute', 'second', 'dayPeriod'] as const;\nexport const NON_EDITABLE_SEGMENT_PARTS = ['literal', 'timeZoneName'] as const;\nexport const EDITABLE_SEGMENT_PARTS = [...DATE_SEGMENT_PARTS, ...TIME_SEGMENT_PARTS] as const;\nexport const EDITABLE_TIME_SEGMENT_PARTS = [...TIME_SEGMENT_PARTS] as const;\nexport const ALL_SEGMENT_PARTS = [...EDITABLE_SEGMENT_PARTS, ...NON_EDITABLE_SEGMENT_PARTS] as const;\nexport const ALL_EXCEPT_LITERAL_PARTS = ALL_SEGMENT_PARTS.filter((part) => part !== 'literal');\n\nexport function isDateSegmentPart(part: unknown): part is DateSegmentPart {\n return DATE_SEGMENT_PARTS.includes(part as DateSegmentPart);\n}\n\nexport function isTimeSegmentPart(part: unknown): part is TimeSegmentPart {\n return TIME_SEGMENT_PARTS.includes(part as TimeSegmentPart);\n}\n\nexport function isSegmentPart(part: string): part is EditableSegmentPart {\n return EDITABLE_SEGMENT_PARTS.includes(part as EditableSegmentPart);\n}\n\nexport function isAnySegmentPart(part: unknown): part is SegmentPart {\n return ALL_SEGMENT_PARTS.includes(part as EditableSegmentPart);\n}\n","/*\n * Implementation ported from from from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/internal/helpers/date/placeholders.ts\n */\n\n// prettier-ignore\nconst supportedLocales = [\n 'ach','af','am','an','ar','ast','az','be','bg','bn','br','bs',\n 'ca','cak','ckb','cs','cy','da','de','dsb','el','en','eo','es',\n 'et','eu','fa','ff','fi','fr','fy','ga','gd','gl','he','hr',\n 'hsb','hu','ia','id','it','ja','ka','kk','kn','ko','lb','lo',\n 'lt','lv','meh','ml','ms','nl','nn','no','oc','pl','pt','rm',\n 'ro','ru','sc','scn','sk','sl','sr','sv','szl','tg','th','tr',\n 'uk','zh-CN','zh-TW',\n] as const;\n\nconst placeholderFields = ['year', 'month', 'day'] as const;\n\ntype SupportedLocale = (typeof supportedLocales)[number];\ntype PlaceholderField = (typeof placeholderFields)[number];\nexport type PlaceholderMap = Record<SupportedLocale, Record<PlaceholderField, string>>;\n\nconst placeholders: PlaceholderMap = {\n ach: { year: 'mwaka', month: 'dwe', day: 'nino' },\n af: { year: 'jjjj', month: 'mm', day: 'dd' },\n am: { year: 'ዓዓዓዓ', month: 'ሚሜ', day: 'ቀቀ' },\n an: { year: 'aaaa', month: 'mm', day: 'dd' },\n ar: { year: 'سنة', month: 'شهر', day: 'يوم' },\n ast: { year: 'aaaa', month: 'mm', day: 'dd' },\n az: { year: 'iiii', month: 'aa', day: 'gg' },\n be: { year: 'гггг', month: 'мм', day: 'дд' },\n bg: { year: 'гггг', month: 'мм', day: 'дд' },\n bn: { year: 'yyyy', month: 'মিমি', day: 'dd' },\n br: { year: 'bbbb', month: 'mm', day: 'dd' },\n bs: { year: 'gggg', month: 'mm', day: 'dd' },\n ca: { year: 'aaaa', month: 'mm', day: 'dd' },\n cak: { year: 'jjjj', month: 'ii', day: \"q'q'\" },\n ckb: { year: 'ساڵ', month: 'مانگ', day: 'ڕۆژ' },\n cs: { year: 'rrrr', month: 'mm', day: 'dd' },\n cy: { year: 'bbbb', month: 'mm', day: 'dd' },\n da: { year: 'åååå', month: 'mm', day: 'dd' },\n de: { year: 'jjjj', month: 'mm', day: 'tt' },\n dsb: { year: 'llll', month: 'mm', day: 'źź' },\n el: { year: 'εεεε', month: 'μμ', day: 'ηη' },\n en: { year: 'yyyy', month: 'mm', day: 'dd' },\n eo: { year: 'jjjj', month: 'mm', day: 'tt' },\n es: { year: 'aaaa', month: 'mm', day: 'dd' },\n et: { year: 'aaaa', month: 'kk', day: 'pp' },\n eu: { year: 'uuuu', month: 'hh', day: 'ee' },\n fa: { year: 'سال', month: 'ماه', day: 'روز' },\n ff: { year: 'hhhh', month: 'll', day: 'ññ' },\n fi: { year: 'vvvv', month: 'kk', day: 'pp' },\n fr: { year: 'aaaa', month: 'mm', day: 'jj' },\n fy: { year: 'jjjj', month: 'mm', day: 'dd' },\n ga: { year: 'bbbb', month: 'mm', day: 'll' },\n gd: { year: 'bbbb', month: 'mm', day: 'll' },\n gl: { year: 'aaaa', month: 'mm', day: 'dd' },\n he: { year: 'שנה', month: 'חודש', day: 'יום' },\n hr: { year: 'gggg', month: 'mm', day: 'dd' },\n hsb: { year: 'llll', month: 'mm', day: 'dd' },\n hu: { year: 'éééé', month: 'hh', day: 'nn' },\n ia: { year: 'aaaa', month: 'mm', day: 'dd' },\n id: { year: 'tttt', month: 'bb', day: 'hh' },\n it: { year: 'aaaa', month: 'mm', day: 'gg' },\n ja: { year: ' 年 ', month: '月', day: '日' },\n ka: { year: 'წწწწ', month: 'თთ', day: 'რრ' },\n kk: { year: 'жжжж', month: 'аа', day: 'кк' },\n kn: { year: 'ವವವವ', month: 'ಮಿಮೀ', day: 'ದಿದಿ' },\n ko: { year: '연도', month: '월', day: '일' },\n lb: { year: 'jjjj', month: 'mm', day: 'dd' },\n lo: { year: 'ປປປປ', month: 'ດດ', day: 'ວວ' },\n lt: { year: 'mmmm', month: 'mm', day: 'dd' },\n lv: { year: 'gggg', month: 'mm', day: 'dd' },\n meh: { year: 'aaaa', month: 'mm', day: 'dd' },\n ml: { year: 'വർഷം', month: 'മാസം', day: 'തീയതി' },\n ms: { year: 'tttt', month: 'mm', day: 'hh' },\n nl: { year: 'jjjj', month: 'mm', day: 'dd' },\n nn: { year: 'åååå', month: 'mm', day: 'dd' },\n no: { year: 'åååå', month: 'mm', day: 'dd' },\n oc: { year: 'aaaa', month: 'mm', day: 'jj' },\n pl: { year: 'rrrr', month: 'mm', day: 'dd' },\n pt: { year: 'aaaa', month: 'mm', day: 'dd' },\n rm: { year: 'oooo', month: 'mm', day: 'dd' },\n ro: { year: 'aaaa', month: 'll', day: 'zz' },\n ru: { year: 'гггг', month: 'мм', day: 'дд' },\n sc: { year: 'aaaa', month: 'mm', day: 'dd' },\n scn: { year: 'aaaa', month: 'mm', day: 'jj' },\n sk: { year: 'rrrr', month: 'mm', day: 'dd' },\n sl: { year: 'llll', month: 'mm', day: 'dd' },\n sr: { year: 'гггг', month: 'мм', day: 'дд' },\n sv: { year: 'åååå', month: 'mm', day: 'dd' },\n szl: { year: 'rrrr', month: 'mm', day: 'dd' },\n tg: { year: 'сссс', month: 'мм', day: 'рр' },\n th: { year: 'ปปปป', month: 'ดด', day: 'วว' },\n tr: { year: 'yyyy', month: 'aa', day: 'gg' },\n uk: { year: 'рррр', month: 'мм', day: 'дд' },\n 'zh-CN': { year: '年', month: '月', day: '日' },\n 'zh-TW': { year: '年', month: '月', day: '日' }\n};\n\nfunction getPlaceholderObj(locale: SupportedLocale | (string & {})) {\n if (!isSupportedLocale(locale)) {\n const localeLanguage = getLocaleLanguage(locale);\n if (!isSupportedLocale(localeLanguage)) {\n return placeholders.en;\n } else {\n return placeholders[localeLanguage];\n }\n } else {\n return placeholders[locale];\n }\n}\n\ntype Field = 'era' | 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second' | 'dayPeriod';\n\nexport function getPlaceholder(field: Field, value: string, locale: SupportedLocale | (string & {})) {\n if (isPlaceholderField(field)) return getPlaceholderObj(locale)[field];\n if (isDefaultField(field)) return value;\n if (isTimeField(field)) return '––';\n return '';\n}\n\nfunction isSupportedLocale(locale: string): locale is SupportedLocale {\n return supportedLocales.includes(locale as SupportedLocale);\n}\n\nfunction isPlaceholderField(field: unknown): field is PlaceholderField {\n return placeholderFields.includes(field as PlaceholderField);\n}\n\nfunction isTimeField(field: unknown): field is 'hour' | 'minute' | 'second' {\n return field === 'hour' || field === 'minute' || field === 'second';\n}\n\nfunction isDefaultField(field: unknown): field is 'era' | 'dayPeriod' {\n return field === 'era' || field === 'dayPeriod';\n}\n\nfunction getLocaleLanguage(locale: string) {\n if (Intl.Locale) {\n return new Intl.Locale(locale).language;\n }\n return locale.split('-')[0]!;\n}\n","import { Granularity } from './comparators';\nimport { DateStep, HourCycle } from './types';\n\nexport function getOptsByGranularity(granularity: Granularity, hourCycle: HourCycle, isTimeValue: boolean = false) {\n const opts: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n timeZoneName: 'short',\n hourCycle: normalizeHourCycle(hourCycle),\n hour12: normalizeHour12(hourCycle)\n };\n if (isTimeValue) {\n delete opts.year;\n delete opts.month;\n delete opts.day;\n }\n\n if (granularity === 'day') {\n delete opts.second;\n delete opts.hour;\n delete opts.minute;\n delete opts.timeZoneName;\n }\n if (granularity === 'hour') {\n delete opts.minute;\n delete opts.second;\n }\n\n if (granularity === 'minute') delete opts.second;\n\n return opts;\n}\n\nexport function normalizeDateStep(step?: DateStep): DateStep {\n return {\n year: step?.year ?? 1,\n month: step?.month ?? 1,\n day: step?.day ?? 1,\n hour: step?.hour ?? 1,\n minute: step?.minute ?? 1,\n second: step?.second ?? 1,\n millisecond: step?.millisecond ?? 1\n };\n}\n\nexport function handleCalendarInitialFocus(calendar: HTMLElement) {\n const selectedDay = calendar.querySelector<HTMLElement>('[data-selected]');\n if (selectedDay) return selectedDay.focus();\n\n const today = calendar.querySelector<HTMLElement>('[data-today]');\n if (today) return today.focus();\n\n const firstDay = calendar.querySelector<HTMLElement>('[data-rdx-calendar-day]');\n if (firstDay) return firstDay.focus();\n}\n\nexport function normalizeHourCycle(hourCycle: HourCycle) {\n if (hourCycle === 24) return 'h23';\n if (hourCycle === 12) return 'h11';\n return undefined;\n}\n\nexport function normalizeHour12(hourCycle: HourCycle) {\n if (hourCycle === 24) return false;\n if (hourCycle === 12) return true;\n return undefined;\n}\n","import { InputSignal } from '@angular/core';\nimport { DateFields, DateValue } from '@internationalized/date';\nimport { Granularity, isZonedDateTime, toDate } from './comparators';\nimport { Formatter } from './formatter';\nimport {\n DATE_SEGMENT_PARTS,\n EDITABLE_SEGMENT_PARTS,\n isDateSegmentPart,\n isSegmentPart,\n TIME_SEGMENT_PARTS\n} from './parts';\nimport { getPlaceholder } from './placeholders';\nimport { DateSegmentPart, HourCycle, SegmentContentObj, SegmentPart, SegmentValueObj, TimeSegmentPart } from './types';\nimport { getOptsByGranularity, normalizeHourCycle } from './utils';\n\nconst calendarDateTimeGranularities = ['hour', 'minute', 'second'];\n\ntype SyncDateSegmentValuesProps = {\n value: DateValue;\n formatter: Formatter;\n};\n\ntype SyncTimeSegmentValuesProps = {\n value: DateValue;\n formatter: Formatter;\n};\n\nexport function syncTimeSegmentValues(props: SyncTimeSegmentValuesProps) {\n return Object.fromEntries(\n TIME_SEGMENT_PARTS.map((part) => {\n if (part === 'dayPeriod') return [part, props.formatter.dayPeriod(toDate(props.value))];\n return [part, props.value[part as keyof DateValue]];\n })\n ) as SegmentValueObj;\n}\n\nexport function initializeSegmentValues(granularity: Granularity): SegmentValueObj {\n const initialParts = EDITABLE_SEGMENT_PARTS.map((part) => {\n if (part === 'dayPeriod') return [part, 'AM'];\n\n return [part, null];\n }).filter(([key]) => {\n if (key === 'literal' || key === null) return false;\n if (granularity === 'minute' && key === 'second') return false;\n if (granularity === 'hour' && (key === 'second' || key === 'minute')) return false;\n if (granularity === 'day') return !calendarDateTimeGranularities.includes(key) && key !== 'dayPeriod';\n else return true;\n });\n\n return Object.fromEntries(initialParts);\n}\n\ntype SharedContentProps = {\n granularity: Granularity;\n dateRef: DateValue;\n formatter: Formatter;\n hideTimeZone: boolean;\n hourCycle: HourCycle;\n isTimeValue?: boolean;\n};\n\ntype CreateContentObjProps = SharedContentProps & {\n segmentValues: SegmentValueObj;\n locale: InputSignal<string>;\n};\n\ntype CreateContentArrProps = SharedContentProps & {\n contentObj: SegmentContentObj;\n};\n\nexport function syncSegmentValues(props: SyncDateSegmentValuesProps) {\n const { formatter } = props;\n\n const dateValues = DATE_SEGMENT_PARTS.map((part) => {\n return [part, props.value[part]];\n });\n if ('hour' in props.value) {\n const timeValues = syncTimeSegmentValues({ value: props.value, formatter });\n\n return { ...Object.fromEntries(dateValues), ...timeValues } as SegmentValueObj;\n }\n\n return Object.fromEntries(dateValues) as SegmentValueObj;\n}\n\nfunction createContentObj(props: CreateContentObjProps) {\n const { segmentValues, formatter, locale } = props;\n function getPartContent(part: DateSegmentPart | TimeSegmentPart) {\n if ('hour' in segmentValues) {\n const value = segmentValues[part];\n if (value !== null) {\n if (part === 'day') {\n return formatter.part(\n props.dateRef.set({\n [part as keyof DateFields]: value,\n /**\n * Edge case for the day field:\n *\n * 1. If the month is filled,\n * we need to ensure that the day snaps to the maximum value of that month.\n * 2. If the month is not filled,\n * we default to the month with the maximum number of days (here just using January, 31 days),\n * so that user can input any possible day.\n */\n month: segmentValues.month ?? 1\n }),\n part,\n { hourCycle: normalizeHourCycle(props.hourCycle) }\n );\n }\n return formatter.part(props.dateRef.set({ [part]: value }), part, {\n hourCycle: normalizeHourCycle(props.hourCycle)\n });\n } else {\n return getPlaceholder(part, '', locale());\n }\n } else {\n if (isDateSegmentPart(part)) {\n const value = segmentValues[part];\n if (value !== null) {\n if (part === 'day') {\n return formatter.part(\n props.dateRef.set({\n [part]: value,\n // Same logic as above for the day field\n month: segmentValues.month ?? 1\n }),\n part\n );\n }\n\n return formatter.part(props.dateRef.set({ [part]: value }), part);\n } else {\n return getPlaceholder(part, '', locale());\n }\n }\n return '';\n }\n }\n\n const content = Object.keys(segmentValues).reduce((obj, part) => {\n if (!isSegmentPart(part)) return obj;\n if ('hour' in segmentValues && part === 'dayPeriod') {\n const value = segmentValues[part];\n\n if (value !== null) obj[part] = value;\n else obj[part] = getPlaceholder(part, 'AM', locale());\n } else {\n obj[part] = getPartContent(part);\n }\n\n return obj;\n }, {} as SegmentContentObj);\n\n return content;\n}\n\nfunction createContentArr(props: CreateContentArrProps) {\n const { granularity, formatter, contentObj, hideTimeZone, hourCycle, isTimeValue } = props;\n const parts = formatter.toParts(props.dateRef, getOptsByGranularity(granularity, hourCycle, isTimeValue));\n\n const segmentContentArr = parts\n .map((part) => {\n const defaultParts = ['literal', 'timeZoneName', null];\n\n if (defaultParts.includes(part.type) || !isSegmentPart(part.type)) {\n return {\n part: part.type,\n value: part.value\n };\n }\n\n return {\n part: part.type,\n value: contentObj[part.type]\n };\n })\n .filter((segment): segment is { part: SegmentPart; value: string } => {\n if (segment.part === null || segment.value === null) return false;\n if (segment.part === 'timeZoneName' && (!isZonedDateTime(props.dateRef) || hideTimeZone)) return false;\n\n return true;\n });\n\n return segmentContentArr;\n}\n\ntype CreateContentProps = CreateContentObjProps;\n\nexport function createContent(props: CreateContentProps) {\n const contentObj = createContentObj(props);\n\n const contentArr = createContentArr({\n contentObj,\n ...props\n });\n\n return {\n obj: contentObj,\n arr: contentArr\n };\n}\n","import { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BACKSPACE, ENTER, SPACE } from '../kbd-constants';\n\nexport function isSegmentNavigationKey(key: string) {\n if (key === ARROW_RIGHT || key === ARROW_LEFT) return true;\n return false;\n}\n\nexport function isNumberString(value: string) {\n if (Number.isNaN(Number.parseInt(value))) return false;\n return true;\n}\n\nexport function isAcceptableSegmentKey(key: string) {\n const acceptableSegmentKeys = [\n ENTER,\n ARROW_UP,\n ARROW_DOWN,\n ARROW_LEFT,\n ARROW_RIGHT,\n BACKSPACE,\n SPACE,\n 'a',\n 'A',\n 'p',\n 'P'\n ];\n if (acceptableSegmentKeys.includes(key)) return true;\n if (isNumberString(key)) return true;\n return false;\n}\n\nexport function getSegmentElements(parentElement: HTMLElement): Element[] {\n return Array.from(parentElement.querySelectorAll('[data-rdx-date-field-segment]')).filter(\n (item) => item.getAttribute('data-rdx-date-field-segment') !== 'literal'\n );\n}\n","/*\n * Implementation ported from https://github.com/melt-ui/melt-ui/blob/develop/src/lib/internal/helpers/date/types.ts\n */\n\nimport type { DateValue } from '@internationalized/date';\nimport { DATE_SEGMENT_PARTS, EDITABLE_SEGMENT_PARTS, NON_EDITABLE_SEGMENT_PARTS, TIME_SEGMENT_PARTS } from './parts';\n\nexport type DateMatcher = (date: DateValue) => boolean;\n\nexport type DateStep = {\n year?: number;\n month?: number;\n day?: number;\n hour?: number;\n minute?: number;\n second?: number;\n millisecond?: number;\n};\n\nexport type DateRange = {\n start: DateValue | undefined;\n end: DateValue | undefined;\n};\n\nexport type HourCycle = 12 | 24 | undefined;\n\nexport type Month<T> = {\n /**\n * A `DateValue` used to represent the month. Since days\n * from the previous and next months may be included in the\n * calendar grid, we need a source of truth for the value\n * the grid is representing.\n */\n value: DateValue;\n\n /**\n * An array of (rows) arrays representing the weeks in the calendar.\n * Each sub-array represents a week, and contains the dates for each\n * day in that week. This structure is useful for rendering the calendar\n * grid using a table, where each row represents a week and each cell\n * represents a day.\n */\n weeks: T[][];\n\n /**\n * An array of (cells) all the dates in the current month, including dates from\n * the previous and next months that are used to fill out the calendar grid.\n * This array is useful for rendering the calendar grid in a customizable way,\n * as it provides all the dates that should be displayed in the grid in a flat\n * array.\n */\n dates: T[];\n};\n\nexport type DateSegmentPart = (typeof DATE_SEGMENT_PARTS)[number];\nexport type TimeSegmentPart = (typeof TIME_SEGMENT_PARTS)[number];\nexport type EditableSegmentPart = (typeof EDITABLE_SEGMENT_PARTS)[number];\nexport type NonEditableSegmentPart = (typeof NON_EDITABLE_SEGMENT_PARTS)[number];\nexport type SegmentPart = EditableSegmentPart | NonEditableSegmentPart;\n\nexport type AnyExceptLiteral = Exclude<SegmentPart, 'literal'>;\n\nexport type DayPeriod = 'AM' | 'PM' | null;\nexport type DateSegmentObj = {\n [K in DateSegmentPart]: number | null;\n};\n\nexport type TimeSegmentObj = {\n [K in TimeSegmentPart]: K extends 'dayPeriod' ? DayPeriod : number | null;\n};\nexport type DateAndTimeSegmentObj = DateSegmentObj & TimeSegmentObj;\nexport type SegmentValueObj = DateSegmentObj | DateAndTimeSegmentObj;\nexport type SegmentContentObj = Record<EditableSegmentPart, string>;\n","// https://github.com/unovue/reka-ui/blob/v2/packages/core/src/shared/date/useDateField.ts\n\nimport { computed, InputSignal, ModelSignal, Signal, WritableSignal } from '@angular/core';\nimport { CalendarDateTime, CycleTimeOptions, DateFields, DateValue, TimeFields } from '@internationalized/date';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BACKSPACE, SHIFT, TAB } from '../kbd-constants';\nimport { getDaysInMonth, toDate } from './comparators';\nimport { Formatter } from './formatter';\nimport { isAcceptableSegmentKey, isNumberString, isSegmentNavigationKey } from './segment';\nimport { AnyExceptLiteral, DateAndTimeSegmentObj, DateStep, HourCycle, SegmentPart, SegmentValueObj } from './types';\n\ntype MinuteSecondIncrementProps = {\n e: KeyboardEvent;\n part: keyof TimeFields;\n dateRef: DateValue;\n prevValue: number | null;\n};\n\ntype DateTimeValueIncrementation = {\n e: KeyboardEvent;\n part: keyof Omit<DateFields, 'era'> | keyof TimeFields;\n dateRef: DateValue;\n prevValue: number | null;\n hourCycle?: HourCycle;\n};\n\nexport type UseDateFieldProps = {\n hasLeftFocus: WritableSignal<boolean>;\n lastKeyZero: WritableSignal<boolean>;\n placeholder: ModelSignal<DateValue> | WritableSignal<DateValue>;\n hourCycle: HourCycle;\n formatter: Formatter;\n segmentValues: WritableSignal<SegmentValueObj>;\n step: Signal<DateStep>;\n disabled: InputSignal<boolean>;\n readonly: InputSignal<boolean>;\n part: SegmentPart;\n modelValue: ModelSignal<DateValue | undefined> | WritableSignal<DateValue | undefined>;\n focusNext: () => void;\n};\n\ntype SegmentAttrProps = {\n disabled: boolean;\n segmentValues: SegmentValueObj;\n hourCycle: HourCycle;\n placeholder: DateValue;\n formatter: Formatter;\n};\n\nfunction commonSegmentAttrs(props: SegmentAttrProps) {\n return {\n role: 'spinbutton',\n contenteditable: true,\n tabindex: props.disabled ? undefined : 0,\n spellcheck: false,\n inputmode: 'numeric',\n autocorrect: 'off',\n enterkeyhint: 'next',\n style: 'caret-color: transparent;'\n };\n}\n\nfunction daySegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n const isEmpty = segmentValues.day === null;\n const date = segmentValues.day ? placeholder.set({ day: segmentValues.day }) : placeholder;\n\n const valueNow = date.day;\n const valueMin = 1;\n const valueMax = getDaysInMonth(date);\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'day,',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction monthSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder, formatter } = props;\n const isEmpty = segmentValues.month === null;\n const date = segmentValues.month ? placeholder.set({ month: segmentValues.month }) : placeholder;\n const valueNow = date.month;\n const valueMin = 1;\n const valueMax = 12;\n const valueText = isEmpty ? 'Empty' : `${valueNow} - ${formatter.fullMonth(toDate(date))}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'month, ',\n contenteditable: true,\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction yearSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n const isEmpty = segmentValues.year === null;\n const date = segmentValues.year ? placeholder.set({ year: segmentValues.year }) : placeholder;\n const valueMin = 1;\n const valueMax = 9999;\n const valueNow = date.year;\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'year, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction hourSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, hourCycle, placeholder } = props;\n\n if (!('hour' in segmentValues) || !('hour' in placeholder)) return {};\n const isEmpty = segmentValues.hour === null;\n const date = segmentValues.hour ? placeholder.set({ hour: segmentValues.hour }) : placeholder;\n const valueMin = hourCycle === 12 ? 1 : 0;\n const valueMax = hourCycle === 12 ? 12 : 23;\n const valueNow = date.hour;\n const valueText = isEmpty ? 'Empty' : `${valueNow} ${segmentValues.dayPeriod ?? ''}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'hour, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction minuteSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n if (!('minute' in segmentValues) || !('minute' in placeholder)) return {};\n const isEmpty = segmentValues.minute === null;\n const date = segmentValues.minute ? placeholder.set({ minute: segmentValues.minute }) : placeholder;\n const valueNow = date.minute;\n const valueMin = 0;\n const valueMax = 59;\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'minute, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction secondSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n if (!('second' in segmentValues) || !('second' in placeholder)) return {};\n const isEmpty = segmentValues.second === null;\n const date = segmentValues.second ? placeholder.set({ second: segmentValues.second }) : placeholder;\n const valueNow = date.second;\n const valueMin = 0;\n const valueMax = 59;\n const valueText = isEmpty ? 'Empty' : `${valueNow}`;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'second, ',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText,\n 'data-placeholder': isEmpty ? '' : undefined\n };\n}\n\nfunction dayPeriodSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues } = props;\n if (!('dayPeriod' in segmentValues)) return {};\n\n const valueMin = 0;\n const valueMax = 12;\n const valueNow = segmentValues.hour ? (segmentValues.hour > 12 ? segmentValues.hour - 12 : segmentValues.hour) : 0;\n const valueText = segmentValues.dayPeriod ?? 'AM';\n\n return {\n ...commonSegmentAttrs(props),\n inputmode: 'text',\n 'aria-label': 'AM/PM',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText\n };\n}\n\nfunction literalSegmentAttrs(_props: SegmentAttrProps) {\n return {\n 'aria-hidden': true,\n 'data-segment': 'literal'\n };\n}\n\nfunction timeZoneSegmentAttrs(props: SegmentAttrProps) {\n return {\n role: 'textbox',\n 'aria-label': 'timezone, ',\n 'data-readonly': true,\n 'data-segment': 'timeZoneName',\n tabindex: props.disabled ? undefined : 0,\n style: 'caret-color: transparent;'\n };\n}\n\nfunction eraSegmentAttrs(props: SegmentAttrProps) {\n const { segmentValues, placeholder } = props;\n\n const valueMin = 0;\n const valueMax = 0;\n const valueNow = 0;\n const valueText = 'era' in segmentValues ? segmentValues.era : placeholder.era;\n\n return {\n ...commonSegmentAttrs(props),\n 'aria-label': 'era',\n 'aria-valuemin': valueMin,\n 'aria-valuemax': valueMax,\n 'aria-valuenow': valueNow,\n 'aria-valuetext': valueText\n };\n}\n\nexport const segmentBuilders = {\n day: {\n attrs: daySegmentAttrs\n },\n month: {\n attrs: monthSegmentAttrs\n },\n year: {\n attrs: yearSegmentAttrs\n },\n hour: {\n attrs: hourSegmentAttrs\n },\n minute: {\n attrs: minuteSegmentAttrs\n },\n second: {\n attrs: secondSegmentAttrs\n },\n dayPeriod: {\n attrs: dayPeriodSegmentAttrs\n },\n literal: {\n attrs: literalSegmentAttrs\n },\n timeZoneName: {\n attrs: timeZoneSegmentAttrs\n },\n era: {\n attrs: eraSegmentAttrs\n }\n};\n\nexport function useDateField(props: UseDateFieldProps) {\n function handleSegmentClick(e: MouseEvent) {\n const disabled = props.disabled();\n if (disabled) e.preventDefault();\n }\n\n function deleteValue(prevValue: number | null) {\n props.hasLeftFocus.set(false);\n\n if (prevValue === null) return prevValue;\n\n const str = prevValue.toString();\n if (str.length === 1) {\n props.modelValue.set(undefined);\n return null;\n }\n\n return Number.parseInt(str.slice(0, -1));\n }\n\n function dateTimeValueIncrementation({\n e,\n part,\n dateRef,\n prevValue,\n hourCycle\n }: DateTimeValueIncrementation): number {\n const step = props.step()[part] ?? 1;\n const sign = e.key === ARROW_UP ? step : -step;\n\n if (prevValue === null) return dateRef[part as keyof Omit<DateFields, 'era'>];\n\n if (part === 'hour' && 'hour' in dateRef) {\n const cycleArgs: [keyof DateFields | keyof TimeFields, number, CycleTimeOptions?] = [\n part,\n sign,\n { hourCycle }\n ];\n return dateRef.set({ [part as keyof DateValue]: prevValue }).cycle(...cycleArgs)[part];\n }\n\n const cycleArgs: [keyof DateFields, number] = [part as keyof DateFields, sign];\n if (part === 'day' && props.segmentValues().month !== null)\n return dateRef\n .set({ [part as keyof DateValue]: prevValue, month: props.segmentValues().month! })\n .cycle(...cycleArgs)[part as keyof Omit<DateFields, 'era'>];\n\n return dateRef.set({ [part as keyof DateValue]: prevValue }).cycle(...cycleArgs)[\n part as keyof Omit<DateFields, 'era'>\n ];\n }\n\n function updateDayOrMonth(max: number, num: number, prev: number | null) {\n let moveToNext = false;\n const maxStart = Math.floor(max / 10);\n\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n\n if (prev === null) {\n /**\n * If the user types a 0 as the first number, we want\n * to keep track of that so that when they type the next\n * number, we can move to the next segment.\n */\n\n if (num === 0) {\n props.lastKeyZero.set(true);\n return { value: null, moveToNext };\n }\n /**\n * If the last key was a 0, or if the first number is\n * greater than the max start digit (0-3 in most cases), then\n * we want to move to the next segment, since it's not possible\n * to continue typing a valid number in this segment.\n */\n\n if (props.lastKeyZero() || num > maxStart) {\n // move to next\n moveToNext = true;\n }\n props.lastKeyZero.set(false);\n /**\n * If none of the above conditions are met, then we can just\n * return the number as the segment value and continue typing\n * in this segment.\n */\n return { value: num, moveToNext };\n }\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n const digits = prev.toString().length;\n const total = Number.parseInt(prev.toString() + num.toString());\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n\n if (digits === 2 || total > max) {\n /**\n * As we're doing elsewhere, we're checking if the number is greater\n * than the max start digit (0-3 in most months), and if so, we're\n * going to move to the next segment.\n */\n if (num > maxStart || total > max) {\n // move to next\n moveToNext = true;\n }\n return { value: num, moveToNext };\n }\n // move to next\n moveToNext = true;\n return { value: total, moveToNext };\n }\n\n function updateYear(num: number, prev: number | null) {\n let moveToNext = false;\n\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n // probably not implement, kind of weird\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n\n if (prev === null) return { value: num === 0 ? 1 : num, moveToNext };\n\n const str = prev.toString() + num.toString();\n\n if (str.length > 4) return { value: num === 0 ? 1 : num, moveToNext };\n\n if (str.length === 4) moveToNext = true;\n\n const int = Number.parseInt(str);\n return { value: int, moveToNext };\n }\n\n function updateHour(num: number, prev: number | null) {\n const max = 24;\n let moveToNext = false;\n const maxStart = Math.floor(max / 10);\n\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n // probably not implement, kind of weird\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n\n if (prev === null) {\n /**\n * If the user types a 0 as the first number, we want\n * to keep track of that so that when they type the next\n * number, we can move to the next segment.\n */\n\n if (num === 0) {\n props.lastKeyZero.set(true);\n return { value: 0, moveToNext };\n }\n /**\n * If the last key was a 0, or if the first number is\n * greater than the max start digit (0-3 in most cases), then\n * we want to move to the next segment, since it's not possible\n * to continue typing a valid number in this segment.\n */\n\n if (props.lastKeyZero() || num > maxStart) {\n // move to next\n moveToNext = true;\n }\n props.lastKeyZero.set(false);\n /**\n * If none of the above conditions are met, then we can just\n * return the number as the segment value and continue typing\n * in this segment.\n */\n return { value: num, moveToNext };\n }\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n const digits = prev.toString().length;\n const total = Number.parseInt(prev.toString() + num.toString());\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n\n if (digits === 2 || total > max) {\n /**\n * As we're doing elsewhere, we're checking if the number is greater\n * than the max start digit (0-3 in most months), and if so, we're\n * going to move to the next segment.\n */\n if (num > maxStart) {\n // move to next\n moveToNext = true;\n }\n return { value: num, moveToNext };\n }\n // move to next\n moveToNext = true;\n return { value: total, moveToNext };\n }\n\n function updateMinuteOrSecond(num: number, prev: number | null) {\n const max = 59;\n let moveToNext = false;\n const maxStart = Math.floor(max / 10);\n\n /**\n * If the user has left the segment, we want to reset the\n * `prev` value so that we can start the segment over again\n * when the user types a number.\n */\n if (props.hasLeftFocus()) {\n props.hasLeftFocus.set(false);\n prev = null;\n }\n\n if (prev === null) {\n /**\n * If the user types a 0 as the first number, we want\n * to keep track of that so that when they type the next\n * number, we can move to the next segment.\n */\n\n if (num === 0) {\n props.lastKeyZero.set(true);\n return { value: 0, moveToNext };\n }\n /**\n * If the last key was a 0, or if the first number is\n * greater than the max start digit (0-3 in most cases), then\n * we want to move to the next segment, since it's not possible\n * to continue typing a valid number in this segment.\n */\n\n if (props.lastKeyZero() || num > maxStart) {\n // move to next\n moveToNext = true;\n }\n props.lastKeyZero.set(false);\n /**\n * If none of the above conditions are met, then we can just\n * return the number as the segment value and continue typing\n * in this segment.\n */\n return { value: num, moveToNext };\n }\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n const digits = prev.toString().length;\n const total = Number.parseInt(prev.toString() + num.toString());\n\n /**\n * If the number of digits is 2, or if the total with the existing digit\n * and the pressed digit is greater than the maximum value for this\n * month, then we will reset the segment as if the user had pressed the\n * backspace key and then typed the number.\n */\n\n if (digits === 2 || total > max) {\n /**\n * As we're doing elsewhere, we're checking if the number is greater\n * than the max start digit (0-3 in most months), and if so, we're\n * going to move to the next segment.\n */\n if (num > maxStart) {\n // move to next\n moveToNext = true;\n }\n return { value: num, moveToNext };\n }\n // move to next\n moveToNext = true;\n return { value: total, moveToNext };\n }\n\n function minuteSecondIncrementation({ e, part, dateRef, prevValue }: MinuteSecondIncrementProps): number {\n const step = props.step()[part] ?? 1;\n const sign = e.key === ARROW_UP ? step : -step;\n const min = 0;\n const max = 59;\n\n if (prevValue === null) return sign > 0 ? min : max;\n\n const cycleArgs: [keyof TimeFields, number] = [part, sign];\n return (dateRef as CalendarDateTime).set({ [part]: prevValue }).cycle(...cycleArgs)[part];\n }\n\n const attributes = computed(\n () =>\n segmentBuilders[props.part]?.attrs({\n disabled: props.disabled(),\n placeholder: props.placeholder(),\n hourCycle: props.hourCycle,\n segmentValues: props.segmentValues(),\n formatter: props.formatter\n }) ?? {}\n );\n\n function handleMonthSegmentKeydown(e: KeyboardEvent) {\n if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key)) return;\n\n const prevValue = props.segmentValues().month;\n\n if (e.key === ARROW_DOWN || e.key === ARROW_UP) {\n props.segmentValues.update((prev) => ({\n ...prev,\n month: dateTimeValueIncrementation({\n e,\n part: 'month',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n return;\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateDayOrMonth(12, num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, month: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, month: deleteValue(prevValue) }));\n }\n }\n\n function handleDaySegmentKeydown(e: KeyboardEvent) {\n if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key)) return;\n\n const prevValue = props.segmentValues().day;\n\n if (e.key === ARROW_DOWN || e.key === ARROW_UP) {\n props.segmentValues.update((prev) => ({\n ...prev,\n day: dateTimeValueIncrementation({\n e,\n part: 'day',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n return;\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const segmentMonthValue = props.segmentValues().month;\n\n const daysInMonth = segmentMonthValue\n ? getDaysInMonth(props.placeholder().set({ month: segmentMonthValue }))\n : getDaysInMonth(props.placeholder());\n\n const { value, moveToNext } = updateDayOrMonth(daysInMonth, num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, day: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, day: deleteValue(prevValue) }));\n }\n }\n\n function handleYearSegmentKeydown(e: KeyboardEvent) {\n if (!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key)) return;\n\n const prevValue = props.segmentValues().year;\n\n if (e.key === ARROW_DOWN || e.key === ARROW_UP) {\n props.segmentValues.update((prev) => ({\n ...prev,\n year: dateTimeValueIncrementation({\n e,\n part: 'year',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n return;\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateYear(num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, year: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, year: deleteValue(prevValue) }));\n }\n }\n\n function handleHourSegmentKeydown(e: KeyboardEvent) {\n const dateRef = props.placeholder();\n const values = props.segmentValues() as DateAndTimeSegmentObj;\n\n if (\n !isAcceptableSegmentKey(e.key) ||\n isSegmentNavigationKey(e.key) ||\n !('hour' in dateRef) ||\n !('hour' in values)\n )\n return;\n\n const prevValue = values.hour;\n\n const hourCycle = props.hourCycle;\n\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n props.segmentValues.update((prev) => ({\n ...prev,\n hour: dateTimeValueIncrementation({\n e,\n part: 'hour',\n dateRef: props.placeholder(),\n prevValue,\n hourCycle\n })\n }));\n\n if ('dayPeriod' in props.segmentValues() && values.hour != null) {\n if (values.hour < 12) props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n else if (values.hour) props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n }\n\n return;\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateHour(num, prevValue);\n\n if ('dayPeriod' in props.segmentValues() && value && value > 12)\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n else if ('dayPeriod' in props.segmentValues() && value)\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n\n props.segmentValues.update((prev) => ({ ...prev, hour: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, hour: deleteValue(prevValue) }));\n }\n }\n\n function handleMinuteSegmentKeydown(e: KeyboardEvent) {\n const dateRef = props.placeholder();\n\n const values = props.segmentValues() as DateAndTimeSegmentObj;\n\n if (\n !isAcceptableSegmentKey(e.key) ||\n isSegmentNavigationKey(e.key) ||\n !('minute' in dateRef) ||\n !('minute' in values)\n )\n return;\n\n const prevValue = values.minute;\n\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n props.segmentValues.update((prev) => ({\n ...prev,\n minute: minuteSecondIncrementation({\n e,\n part: 'minute',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n\n const { value, moveToNext } = updateMinuteOrSecond(num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, minute: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, minute: deleteValue(prevValue) }));\n }\n }\n\n function handleSecondSegmentKeydown(e: KeyboardEvent) {\n const dateRef = props.placeholder();\n\n const values = props.segmentValues() as DateAndTimeSegmentObj;\n\n if (\n !isAcceptableSegmentKey(e.key) ||\n isSegmentNavigationKey(e.key) ||\n !('second' in dateRef) ||\n !('second' in values)\n )\n return;\n\n const prevValue = values.second;\n\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n props.segmentValues.update((prev) => ({\n ...prev,\n second: minuteSecondIncrementation({\n e,\n part: 'second',\n dateRef: props.placeholder(),\n prevValue\n })\n }));\n }\n\n if (isNumberString(e.key)) {\n const num = Number.parseInt(e.key);\n const { value, moveToNext } = updateMinuteOrSecond(num, prevValue);\n\n props.segmentValues.update((prev) => ({ ...prev, second: value }));\n\n if (moveToNext) props.focusNext();\n }\n\n if (e.key === BACKSPACE) {\n props.hasLeftFocus.set(false);\n props.segmentValues.update((prev) => ({ ...prev, second: deleteValue(prevValue) }));\n }\n }\n\n function handleDayPeriodSegmentKeydown(e: KeyboardEvent) {\n if (\n ((!isAcceptableSegmentKey(e.key) || isSegmentNavigationKey(e.key)) && e.key !== 'a' && e.key !== 'p') ||\n !('hour' in props.placeholder()) ||\n !('dayPeriod' in props.segmentValues())\n )\n return;\n\n const values = props.segmentValues() as DateAndTimeSegmentObj;\n\n if (e.key === ARROW_UP || e.key === ARROW_DOWN) {\n if (values.dayPeriod === 'AM') {\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour! + 12 }));\n return;\n }\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour! - 12 }));\n return;\n }\n\n if (['a', 'A'].includes(e.key) && values.dayPeriod !== 'AM') {\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'AM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour! - 12 }));\n return;\n }\n\n if (['p', 'P'].includes(e.key) && values.dayPeriod !== 'PM') {\n props.segmentValues.update((prev) => ({ ...prev, dayPeriod: 'PM' }));\n props.segmentValues.update((prev) => ({ ...prev, hour: values.hour! + 12 }));\n }\n }\n\n function handleSegmentKeydown(e: KeyboardEvent) {\n const disabled = props.disabled();\n const readonly = props.readonly();\n\n if (e.key !== TAB) e.preventDefault();\n\n if (disabled || readonly) return;\n\n const segmentKeydownHandlers = {\n month: handleMonthSegmentKeydown,\n day: handleDaySegmentKeydown,\n year: handleYearSegmentKeydown,\n hour: handleHourSegmentKeydown,\n minute: handleMinuteSegmentKeydown,\n second: handleSecondSegmentKeydown,\n dayPeriod: handleDayPeriodSegmentKeydown,\n timeZoneName: () => {}\n } as const;\n\n segmentKeydownHandlers[props.part as keyof typeof segmentKeydownHandlers](e);\n\n if (\n ![ARROW_LEFT, ARROW_RIGHT].includes(e.key) &&\n e.key !== TAB &&\n e.key !== SHIFT &&\n isAcceptableSegmentKey(e.key)\n ) {\n if (Object.values(props.segmentValues()).every((item) => item !== null)) {\n const updateObject = { ...(props.segmentValues() as Record<AnyExceptLiteral, number>) };\n\n let dateRef = props.placeholder().copy();\n\n Object.keys(updateObject).forEach((part) => {\n const value = updateObject[part as AnyExceptLiteral];\n dateRef = dateRef.set({ [part]: value });\n });\n\n props.modelValue.set(dateRef.copy());\n }\n }\n }\n\n return {\n handleSegmentClick,\n handleSegmentKeydown,\n attributes\n };\n}\n","export function handleAndDispatchCustomEvent<E extends CustomEvent, OriginalEvent extends Event>(\n name: string,\n handler: ((event: E) => void) | undefined,\n detail: { originalEvent: OriginalEvent } & (E extends CustomEvent<infer D> ? D : never)\n) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, {\n bubbles: false,\n cancelable: true,\n detail\n });\n if (handler) target.addEventListener(name, handler as EventListener, { once: true });\n\n target.dispatchEvent(event);\n}\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\n\nexport enum RdxPositionSide {\n Top = 'top',\n Right = 'right',\n Bottom = 'bottom',\n Left = 'left'\n}\n\nexport enum RdxPositionAlign {\n Start = 'start',\n Center = 'center',\n End = 'end'\n}\n\nexport type RdxPositionSideAndAlign = { side: RdxPositionSide; align: RdxPositionAlign };\nexport type RdxPositionSideAndAlignOffsets = { sideOffset: number; alignOffset: number };\n\nexport type RdxPositions = Readonly<{\n [key in RdxPositionSide]: Readonly<{\n [key in RdxPositionAlign]: Readonly<ConnectionPositionPair>;\n }>;\n}>;\n\nexport type RdxPositioningDefaults = Readonly<{\n offsets: Readonly<{\n side: number;\n align: number;\n }>;\n arrow: Readonly<{\n width: number;\n height: number;\n }>;\n}>;\n\nexport type RdxAllPossibleConnectedPositions = ReadonlyMap<\n `${RdxPositionSide}|${RdxPositionAlign}`,\n ConnectionPositionPair\n>;\nexport type RdxArrowPositionParams = {\n top: string;\n left: string;\n transform: string;\n transformOrigin: string;\n};\n","import { RdxPositionAlign, RdxPositioningDefaults, RdxPositions, RdxPositionSide } from './types';\n\nexport const RDX_POSITIONS: RdxPositions = {\n [RdxPositionSide.Top]: {\n [RdxPositionAlign.Center]: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n },\n [RdxPositionSide.Right]: {\n [RdxPositionAlign.Center]: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center'\n },\n [RdxPositionAlign.Start]: {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom'\n }\n },\n [RdxPositionSide.Bottom]: {\n [RdxPositionAlign.Center]: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }\n },\n [RdxPositionSide.Left]: {\n [RdxPositionAlign.Center]: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center'\n },\n [RdxPositionAlign.Start]: {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top'\n },\n [RdxPositionAlign.End]: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n }\n} as const;\n\nexport const RDX_POSITIONING_DEFAULTS: RdxPositioningDefaults = {\n offsets: {\n side: 4,\n align: 0\n },\n arrow: {\n width: 8,\n height: 6\n }\n} as const;\n","import { ConnectedPosition, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { RDX_POSITIONS } from './constants';\nimport {\n RdxAllPossibleConnectedPositions,\n RdxArrowPositionParams,\n RdxPositionAlign,\n RdxPositionSide,\n RdxPositionSideAndAlign,\n RdxPositionSideAndAlignOffsets\n} from './types';\n\nexport function getContentPosition(\n sideAndAlignWithOffsets: RdxPositionSideAndAlign & RdxPositionSideAndAlignOffsets\n): ConnectedPosition {\n const { side, align, sideOffset, alignOffset } = sideAndAlignWithOffsets;\n const position: ConnectedPosition = {\n ...(RDX_POSITIONS[side]?.[align] ?? RDX_POSITIONS[RdxPositionSide.Top][RdxPositionAlign.Center])\n };\n if (sideOffset || alignOffset) {\n if ([RdxPositionSide.Top, RdxPositionSide.Bottom].includes(side)) {\n if (sideOffset) {\n position.offsetY = side === RdxPositionSide.Top ? -sideOffset : sideOffset;\n }\n if (alignOffset) {\n position.offsetX = alignOffset;\n }\n } else {\n if (sideOffset) {\n position.offsetX = side === RdxPositionSide.Left ? -sideOffset : sideOffset;\n }\n if (alignOffset) {\n position.offsetY = alignOffset;\n }\n }\n }\n return position;\n}\n\nlet allPossibleConnectedPositions: RdxAllPossibleConnectedPositions;\nexport function getAllPossibleConnectedPositions() {\n if (!allPossibleConnectedPositions) {\n allPossibleConnectedPositions = new Map();\n }\n if (allPossibleConnectedPositions.size < 1) {\n for (const [side, aligns] of Object.entries(RDX_POSITIONS)) {\n for (const [align, position] of Object.entries(aligns)) {\n (allPossibleConnectedPositions as Map<any, any>).set(`${side}|${align}`, position);\n }\n }\n }\n return allPossibleConnectedPositions;\n}\n\nexport function getSideAndAlignFromAllPossibleConnectedPositions(\n position: ConnectionPositionPair\n): RdxPositionSideAndAlign {\n const allPossibleConnectedPositions = getAllPossibleConnectedPositions();\n let sideAndAlign: RdxPositionSideAndAlign | undefined;\n allPossibleConnectedPositions.forEach((value, key) => {\n if (\n position.originX === value.originX &&\n position.originY === value.originY &&\n position.overlayX === value.overlayX &&\n position.overlayY === value.overlayY\n ) {\n const sideAndAlignArray = key.split('|');\n sideAndAlign = {\n side: sideAndAlignArray[0] as RdxPositionSide,\n align: sideAndAlignArray[1] as RdxPositionAlign\n };\n }\n });\n if (!sideAndAlign) {\n throw Error(\n `[Rdx positioning] cannot infer both side and align from the given position (${JSON.stringify(position)})`\n );\n }\n return sideAndAlign;\n}\n\nexport function getArrowPositionParams(\n sideAndAlign: RdxPositionSideAndAlign,\n arrowWidthAndHeight: { width: number; height: number },\n triggerWidthAndHeight: { width: number; height: number }\n): RdxArrowPositionParams {\n const posParams: RdxArrowPositionParams = {\n top: '',\n left: '',\n transform: '',\n transformOrigin: 'center center 0px'\n };\n\n if ([RdxPositionSide.Top, RdxPositionSide.Bottom].includes(sideAndAlign.side)) {\n if (sideAndAlign.side === RdxPositionSide.Top) {\n posParams.top = '100%';\n } else {\n posParams.top = `-${arrowWidthAndHeight.height}px`;\n posParams.transform = `rotate(180deg)`;\n }\n\n if (sideAndAlign.align === RdxPositionAlign.Start) {\n posParams.left = `${(triggerWidthAndHeight.width - arrowWidthAndHeight.width) / 2}px`;\n } else if (sideAndAlign.align === RdxPositionAlign.Center) {\n posParams.left = `calc(50% - ${arrowWidthAndHeight.width / 2}px)`;\n } else if (sideAndAlign.align === RdxPositionAlign.End) {\n posParams.left = `calc(100% - ${(triggerWidthAndHeight.width + arrowWidthAndHeight.width) / 2}px)`;\n }\n } else if ([RdxPositionSide.Left, RdxPositionSide.Right].includes(sideAndAlign.side)) {\n if (sideAndAlign.side === RdxPositionSide.Left) {\n posParams.left = `calc(100% - ${arrowWidthAndHeight.width}px)`;\n posParams.transform = `rotate(-90deg)`;\n posParams.transformOrigin = 'top right 0px';\n } else {\n posParams.left = `0`;\n posParams.transform = `rotate(90deg)`;\n posParams.transformOrigin = 'top left 0px';\n }\n\n if (sideAndAlign.align === RdxPositionAlign.Start) {\n posParams.top = `${(triggerWidthAndHeight.height - arrowWidthAndHeight.width) / 2}px`;\n } else if (sideAndAlign.align === RdxPositionAlign.Center) {\n posParams.top = `calc(50% - ${arrowWidthAndHeight.width / 2}px)`;\n } else if (sideAndAlign.align === RdxPositionAlign.End) {\n posParams.top = `calc(100% - ${(triggerWidthAndHeight.height + arrowWidthAndHeight.width) / 2}px)`;\n }\n }\n\n return posParams;\n}\n","// made by https://reka-ui.com/\n\nimport { Direction } from '@angular/cdk/bidi';\n\ntype ArrowKeyOptions = 'horizontal' | 'vertical' | 'both';\n\ninterface ArrowNavigationOptions {\n /**\n * The arrow key options to allow navigation\n *\n * @defaultValue \"both\"\n */\n arrowKeyOptions?: ArrowKeyOptions;\n\n /**\n * The attribute name to find the collection items in the parent element.\n *\n * @defaultValue \"data-rdx-collection-item\"\n */\n attributeName?: string;\n\n /**\n * The parent element where contains all the collection items, this will collect every item to be used when nav\n * It will be ignored if attributeName is provided\n *\n * @defaultValue []\n */\n itemsArray?: HTMLElement[];\n\n /**\n * Allow loop navigation. If false, it will stop at the first and last element\n *\n * @defaultValue true\n */\n loop?: boolean;\n\n /**\n * The orientation of the collection\n *\n * @defaultValue \"ltr\"\n */\n dir?: Direction;\n\n /**\n * Prevent the scroll when navigating. This happens when the direction of the\n * key matches the scroll direction of any ancestor scrollable elements.\n *\n * @defaultValue true\n */\n preventScroll?: boolean;\n\n /**\n * By default all currentElement would trigger navigation. If `true`, currentElement nodeName in the ignore list will return null\n *\n * @defaultValue false\n */\n enableIgnoredElement?: boolean;\n\n /**\n * Focus the element after navigation\n *\n * @defaultValue false\n */\n focus?: boolean;\n}\n\nconst ignoredElement = ['INPUT', 'TEXTAREA'];\n\n/**\n * Allow arrow navigation for every html element with data-rdx-collection-item tag\n *\n * @param e Keyboard event\n * @param currentElement Event initiator element or any element that wants to handle the navigation\n * @param parentElement Parent element where contains all the collection items, this will collect every item to be used when nav\n * @param options further options\n * @returns the navigated html element or null if none\n */\nexport function useArrowNavigation(\n e: KeyboardEvent,\n currentElement: HTMLElement,\n parentElement: HTMLElement | undefined,\n options: ArrowNavigationOptions = {}\n): HTMLElement | null {\n if (!currentElement || (options.enableIgnoredElement && ignoredElement.includes(currentElement.nodeName)))\n return null;\n\n const {\n arrowKeyOptions = 'both',\n attributeName = '[data-rdx-collection-item]',\n itemsArray = [],\n loop = true,\n dir = 'ltr',\n preventScroll = true,\n focus = false\n } = options;\n\n const [right, left, up, down, home, end] = [\n e.key === 'ArrowRight',\n e.key === 'ArrowLeft',\n e.key === 'ArrowUp',\n e.key === 'ArrowDown',\n e.key === 'Home',\n e.key === 'End'\n ];\n const goingVertical = up || down;\n const goingHorizontal = right || left;\n if (\n !home &&\n !end &&\n ((!goingVertical && !goingHorizontal) ||\n (arrowKeyOptions === 'vertical' && goingHorizontal) ||\n (arrowKeyOptions === 'horizontal' && goingVertical))\n ) {\n return null;\n }\n\n const allCollectionItems: HTMLElement[] = parentElement\n ? Array.from(parentElement.querySelectorAll(attributeName))\n : itemsArray;\n\n if (!allCollectionItems.length) return null;\n\n if (preventScroll) e.preventDefault();\n\n let item: HTMLElement | null = null;\n\n if (goingHorizontal || goingVertical) {\n const goForward = goingVertical ? down : dir === 'ltr' ? right : left;\n item = findNextFocusableElement(allCollectionItems, currentElement, {\n goForward,\n loop\n });\n } else if (home) {\n item = allCollectionItems.length ? allCollectionItems[0] : null;\n } else if (end) {\n item = allCollectionItems.length ? allCollectionItems[allCollectionItems.length - 1] : null;\n }\n\n if (focus) item?.focus();\n\n return item;\n}\n\ninterface FindNextFocusableElementOptions {\n /**\n * Whether to search forwards or backwards.\n */\n goForward: boolean;\n /**\n * Whether to allow looping the search. If false, it will stop at the first/last element.\n *\n * @default true\n */\n loop?: boolean;\n}\n\n/**\n * Recursive function to find the next focusable element to avoid disabled elements\n *\n * @param elements Elements to navigate\n * @param currentElement Current active element\n * @param options\n * @param iterations\n * @returns next focusable element\n */\nfunction findNextFocusableElement(\n elements: HTMLElement[],\n currentElement: HTMLElement,\n options: FindNextFocusableElementOptions,\n iterations = elements.length\n): HTMLElement | null {\n if (--iterations === 0) return null;\n\n const index = elements.indexOf(currentElement);\n const newIndex = options.goForward ? index + 1 : index - 1;\n\n if (!options.loop && (newIndex < 0 || newIndex >= elements.length)) return null;\n\n const adjustedNewIndex = (newIndex + elements.length) % elements.length;\n const candidate = elements[adjustedNewIndex];\n if (!candidate) return null;\n\n const isDisabled = candidate.hasAttribute('disabled') && candidate.getAttribute('disabled') !== 'false';\n if (isDisabled) {\n return findNextFocusableElement(elements, candidate, options, iterations);\n }\n return candidate;\n}\n","import { effect, EffectRef, ElementRef, Injector, Signal } from '@angular/core';\n\n/**\n * Creates a resize observer effect for element\n *\n * @param options Configuration options\n * @param options.injector Angular injector\n * @param options.element Signal returning the element to observe\n * @param options.onResize Callback when element is resized\n * @returns EffectRef that can be destroyed when needed\n */\nexport function resizeEffect(options: {\n injector: Injector;\n element: Signal<ElementRef | HTMLElement | null | undefined>;\n onResize: ResizeObserverCallback;\n}): EffectRef {\n return effect(\n (onCleanup) => {\n const elementOrRef = options.element();\n if (!elementOrRef) return;\n\n // Extract native element from ElementRef or use directly if it's HTMLElement\n const element = elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n\n const resizeObserver = new ResizeObserver(options.onResize);\n resizeObserver.observe(element);\n\n onCleanup(() => resizeObserver.disconnect());\n },\n { injector: options.injector }\n );\n}\n","// https://ngxtension.netlify.app/utilities/signals/explicit-effect/\n\nimport { CreateEffectOptions, EffectCleanupRegisterFn, EffectRef, effect, untracked } from '@angular/core';\n\n/**\n * We want to have the Tuple in order to use the types in the function signature\n */\ntype ExplicitEffectValues<T> = {\n [K in keyof T]: () => T[K];\n};\n\n/**\n * Extend the regular set of effect options\n */\ndeclare interface CreateExplicitEffectOptions extends CreateEffectOptions {\n /**\n * Option that allows the computation not to execute immediately, but only run on first change.\n */\n defer?: boolean;\n}\n\n/**\n * This explicit effect function will take the dependencies and the function to run when the dependencies change.\n *\n * @example\n * ```typescript\n * import { watch } from 'radix-ng/primitives/core';\n *\n * const count = signal(0);\n * const state = signal('idle');\n *\n * watch([count, state], ([count, state], cleanup) => {\n * console.log('count updated', count, state);\n *\n * cleanup(() => {\n * console.log('cleanup');\n * });\n * });\n * ```\n *\n * @param deps - The dependencies that the effect will run on\n * @param fn - The function to run when the dependencies change\n * @param options - The options for the effect with the addition of defer (it allows the computation to run on first change, not immediately)\n */\nexport function watch<Input extends readonly unknown[], Params = Input>(\n deps: readonly [...ExplicitEffectValues<Input>],\n fn: (deps: Params, onCleanup: EffectCleanupRegisterFn) => void,\n options?: CreateExplicitEffectOptions | undefined\n): EffectRef {\n let defer = options && options.defer;\n return effect((onCleanup) => {\n const depValues = deps.map((s) => s());\n untracked(() => {\n if (!defer) {\n fn(depValues as any, onCleanup);\n }\n defer = false;\n });\n }, options);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;AAC7C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,E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"}