@cdevhub/ngx-tw 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/README.md +78 -15
  2. package/fesm2022/cdevhub-ngx-tw-accordion.mjs +16 -5
  3. package/fesm2022/cdevhub-ngx-tw-accordion.mjs.map +1 -1
  4. package/fesm2022/cdevhub-ngx-tw-avatar.mjs +26 -15
  5. package/fesm2022/cdevhub-ngx-tw-avatar.mjs.map +1 -1
  6. package/fesm2022/cdevhub-ngx-tw-badge.mjs +17 -5
  7. package/fesm2022/cdevhub-ngx-tw-badge.mjs.map +1 -1
  8. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs +27 -6
  9. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs.map +1 -1
  10. package/fesm2022/cdevhub-ngx-tw-button.mjs +23 -11
  11. package/fesm2022/cdevhub-ngx-tw-button.mjs.map +1 -1
  12. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs +5 -5
  13. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs.map +1 -1
  14. package/fesm2022/cdevhub-ngx-tw-calendar-testing.mjs +3 -3
  15. package/fesm2022/cdevhub-ngx-tw-calendar-testing.mjs.map +1 -1
  16. package/fesm2022/cdevhub-ngx-tw-calendar.mjs +427 -122
  17. package/fesm2022/cdevhub-ngx-tw-calendar.mjs.map +1 -1
  18. package/fesm2022/cdevhub-ngx-tw-card.mjs +21 -11
  19. package/fesm2022/cdevhub-ngx-tw-card.mjs.map +1 -1
  20. package/fesm2022/cdevhub-ngx-tw-carousel.mjs +215 -96
  21. package/fesm2022/cdevhub-ngx-tw-carousel.mjs.map +1 -1
  22. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs +108 -64
  23. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs.map +1 -1
  24. package/fesm2022/cdevhub-ngx-tw-code-block.mjs +18 -6
  25. package/fesm2022/cdevhub-ngx-tw-code-block.mjs.map +1 -1
  26. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs +55 -30
  27. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs.map +1 -1
  28. package/fesm2022/cdevhub-ngx-tw-combobox-testing.mjs +218 -0
  29. package/fesm2022/cdevhub-ngx-tw-combobox-testing.mjs.map +1 -0
  30. package/fesm2022/cdevhub-ngx-tw-combobox.mjs +236 -211
  31. package/fesm2022/cdevhub-ngx-tw-combobox.mjs.map +1 -1
  32. package/fesm2022/cdevhub-ngx-tw-command-palette-testing.mjs +200 -0
  33. package/fesm2022/cdevhub-ngx-tw-command-palette-testing.mjs.map +1 -0
  34. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs +34 -7
  35. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs.map +1 -1
  36. package/fesm2022/cdevhub-ngx-tw-core.mjs +135 -15
  37. package/fesm2022/cdevhub-ngx-tw-core.mjs.map +1 -1
  38. package/fesm2022/cdevhub-ngx-tw-date-picker-testing.mjs +203 -0
  39. package/fesm2022/cdevhub-ngx-tw-date-picker-testing.mjs.map +1 -0
  40. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs +160 -102
  41. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs.map +1 -1
  42. package/fesm2022/cdevhub-ngx-tw-date-range-picker-testing.mjs +209 -0
  43. package/fesm2022/cdevhub-ngx-tw-date-range-picker-testing.mjs.map +1 -0
  44. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs +182 -107
  45. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs.map +1 -1
  46. package/fesm2022/cdevhub-ngx-tw-dialog-testing.mjs +122 -0
  47. package/fesm2022/cdevhub-ngx-tw-dialog-testing.mjs.map +1 -0
  48. package/fesm2022/cdevhub-ngx-tw-dialog.mjs +11 -2
  49. package/fesm2022/cdevhub-ngx-tw-dialog.mjs.map +1 -1
  50. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs +1 -1
  51. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs.map +1 -1
  52. package/fesm2022/cdevhub-ngx-tw-file-upload-testing.mjs +149 -0
  53. package/fesm2022/cdevhub-ngx-tw-file-upload-testing.mjs.map +1 -0
  54. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs +57 -67
  55. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs.map +1 -1
  56. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs +42 -24
  57. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs.map +1 -1
  58. package/fesm2022/cdevhub-ngx-tw-form-field.mjs +114 -21
  59. package/fesm2022/cdevhub-ngx-tw-form-field.mjs.map +1 -1
  60. package/fesm2022/cdevhub-ngx-tw-icon.mjs +16 -6
  61. package/fesm2022/cdevhub-ngx-tw-icon.mjs.map +1 -1
  62. package/fesm2022/cdevhub-ngx-tw-input.mjs +52 -61
  63. package/fesm2022/cdevhub-ngx-tw-input.mjs.map +1 -1
  64. package/fesm2022/cdevhub-ngx-tw-item.mjs +28 -4
  65. package/fesm2022/cdevhub-ngx-tw-item.mjs.map +1 -1
  66. package/fesm2022/cdevhub-ngx-tw-menu-testing.mjs +168 -0
  67. package/fesm2022/cdevhub-ngx-tw-menu-testing.mjs.map +1 -0
  68. package/fesm2022/cdevhub-ngx-tw-menu.mjs +58 -21
  69. package/fesm2022/cdevhub-ngx-tw-menu.mjs.map +1 -1
  70. package/fesm2022/cdevhub-ngx-tw-number-input.mjs +34 -1
  71. package/fesm2022/cdevhub-ngx-tw-number-input.mjs.map +1 -1
  72. package/fesm2022/cdevhub-ngx-tw-paginator.mjs +95 -45
  73. package/fesm2022/cdevhub-ngx-tw-paginator.mjs.map +1 -1
  74. package/fesm2022/cdevhub-ngx-tw-popover.mjs +81 -32
  75. package/fesm2022/cdevhub-ngx-tw-popover.mjs.map +1 -1
  76. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs +1 -1
  77. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs.map +1 -1
  78. package/fesm2022/cdevhub-ngx-tw-radio.mjs +131 -98
  79. package/fesm2022/cdevhub-ngx-tw-radio.mjs.map +1 -1
  80. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs +207 -42
  81. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs.map +1 -1
  82. package/fesm2022/cdevhub-ngx-tw-select-testing.mjs +165 -0
  83. package/fesm2022/cdevhub-ngx-tw-select-testing.mjs.map +1 -0
  84. package/fesm2022/cdevhub-ngx-tw-select.mjs +386 -210
  85. package/fesm2022/cdevhub-ngx-tw-select.mjs.map +1 -1
  86. package/fesm2022/{cdevhub-ngx-tw-sheet-sheet-renderer-ByyNluUd.mjs → cdevhub-ngx-tw-sheet-sheet-renderer-CqVJwgmp.mjs} +3 -3
  87. package/fesm2022/cdevhub-ngx-tw-sheet-sheet-renderer-CqVJwgmp.mjs.map +1 -0
  88. package/fesm2022/cdevhub-ngx-tw-sheet-testing.mjs +129 -0
  89. package/fesm2022/cdevhub-ngx-tw-sheet-testing.mjs.map +1 -0
  90. package/fesm2022/cdevhub-ngx-tw-sheet.mjs +23 -7
  91. package/fesm2022/cdevhub-ngx-tw-sheet.mjs.map +1 -1
  92. package/fesm2022/cdevhub-ngx-tw-slider.mjs +89 -54
  93. package/fesm2022/cdevhub-ngx-tw-slider.mjs.map +1 -1
  94. package/fesm2022/cdevhub-ngx-tw-sort.mjs +122 -17
  95. package/fesm2022/cdevhub-ngx-tw-sort.mjs.map +1 -1
  96. package/fesm2022/cdevhub-ngx-tw-split.mjs +72 -19
  97. package/fesm2022/cdevhub-ngx-tw-split.mjs.map +1 -1
  98. package/fesm2022/cdevhub-ngx-tw-stat.mjs +63 -25
  99. package/fesm2022/cdevhub-ngx-tw-stat.mjs.map +1 -1
  100. package/fesm2022/cdevhub-ngx-tw-stepper.mjs +35 -8
  101. package/fesm2022/cdevhub-ngx-tw-stepper.mjs.map +1 -1
  102. package/fesm2022/cdevhub-ngx-tw-switch.mjs +54 -48
  103. package/fesm2022/cdevhub-ngx-tw-switch.mjs.map +1 -1
  104. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs +12 -15
  105. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs.map +1 -1
  106. package/fesm2022/cdevhub-ngx-tw-table.mjs +74 -13
  107. package/fesm2022/cdevhub-ngx-tw-table.mjs.map +1 -1
  108. package/fesm2022/cdevhub-ngx-tw-tabs.mjs +84 -30
  109. package/fesm2022/cdevhub-ngx-tw-tabs.mjs.map +1 -1
  110. package/fesm2022/cdevhub-ngx-tw-tags-input-testing.mjs +172 -0
  111. package/fesm2022/cdevhub-ngx-tw-tags-input-testing.mjs.map +1 -0
  112. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs +107 -71
  113. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs.map +1 -1
  114. package/fesm2022/cdevhub-ngx-tw-textarea.mjs +41 -9
  115. package/fesm2022/cdevhub-ngx-tw-textarea.mjs.map +1 -1
  116. package/fesm2022/cdevhub-ngx-tw-theme.mjs +257 -45
  117. package/fesm2022/cdevhub-ngx-tw-theme.mjs.map +1 -1
  118. package/fesm2022/cdevhub-ngx-tw-time-picker-testing.mjs +201 -0
  119. package/fesm2022/cdevhub-ngx-tw-time-picker-testing.mjs.map +1 -0
  120. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs +184 -77
  121. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs.map +1 -1
  122. package/fesm2022/cdevhub-ngx-tw-timeline.mjs +110 -27
  123. package/fesm2022/cdevhub-ngx-tw-timeline.mjs.map +1 -1
  124. package/fesm2022/{cdevhub-ngx-tw-toast-toast-renderer-DSu4YoTy.mjs → cdevhub-ngx-tw-toast-toast-renderer-BlDxemsU.mjs} +107 -19
  125. package/fesm2022/cdevhub-ngx-tw-toast-toast-renderer-BlDxemsU.mjs.map +1 -0
  126. package/fesm2022/cdevhub-ngx-tw-toast.mjs +21 -13
  127. package/fesm2022/cdevhub-ngx-tw-toast.mjs.map +1 -1
  128. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs +102 -15
  129. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs.map +1 -1
  130. package/fesm2022/cdevhub-ngx-tw-transfer-testing.mjs +219 -0
  131. package/fesm2022/cdevhub-ngx-tw-transfer-testing.mjs.map +1 -0
  132. package/fesm2022/cdevhub-ngx-tw-transfer.mjs +88 -69
  133. package/fesm2022/cdevhub-ngx-tw-transfer.mjs.map +1 -1
  134. package/fesm2022/cdevhub-ngx-tw-tree.mjs +68 -19
  135. package/fesm2022/cdevhub-ngx-tw-tree.mjs.map +1 -1
  136. package/index.json +1 -1
  137. package/package.json +63 -2
  138. package/theme/_base.css +13 -0
  139. package/theme/_dark.css +111 -36
  140. package/theme/_high-contrast-dark.css +367 -0
  141. package/theme/_high-contrast.css +13 -2
  142. package/theme/_light.css +332 -0
  143. package/theme/_semantic.css +60 -26
  144. package/theme/_typography.css +17 -0
  145. package/theme/index.css +86 -7
  146. package/types/cdevhub-ngx-tw-accordion.d.ts +12 -4
  147. package/types/cdevhub-ngx-tw-avatar.d.ts +10 -3
  148. package/types/cdevhub-ngx-tw-button.d.ts +1 -0
  149. package/types/cdevhub-ngx-tw-calendar-luxon.d.ts +2 -2
  150. package/types/cdevhub-ngx-tw-calendar-testing.d.ts +1 -1
  151. package/types/cdevhub-ngx-tw-calendar.d.ts +179 -73
  152. package/types/cdevhub-ngx-tw-card.d.ts +11 -3
  153. package/types/cdevhub-ngx-tw-carousel.d.ts +89 -20
  154. package/types/cdevhub-ngx-tw-checkbox.d.ts +40 -12
  155. package/types/cdevhub-ngx-tw-code-block.d.ts +11 -2
  156. package/types/cdevhub-ngx-tw-collapsible.d.ts +32 -5
  157. package/types/cdevhub-ngx-tw-combobox-testing.d.ts +157 -0
  158. package/types/cdevhub-ngx-tw-combobox.d.ts +94 -53
  159. package/types/cdevhub-ngx-tw-command-palette-testing.d.ts +136 -0
  160. package/types/cdevhub-ngx-tw-command-palette.d.ts +33 -5
  161. package/types/cdevhub-ngx-tw-core.d.ts +152 -21
  162. package/types/cdevhub-ngx-tw-date-picker-testing.d.ts +141 -0
  163. package/types/cdevhub-ngx-tw-date-picker.d.ts +37 -29
  164. package/types/cdevhub-ngx-tw-date-range-picker-testing.d.ts +148 -0
  165. package/types/cdevhub-ngx-tw-date-range-picker.d.ts +36 -29
  166. package/types/cdevhub-ngx-tw-dialog-testing.d.ts +98 -0
  167. package/types/cdevhub-ngx-tw-dialog.d.ts +12 -3
  168. package/types/cdevhub-ngx-tw-file-upload-testing.d.ts +120 -0
  169. package/types/cdevhub-ngx-tw-file-upload.d.ts +8 -10
  170. package/types/cdevhub-ngx-tw-flip-card.d.ts +18 -11
  171. package/types/cdevhub-ngx-tw-form-field.d.ts +19 -2
  172. package/types/cdevhub-ngx-tw-icon.d.ts +3 -3
  173. package/types/cdevhub-ngx-tw-input.d.ts +5 -8
  174. package/types/cdevhub-ngx-tw-item.d.ts +2 -0
  175. package/types/cdevhub-ngx-tw-menu-testing.d.ts +131 -0
  176. package/types/cdevhub-ngx-tw-menu.d.ts +2 -2
  177. package/types/cdevhub-ngx-tw-number-input.d.ts +20 -0
  178. package/types/cdevhub-ngx-tw-paginator.d.ts +58 -24
  179. package/types/cdevhub-ngx-tw-popover.d.ts +41 -10
  180. package/types/cdevhub-ngx-tw-progress-bar.d.ts +1 -1
  181. package/types/cdevhub-ngx-tw-radio.d.ts +68 -25
  182. package/types/cdevhub-ngx-tw-segmented-control.d.ts +79 -16
  183. package/types/cdevhub-ngx-tw-select-testing.d.ts +114 -0
  184. package/types/cdevhub-ngx-tw-select.d.ts +104 -33
  185. package/types/cdevhub-ngx-tw-sheet-testing.d.ts +104 -0
  186. package/types/cdevhub-ngx-tw-sheet.d.ts +19 -3
  187. package/types/cdevhub-ngx-tw-slider.d.ts +79 -25
  188. package/types/cdevhub-ngx-tw-sort.d.ts +45 -4
  189. package/types/cdevhub-ngx-tw-split.d.ts +32 -2
  190. package/types/cdevhub-ngx-tw-stat.d.ts +14 -4
  191. package/types/cdevhub-ngx-tw-stepper.d.ts +16 -2
  192. package/types/cdevhub-ngx-tw-switch.d.ts +35 -13
  193. package/types/cdevhub-ngx-tw-tab-nav.d.ts +7 -6
  194. package/types/cdevhub-ngx-tw-table.d.ts +53 -10
  195. package/types/cdevhub-ngx-tw-tabs.d.ts +41 -10
  196. package/types/cdevhub-ngx-tw-tags-input-testing.d.ts +135 -0
  197. package/types/cdevhub-ngx-tw-tags-input.d.ts +26 -11
  198. package/types/cdevhub-ngx-tw-textarea.d.ts +3 -2
  199. package/types/cdevhub-ngx-tw-theme.d.ts +245 -39
  200. package/types/cdevhub-ngx-tw-time-picker-testing.d.ts +129 -0
  201. package/types/cdevhub-ngx-tw-time-picker.d.ts +76 -19
  202. package/types/cdevhub-ngx-tw-timeline.d.ts +36 -12
  203. package/types/cdevhub-ngx-tw-toast.d.ts +20 -6
  204. package/types/cdevhub-ngx-tw-tooltip.d.ts +28 -6
  205. package/types/cdevhub-ngx-tw-transfer-testing.d.ts +152 -0
  206. package/types/cdevhub-ngx-tw-transfer.d.ts +21 -8
  207. package/types/cdevhub-ngx-tw-tree.d.ts +6 -1
  208. package/fesm2022/cdevhub-ngx-tw-sheet-sheet-renderer-ByyNluUd.mjs.map +0 -1
  209. package/fesm2022/cdevhub-ngx-tw-toast-toast-renderer-DSu4YoTy.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cdevhub-ngx-tw-date-picker.mjs","sources":["../../../projects/ngx-tw/date-picker/date-picker-overlay.ts","../../../projects/ngx-tw/date-picker/date-picker.ts","../../../projects/ngx-tw/date-picker/cdevhub-ngx-tw-date-picker.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n signal,\n type TemplateRef,\n viewChild,\n} from '@angular/core';\nimport type { TimePickerFormat, TwColor, TwSize } from '@cdevhub/ngx-tw/core';\nimport {\n CalendarComponent,\n provideSingleSelectionStrategy,\n type CalendarCell,\n type CalendarViewState,\n type DateClassFn,\n type DateFilterFn,\n} from '@cdevhub/ngx-tw/calendar';\nimport { ButtonDirective } from '@cdevhub/ngx-tw/button';\nimport {\n TimePickerComponent,\n type TimePickerChangeEvent,\n} from '@cdevhub/ngx-tw/time-picker';\nimport type { DatePickerPreset } from './date-picker';\n\n/**\n * Internal overlay panel for `tw-date-picker`. Hosts the calendar and, when\n * the parent enables `showActions`, the action bar. Receives configuration\n * and interaction callbacks via signal-backed fields set from the outer\n * component. Not exported from the public API.\n */\n@Component({\n selector: 'tw-date-picker-overlay',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CalendarComponent, TimePickerComponent, ButtonDirective],\n providers: [provideSingleSelectionStrategy()],\n host: {\n '[class]': 'panelClasses()',\n '[id]': 'dialogId()',\n '[attr.role]': '\"dialog\"',\n '[attr.aria-modal]': '\"true\"',\n '[attr.aria-label]': 'dialogAriaLabel()',\n '[animate.enter]': '\"scale-in\"',\n '[animate.leave]': 'leaving() ? \"scale-out\" : \"\"',\n },\n template: `\n @if (presets().length) {\n <div\n class=\"flex flex-col gap-1 p-2 border-b border-border bg-surface-muted\"\n role=\"listbox\"\n aria-label=\"Preset dates\"\n >\n @for (preset of presets(); track presetKey($index, preset)) {\n <button\n twButton\n variant=\"ghost\"\n size=\"sm\"\n type=\"button\"\n role=\"option\"\n class=\"w-full justify-start\"\n [attr.aria-selected]=\"isActivePreset(preset) ? 'true' : 'false'\"\n (click)=\"handlePreset(preset)\"\n >\n {{ preset.label }}\n </button>\n }\n </div>\n }\n\n <tw-calendar\n #calendar\n class=\"!block !rounded-none !border-0 !bg-transparent !p-2\"\n [bordered]=\"false\"\n [value]=\"pendingValue()\"\n [startAt]=\"startAt()\"\n [startView]=\"startView()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [dateFilter]=\"dateFilter()\"\n [dateClass]=\"dateClass()\"\n [cellTemplate]=\"cellTemplate()\"\n [locale]=\"locale()\"\n aria-label=\"Calendar\"\n (valueChange)=\"onCalendarDateSelected($event)\"\n />\n\n @if (withTime()) {\n <div class=\"border-t border-border px-3 py-2 flex items-center justify-center\">\n <tw-time-picker\n variant=\"naked\"\n [value]=\"pendingValue()\"\n [size]=\"size()\"\n [color]=\"color()\"\n [format]=\"timeFormat()\"\n [showSeconds]=\"showSeconds()\"\n [hourStep]=\"hourStep()\"\n [minuteStep]=\"minuteStep()\"\n [secondStep]=\"secondStep()\"\n [minTime]=\"minTime()\"\n [maxTime]=\"maxTime()\"\n [showClear]=\"false\"\n [referenceDate]=\"pendingValue() ?? startAt() ?? null\"\n aria-label=\"Time\"\n (timeChange)=\"onTimeChange($event)\"\n />\n </div>\n }\n\n @if (showActions()) {\n <div class=\"border-t border-border flex items-center justify-between gap-2 px-3 py-2\">\n <div class=\"flex items-center gap-2\">\n <button twButton variant=\"ghost\" size=\"sm\" type=\"button\" (click)=\"handleToday()\">\n {{ todayLabel() }}\n </button>\n @if (pendingValue() !== null) {\n <button twButton variant=\"ghost\" size=\"sm\" type=\"button\" (click)=\"handleClear()\">\n {{ clearLabel() }}\n </button>\n }\n </div>\n <div class=\"flex items-center gap-2\">\n <button twButton variant=\"ghost\" size=\"sm\" type=\"button\" (click)=\"handleCancel()\">\n {{ cancelLabel() }}\n </button>\n <button twButton variant=\"solid\" size=\"sm\" type=\"button\" (click)=\"handleApply()\">\n {{ applyLabel() }}\n </button>\n </div>\n </div>\n }\n `,\n})\nexport class DatePickerOverlayComponent<D = unknown> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly calendarRef = viewChild<CalendarComponent<'single', D>>('calendar');\n\n // ── Config signals set by the parent component ──\n\n /** @internal */\n readonly size = signal<TwSize>('md');\n /** @internal */\n readonly color = signal<TwColor>('primary');\n /** @internal */\n readonly minDate = signal<D | null>(null);\n /** @internal */\n readonly maxDate = signal<D | null>(null);\n /** @internal */\n readonly dateFilter = signal<DateFilterFn<D> | null>(null);\n /** @internal */\n readonly startView = signal<CalendarViewState>('day');\n /** @internal */\n readonly startAt = signal<D | null>(null);\n /** @internal Current committed-or-pending value shown as selected in the calendar. */\n readonly pendingValue = signal<D | null>(null);\n /** @internal */\n readonly showActions = signal(false);\n /** @internal */\n readonly todayLabel = signal('Today');\n /** @internal */\n readonly clearLabel = signal('Clear');\n /** @internal */\n readonly cancelLabel = signal('Cancel');\n /** @internal */\n readonly applyLabel = signal('Apply');\n /** @internal */\n readonly dialogId = signal<string>('');\n /** @internal */\n readonly dialogAriaLabel = signal<string>('Choose a date');\n /** @internal */\n readonly panelClassValue = signal<string>('');\n /** @internal */\n readonly leaving = signal(false);\n\n /** @internal Forwarded to the calendar — per-cell CSS classes. */\n readonly dateClass = signal<DateClassFn<D> | null>(null);\n /** @internal Forwarded to the calendar — cell-content template. */\n readonly cellTemplate = signal<TemplateRef<{ $implicit: CalendarCell<D> }> | null>(null);\n /** @internal Forwarded to the calendar — per-instance locale override. */\n readonly locale = signal<string | null>(null);\n /** @internal Quick-select presets rendered above the calendar. */\n readonly presets = signal<readonly DatePickerPreset<D>[]>([]);\n\n // ── Time-picker config ──\n\n /** @internal */\n readonly withTime = signal(false);\n /** @internal */\n readonly timeFormat = signal<TimePickerFormat>('24h');\n /** @internal */\n readonly showSeconds = signal(false);\n /** @internal */\n readonly hourStep = signal(1);\n /** @internal */\n readonly minuteStep = signal(1);\n /** @internal */\n readonly secondStep = signal(1);\n /** @internal */\n readonly minTime = signal<D | null>(null);\n /** @internal */\n readonly maxTime = signal<D | null>(null);\n\n // ── Callbacks set by the parent component ──\n\n /** @internal */\n readonly onCalendarSelect = signal<(date: D) => void>(() => {});\n /** @internal Fires whenever the embedded time-picker commits a new time. */\n readonly onTimeInput = signal<(date: D | null) => void>(() => {});\n /** @internal */\n readonly onToday = signal<() => void>(() => {});\n /** @internal */\n readonly onClear = signal<() => void>(() => {});\n /** @internal */\n readonly onCancel = signal<() => void>(() => {});\n /** @internal */\n readonly onApply = signal<() => void>(() => {});\n /** @internal */\n readonly onPresetSelect = signal<(preset: DatePickerPreset<D>) => void>(() => {});\n\n // ── Classes ──\n\n /** @internal */\n readonly panelClasses = computed(() => {\n const base =\n 'block bg-surface-overlay border border-border rounded-lg shadow-md overflow-hidden flex flex-col';\n const custom = this.panelClassValue();\n return custom ? `${base} ${custom}` : base;\n });\n\n // ── Template callbacks ──\n\n /** @internal */\n onCalendarDateSelected(value: unknown): void {\n // Single-mode strategy emits a scalar `D`. Guard against the wider calendar\n // output type for safety.\n if (value === null || value === undefined) return;\n if (Array.isArray(value)) return;\n if (typeof value === 'object' && value !== null && 'start' in value && 'end' in value) return;\n this.onCalendarSelect()(value as D);\n }\n\n /** @internal */\n onTimeChange(event: TimePickerChangeEvent<D>): void {\n if (event.source === 'programmatic') return;\n this.onTimeInput()(event.value);\n }\n\n /** @internal */\n handleToday(): void {\n this.onToday()();\n }\n\n /** @internal */\n handleClear(): void {\n this.onClear()();\n }\n\n /** @internal */\n handleCancel(): void {\n this.onCancel()();\n }\n\n /** @internal */\n handleApply(): void {\n this.onApply()();\n }\n\n /** @internal */\n handlePreset(preset: DatePickerPreset<D>): void {\n this.onPresetSelect()(preset);\n }\n\n /** @internal */\n presetKey(index: number, preset: DatePickerPreset<D>): string | number {\n return preset.id ?? preset.label ?? index;\n }\n\n /** @internal */\n isActivePreset(preset: DatePickerPreset<D>): boolean {\n return !!preset.id && this.activePresetId() === preset.id;\n }\n\n /** @internal Tracks the most recently picked preset for visual state. Set by the parent. */\n readonly activePresetId = signal<string | undefined>(undefined);\n\n /** @internal Moves focus to the active calendar cell. Called by the parent after open. */\n focusCalendar(): void {\n this.calendarRef()?.focusActiveCell();\n }\n\n /** @internal Exposes the root overlay element for tests. */\n getElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n model,\n type OnInit,\n output,\n signal,\n type Signal,\n type TemplateRef,\n untracked,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n FormGroupDirective,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n NgForm,\n type ValidationErrors,\n type Validator,\n Validators,\n} from '@angular/forms';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge } from 'rxjs';\nimport { tv } from 'tailwind-variants';\nimport {\n buildSelectLikePositions,\n type ErrorStateMatcher,\n PickerOverlayCoordinator,\n resolveSelectScrollStrategy,\n type TimePickerFormat,\n timeOfDaySeconds,\n TW_ERROR_STATE_MATCHER,\n type TwColor,\n type TwFormSubmitted,\n type TwSize,\n} from '@cdevhub/ngx-tw/core';\nimport {\n FormFieldControl,\n TW_FORM_FIELD,\n TW_FORM_FIELD_CONTROL,\n} from '@cdevhub/ngx-tw/form-field';\nimport { calendarValidator, DATE_ADAPTER, type DateAdapter } from '@cdevhub/ngx-tw/calendar';\nimport type {\n CalendarCell,\n CalendarValidationErrors,\n CalendarViewState,\n DateClassFn,\n DateFilterFn,\n} from '@cdevhub/ngx-tw/calendar';\nimport { DatePickerOverlayComponent } from './date-picker-overlay';\n\n// ── Public types ──────────────────────────────────────────────────\n\n/** Visual style of the date-picker trigger. */\nexport type DatePickerVariant = 'default' | 'naked';\n\n/** Origin of a value change, used to distinguish user input from programmatic writes. */\nexport type DatePickerChangeSource =\n | 'input'\n | 'calendar'\n | 'apply'\n | 'clear'\n | 'today'\n | 'programmatic';\n\n/** Reason the overlay closed. */\nexport type DatePickerCloseReason =\n | 'select'\n | 'apply'\n | 'cancel'\n | 'escape'\n | 'backdrop'\n | 'programmatic';\n\n/** Emitted by `dateInput`. */\nexport interface DatePickerInputEvent<D> {\n /** The raw string currently in the input (pre-parse). */\n readonly rawText: string;\n /** The parsed value if parsing succeeded and it's in range; otherwise `null`. */\n readonly parsed: D | null;\n /** The input element itself. */\n readonly target: HTMLInputElement;\n}\n\n/** Emitted by `dateChange`. */\nexport interface DatePickerChangeEvent<D> {\n /** The committed value (`null` when cleared). */\n readonly value: D | null;\n /** The value before this change. */\n readonly previousValue: D | null;\n /** What triggered the change. */\n readonly source: DatePickerChangeSource;\n}\n\n/** Emitted by `opened` and `closed`. */\nexport interface DatePickerOpenedEvent {\n /** The trigger (input) element. */\n readonly trigger: HTMLElement;\n}\n\n/** A quick-select preset rendered above the calendar in the overlay. Mirrors `DateRangePreset`. */\nexport interface DatePickerPreset<D = Date> {\n /** Label shown on the preset button. */\n readonly label: string;\n /** Factory returning the date to apply when this preset is chosen. Called fresh each click so \"today\"-relative presets stay current. */\n readonly date: () => D;\n /** Optional identifier — surfaced in `presetSelected` and used to detect the active preset for visual state. */\n readonly id?: string;\n}\n\n/** Bundle of time-of-day configuration forwarded to the embedded `<tw-time-picker>`. Passing a non-null object turns the time-picker on and forwards each field; pass `{}` to enable with all defaults. */\nexport interface DatePickerTimeConfig<D = Date> {\n /** Clock format. Defaults to `'24h'`. */\n readonly format?: TimePickerFormat;\n /** Whether to expose a seconds field. Defaults to `false`. */\n readonly showSeconds?: boolean;\n /** Hour step. Defaults to `1`. */\n readonly hourStep?: number;\n /** Minute step. Defaults to `1`. */\n readonly minuteStep?: number;\n /** Second step. Defaults to `1`. */\n readonly secondStep?: number;\n /** Earliest accepted time-of-day. Values earlier than this set `errorState`. */\n readonly minTime?: D | null;\n /** Latest accepted time-of-day. Values later than this set `errorState`. */\n readonly maxTime?: D | null;\n}\n\n/** Re-exported from `ngx-tw/calendar` for consumers importing only the date-picker. */\nexport type { CalendarViewState, DateFilterFn, DateClassFn };\n\n/** Re-exported from `ngx-tw/core` for consumers importing only the date-picker. */\nexport type { TimePickerFormat };\n\n// ── tv() config ───────────────────────────────────────────────────\n\nconst datePickerVariants = tv(\n {\n slots: {\n root: 'relative inline-flex items-center w-full text-fg transition-[color,border-color,box-shadow] duration-normal motion-reduce:transition-none',\n input:\n 'flex-1 min-w-0 bg-transparent text-fg placeholder:text-fg-subtle outline-none border-0 p-0 m-0 font-inherit',\n triggerButton:\n 'inline-flex items-center justify-center shrink-0 rounded-md text-fg-muted hover:text-fg hover:bg-surface-muted transition-colors duration-normal motion-reduce:transition-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500',\n triggerIcon: 'shrink-0',\n // size-6 (24×24 CSS px) is the WCAG AA minimum interactive target — bumping past size-5 keeps the affordance hittable without growing the inline row.\n clearButton:\n 'inline-flex items-center justify-center shrink-0 rounded-md text-fg-muted hover:text-fg hover:bg-surface-muted transition-colors duration-normal motion-reduce:transition-none size-6 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500',\n },\n variants: {\n size: {\n xs: {\n root: 'gap-1 text-xs',\n input: 'text-xs',\n triggerButton: 'size-6',\n // size-3.5 (14px) is the codified half-step for xs-density chevrons — size-3 (12px) looks pinched next to text-xs and size-4 (16px) crowds the 24px trigger.\n triggerIcon: 'size-3.5',\n },\n sm: {\n root: 'gap-1.5 text-sm',\n input: 'text-sm',\n triggerButton: 'size-7',\n triggerIcon: 'size-4',\n },\n md: {\n root: 'gap-2 text-sm',\n input: 'text-sm',\n triggerButton: 'size-8',\n triggerIcon: 'size-4',\n },\n lg: {\n root: 'gap-2 text-base',\n input: 'text-base',\n triggerButton: 'size-9',\n triggerIcon: 'size-5',\n },\n xl: {\n root: 'gap-2 text-base',\n input: 'text-base',\n // size-10 (40px) extends the codified xs..lg square-interactive scale (24/28/32/36) by one step for xl. Stepping down to size-9 would make lg and xl visually identical since both use text-base; matches paginator's xl handling (size-11).\n triggerButton: 'size-10',\n triggerIcon: 'size-5',\n },\n },\n variant: {\n default: {\n root: 'rounded-md border border-border bg-surface px-3 py-2 hover:border-border-strong',\n },\n naked: {\n root: 'bg-transparent border-0 rounded-none p-0 focus-within:outline-none',\n },\n },\n open: { true: { triggerButton: 'bg-surface-muted text-fg' }, false: {} },\n disabled: {\n true: { root: 'opacity-50 pointer-events-none cursor-not-allowed' },\n false: {},\n },\n focused: { true: {}, false: {} },\n errorState: { true: {}, false: {} },\n color: {\n primary: {},\n secondary: {},\n accent: {},\n neutral: {},\n info: {},\n success: {},\n warning: {},\n error: {},\n },\n },\n compoundVariants: [\n // Default variant — focused border per color\n { variant: 'default', focused: true, color: 'primary', class: { root: 'border-primary-500' } },\n { variant: 'default', focused: true, color: 'secondary', class: { root: 'border-secondary-500' } },\n { variant: 'default', focused: true, color: 'accent', class: { root: 'border-accent-500' } },\n { variant: 'default', focused: true, color: 'neutral', class: { root: 'border-border-strong' } },\n { variant: 'default', focused: true, color: 'info', class: { root: 'border-info-500' } },\n { variant: 'default', focused: true, color: 'success', class: { root: 'border-success-500' } },\n { variant: 'default', focused: true, color: 'warning', class: { root: 'border-warning-500' } },\n { variant: 'default', focused: true, color: 'error', class: { root: 'border-error-500' } },\n // Default variant + error state → red outline\n { variant: 'default', errorState: true, class: { root: 'border-error-500' } },\n ],\n defaultVariants: {\n size: 'md',\n variant: 'default',\n open: false,\n disabled: false,\n errorState: false,\n focused: false,\n color: 'primary',\n },\n },\n { twMerge: true },\n);\n\n// ── ID generator ──────────────────────────────────────────────────\n\nlet nextDatePickerId = 0;\n\n// ── Default display format ────────────────────────────────────────\n\nconst DEFAULT_DISPLAY_FORMAT = {\n dateTimeFormat: { year: 'numeric', month: 'short', day: 'numeric' } as Intl.DateTimeFormatOptions,\n};\n\n/**\n * ARIA date-picker dialog. Combines a typable text input with a popover\n * calendar. All three Angular forms strategies (reactive, template-driven,\n * signal-forms) are supported via `ControlValueAccessor`, and the component\n * integrates with `<tw-form-field>` by implementing `FormFieldControl`.\n *\n * All date operations go through the injected `DateAdapter<D>`; call\n * `provideNativeDateAdapter()` in your app providers to bootstrap the default.\n */\n@Component({\n selector: 'tw-date-picker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TW_FORM_FIELD_CONTROL,\n useExisting: forwardRef(() => DatePickerComponent),\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n },\n // Angular v22 compiles any component exposing a `value` model() as a\n // signal-forms custom control, and `FormControlDirective` takes the classic\n // CVA path — the one that runs `setUpValidators` and composes the\n // NG_VALIDATORS above onto the control — only if a value accessor is\n // already visible at directive-creation time. Assigning\n // `ngControl.valueAccessor` later is too late, so without this static\n // provider `validate()` is never called and every error code below\n // disappears silently. See the CVA section of CLAUDE.md; `calendar.ts` and\n // `date-range-picker.ts` carry the same pair for the same reason.\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n },\n PickerOverlayCoordinator,\n ],\n template: `\n <!-- Optional rich-label trigger. When projected (a child carries [slot=trigger]), the default input/clear/trigger chrome is hidden. Clicks anywhere in the projected content open the overlay. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div\n class=\"contents\"\n (click)=\"onCustomTriggerClick($event)\"\n (keydown)=\"onCustomTriggerKeydown($event)\"\n >\n <ng-content select=\"[slot=trigger]\" />\n </div>\n\n <input\n #dateInput\n type=\"text\"\n [id]=\"hostId\"\n [class]=\"inputClasses()\"\n [class.sr-only]=\"hasCustomTrigger()\"\n [value]=\"rawInputText()\"\n [placeholder]=\"placeholder() || ''\"\n [disabled]=\"isDisabled()\"\n [tabindex]=\"hasCustomTrigger() ? -1 : null\"\n [attr.readonly]=\"readonlyInput() ? 'true' : null\"\n [attr.role]=\"'combobox'\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-expanded]=\"open() ? 'true' : 'false'\"\n [attr.aria-controls]=\"dialogId\"\n [attr.aria-autocomplete]=\"'none'\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby() || null\"\n [attr.aria-describedby]=\"describedBy() || null\"\n [attr.aria-required]=\"requiredInput() || null\"\n [attr.aria-invalid]=\"errorState() || null\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n [attr.data-variant]=\"resolvedVariant()\"\n (input)=\"onInputEvent($event)\"\n (blur)=\"onInputBlur()\"\n (focus)=\"onInputFocus()\"\n (keydown)=\"onInputKeydown($event)\"\n />\n\n @if (!hasCustomTrigger() && showClear() && !isEmpty() && !isDisabled() && !readonlyInput()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n [class]=\"clearButtonClasses()\"\n [attr.aria-label]=\"'Clear date'\"\n (click)=\"onClearClick($event)\"\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\" class=\"size-4\">\n <path\n fill-rule=\"evenodd\"\n d=\"M10 8.586 4.707 3.293a1 1 0 0 0-1.414 1.414L8.586 10l-5.293 5.293a1 1 0 1 0 1.414 1.414L10 11.414l5.293 5.293a1 1 0 0 0 1.414-1.414L11.414 10l5.293-5.293a1 1 0 0 0-1.414-1.414L10 8.586Z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button>\n }\n\n @if (!hasCustomTrigger()) {\n <button\n #triggerBtn\n type=\"button\"\n [class]=\"triggerButtonClasses()\"\n [attr.aria-label]=\"triggerAriaLabel()\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-expanded]=\"open() ? 'true' : 'false'\"\n [attr.aria-controls]=\"dialogId\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n [disabled]=\"isDisabled()\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n <ng-content select=\"[slot=trigger-icon]\">\n <svg\n [class]=\"triggerIconClasses()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n </ng-content>\n </button>\n }\n `,\n host: {\n '[class]': 'rootClasses()',\n },\n})\nexport class DatePickerComponent<D = Date>\n extends FormFieldControl<D>\n implements ControlValueAccessor, Validator, OnInit\n{\n // ── Inputs ──\n\n /** Id on the date-picker's input element. Auto-generated when not provided. Used by the form-field's `<label for>` attribute. */\n readonly idInput = input<string | undefined>(undefined, { alias: 'id' });\n\n /** Minimum selectable date. Typed input earlier than this commits the value and marks the bound control invalid with `calendarMinDate`; the calendar disables the cell. Defaults to `null`. */\n readonly minDate = input<D | null>(null);\n\n /** Maximum selectable date. Typed input later than this commits the value and marks the bound control invalid with `calendarMaxDate`; the calendar disables the cell. Defaults to `null`. */\n readonly maxDate = input<D | null>(null);\n\n /** Per-date predicate — return `false` to disable. Applied in the calendar, the text-parse path, and the `calendarDisabledDate` validation error. */\n readonly dateFilter = input<DateFilterFn<D> | null>(null);\n\n /** Which calendar view opens first — `'day'`, `'month'`, or `'year'`. Defaults to `'day'`. */\n readonly startView = input<CalendarViewState>('day');\n\n /** Date to focus when the calendar opens with no selection. Falls back to today. */\n readonly startAt = input<D | null>(null);\n\n /** Display format passed to `DateAdapter.format()`. With the default adapter, accepts `{ dateTimeFormat: Intl.DateTimeFormatOptions }`. When `withTime` is true and this is left at the default, hour/minute (and optional seconds) are folded in automatically. */\n readonly format = input<unknown>(DEFAULT_DISPLAY_FORMAT);\n\n /** Optional format hint passed to `DateAdapter.parse()`. Ignored by the native adapter. */\n readonly parseFormat = input<unknown | undefined>(undefined);\n\n /** Placeholder text shown in the input when no value is entered. */\n readonly placeholder = input<string | undefined>(undefined);\n\n /** When true, the input is disabled, the trigger cannot open the calendar, and `aria-disabled=\"true\"` is set. Defaults to `false`. */\n readonly disabledInput = input<boolean, unknown>(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n /** When true, exposes `aria-required=\"true\"`. Validators.required on a bound NgControl is also honoured. Defaults to `false`. */\n readonly requiredInput = input<boolean, unknown>(false, {\n alias: 'required',\n transform: booleanAttribute,\n });\n\n /** When true, blocks typing but still allows picking via the calendar trigger. Defaults to `false`. */\n readonly readonlyInput = input<boolean, unknown>(false, {\n alias: 'readonly',\n transform: booleanAttribute,\n });\n\n /** Trigger padding, font size, and calendar cell density. Defaults to `'md'`. */\n readonly size = input<TwSize>('md');\n\n /** Semantic color for focused border, calendar selection ring, and today marker. Defaults to `'primary'`. */\n readonly color = input<TwColor>('primary');\n\n /** Visual style of the trigger. `'default'` draws its own border; `'naked'` strips chrome. Auto-resolves to `'naked'` when inside `<tw-form-field>`. */\n readonly variant = input<DatePickerVariant | undefined>(undefined);\n\n /** Whether to show a clear-button affordance inside the trigger when a value is set. Defaults to `true`. */\n // TRUE-default: a picker without a clear affordance forces consumers to wire one — most form pickers expect the inline clear, matching `<tw-input>`'s clear button.\n readonly showClear = input<boolean>(true);\n\n /** When true, renders a `Today / Clear / Cancel / Apply` action bar at the bottom of the overlay. Defaults to `false`. */\n readonly showActions = input<boolean>(false);\n\n /** Label for the `Today` action in the overlay's action bar. */\n readonly todayLabel = input<string>('Today');\n\n /** Label for the `Clear` action in the overlay's action bar. */\n readonly clearLabel = input<string>('Clear');\n\n /** Label for the `Cancel` action in the overlay's action bar. */\n readonly cancelLabel = input<string>('Cancel');\n\n /** Label for the `Apply` action in the overlay's action bar. */\n readonly applyLabel = input<string>('Apply');\n\n /** When true, focusing the text input opens the overlay. Defaults to `false`. */\n readonly openOnFocus = input<boolean>(false);\n\n /** Extra class(es) applied to the overlay panel element. */\n readonly panelClass = input<string | readonly string[]>('');\n\n /** CDK scroll strategy for the overlay. Defaults to `'reposition'`. */\n readonly scrollStrategy = input<'reposition' | 'close' | 'block'>('reposition');\n\n /** Pixel distance between trigger and overlay. Defaults to `4`. */\n readonly offset = input<number>(4);\n\n /** Accessible name for the calendar trigger button. Defaults to `'Open calendar'`. */\n readonly triggerAriaLabel = input<string>('Open calendar');\n\n /**\n * Bundles the time-of-day configuration. Passing a non-null object turns on the embedded `<tw-time-picker>` and forwards each field.\n *\n * Defaults to `null` (no time field). Pass an empty object `{}` to enable the time picker with all defaults.\n */\n readonly timeConfig = input<DatePickerTimeConfig<D> | null>(null);\n\n /** Per-instance locale override. Forwarded to the embedded calendar and the underlying `DateAdapter` for parse/format. Falls back to Angular `LOCALE_ID` when `null`. */\n readonly locale = input<string | null>(null);\n\n /** Function producing per-cell CSS classes, forwarded to the embedded calendar. Useful for visually marking special dates (holidays, billing cycles). */\n readonly dateClass = input<DateClassFn<D> | null>(null);\n\n /** Optional cell-content template, forwarded to the embedded calendar. Use to customize cell visuals beyond `dateClass`. */\n readonly cellTemplate = input<TemplateRef<{ $implicit: CalendarCell<D> }> | null>(null);\n\n /** Optional quick-select presets rendered as a vertical list before the calendar. Each preset provides a `label` and a `date` factory. An empty array hides the preset panel. */\n readonly presets = input<readonly DatePickerPreset<D>[]>([]);\n\n /** Per-instance override of the `ErrorStateMatcher`. */\n readonly errorStateMatcher = input<ErrorStateMatcher | undefined>(undefined);\n\n /** Accessible name for the input. Required when no visible label is supplied. Alias: `aria-label`. */\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n /** ID of an external element that labels the input. Alias: `aria-labelledby`. */\n readonly ariaLabelledby = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n /** Consumer-supplied `aria-describedby` ids. The form-field preserves these when merging hint/error ids. Alias: `aria-describedby`. */\n readonly userAriaDescribedByInput = input<string | undefined>(undefined, {\n alias: 'aria-describedby',\n });\n\n // ── Models (two-way) ──\n\n /** Two-way bound selected date. `null` when no selection. Setting programmatically updates the display; does NOT trigger `onChange`. */\n readonly value = model<D | null>(null);\n\n /** Two-way bound open state of the calendar overlay. */\n readonly open = model(false);\n\n // ── Outputs ──\n\n /** Fires after the overlay's enter animation completes. Payload is the trigger element. */\n readonly opened = output<DatePickerOpenedEvent>();\n\n /** Fires after the overlay's leave animation completes. Payload is the reason it closed. */\n readonly closed = output<DatePickerCloseReason>();\n\n /** Fires on every keystroke in the text input (before parsing). Does NOT mean the value has committed. */\n readonly dateInput = output<DatePickerInputEvent<D>>();\n\n /** Fires after a commit — from parsing typed input or picking in the calendar. */\n readonly dateChange = output<DatePickerChangeEvent<D>>();\n\n /** Fires when the user picks one of the entries from `presets`. Payload is the preset that fired. */\n readonly presetSelected = output<DatePickerPreset<D>>();\n\n // ── Injected deps ──\n\n private readonly adapter = inject<DateAdapter<D>>(DATE_ADAPTER);\n private readonly overlayService = inject(Overlay);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly liveAnnouncer = inject(LiveAnnouncer);\n private readonly coordinator = inject(PickerOverlayCoordinator);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly formField = inject(TW_FORM_FIELD, { optional: true });\n // Resolved lazily in `ngOnInit`, not via eager `inject(NgControl, { self })`:\n // this component provides NG_VALIDATORS with `useExisting`, so NgModel /\n // FormControlName pulling the validator set during construction would resolve\n // back into this instance while it is still being created. Mirrors\n // `date-range-picker.ts` and `calendar.ts`.\n private ngControl: NgControl | null = null;\n private readonly parentForm = inject(NgForm, { optional: true });\n private readonly parentFormGroup = inject(FormGroupDirective, { optional: true });\n private readonly defaultMatcher = inject(TW_ERROR_STATE_MATCHER);\n\n // ── View refs ──\n\n private readonly inputRef = viewChild.required<ElementRef<HTMLInputElement>>('dateInput');\n private readonly triggerRef = viewChild<ElementRef<HTMLButtonElement>>('triggerBtn');\n\n /** @internal Whether a `[slot=trigger]` is projected. Detected post-mount via DOM query so we can drop the default chrome. */\n readonly hasCustomTrigger = signal(false);\n\n // ── Identity ──\n\n private readonly uid = nextDatePickerId++;\n /** @internal */\n readonly hostId = `tw-date-picker-${this.uid}`;\n /** @internal */\n readonly dialogId = `${this.hostId}-dialog`;\n\n // ── Internal state ──\n\n /** @internal Decouples programmatic writes from user commits so `writeValue` doesn't re-trigger parent effects. */\n readonly internalValue = linkedSignal<D | null>(() => this.value());\n /** @internal */\n readonly rawInputText = signal<string>('');\n /**\n * @internal The text the user typed that could not be parsed into a date,\n * or `null` when the current entry parsed cleanly.\n *\n * This is the single source of truth for \"the typed text is bad\". It drives\n * both the visual error state (via `parseError` below) and the form error\n * (via `validate()`, which feeds it to `calendarValidator` as\n * `lastInvalidFormValue`). Keeping one field instead of a boolean flag plus a\n * separate string is what stops the two from disagreeing.\n */\n private readonly unparseableText = signal<string | null>(null);\n\n /** @internal Whether the current input text failed to parse. */\n readonly parseError = computed(() => this.unparseableText() !== null);\n /**\n * @internal Whether the committed value violates `minDate` / `maxDate` /\n * `dateFilter`.\n *\n * Derived, not a flag. An out-of-range entry is committed to the form (so the\n * control holds what the user typed and is *invalid*, rather than silently\n * keeping an older value), which means the value-sync effect below runs and\n * would immediately clear any manually-set flag. Deriving it also keeps the\n * error correct when the consumer moves a constraint after the fact, which a\n * flag set once at commit time cannot do.\n */\n readonly rangeError = computed(() => {\n const v = this.internalValue();\n return v !== null && !this.isInRange(v);\n });\n /** @internal */\n readonly focusedSignal = signal(false);\n\n private readonly cvaDisabled = signal(false);\n private readonly describedByIdsSignal = signal<readonly string[]>([]);\n private readonly closingSignal = signal(false);\n private readonly lastValueBeforeOpen = signal<D | null>(null);\n private readonly pendingCalendarValue = signal<D | null>(null);\n private readonly activePresetIdSignal = signal<string | undefined>(undefined);\n private readonly _ngControlRev = signal(0);\n private readonly _formSubmitRev = signal(0);\n\n private onChange: (value: D | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n private readonly overlayInstanceSignal = signal<DatePickerOverlayComponent<D> | null>(null);\n private returnFocusTo: HTMLElement | null = null;\n\n private get overlayInstance(): DatePickerOverlayComponent<D> | null {\n return this.overlayInstanceSignal();\n }\n\n // ── Derived state ──\n\n /** @internal */\n readonly isDisabled = computed(() => {\n this._ngControlRev();\n return this.disabledInput() || this.cvaDisabled() || !!this.ngControl?.disabled;\n });\n\n /** @internal Effective variant — auto-naked when wrapped in tw-form-field. */\n readonly resolvedVariant = computed<DatePickerVariant>(\n () => this.variant() ?? (this.formField ? 'naked' : 'default'),\n );\n\n /** @internal */\n readonly isEmpty = computed(() => this.internalValue() === null && !this.rawInputText());\n\n /** Whether the time picker is rendered inside the overlay. True iff `timeConfig` is non-null. */\n readonly withTime = computed<boolean>(() => this.timeConfig() !== null);\n\n /** @internal Effective time-of-day configuration — merges `timeConfig` over the documented per-field defaults. */\n readonly effectiveTimeConfig = computed<Required<Omit<DatePickerTimeConfig<D>, 'minTime' | 'maxTime'>> & { minTime: D | null; maxTime: D | null }>(() => {\n const cfg = this.timeConfig();\n return {\n format: cfg?.format ?? '24h',\n showSeconds: cfg?.showSeconds ?? false,\n hourStep: cfg?.hourStep ?? 1,\n minuteStep: cfg?.minuteStep ?? 1,\n secondStep: cfg?.secondStep ?? 1,\n minTime: cfg?.minTime ?? null,\n maxTime: cfg?.maxTime ?? null,\n };\n });\n\n /** @internal Effective display format — folds hour/minute (and optional seconds) into the default when `withTime` is on and the user hasn't overridden `format`. */\n readonly effectiveFormat = computed<unknown>(() => {\n const fmt = this.format();\n if (!this.withTime() || fmt !== DEFAULT_DISPLAY_FORMAT) return fmt;\n const time = this.effectiveTimeConfig();\n const hour12 = time.format === '12h';\n const base: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n hour12,\n };\n if (time.showSeconds) base.second = '2-digit';\n return { dateTimeFormat: base };\n });\n\n /** @internal */\n readonly describedBy = computed(() => {\n const extra = this.describedByIdsSignal();\n const user = this.userAriaDescribedByInput();\n const merged = [...extra];\n if (user) {\n for (const id of user.split(/\\s+/)) {\n if (id) merged.push(id);\n }\n }\n return merged.length ? merged.join(' ') : '';\n });\n\n // ── tv() output ──\n\n private readonly variantResult = computed(() =>\n datePickerVariants({\n size: this.size(),\n variant: this.resolvedVariant(),\n open: this.open(),\n disabled: this.isDisabled(),\n errorState: this.errorState(),\n focused: this.focusedSignal(),\n color: this.color(),\n }),\n );\n\n /** @internal */\n readonly rootClasses = computed(() => this.variantResult().root());\n /** @internal */\n readonly inputClasses = computed(() => this.variantResult().input());\n /** @internal */\n readonly triggerButtonClasses = computed(() => this.variantResult().triggerButton());\n /** @internal */\n readonly triggerIconClasses = computed(() => this.variantResult().triggerIcon());\n /** @internal */\n readonly clearButtonClasses = computed(() => this.variantResult().clearButton());\n\n // ── FormFieldControl impl ──\n\n /** @internal */\n readonly id: Signal<string> = computed(() => this.idInput() ?? this.hostId);\n /** @internal */\n readonly focused: Signal<boolean> = this.focusedSignal.asReadonly();\n /** @internal */\n readonly empty: Signal<boolean> = this.isEmpty;\n /** @internal */\n readonly disabled: Signal<boolean> = this.isDisabled;\n /** @internal */\n readonly required: Signal<boolean> = computed(() => {\n this._ngControlRev();\n if (this.requiredInput()) return true;\n return !!this.ngControl?.control?.hasValidator(Validators.required);\n });\n\n /** @internal */\n readonly errorState: Signal<boolean> = computed(() => {\n this._ngControlRev();\n this._formSubmitRev();\n this.focusedSignal();\n if (this.parseError() || this.rangeError()) return true;\n const matcher = this.errorStateMatcher() ?? this.defaultMatcher;\n const form: TwFormSubmitted | null =\n (this.parentFormGroup as TwFormSubmitted | null) ??\n (this.parentForm as TwFormSubmitted | null);\n return matcher.isErrorState(this.ngControl?.control ?? null, form);\n });\n\n /** @internal */\n readonly controlType = 'date-picker';\n /** @internal */\n readonly userAriaDescribedBy: Signal<string | undefined> = computed(() =>\n this.userAriaDescribedByInput(),\n );\n\n // ── Constructor ──\n\n constructor() {\n super();\n\n // Re-run validation whenever a constraint input changes, so a consumer\n // moving `minDate` after a value was committed updates `control.errors`\n // instead of leaving a stale verdict. `validatorOnChange` is a plain\n // callback into Angular's validator plumbing, not a signal write, so the\n // effect cannot cycle; `untracked` keeps it that way regardless.\n // Mirrors `date-range-picker.ts` and `calendar.ts`.\n effect(() => {\n this.minDate();\n this.maxDate();\n this.dateFilter();\n untracked(() => this.validatorOnChange());\n });\n\n // Sync rawInputText whenever the underlying value changes (programmatic or user).\n effect(() => {\n const v = this.internalValue();\n const fmt = this.effectiveFormat();\n untracked(() => {\n // An unparseable entry commits `null` precisely *because* it failed to\n // parse, and this effect runs asynchronously afterwards. Syncing here\n // would undo both halves of that: it would clear the error state a\n // moment after it was set, and — because the input is bound to\n // `rawInputText` — blank the very text the user needs to correct,\n // leaving an error border over an empty box. Bail out and let the\n // parse-failure path own the display.\n if (v === null && this.unparseableText() !== null) return;\n\n const display = v === null ? '' : this.adapter.format(v, fmt);\n this.rawInputText.set(display);\n this.unparseableText.set(null);\n });\n });\n\n // Mirror the `open` model into the overlay lifecycle.\n effect(() => {\n const shouldOpen = this.open();\n const disabled = this.isDisabled();\n if (disabled && this.overlayInstance) {\n this.closeOverlay('programmatic');\n return;\n }\n if (shouldOpen && !this.overlayInstance && !disabled && !this.closingSignal()) {\n this.openOverlay();\n } else if (!shouldOpen && this.overlayInstance && !this.closingSignal()) {\n this.closeOverlay('programmatic');\n }\n });\n\n // Push state into the overlay whenever anything relevant changes.\n // Reads happen in the tracked phase; writes to the overlay instance are\n // wrapped in `untracked()` so they never feed back into this effect.\n effect(() => {\n const instance = this.overlayInstance;\n if (!instance) return;\n const time = this.effectiveTimeConfig();\n const size = this.size();\n const color = this.color();\n const minDate = this.minDate();\n const maxDate = this.maxDate();\n const dateFilter = this.dateFilter();\n const startView = this.startView();\n const startAt = this.startAt() ?? this.internalValue() ?? null;\n const pendingValue = this.pendingCalendarValue();\n const showActions = this.showActions();\n const todayLabel = this.todayLabel();\n const clearLabel = this.clearLabel();\n const cancelLabel = this.cancelLabel();\n const applyLabel = this.applyLabel();\n const dialogAriaLabel = this.resolveDialogAriaLabel();\n const panelClassValue = this.resolvePanelClass();\n const withTime = this.withTime();\n const locale = this.locale();\n const dateClass = this.dateClass();\n const cellTemplate = this.cellTemplate();\n const presets = this.presets();\n const activePresetId = this.activePresetIdSignal();\n untracked(() => {\n instance.size.set(size);\n instance.color.set(color);\n instance.minDate.set(minDate);\n instance.maxDate.set(maxDate);\n instance.dateFilter.set(dateFilter);\n instance.startView.set(startView);\n instance.startAt.set(startAt);\n instance.pendingValue.set(pendingValue);\n instance.showActions.set(showActions);\n instance.todayLabel.set(todayLabel);\n instance.clearLabel.set(clearLabel);\n instance.cancelLabel.set(cancelLabel);\n instance.applyLabel.set(applyLabel);\n instance.dialogId.set(this.dialogId);\n instance.dialogAriaLabel.set(dialogAriaLabel);\n instance.panelClassValue.set(panelClassValue);\n instance.withTime.set(withTime);\n instance.timeFormat.set(time.format);\n instance.showSeconds.set(time.showSeconds);\n instance.hourStep.set(time.hourStep);\n instance.minuteStep.set(time.minuteStep);\n instance.secondStep.set(time.secondStep);\n instance.minTime.set(time.minTime);\n instance.maxTime.set(time.maxTime);\n instance.locale.set(locale);\n instance.dateClass.set(dateClass);\n instance.cellTemplate.set(cellTemplate);\n instance.presets.set(presets);\n instance.activePresetId.set(activePresetId);\n });\n });\n\n // Push locale into the adapter for parse/format. The calendar also calls\n // setLocale, but a standalone picker without a calendar open still needs\n // the parser to honour the picker's locale.\n effect(() => {\n const locale = this.locale();\n if (locale === null) return;\n untracked(() => this.adapter.setLocale(locale));\n });\n\n // Dev-mode accessible-name warning + projected-trigger detection.\n afterNextRender(() => {\n const host = this.elementRef.nativeElement;\n // Detect [slot=trigger] projection by querying for projected children that carry the attribute.\n // Angular's <ng-content select=\"[slot=trigger]\"> moves them into the rendered DOM under the host.\n if (host.querySelector('[slot=\"trigger\"]')) {\n this.hasCustomTrigger.set(true);\n }\n\n if (!isDevMode()) return;\n const hasLabel =\n !!this.ariaLabel() ||\n !!this.ariaLabelledby() ||\n !!this.formField?.hasLabel();\n if (!hasLabel) {\n console.warn(\n '[tw-date-picker] The date-picker has no accessible name. Set aria-label, aria-labelledby, or wrap the component in a <tw-form-field> with a <label twLabel>.',\n );\n }\n });\n\n // Monitor focus on the host (trigger + input + overlay when opened).\n const monitorSub = this.focusMonitor\n .monitor(this.elementRef, true)\n .subscribe((origin) => {\n const wasFocused = this.focusedSignal();\n this.focusedSignal.set(!!origin);\n if (wasFocused && !origin) {\n this.onTouched();\n this._ngControlRev.update((n) => n + 1);\n }\n });\n\n this.destroyRef.onDestroy(() => {\n monitorSub.unsubscribe();\n this.focusMonitor.stopMonitoring(this.elementRef);\n // The coordinator's own DestroyRef.onDestroy disposes the overlay and\n // clears its timers; we only need to drop the local instance signal.\n this.overlayInstanceSignal.set(null);\n });\n }\n\n ngOnInit(): void {\n // Resolve the bound NgControl now that the host's FormControlName / NgModel\n // is fully constructed (see the field declaration for why this is deferred).\n // The value accessor itself is registered statically via NG_VALUE_ACCESSOR,\n // which is what keeps `validate()` on the classic CVA path under v22.\n this.ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\n // Anything read off `ngControl` before this point saw `null`; bump the\n // revision so `isDisabled`, `required` and `errorState` recompute.\n this._ngControlRev.update((n) => n + 1);\n\n const ctrl = this.ngControl?.control;\n if (ctrl) {\n const streams = [ctrl.statusChanges, ctrl.valueChanges].filter(\n (s): s is NonNullable<typeof s> => !!s,\n );\n if (streams.length) {\n merge(...streams)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this._ngControlRev.update((n) => n + 1));\n }\n }\n\n const submit = this.parentFormGroup?.ngSubmit ?? this.parentForm?.ngSubmit;\n if (submit) {\n submit\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this._formSubmitRev.update((n) => n + 1));\n }\n }\n\n // ── Public imperative API ──\n\n /** Opens the overlay. No-op when disabled or already open. */\n openPicker(): void {\n if (this.isDisabled() || this.open()) return;\n this.open.set(true);\n }\n\n /** Closes the overlay. No-op when already closed. */\n closePicker(): void {\n if (!this.open()) return;\n this.open.set(false);\n }\n\n /** Toggles the overlay's open state. */\n toggle(): void {\n if (this.open()) this.closePicker();\n else this.openPicker();\n }\n\n /** Clears the current value and emits `dateChange` with `source: 'clear'`. */\n clear(): void {\n this.commit(null, 'clear');\n }\n\n // ── Input interactions ──\n\n /** @internal */\n onInputEvent(event: Event): void {\n const target = event.target as HTMLInputElement;\n const rawText = target.value;\n this.rawInputText.set(rawText);\n this.unparseableText.set(null);\n // Non-committing parse so the payload's `parsed` field reflects success when achievable.\n let parsed: D | null = null;\n if (rawText.trim()) {\n const candidate = this.adapter.parse(rawText, this.parseFormat());\n if (candidate && this.adapter.isValid(candidate) && this.isInRange(candidate)) {\n parsed = candidate;\n }\n }\n this.dateInput.emit({ rawText, parsed, target });\n }\n\n /** @internal */\n onInputBlur(): void {\n this.commitFromInput();\n }\n\n /** @internal */\n onInputFocus(): void {\n if (this.openOnFocus() && !this.isDisabled() && !this.readonlyInput()) {\n this.returnFocusTo = this.inputRef().nativeElement;\n this.openPicker();\n }\n }\n\n /** @internal */\n onInputKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) return;\n const key = event.key;\n\n if (event.altKey && key === 'ArrowDown') {\n event.preventDefault();\n this.returnFocusTo = this.inputRef().nativeElement;\n this.openPicker();\n return;\n }\n if (event.altKey && key === 'ArrowUp') {\n if (this.open()) {\n event.preventDefault();\n this.closeOverlay('cancel', /* restore */ true);\n }\n return;\n }\n\n switch (key) {\n case 'Enter':\n event.preventDefault();\n this.commitFromInput();\n if (this.open()) {\n this.closeOverlay('select');\n }\n return;\n case 'Escape':\n if (this.open()) {\n event.preventDefault();\n this.closeOverlay('escape', /* restore */ true);\n }\n return;\n case 'Tab':\n if (this.open()) {\n // Let focus move out naturally; close the overlay.\n this.closeOverlay('programmatic');\n }\n return;\n default:\n return;\n }\n }\n\n /** @internal */\n onClearClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.clear();\n }\n\n /** @internal */\n onTriggerClick(): void {\n if (this.isDisabled()) return;\n const trigger = this.triggerRef();\n if (trigger) this.returnFocusTo = trigger.nativeElement;\n this.toggle();\n }\n\n /** @internal */\n onTriggerKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) return;\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n event.preventDefault();\n const trigger = this.triggerRef();\n if (trigger) this.returnFocusTo = trigger.nativeElement;\n if (!this.open()) this.openPicker();\n } else if (event.key === 'Escape' && this.open()) {\n event.preventDefault();\n this.closeOverlay('escape', /* restore */ true);\n }\n }\n\n /** @internal */\n onCustomTriggerClick(event: MouseEvent): void {\n if (!this.hasCustomTrigger() || this.isDisabled()) return;\n // The projected element itself is the focus target on close.\n const target = event.currentTarget as HTMLElement | null;\n if (target) this.returnFocusTo = target;\n event.preventDefault();\n this.toggle();\n }\n\n /** @internal */\n onCustomTriggerKeydown(event: KeyboardEvent): void {\n if (!this.hasCustomTrigger() || this.isDisabled()) return;\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n event.preventDefault();\n const target = event.currentTarget as HTMLElement | null;\n if (target) this.returnFocusTo = target;\n if (!this.open()) this.openPicker();\n } else if (event.key === 'Escape' && this.open()) {\n event.preventDefault();\n this.closeOverlay('escape', /* restore */ true);\n }\n }\n\n // ── Parse & commit ──\n\n private commitFromInput(): void {\n const raw = this.rawInputText().trim();\n if (!raw) {\n this.unparseableText.set(null);\n if (this.internalValue() !== null || this.parseError() || this.rangeError()) {\n this.commit(null, 'input');\n } else {\n this.unparseableText.set(null);\n }\n this.validatorOnChange();\n return;\n }\n const parsed = this.adapter.parse(raw, this.parseFormat());\n if (!parsed || !this.adapter.isValid(parsed)) {\n // Unparseable. Both halves matter: the previously committed date must not\n // survive in the form behind an error border (that stale value would be\n // submitted), and the parse failure must be carried into `validate()`\n // because the `null` we commit is otherwise indistinguishable from an\n // empty optional field.\n // Deliberately not routed through `commit()`: that formats the committed\n // value into the input, which would erase the text the user just typed.\n // Clear the *form* value so a stale date cannot be submitted behind an\n // error border, while leaving the raw text on screen to be corrected.\n //\n // Keeping that text visible also depends on the bail-out in the\n // value-sync effect above — without it, this `internalValue.set(null)`\n // asynchronously blanks the input. Both halves are pinned by the\n // \"keeps unparseable text visible\" specs; changing one without the other\n // reintroduces an error border over an empty box.\n const previous = this.internalValue();\n this.internalValue.set(null);\n this.value.set(null);\n this.unparseableText.set(raw);\n this.onChange(null);\n this.onTouched();\n this.validatorOnChange();\n this.dateChange.emit({ value: null, previousValue: previous, source: 'input' });\n return;\n }\n if (!this.isInRange(parsed)) {\n // Out of range still commits: the form should hold what the user actually\n // entered and be *invalid*, not silently keep an older value. The range\n // codes come from `validate()` reading `control.value`, so no extra state\n // needs carrying here.\n this.unparseableText.set(null);\n this.commit(parsed, 'input');\n this.unparseableText.set(null);\n this.validatorOnChange();\n return;\n }\n this.unparseableText.set(null);\n this.commit(parsed, 'input');\n this.validatorOnChange();\n }\n\n private commit(next: D | null, source: DatePickerChangeSource): void {\n const previous = this.internalValue();\n this.internalValue.set(next);\n this.value.set(next);\n this.unparseableText.set(null);\n const display = next === null ? '' : this.adapter.format(next, this.effectiveFormat());\n this.rawInputText.set(display);\n const el = this.inputRef().nativeElement;\n if (el.value !== display) el.value = display;\n\n if (source !== 'programmatic') {\n this.onChange(next);\n this.onTouched();\n if (next === null) {\n this.liveAnnouncer.announce('Date cleared', 'polite');\n } else {\n this.liveAnnouncer.announce(`${display} selected`, 'polite');\n }\n }\n this.dateChange.emit({ value: next, previousValue: previous, source });\n }\n\n private isInRange(d: D): boolean {\n const min = this.minDate();\n if (min && this.adapter.compare(d, min) < 0) return false;\n const max = this.maxDate();\n if (max && this.adapter.compare(d, max) > 0) return false;\n const filter = this.dateFilter();\n if (filter && !filter(d)) return false;\n if (this.withTime() && !this.isTimeInRange(d)) return false;\n return true;\n }\n\n private isTimeInRange(d: D): boolean {\n const { minTime: min, maxTime: max } = this.effectiveTimeConfig();\n if (!min && !max) return true;\n const adapter = this.adapter;\n const vSecs = timeOfDaySeconds(adapter.getHours(d), adapter.getMinutes(d), adapter.getSeconds(d));\n if (min && adapter.isValid(min)) {\n const minSecs = timeOfDaySeconds(adapter.getHours(min), adapter.getMinutes(min), adapter.getSeconds(min));\n if (vSecs < minSecs) return false;\n }\n if (max && adapter.isValid(max)) {\n const maxSecs = timeOfDaySeconds(adapter.getHours(max), adapter.getMinutes(max), adapter.getSeconds(max));\n if (vSecs > maxSecs) return false;\n }\n return true;\n }\n\n // ── Overlay lifecycle ──\n\n private openOverlay(): void {\n if (!this.returnFocusTo) {\n this.returnFocusTo = this.resolveFocusTarget();\n }\n this.lastValueBeforeOpen.set(this.internalValue());\n this.pendingCalendarValue.set(this.internalValue());\n\n const result = this.coordinator.open<DatePickerOverlayComponent<D>>({\n origin: this.elementRef,\n portalComponent: DatePickerOverlayComponent as unknown as new (\n ...args: unknown[]\n ) => DatePickerOverlayComponent<D>,\n viewContainerRef: this.viewContainerRef,\n injector: this.injector,\n positions: buildSelectLikePositions(this.offset()),\n scrollStrategy: resolveSelectScrollStrategy(this.scrollStrategy(), this.overlayService),\n panelClass: 'tw-date-picker-panel',\n });\n if (!result) return;\n\n const instance = result.instance;\n instance.onCalendarSelect.set((date) => this.onCalendarSelection(date));\n instance.onTimeInput.set((date) => this.onTimeInput(date));\n instance.onToday.set(() => this.onTodayClicked());\n instance.onClear.set(() => this.onClearAction());\n instance.onCancel.set(() => this.onCancelAction());\n instance.onApply.set(() => this.onApplyAction());\n instance.onPresetSelect.set((preset) => this.onPresetClick(preset));\n instance.activePresetId.set(this.activePresetIdSignal());\n this.overlayInstanceSignal.set(instance);\n\n // Per-open streams from the coordinator complete on close, so no\n // takeUntilDestroyed is needed — accumulating subscribers across multiple\n // open/close cycles is the bug we'd hit otherwise.\n this.coordinator\n .backdropClick$()\n .subscribe(() => this.closeOverlay('backdrop'));\n\n this.coordinator.escape$().subscribe((event) => {\n event.preventDefault();\n this.closeOverlay('escape', /* restore */ true);\n });\n\n // Defer `opened` emission until after the enter animation completes — was\n // previously fired synchronously on open() (audit Medium, date-picker.ts:1199).\n this.coordinator\n .opened$()\n .subscribe(() => this.opened.emit({ trigger: this.elementRef.nativeElement }));\n\n queueMicrotask(() => {\n this.overlayInstance?.focusCalendar();\n });\n }\n\n private closeOverlay(reason: DatePickerCloseReason, restore = false): void {\n if (this.closingSignal() || !this.overlayInstance) return;\n this.closingSignal.set(true);\n this.overlayInstance.leaving.set(true);\n\n if (restore) {\n const previous = this.lastValueBeforeOpen();\n if (previous !== this.internalValue()) {\n // Silent restore — no emit of dateChange.\n this.internalValue.set(previous);\n this.value.set(previous);\n const display = previous === null ? '' : this.adapter.format(previous, this.effectiveFormat());\n this.rawInputText.set(display);\n this.unparseableText.set(null);\n }\n }\n\n // Fallback chain ensures focus always returns to a visible element even when\n // returnFocusTo was never set (e.g. open() flipped programmatically).\n (this.returnFocusTo ?? this.resolveFocusTarget()).focus();\n\n this.coordinator.close(() => {\n this.overlayInstanceSignal.set(null);\n this.pendingCalendarValue.set(null);\n this.returnFocusTo = null;\n untracked(() => this.open.set(false));\n this.closingSignal.set(false);\n this.closed.emit(reason);\n });\n }\n\n // ── Calendar / action-bar callbacks ──\n\n private onCalendarSelection(date: D): void {\n const withTime = this.withTime() ? this.carryTimeOfDay(date) : date;\n // When time-of-day editing is active, picking a day never auto-commits —\n // the user needs a chance to tweak the time before closing.\n if (this.showActions() || this.withTime()) {\n this.pendingCalendarValue.set(withTime);\n return;\n }\n this.commit(withTime, 'calendar');\n this.closeOverlay('select');\n }\n\n /** @internal Called by the overlay when the embedded time-picker reports a new value. */\n private onTimeInput(date: D | null): void {\n if (date === null) {\n this.pendingCalendarValue.set(null);\n if (!this.showActions()) {\n this.commit(null, 'calendar');\n }\n return;\n }\n this.pendingCalendarValue.set(date);\n if (!this.showActions()) {\n this.commit(date, 'calendar');\n }\n }\n\n private onTodayClicked(): void {\n const today = this.adapter.today();\n if (!this.isInRange(today)) return;\n const withTime = this.withTime() ? this.carryTimeOfDay(today) : today;\n this.pendingCalendarValue.set(withTime);\n }\n\n /** Copies the time-of-day from the current pending/selected value onto `picked`. */\n private carryTimeOfDay(picked: D): D {\n const source = this.pendingCalendarValue() ?? this.internalValue();\n if (source === null || !this.adapter.isValid(source)) return picked;\n return this.adapter.withTime(\n picked,\n this.adapter.getHours(source),\n this.adapter.getMinutes(source),\n this.adapter.getSeconds(source),\n );\n }\n\n private onClearAction(): void {\n this.commit(null, 'clear');\n this.closeOverlay('apply');\n }\n\n private onCancelAction(): void {\n this.closeOverlay('cancel', /* restore */ true);\n }\n\n private onApplyAction(): void {\n const pending = this.pendingCalendarValue();\n if (pending !== null && !this.isInRange(pending)) {\n this.closeOverlay('cancel', /* restore */ true);\n return;\n }\n this.commit(pending, 'apply');\n this.closeOverlay('apply');\n }\n\n private onPresetClick(preset: DatePickerPreset<D>): void {\n const next = preset.date();\n if (!this.adapter.isValid(next) || !this.isInRange(next)) return;\n this.activePresetIdSignal.set(preset.id);\n this.presetSelected.emit(preset);\n if (this.showActions()) {\n this.pendingCalendarValue.set(next);\n return;\n }\n this.commit(next, 'calendar');\n this.closeOverlay('select');\n }\n\n // ── Helpers ──\n\n private resolveDialogAriaLabel(): string {\n return this.ariaLabel() || 'Choose a date';\n }\n\n private resolvePanelClass(): string {\n const raw = this.panelClass();\n return Array.isArray(raw) ? raw.join(' ') : (raw as string);\n }\n\n /** Picks the best element to receive focus on overlay close. Prefers the explicit `returnFocusTo` source, then the trigger button, the projected custom trigger, and finally the input. */\n private resolveFocusTarget(): HTMLElement {\n const trigger = this.triggerRef();\n if (trigger) return trigger.nativeElement;\n const host = this.elementRef.nativeElement;\n const custom = host.querySelector('[slot=\"trigger\"]') as HTMLElement | null;\n if (custom) return custom;\n return this.inputRef().nativeElement;\n }\n\n // ── ControlValueAccessor ──\n\n writeValue(value: unknown): void {\n if (value === null || value === undefined || value === '') {\n this.internalValue.set(null);\n this.value.set(null);\n this.unparseableText.set(null);\n this.rawInputText.set('');\n this.dateChange.emit({\n value: null,\n previousValue: this.internalValue(),\n source: 'programmatic',\n });\n return;\n }\n const coerced = this.adapter.deserialize(value);\n if (coerced === null) {\n this.internalValue.set(null);\n this.value.set(null);\n this.rawInputText.set('');\n this.unparseableText.set(null);\n return;\n }\n if (!this.adapter.isValid(coerced)) {\n this.unparseableText.set(String(value));\n this.rawInputText.set(String(value));\n return;\n }\n const previous = this.internalValue();\n this.internalValue.set(coerced);\n this.value.set(coerced);\n this.unparseableText.set(null);\n this.rawInputText.set(this.adapter.format(coerced, this.effectiveFormat()));\n this.dateChange.emit({ value: coerced, previousValue: previous, source: 'programmatic' });\n }\n\n registerOnChange(fn: (value: D | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n // ── Validator ──\n\n private validatorOnChange: () => void = () => {};\n\n /** @internal */\n validate(control: AbstractControl): ValidationErrors | null {\n // Delegate to the shared calendar validator so a `tw-date-picker` reports\n // the same CalendarErrorCode set as `tw-calendar` and `tw-date-range-picker`\n // for the same constraint violation.\n const validator = calendarValidator<'single', D>({\n mode: 'single',\n // Carried explicitly rather than inferred from `control.value`: an\n // unparseable entry commits `null`, and `null` is perfectly valid for a\n // non-required control, so reading the value alone would report the field\n // valid while the UI shows an error — the exact bug this fixes.\n lastInvalidFormValue: this.unparseableText(),\n constraints: {\n minDate: this.minDate(),\n maxDate: this.maxDate(),\n dateFilter: this.dateFilter(),\n },\n adapter: this.adapter,\n });\n return validator(control) as CalendarValidationErrors | null;\n }\n\n /** @internal */\n registerOnValidatorChange(fn: () => void): void {\n this.validatorOnChange = fn;\n }\n\n // ── FormFieldControl methods ──\n\n /** @internal */\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set([...ids]);\n }\n\n /** @internal */\n onContainerClick(event: MouseEvent): void {\n if (this.isDisabled() || this.hasCustomTrigger()) return;\n // Don't steal focus when the user clicks the trigger button directly.\n const target = event.target as HTMLElement | null;\n const triggerEl = this.triggerRef()?.nativeElement;\n if (triggerEl && target && triggerEl.contains(target)) return;\n const inputEl = this.inputRef()?.nativeElement;\n if (inputEl && document.activeElement !== inputEl) {\n inputEl.focus();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;AA0BA;;;;;AAKG;MAsGU,0BAA0B,CAAA;AACpB,IAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;IAC5C,WAAW,GAAG,SAAS,CAAiC,UAAU;oFAAC;;;IAK3E,IAAI,GAAG,MAAM,CAAS,IAAI;6EAAC;;IAE3B,KAAK,GAAG,MAAM,CAAU,SAAS;8EAAC;;IAElC,OAAO,GAAG,MAAM,CAAW,IAAI;gFAAC;;IAEhC,OAAO,GAAG,MAAM,CAAW,IAAI;gFAAC;;IAEhC,UAAU,GAAG,MAAM,CAAyB,IAAI;mFAAC;;IAEjD,SAAS,GAAG,MAAM,CAAoB,KAAK;kFAAC;;IAE5C,OAAO,GAAG,MAAM,CAAW,IAAI;gFAAC;;IAEhC,YAAY,GAAG,MAAM,CAAW,IAAI;qFAAC;;IAErC,WAAW,GAAG,MAAM,CAAC,KAAK;oFAAC;;IAE3B,UAAU,GAAG,MAAM,CAAC,OAAO;mFAAC;;IAE5B,UAAU,GAAG,MAAM,CAAC,OAAO;mFAAC;;IAE5B,WAAW,GAAG,MAAM,CAAC,QAAQ;oFAAC;;IAE9B,UAAU,GAAG,MAAM,CAAC,OAAO;mFAAC;;IAE5B,QAAQ,GAAG,MAAM,CAAS,EAAE;iFAAC;;IAE7B,eAAe,GAAG,MAAM,CAAS,eAAe;wFAAC;;IAEjD,eAAe,GAAG,MAAM,CAAS,EAAE;wFAAC;;IAEpC,OAAO,GAAG,MAAM,CAAC,KAAK;gFAAC;;IAGvB,SAAS,GAAG,MAAM,CAAwB,IAAI;kFAAC;;IAE/C,YAAY,GAAG,MAAM,CAAqD,IAAI;qFAAC;;IAE/E,MAAM,GAAG,MAAM,CAAgB,IAAI;+EAAC;;IAEpC,OAAO,GAAG,MAAM,CAAiC,EAAE;gFAAC;;;IAKpD,QAAQ,GAAG,MAAM,CAAC,KAAK;iFAAC;;IAExB,UAAU,GAAG,MAAM,CAAmB,KAAK;mFAAC;;IAE5C,WAAW,GAAG,MAAM,CAAC,KAAK;oFAAC;;IAE3B,QAAQ,GAAG,MAAM,CAAC,CAAC;iFAAC;;IAEpB,UAAU,GAAG,MAAM,CAAC,CAAC;mFAAC;;IAEtB,UAAU,GAAG,MAAM,CAAC,CAAC;mFAAC;;IAEtB,OAAO,GAAG,MAAM,CAAW,IAAI;gFAAC;;IAEhC,OAAO,GAAG,MAAM,CAAW,IAAI;gFAAC;;;AAKhC,IAAA,gBAAgB,GAAG,MAAM,CAAoB,QAAO,CAAC;yFAAC;;AAEtD,IAAA,WAAW,GAAG,MAAM,CAA2B,QAAO,CAAC;oFAAC;;AAExD,IAAA,OAAO,GAAG,MAAM,CAAa,QAAO,CAAC;gFAAC;;AAEtC,IAAA,OAAO,GAAG,MAAM,CAAa,QAAO,CAAC;gFAAC;;AAEtC,IAAA,QAAQ,GAAG,MAAM,CAAa,QAAO,CAAC;iFAAC;;AAEvC,IAAA,OAAO,GAAG,MAAM,CAAa,QAAO,CAAC;gFAAC;;AAEtC,IAAA,cAAc,GAAG,MAAM,CAAwC,QAAO,CAAC;uFAAC;;;AAKxE,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACpC,MAAM,IAAI,GACR,kGAAkG;AACpG,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;AACrC,QAAA,OAAO,MAAM,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,GAAG,IAAI;IAC5C,CAAC;qFAAC;;;AAKF,IAAA,sBAAsB,CAAC,KAAc,EAAA;;;AAGnC,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE;AAC3C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE;AAC1B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK;YAAE;AACvF,QAAA,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAU,CAAC;IACrC;;AAGA,IAAA,YAAY,CAAC,KAA+B,EAAA;AAC1C,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc;YAAE;QACrC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;IACjC;;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,EAAE,EAAE;IAClB;;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,EAAE,EAAE;IAClB;;IAGA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,EAAE,EAAE;IACnB;;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,EAAE,EAAE;IAClB;;AAGA,IAAA,YAAY,CAAC,MAA2B,EAAA;AACtC,QAAA,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC;IAC/B;;IAGA,SAAS,CAAC,KAAa,EAAE,MAA2B,EAAA;QAClD,OAAO,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK;IAC3C;;AAGA,IAAA,cAAc,CAAC,MAA2B,EAAA;AACxC,QAAA,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,MAAM,CAAC,EAAE;IAC3D;;IAGS,cAAc,GAAG,MAAM,CAAqB,SAAS;uFAAC;;IAG/D,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,EAAE,EAAE,eAAe,EAAE;IACvC;;IAGA,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;IACtC;uGAhKW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,SAAA,EAjG1B,CAAC,8BAA8B,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAUnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqFT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAhGS,iBAAiB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAkGtD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBArGtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,CAAC;AAClE,oBAAA,SAAS,EAAE,CAAC,8BAA8B,EAAE,CAAC;AAC7C,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,gBAAgB;AAC3B,wBAAA,MAAM,EAAE,YAAY;AACpB,wBAAA,aAAa,EAAE,UAAU;AACzB,wBAAA,mBAAmB,EAAE,QAAQ;AAC7B,wBAAA,mBAAmB,EAAE,mBAAmB;AACxC,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,iBAAiB,EAAE,8BAA8B;AAClD,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqFT,EAAA,CAAA;AACF,iBAAA;yEAG0E,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACiBrF;AAEA,MAAM,kBAAkB,GAAG,EAAE,CAC3B;AACE,IAAA,KAAK,EAAE;AACL,QAAA,IAAI,EAAE,2IAA2I;AACjJ,QAAA,KAAK,EACH,6GAA6G;AAC/G,QAAA,aAAa,EACX,yQAAyQ;AAC3Q,QAAA,WAAW,EAAE,UAAU;;AAEvB,QAAA,WAAW,EACT,gRAAgR;AACnR,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE;AACF,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,aAAa,EAAE,QAAQ;;AAEvB,gBAAA,WAAW,EAAE,UAAU;AACxB,aAAA;AACD,YAAA,EAAE,EAAE;AACF,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,aAAa,EAAE,QAAQ;AACvB,gBAAA,WAAW,EAAE,QAAQ;AACtB,aAAA;AACD,YAAA,EAAE,EAAE;AACF,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,aAAa,EAAE,QAAQ;AACvB,gBAAA,WAAW,EAAE,QAAQ;AACtB,aAAA;AACD,YAAA,EAAE,EAAE;AACF,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,aAAa,EAAE,QAAQ;AACvB,gBAAA,WAAW,EAAE,QAAQ;AACtB,aAAA;AACD,YAAA,EAAE,EAAE;AACF,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,KAAK,EAAE,WAAW;;AAElB,gBAAA,aAAa,EAAE,SAAS;AACxB,gBAAA,WAAW,EAAE,QAAQ;AACtB,aAAA;AACF,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,iFAAiF;AACxF,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,oEAAoE;AAC3E,aAAA;AACF,SAAA;AACD,QAAA,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,0BAA0B,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;AACxE,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,EAAE,IAAI,EAAE,mDAAmD,EAAE;AACnE,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;QACD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAChC,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;AACnC,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE;AAC9F,QAAA,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE;AAClG,QAAA,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE;AAC5F,QAAA,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE;AAChG,QAAA,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE;AACxF,QAAA,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE;AAC9F,QAAA,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE;AAC9F,QAAA,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE;;AAE1F,QAAA,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE;AAC9E,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB;AAED;AAEA,IAAI,gBAAgB,GAAG,CAAC;AAExB;AAEA,MAAM,sBAAsB,GAAG;AAC7B,IAAA,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAgC;CAClG;AAED;;;;;;;;AAQG;AA8HG,MAAO,mBACX,SAAQ,gBAAmB,CAAA;;;IAMlB,OAAO,GAAG,KAAK,CAAqB,SAAS,+EAAI,KAAK,EAAE,IAAI,EAAA,CAAG;;IAG/D,OAAO,GAAG,KAAK,CAAW,IAAI;gFAAC;;IAG/B,OAAO,GAAG,KAAK,CAAW,IAAI;gFAAC;;IAG/B,UAAU,GAAG,KAAK,CAAyB,IAAI;mFAAC;;IAGhD,SAAS,GAAG,KAAK,CAAoB,KAAK;kFAAC;;IAG3C,OAAO,GAAG,KAAK,CAAW,IAAI;gFAAC;;IAG/B,MAAM,GAAG,KAAK,CAAU,sBAAsB;+EAAC;;IAG/C,WAAW,GAAG,KAAK,CAAsB,SAAS;oFAAC;;IAGnD,WAAW,GAAG,KAAK,CAAqB,SAAS;oFAAC;;AAGlD,IAAA,aAAa,GAAG,KAAK,CAAmB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EACpD,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;;AAGO,IAAA,aAAa,GAAG,KAAK,CAAmB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EACpD,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;;AAGO,IAAA,aAAa,GAAG,KAAK,CAAmB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EACpD,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;;IAGO,IAAI,GAAG,KAAK,CAAS,IAAI;6EAAC;;IAG1B,KAAK,GAAG,KAAK,CAAU,SAAS;8EAAC;;IAGjC,OAAO,GAAG,KAAK,CAAgC,SAAS;gFAAC;;;IAIzD,SAAS,GAAG,KAAK,CAAU,IAAI;kFAAC;;IAGhC,WAAW,GAAG,KAAK,CAAU,KAAK;oFAAC;;IAGnC,UAAU,GAAG,KAAK,CAAS,OAAO;mFAAC;;IAGnC,UAAU,GAAG,KAAK,CAAS,OAAO;mFAAC;;IAGnC,WAAW,GAAG,KAAK,CAAS,QAAQ;oFAAC;;IAGrC,UAAU,GAAG,KAAK,CAAS,OAAO;mFAAC;;IAGnC,WAAW,GAAG,KAAK,CAAU,KAAK;oFAAC;;IAGnC,UAAU,GAAG,KAAK,CAA6B,EAAE;mFAAC;;IAGlD,cAAc,GAAG,KAAK,CAAmC,YAAY;uFAAC;;IAGtE,MAAM,GAAG,KAAK,CAAS,CAAC;+EAAC;;IAGzB,gBAAgB,GAAG,KAAK,CAAS,eAAe;yFAAC;AAE1D;;;;AAIG;IACM,UAAU,GAAG,KAAK,CAAiC,IAAI;mFAAC;;IAGxD,MAAM,GAAG,KAAK,CAAgB,IAAI;+EAAC;;IAGnC,SAAS,GAAG,KAAK,CAAwB,IAAI;kFAAC;;IAG9C,YAAY,GAAG,KAAK,CAAqD,IAAI;qFAAC;;IAG9E,OAAO,GAAG,KAAK,CAAiC,EAAE;gFAAC;;IAGnD,iBAAiB,GAAG,KAAK,CAAgC,SAAS;0FAAC;;IAGnE,SAAS,GAAG,KAAK,CAAqB,SAAS,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;;IAGzE,cAAc,GAAG,KAAK,CAAqB,SAAS,sFAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;;IAGnF,wBAAwB,GAAG,KAAK,CAAqB,SAAS,gGACrE,KAAK,EAAE,kBAAkB,EAAA,CACzB;;;IAKO,KAAK,GAAG,KAAK,CAAW,IAAI;8EAAC;;IAG7B,IAAI,GAAG,KAAK,CAAC,KAAK;6EAAC;;;IAKnB,MAAM,GAAG,MAAM,EAAyB;;IAGxC,MAAM,GAAG,MAAM,EAAyB;;IAGxC,SAAS,GAAG,MAAM,EAA2B;;IAG7C,UAAU,GAAG,MAAM,EAA4B;;IAG/C,cAAc,GAAG,MAAM,EAAuB;;AAItC,IAAA,OAAO,GAAG,MAAM,CAAiB,YAAY,CAAC;AAC9C,IAAA,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;AAChC,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,WAAW,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAC9C,IAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;AAC5C,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,SAAS,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;;;;;IAM9D,SAAS,GAAqB,IAAI;IACzB,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,eAAe,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAChE,IAAA,cAAc,GAAG,MAAM,CAAC,sBAAsB,CAAC;;AAI/C,IAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAA+B,WAAW;iFAAC;IACxE,UAAU,GAAG,SAAS,CAAgC,YAAY;mFAAC;;IAG3E,gBAAgB,GAAG,MAAM,CAAC,KAAK;yFAAC;;IAIxB,GAAG,GAAG,gBAAgB,EAAE;;AAEhC,IAAA,MAAM,GAAG,CAAA,eAAA,EAAkB,IAAI,CAAC,GAAG,EAAE;;AAErC,IAAA,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,SAAS;;;IAKlC,aAAa,GAAG,YAAY,CAAW,MAAM,IAAI,CAAC,KAAK,EAAE;sFAAC;;IAE1D,YAAY,GAAG,MAAM,CAAS,EAAE;qFAAC;AAC1C;;;;;;;;;AASG;IACc,eAAe,GAAG,MAAM,CAAgB,IAAI;wFAAC;;IAGrD,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI;mFAAC;AACrE;;;;;;;;;;AAUG;AACM,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE;QAC9B,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACzC,CAAC;mFAAC;;IAEO,aAAa,GAAG,MAAM,CAAC,KAAK;sFAAC;IAErB,WAAW,GAAG,MAAM,CAAC,KAAK;oFAAC;IAC3B,oBAAoB,GAAG,MAAM,CAAoB,EAAE;6FAAC;IACpD,aAAa,GAAG,MAAM,CAAC,KAAK;sFAAC;IAC7B,mBAAmB,GAAG,MAAM,CAAW,IAAI;4FAAC;IAC5C,oBAAoB,GAAG,MAAM,CAAW,IAAI;6FAAC;IAC7C,oBAAoB,GAAG,MAAM,CAAqB,SAAS;6FAAC;IAC5D,aAAa,GAAG,MAAM,CAAC,CAAC;sFAAC;IACzB,cAAc,GAAG,MAAM,CAAC,CAAC;uFAAC;AAEnC,IAAA,QAAQ,GAA8B,MAAK,EAAE,CAAC;AAC9C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAEvB,qBAAqB,GAAG,MAAM,CAAuC,IAAI;8FAAC;IACnF,aAAa,GAAuB,IAAI;AAEhD,IAAA,IAAY,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,qBAAqB,EAAE;IACrC;;;AAKS,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAClC,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ;IACjF,CAAC;mFAAC;;IAGO,eAAe,GAAG,QAAQ,CACjC,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;wFAC/D;;AAGQ,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gFAAC;;IAG/E,QAAQ,GAAG,QAAQ,CAAU,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI;iFAAC;;AAG9D,IAAA,mBAAmB,GAAG,QAAQ,CAA4G,MAAK;AACtJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;QAC7B,OAAO;AACL,YAAA,MAAM,EAAE,GAAG,EAAE,MAAM,IAAI,KAAK;AAC5B,YAAA,WAAW,EAAE,GAAG,EAAE,WAAW,IAAI,KAAK;AACtC,YAAA,QAAQ,EAAE,GAAG,EAAE,QAAQ,IAAI,CAAC;AAC5B,YAAA,UAAU,EAAE,GAAG,EAAE,UAAU,IAAI,CAAC;AAChC,YAAA,UAAU,EAAE,GAAG,EAAE,UAAU,IAAI,CAAC;AAChC,YAAA,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,IAAI;AAC7B,YAAA,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,IAAI;SAC9B;IACH,CAAC;4FAAC;;AAGO,IAAA,eAAe,GAAG,QAAQ,CAAU,MAAK;AAChD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,sBAAsB;AAAE,YAAA,OAAO,GAAG;AAClE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACvC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,KAAK;AACpC,QAAA,MAAM,IAAI,GAA+B;AACvC,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;YACjB,MAAM;SACP;QACD,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS;AAC7C,QAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE;IACjC,CAAC;wFAAC;;AAGO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACzC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,wBAAwB,EAAE;AAC5C,QAAA,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;QACzB,IAAI,IAAI,EAAE;YACR,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAClC,gBAAA,IAAI,EAAE;AAAE,oBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB;QACF;AACA,QAAA,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;IAC9C,CAAC;oFAAC;;AAIe,IAAA,aAAa,GAAG,QAAQ,CAAC,MACxC,kBAAkB,CAAC;AACjB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE;AAC/B,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE;AAC3B,QAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAA,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE;AAC7B,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;KACpB,CAAC;sFACH;;AAGQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE;oFAAC;;AAEzD,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE;qFAAC;;AAE3D,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE;6FAAC;;AAE3E,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;2FAAC;;AAEvE,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;2FAAC;;;AAKvE,IAAA,EAAE,GAAmB,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM;2EAAC;;AAElE,IAAA,OAAO,GAAoB,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;;AAE1D,IAAA,KAAK,GAAoB,IAAI,CAAC,OAAO;;AAErC,IAAA,QAAQ,GAAoB,IAAI,CAAC,UAAU;;AAE3C,IAAA,QAAQ,GAAoB,QAAQ,CAAC,MAAK;QACjD,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,IAAI,CAAC,aAAa,EAAE;AAAE,YAAA,OAAO,IAAI;AACrC,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;IACrE,CAAC;iFAAC;;AAGO,IAAA,UAAU,GAAoB,QAAQ,CAAC,MAAK;QACnD,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,IAAI;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,cAAc;AAC/D,QAAA,MAAM,IAAI,GACP,IAAI,CAAC,eAA0C;YAC/C,IAAI,CAAC,UAAqC;AAC7C,QAAA,OAAO,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC;IACpE,CAAC;mFAAC;;IAGO,WAAW,GAAG,aAAa;;IAE3B,mBAAmB,GAA+B,QAAQ,CAAC,MAClE,IAAI,CAAC,wBAAwB,EAAE;4FAChC;;AAID,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;;;;;;;QAQP,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,UAAU,EAAE;YACjB,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3C,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE;YAClC,SAAS,CAAC,MAAK;;;;;;;;gBAQb,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI;oBAAE;gBAEnD,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC;AAC7D,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9B,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE;AAC9B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,YAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;AACpC,gBAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;gBACjC;YACF;AACA,YAAA,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;gBAC7E,IAAI,CAAC,WAAW,EAAE;YACpB;AAAO,iBAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACvE,gBAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;YACnC;AACF,QAAA,CAAC,CAAC;;;;QAKF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe;AACrC,YAAA,IAAI,CAAC,QAAQ;gBAAE;AACf,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACvC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI;AAC9D,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAChD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,EAAE;AACrD,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAChD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE;YAClD,SAAS,CAAC,MAAK;AACb,gBAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,gBAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,gBAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7B,gBAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7B,gBAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AACnC,gBAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AACjC,gBAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7B,gBAAA,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AACvC,gBAAA,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;AACrC,gBAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AACnC,gBAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AACnC,gBAAA,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;AACrC,gBAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;gBACnC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpC,gBAAA,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC;AAC7C,gBAAA,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC;AAC7C,gBAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC/B,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;gBACpC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;gBAC1C,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACpC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;gBACxC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;gBACxC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;gBAClC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,gBAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3B,gBAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AACjC,gBAAA,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AACvC,gBAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7B,gBAAA,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC;AAC7C,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;;;;QAKF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,IAAI,MAAM,KAAK,IAAI;gBAAE;AACrB,YAAA,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACjD,QAAA,CAAC,CAAC;;QAGF,eAAe,CAAC,MAAK;AACnB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;;;AAG1C,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE;AAC1C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;YACjC;YAEA,IAAI,CAAC,SAAS,EAAE;gBAAE;AAClB,YAAA,MAAM,QAAQ,GACZ,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE;AACvB,gBAAA,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;YAC9B,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,OAAO,CAAC,IAAI,CACV,8JAA8J,CAC/J;YACH;AACF,QAAA,CAAC,CAAC;;AAGF,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC;AACrB,aAAA,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI;AAC7B,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;YACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AAChC,YAAA,IAAI,UAAU,IAAI,CAAC,MAAM,EAAE;gBACzB,IAAI,CAAC,SAAS,EAAE;AAChB,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC;AACF,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAC7B,UAAU,CAAC,WAAW,EAAE;YACxB,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;;;AAGjD,YAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;AACtC,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;;;;;QAKN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;;AAGnF,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEvC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO;QACpC,IAAI,IAAI,EAAE;YACR,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAC5D,CAAC,CAAC,KAAiC,CAAC,CAAC,CAAC,CACvC;AACD,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;gBAClB,KAAK,CAAC,GAAG,OAAO;AACb,qBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;qBACxC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,QAAQ;QAC1E,IAAI,MAAM,EAAE;YACV;AACG,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;iBACxC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9D;IACF;;;IAKA,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACrB;;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;;IAGA,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,WAAW,EAAE;;YAC9B,IAAI,CAAC,UAAU,EAAE;IACxB;;IAGA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;IAC5B;;;AAKA,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;;QAE9B,IAAI,MAAM,GAAa,IAAI;AAC3B,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE;AAClB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACjE,YAAA,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;gBAC7E,MAAM,GAAG,SAAS;YACpB;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAClD;;IAGA,WAAW,GAAA;QACT,IAAI,CAAC,eAAe,EAAE;IACxB;;IAGA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACrE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa;YAClD,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;;AAGA,IAAA,cAAc,CAAC,KAAoB,EAAA;QACjC,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;QAErB,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,KAAK,WAAW,EAAE;YACvC,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa;YAClD,IAAI,CAAC,UAAU,EAAE;YACjB;QACF;QACA,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,KAAK,SAAS,EAAE;AACrC,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBACf,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,gBAAgB,IAAI,CAAC;YACjD;YACA;QACF;QAEA,QAAQ,GAAG;AACT,YAAA,KAAK,OAAO;gBACV,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,eAAe,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC7B;gBACA;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;oBACf,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,gBAAgB,IAAI,CAAC;gBACjD;gBACA;AACF,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;;AAEf,oBAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;gBACnC;gBACA;AACF,YAAA;gBACE;;IAEN;;AAGA,IAAA,YAAY,CAAC,KAAiB,EAAA;QAC5B,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,KAAK,EAAE;IACd;;IAGA,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,IAAI,OAAO;AAAE,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa;QACvD,IAAI,CAAC,MAAM,EAAE;IACf;;AAGA,IAAA,gBAAgB,CAAC,KAAoB,EAAA;QACnC,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE;YAC1E,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,YAAA,IAAI,OAAO;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa;AACvD,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,IAAI,CAAC,UAAU,EAAE;QACrC;aAAO,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YAChD,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,gBAAgB,IAAI,CAAC;QACjD;IACF;;AAGA,IAAA,oBAAoB,CAAC,KAAiB,EAAA;QACpC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;;AAEnD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,aAAmC;AACxD,QAAA,IAAI,MAAM;AAAE,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM;QACvC,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,MAAM,EAAE;IACf;;AAGA,IAAA,sBAAsB,CAAC,KAAoB,EAAA;QACzC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACnD,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE;YAC1E,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,aAAmC;AACxD,YAAA,IAAI,MAAM;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,MAAM;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,IAAI,CAAC,UAAU,EAAE;QACrC;aAAO,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YAChD,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,gBAAgB,IAAI,CAAC;QACjD;IACF;;IAIQ,eAAe,GAAA;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE;QACtC,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AAC3E,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;YAC5B;iBAAO;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;YAChC;YACA,IAAI,CAAC,iBAAiB,EAAE;YACxB;QACF;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1D,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;;;;;;;;;;;;;;;;AAgB5C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;AACrC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACnB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YAC/E;QACF;QACA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;;;;;AAK3B,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,iBAAiB,EAAE;YACxB;QACF;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;QAC5B,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,MAAM,CAAC,IAAc,EAAE,MAA8B,EAAA;AAC3D,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACtF,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;QAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa;AACxC,QAAA,IAAI,EAAE,CAAC,KAAK,KAAK,OAAO;AAAE,YAAA,EAAE,CAAC,KAAK,GAAG,OAAO;AAE5C,QAAA,IAAI,MAAM,KAAK,cAAc,EAAE;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACnB,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;gBACjB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC;YACvD;iBAAO;gBACL,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA,EAAG,OAAO,CAAA,SAAA,CAAW,EAAE,QAAQ,CAAC;YAC9D;QACF;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACxE;AAEQ,IAAA,SAAS,CAAC,CAAI,EAAA;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,KAAK;AACzD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,KAAK;AACzD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,QAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK;AAC3D,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,aAAa,CAAC,CAAI,EAAA;AACxB,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACjE,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,IAAI;AAC7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;QAC5B,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjG,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC/B,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACzG,IAAI,KAAK,GAAG,OAAO;AAAE,gBAAA,OAAO,KAAK;QACnC;QACA,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC/B,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACzG,IAAI,KAAK,GAAG,OAAO;AAAE,gBAAA,OAAO,KAAK;QACnC;AACA,QAAA,OAAO,IAAI;IACb;;IAIQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAChD;QACA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAClD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAEnD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAgC;YAClE,MAAM,EAAE,IAAI,CAAC,UAAU;AACvB,YAAA,eAAe,EAAE,0BAEiB;YAClC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClD,cAAc,EAAE,2BAA2B,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC;AACvF,YAAA,UAAU,EAAE,sBAAsB;AACnC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;AAChC,QAAA,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACvE,QAAA,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1D,QAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AACjD,QAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAChD,QAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAClD,QAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAChD,QAAA,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACnE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC;;;;AAKxC,QAAA,IAAI,CAAC;AACF,aAAA,cAAc;aACd,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAEjD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC7C,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,gBAAgB,IAAI,CAAC;AACjD,QAAA,CAAC,CAAC;;;AAIF,QAAA,IAAI,CAAC;AACF,aAAA,OAAO;aACP,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;QAEhF,cAAc,CAAC,MAAK;AAClB,YAAA,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE;AACvC,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,YAAY,CAAC,MAA6B,EAAE,OAAO,GAAG,KAAK,EAAA;QACjE,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE;AACnD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAEtC,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC3C,YAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE;;AAErC,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChC,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACxB,MAAM,OAAO,GAAG,QAAQ,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AAC9F,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9B,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;YAChC;QACF;;;AAIA,QAAA,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE;AAEzD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAK;AAC1B,YAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,YAAA,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,CAAC,CAAC;IACJ;;AAIQ,IAAA,mBAAmB,CAAC,IAAO,EAAA;AACjC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;;;QAGnE,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC;YACvC;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;IAC7B;;AAGQ,IAAA,WAAW,CAAC,IAAc,EAAA;AAChC,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;YAC/B;YACA;QACF;AACA,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;QAC/B;IACF;IAEQ,cAAc,GAAA;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE;AAC5B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK;AACrE,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC;IACzC;;AAGQ,IAAA,cAAc,CAAC,MAAS,EAAA;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;AAClE,QAAA,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AAAE,YAAA,OAAO,MAAM;AACnE,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAC1B,MAAM,EACN,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC7B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAChC;IACH;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;IAC5B;IAEQ,cAAc,GAAA;QACpB,IAAI,CAAC,YAAY,CAAC,QAAQ,gBAAgB,IAAI,CAAC;IACjD;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAC3C,QAAA,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YAChD,IAAI,CAAC,YAAY,CAAC,QAAQ,gBAAgB,IAAI,CAAC;YAC/C;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;IAC5B;AAEQ,IAAA,aAAa,CAAC,MAA2B,EAAA;AAC/C,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE;QAC1D,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;YACnC;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;IAC7B;;IAIQ,sBAAsB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,eAAe;IAC5C;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAI,GAAc;IAC7D;;IAGQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC,aAAa;AACzC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAuB;AAC3E,QAAA,IAAI,MAAM;AAAE,YAAA,OAAO,MAAM;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa;IACtC;;AAIA,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;AACzD,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,gBAAA,MAAM,EAAE,cAAc;AACvB,aAAA,CAAC;YACF;QACF;QACA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;AAC/C,QAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;YAC9B;QACF;QACA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAClC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpC;QACF;AACA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAC3F;AAEA,IAAA,gBAAgB,CAAC,EAA6B,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;IAClC;;AAIQ,IAAA,iBAAiB,GAAe,MAAK,EAAE,CAAC;;AAGhD,IAAA,QAAQ,CAAC,OAAwB,EAAA;;;;QAI/B,MAAM,SAAS,GAAG,iBAAiB,CAAc;AAC/C,YAAA,IAAI,EAAE,QAAQ;;;;;AAKd,YAAA,oBAAoB,EAAE,IAAI,CAAC,eAAe,EAAE;AAC5C,YAAA,WAAW,EAAE;AACX,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,aAAA;YACD,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,SAAA,CAAC;AACF,QAAA,OAAO,SAAS,CAAC,OAAO,CAAoC;IAC9D;;AAGA,IAAA,yBAAyB,CAAC,EAAc,EAAA;AACtC,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;IAC7B;;;AAKA,IAAA,iBAAiB,CAAC,GAAa,EAAA;QAC7B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACzC;;AAGA,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAChC,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAAE;;AAElD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa;QAClD,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa;QAC9C,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,KAAK,OAAO,EAAE;YACjD,OAAO,CAAC,KAAK,EAAE;QACjB;IACF;uGAzlCW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EA1HnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AACnD,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;;;;;;;;;;AAUD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;YACD,wBAAwB;SACzB,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2FT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA7H/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AACnD,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;;;;;;;;;;AAUD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;wBACD,wBAAwB;AACzB,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2FT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA;AACF,iBAAA;AAiL8E,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,WAAW,oEACjB,YAAY,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC/jBrF;;AAEG;;;;"}
1
+ {"version":3,"file":"cdevhub-ngx-tw-date-picker.mjs","sources":["../../../projects/ngx-tw/date-picker/date-picker-overlay.ts","../../../projects/ngx-tw/date-picker/date-picker.ts","../../../projects/ngx-tw/date-picker/cdevhub-ngx-tw-date-picker.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n signal,\n type TemplateRef,\n viewChild,\n} from '@angular/core';\nimport type { TimePickerFormat, TwColor, TwSize } from '@cdevhub/ngx-tw/core';\nimport {\n CalendarComponent,\n provideSingleSelectionStrategy,\n type CalendarCell,\n type CalendarViewState,\n type DateClassFn,\n type DateFilterFn,\n} from '@cdevhub/ngx-tw/calendar';\nimport { ButtonDirective } from '@cdevhub/ngx-tw/button';\nimport {\n TimePickerComponent,\n type TimePickerChangeEvent,\n} from '@cdevhub/ngx-tw/time-picker';\nimport type { DatePickerPreset } from './date-picker';\n\n/**\n * Internal overlay panel for `tw-date-picker`. Hosts the calendar and, when\n * the parent enables `showActions`, the action bar. Receives configuration\n * and interaction callbacks via signal-backed fields set from the outer\n * component. Not exported from the public API.\n */\n@Component({\n selector: 'tw-date-picker-overlay',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CalendarComponent, TimePickerComponent, ButtonDirective],\n providers: [provideSingleSelectionStrategy()],\n host: {\n '[class]': 'panelClasses()',\n '[id]': 'dialogId()',\n '[attr.role]': '\"dialog\"',\n '[attr.aria-modal]': '\"true\"',\n '[attr.aria-label]': 'dialogAriaLabel()',\n '[animate.enter]': '\"scale-in\"',\n '[animate.leave]': 'leaving() ? \"scale-out\" : \"\"',\n },\n template: `\n @if (presets().length) {\n <div\n class=\"flex flex-col gap-1 p-2 border-b border-border bg-surface-muted\"\n role=\"listbox\"\n aria-label=\"Preset dates\"\n >\n @for (preset of presets(); track presetKey($index, preset)) {\n <button\n twButton\n variant=\"ghost\"\n size=\"sm\"\n type=\"button\"\n role=\"option\"\n class=\"w-full justify-start\"\n [attr.aria-selected]=\"isActivePreset(preset) ? 'true' : 'false'\"\n (click)=\"handlePreset(preset)\"\n >\n {{ preset.label }}\n </button>\n }\n </div>\n }\n\n <tw-calendar\n #calendar\n class=\"!block !rounded-none !border-0 !bg-transparent !p-2\"\n [bordered]=\"false\"\n [value]=\"pendingValue()\"\n [startAt]=\"startAt()\"\n [startView]=\"startView()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [dateFilter]=\"dateFilter()\"\n [dateClass]=\"dateClass()\"\n [cellTemplate]=\"cellTemplate()\"\n [locale]=\"locale()\"\n aria-label=\"Calendar\"\n (valueChange)=\"onCalendarDateSelected($event)\"\n />\n\n @if (withTime()) {\n <div class=\"border-t border-border px-3 py-2 flex items-center justify-center\">\n <tw-time-picker\n variant=\"naked\"\n [value]=\"pendingValue()\"\n [size]=\"size()\"\n [color]=\"color()\"\n [format]=\"timeFormat()\"\n [showSeconds]=\"showSeconds()\"\n [hourStep]=\"hourStep()\"\n [minuteStep]=\"minuteStep()\"\n [secondStep]=\"secondStep()\"\n [minTime]=\"minTime()\"\n [maxTime]=\"maxTime()\"\n [showClear]=\"false\"\n [referenceDate]=\"pendingValue() ?? startAt() ?? null\"\n aria-label=\"Time\"\n (timeChange)=\"onTimeChange($event)\"\n />\n </div>\n }\n\n @if (showActions()) {\n <div class=\"border-t border-border flex items-center justify-between gap-2 px-3 py-2\">\n <div class=\"flex items-center gap-2\">\n <button twButton variant=\"ghost\" size=\"sm\" type=\"button\" (click)=\"handleToday()\">\n {{ todayLabel() }}\n </button>\n @if (pendingValue() !== null) {\n <button twButton variant=\"ghost\" size=\"sm\" type=\"button\" (click)=\"handleClear()\">\n {{ clearLabel() }}\n </button>\n }\n </div>\n <div class=\"flex items-center gap-2\">\n <button twButton variant=\"ghost\" size=\"sm\" type=\"button\" (click)=\"handleCancel()\">\n {{ cancelLabel() }}\n </button>\n <button twButton variant=\"solid\" size=\"sm\" type=\"button\" (click)=\"handleApply()\">\n {{ applyLabel() }}\n </button>\n </div>\n </div>\n }\n `,\n})\nexport class DatePickerOverlayComponent<D = unknown> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly calendarRef = viewChild<CalendarComponent<'single', D>>('calendar');\n\n // ── Config signals set by the parent component ──\n\n /** @internal */\n readonly size = signal<TwSize>('md');\n /** @internal */\n readonly color = signal<TwColor>('primary');\n /** @internal */\n readonly minDate = signal<D | null>(null);\n /** @internal */\n readonly maxDate = signal<D | null>(null);\n /** @internal */\n readonly dateFilter = signal<DateFilterFn<D> | null>(null);\n /** @internal */\n readonly startView = signal<CalendarViewState>('day');\n /** @internal */\n readonly startAt = signal<D | null>(null);\n /** @internal Current committed-or-pending value shown as selected in the calendar. */\n readonly pendingValue = signal<D | null>(null);\n /** @internal */\n readonly showActions = signal(false);\n /** @internal */\n readonly todayLabel = signal('Today');\n /** @internal */\n readonly clearLabel = signal('Clear');\n /** @internal */\n readonly cancelLabel = signal('Cancel');\n /** @internal */\n readonly applyLabel = signal('Apply');\n /** @internal */\n readonly dialogId = signal<string>('');\n /** @internal */\n readonly dialogAriaLabel = signal<string>('Choose a date');\n /** @internal */\n readonly panelClassValue = signal<string>('');\n /** @internal */\n readonly leaving = signal(false);\n\n /** @internal Forwarded to the calendar — per-cell CSS classes. */\n readonly dateClass = signal<DateClassFn<D> | null>(null);\n /** @internal Forwarded to the calendar — cell-content template. */\n readonly cellTemplate = signal<TemplateRef<{ $implicit: CalendarCell<D> }> | null>(null);\n /** @internal Forwarded to the calendar — per-instance locale override. */\n readonly locale = signal<string | null>(null);\n /** @internal Quick-select presets rendered above the calendar. */\n readonly presets = signal<readonly DatePickerPreset<D>[]>([]);\n\n // ── Time-picker config ──\n\n /** @internal */\n readonly withTime = signal(false);\n /** @internal */\n readonly timeFormat = signal<TimePickerFormat>('24h');\n /** @internal */\n readonly showSeconds = signal(false);\n /** @internal */\n readonly hourStep = signal(1);\n /** @internal */\n readonly minuteStep = signal(1);\n /** @internal */\n readonly secondStep = signal(1);\n /** @internal */\n readonly minTime = signal<D | null>(null);\n /** @internal */\n readonly maxTime = signal<D | null>(null);\n\n // ── Callbacks set by the parent component ──\n\n /** @internal */\n readonly onCalendarSelect = signal<(date: D) => void>(() => {});\n /** @internal Fires whenever the embedded time-picker commits a new time. */\n readonly onTimeInput = signal<(date: D | null) => void>(() => {});\n /** @internal */\n readonly onToday = signal<() => void>(() => {});\n /** @internal */\n readonly onClear = signal<() => void>(() => {});\n /** @internal */\n readonly onCancel = signal<() => void>(() => {});\n /** @internal */\n readonly onApply = signal<() => void>(() => {});\n /** @internal */\n readonly onPresetSelect = signal<(preset: DatePickerPreset<D>) => void>(() => {});\n\n // ── Classes ──\n\n /** @internal */\n readonly panelClasses = computed(() => {\n const base =\n 'block bg-surface-overlay border border-border rounded-lg shadow-md overflow-hidden flex flex-col';\n const custom = this.panelClassValue();\n return custom ? `${base} ${custom}` : base;\n });\n\n // ── Template callbacks ──\n\n /** @internal */\n onCalendarDateSelected(value: unknown): void {\n // Single-mode strategy emits a scalar `D`. Guard against the wider calendar\n // output type for safety.\n if (value === null || value === undefined) return;\n if (Array.isArray(value)) return;\n if (typeof value === 'object' && value !== null && 'start' in value && 'end' in value) return;\n this.onCalendarSelect()(value as D);\n }\n\n /** @internal */\n onTimeChange(event: TimePickerChangeEvent<D>): void {\n if (event.source === 'programmatic') return;\n this.onTimeInput()(event.value);\n }\n\n /** @internal */\n handleToday(): void {\n this.onToday()();\n }\n\n /** @internal */\n handleClear(): void {\n this.onClear()();\n }\n\n /** @internal */\n handleCancel(): void {\n this.onCancel()();\n }\n\n /** @internal */\n handleApply(): void {\n this.onApply()();\n }\n\n /** @internal */\n handlePreset(preset: DatePickerPreset<D>): void {\n this.onPresetSelect()(preset);\n }\n\n /** @internal */\n presetKey(index: number, preset: DatePickerPreset<D>): string | number {\n return preset.id ?? preset.label ?? index;\n }\n\n /** @internal */\n isActivePreset(preset: DatePickerPreset<D>): boolean {\n return !!preset.id && this.activePresetId() === preset.id;\n }\n\n /** @internal Tracks the most recently picked preset for visual state. Set by the parent. */\n readonly activePresetId = signal<string | undefined>(undefined);\n\n /** @internal Moves focus to the active calendar cell. Called by the parent after open. */\n focusCalendar(): void {\n this.calendarRef()?.focusActiveCell();\n }\n\n /** @internal Exposes the root overlay element for tests. */\n getElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n model,\n type OnInit,\n output,\n signal,\n type Signal,\n type TemplateRef,\n untracked,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgControl,\n type ValidationErrors,\n type Validator,\n} from '@angular/forms';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { FocusMonitor, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { tv } from 'tailwind-variants';\nimport {\n buildSelectLikePositions,\n type ErrorStateMatcher,\n PickerOverlayCoordinator,\n resolveSelectScrollStrategy,\n type TimePickerFormat,\n timeOfDaySeconds,\n type TwColor,\n type TwSize,\n wireErrorState,\n} from '@cdevhub/ngx-tw/core';\nimport {\n FormFieldControl,\n TW_FORM_FIELD,\n TW_FORM_FIELD_CONTROL,\n} from '@cdevhub/ngx-tw/form-field';\nimport { calendarValidator, DATE_ADAPTER, type DateAdapter } from '@cdevhub/ngx-tw/calendar';\nimport type {\n CalendarCell,\n CalendarValidationErrors,\n CalendarViewState,\n DateClassFn,\n DateFilterFn,\n} from '@cdevhub/ngx-tw/calendar';\nimport { DatePickerOverlayComponent } from './date-picker-overlay';\n\n// ── Public types ──────────────────────────────────────────────────\n\n/** Visual style of the date-picker trigger. */\nexport type DatePickerVariant = 'default' | 'naked';\n\n/** Origin of a value change, used to distinguish user input from programmatic writes. */\nexport type DatePickerChangeSource =\n | 'input'\n | 'calendar'\n | 'apply'\n | 'clear'\n | 'today'\n | 'programmatic';\n\n/** Reason the overlay closed. */\nexport type DatePickerCloseReason =\n | 'select'\n | 'apply'\n | 'cancel'\n | 'escape'\n | 'backdrop'\n | 'programmatic';\n\n/** Emitted by `dateInput`. */\nexport interface DatePickerInputEvent<D> {\n /** The raw string currently in the input (pre-parse). */\n readonly rawText: string;\n /** The parsed value if parsing succeeded and it's in range; otherwise `null`. */\n readonly parsed: D | null;\n /** The input element itself. */\n readonly target: HTMLInputElement;\n}\n\n/** Emitted by `dateChange`. */\nexport interface DatePickerChangeEvent<D> {\n /** The committed value (`null` when cleared). */\n readonly value: D | null;\n /** The value before this change. */\n readonly previousValue: D | null;\n /** What triggered the change. */\n readonly source: DatePickerChangeSource;\n}\n\n/** Emitted by `opened` and `closed`. */\nexport interface DatePickerOpenedEvent {\n /** The trigger (input) element. */\n readonly trigger: HTMLElement;\n}\n\n/** A quick-select preset rendered above the calendar in the overlay. Mirrors `DateRangePreset`. */\nexport interface DatePickerPreset<D = Date> {\n /** Label shown on the preset button. */\n readonly label: string;\n /** Factory returning the date to apply when this preset is chosen. Called fresh each click so \"today\"-relative presets stay current. */\n readonly date: () => D;\n /** Optional identifier — surfaced in `presetSelected` and used to detect the active preset for visual state. */\n readonly id?: string;\n}\n\n/** Bundle of time-of-day configuration forwarded to the embedded `<tw-time-picker>`. Passing a non-null object turns the time-picker on and forwards each field; pass `{}` to enable with all defaults. */\nexport interface DatePickerTimeConfig<D = Date> {\n /** Clock format. Defaults to `'24h'`. */\n readonly format?: TimePickerFormat;\n /** Whether to expose a seconds field. Defaults to `false`. */\n readonly showSeconds?: boolean;\n /** Hour step. Defaults to `1`. */\n readonly hourStep?: number;\n /** Minute step. Defaults to `1`. */\n readonly minuteStep?: number;\n /** Second step. Defaults to `1`. */\n readonly secondStep?: number;\n /** Earliest accepted time-of-day. Values earlier than this set `errorState`. */\n readonly minTime?: D | null;\n /** Latest accepted time-of-day. Values later than this set `errorState`. */\n readonly maxTime?: D | null;\n}\n\n/** Re-exported from `ngx-tw/calendar` for consumers importing only the date-picker. */\nexport type { CalendarViewState, DateFilterFn, DateClassFn };\n\n/** Re-exported from `ngx-tw/core` for consumers importing only the date-picker. */\nexport type { TimePickerFormat };\n\n// ── tv() config ───────────────────────────────────────────────────\n\nconst datePickerVariants = tv(\n {\n slots: {\n root: 'relative inline-flex items-center w-full text-fg transition-[color,border-color,box-shadow] duration-normal motion-reduce:transition-none',\n // `self-stretch` so the text field fills the pinned control height — without\n // it the input is only its line box tall and the rest of the box is dead\n // click area (up to 22px at xl).\n input:\n 'flex-1 min-w-0 self-stretch bg-transparent text-fg placeholder:text-fg-subtle outline-none border-0 p-0 m-0 font-inherit',\n triggerButton:\n 'inline-flex items-center justify-center shrink-0 rounded-md text-fg-muted hover:text-fg hover:bg-surface-muted transition-colors duration-normal motion-reduce:transition-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500',\n triggerIcon: 'shrink-0',\n // size-6 (24×24 CSS px) is the WCAG AA minimum interactive target — bumping past size-5 keeps the affordance hittable without growing the inline row.\n // Held flat across every size: it fits the 30/34/42/46px content boxes at sm..xl, and at xs it\n // coincides with the root's border-box for the reason spelled out on `triggerButton` below.\n clearButton:\n 'inline-flex items-center justify-center shrink-0 rounded-md text-fg-muted hover:text-fg hover:bg-surface-muted transition-colors duration-normal motion-reduce:transition-none size-6 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500',\n },\n variants: {\n size: {\n xs: {\n root: 'gap-1 text-xs',\n input: 'text-xs',\n // At xs the pinned root is h-6 (24px border-box), so its content box is\n // only 22px. size-6 is kept anyway: 24×24 is the WCAG 2.2 SC 2.5.8\n // floor and docs/vertical-rhythm.md calls it non-negotiable. The button\n // therefore coincides with the root's *border*-box, overlapping the 1px\n // border row top and bottom. The root's height is unaffected (h-6 is a\n // definite height) and the only visible effect is the hover fill\n // meeting the border at the densest size.\n triggerButton: 'size-6',\n // size-3.5 (14px) is the codified half-step for xs-density chevrons — size-3 (12px) looks pinched next to text-xs and size-4 (16px) crowds the 24px trigger.\n triggerIcon: 'size-3.5',\n },\n sm: {\n root: 'gap-1.5 text-sm',\n input: 'text-sm',\n triggerButton: 'size-7',\n triggerIcon: 'size-4',\n },\n md: {\n root: 'gap-2 text-sm',\n input: 'text-sm',\n triggerButton: 'size-8',\n triggerIcon: 'size-4',\n },\n lg: {\n root: 'gap-2 text-base',\n input: 'text-base',\n triggerButton: 'size-9',\n triggerIcon: 'size-5',\n },\n xl: {\n root: 'gap-2 text-base',\n input: 'text-base',\n // size-10 (40px) extends the codified xs..lg square-interactive scale (24/28/32/36) by one step for xl. Stepping down to size-9 would make lg and xl visually identical since both use text-base; matches paginator's xl handling (size-11).\n triggerButton: 'size-10',\n triggerIcon: 'size-5',\n },\n },\n variant: {\n default: {\n // No `py-*`: the height is pinned per size in compoundVariants below.\n // See docs/vertical-rhythm.md §3 — padding and a pinned height fight,\n // and under border-box the taller one silently wins.\n root: 'rounded-md border border-border bg-surface px-3 hover:border-border-strong',\n },\n naked: {\n root: 'bg-transparent border-0 rounded-none p-0 focus-within:outline-none',\n },\n },\n // True when a `[slot=trigger]` element is projected. The projected content\n // then owns its own height (it can be a lg button, a card, a badge row),\n // so the pinned control height must not apply.\n customTrigger: { true: {}, false: {} },\n open: { true: { triggerButton: 'bg-surface-muted text-fg' }, false: {} },\n disabled: {\n true: { root: 'opacity-50 pointer-events-none cursor-not-allowed' },\n false: {},\n },\n focused: { true: {}, false: {} },\n errorState: { true: {}, false: {} },\n color: {\n primary: {},\n secondary: {},\n accent: {},\n neutral: {},\n info: {},\n success: {},\n warning: {},\n error: {},\n },\n },\n compoundVariants: [\n // ── Pinned control height (docs/vertical-rhythm.md §1) ──\n // Only the `default` variant carries a height. `naked` means somebody else\n // owns the box — either `<tw-form-field>` (which auto-nakeds this picker and\n // supplies its own bordered, padded controlWrapper) or the calendar overlay\n // footer. Pinning naked would stack 36px on top of the form-field's own\n // `py-2`, inflating a wrapped picker from 38px to 54px at md.\n { variant: 'default', customTrigger: false, size: 'xs', class: { root: 'h-6' } },\n { variant: 'default', customTrigger: false, size: 'sm', class: { root: 'h-8' } },\n { variant: 'default', customTrigger: false, size: 'md', class: { root: 'h-9' } },\n { variant: 'default', customTrigger: false, size: 'lg', class: { root: 'h-11' } },\n { variant: 'default', customTrigger: false, size: 'xl', class: { root: 'h-12' } },\n // …and the projected-trigger path keeps the vertical padding the pinned\n // sizes drop, so a rich trigger still sits inset from the shell's border\n // exactly as it did before the height migration.\n { variant: 'default', customTrigger: true, class: { root: 'py-2' } },\n\n // Default variant — focused border per color\n { variant: 'default', focused: true, color: 'primary', class: { root: 'border-primary-500' } },\n { variant: 'default', focused: true, color: 'secondary', class: { root: 'border-secondary-500' } },\n { variant: 'default', focused: true, color: 'accent', class: { root: 'border-accent-500' } },\n { variant: 'default', focused: true, color: 'neutral', class: { root: 'border-border-strong' } },\n { variant: 'default', focused: true, color: 'info', class: { root: 'border-info-500' } },\n { variant: 'default', focused: true, color: 'success', class: { root: 'border-success-500' } },\n { variant: 'default', focused: true, color: 'warning', class: { root: 'border-warning-500' } },\n { variant: 'default', focused: true, color: 'error', class: { root: 'border-error-500' } },\n // Default variant + error state → red outline\n { variant: 'default', errorState: true, class: { root: 'border-error-500' } },\n ],\n defaultVariants: {\n size: 'md',\n variant: 'default',\n customTrigger: false,\n open: false,\n disabled: false,\n errorState: false,\n focused: false,\n color: 'primary',\n },\n },\n { twMerge: true },\n);\n\n// ── ID generator ──────────────────────────────────────────────────\n\nlet nextDatePickerId = 0;\n\n// ── Default display format ────────────────────────────────────────\n\nconst DEFAULT_DISPLAY_FORMAT = {\n dateTimeFormat: { year: 'numeric', month: 'short', day: 'numeric' } as Intl.DateTimeFormatOptions,\n};\n\n/**\n * ARIA date-picker dialog. Combines a typable text input with a popover\n * calendar. All three Angular forms strategies (reactive, template-driven,\n * signal-forms) are supported via `ControlValueAccessor`, and the component\n * integrates with `<tw-form-field>` by implementing `FormFieldControl`.\n *\n * All date operations go through the injected `DateAdapter<D>`; call\n * `provideNativeDateAdapter()` in your app providers to bootstrap the default.\n */\n@Component({\n selector: 'tw-date-picker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TW_FORM_FIELD_CONTROL,\n useExisting: forwardRef(() => DatePickerComponent),\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n },\n // Angular v22 compiles any component exposing a `value` model() as a\n // signal-forms custom control, and `FormControlDirective` takes the classic\n // CVA path — the one that runs `setUpValidators` and composes the\n // NG_VALIDATORS above onto the control — only if a value accessor is\n // already visible at directive-creation time. Assigning\n // `ngControl.valueAccessor` later is too late, so without this static\n // provider `validate()` is never called and every error code below\n // disappears silently. See the CVA section of CLAUDE.md; `calendar.ts` and\n // `date-range-picker.ts` carry the same pair for the same reason.\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n },\n PickerOverlayCoordinator,\n ],\n template: `\n <!-- Optional rich-label trigger. When projected (a child carries [slot=trigger]), the default input/clear/trigger chrome is hidden. Clicks anywhere in the projected content open the overlay. -->\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\n <div\n class=\"contents\"\n (click)=\"onCustomTriggerClick($event)\"\n (keydown)=\"onCustomTriggerKeydown($event)\"\n >\n <ng-content select=\"[slot=trigger]\" />\n </div>\n\n <input\n #dateInput\n type=\"text\"\n [id]=\"hostId\"\n [class]=\"inputClasses()\"\n [class.sr-only]=\"hasCustomTrigger()\"\n [value]=\"rawInputText()\"\n [placeholder]=\"placeholder() || ''\"\n [disabled]=\"isDisabled()\"\n [tabindex]=\"hasCustomTrigger() ? -1 : null\"\n [attr.readonly]=\"readonlyInput() ? 'true' : null\"\n [attr.role]=\"'combobox'\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-expanded]=\"open() ? 'true' : 'false'\"\n [attr.aria-controls]=\"dialogId\"\n [attr.aria-autocomplete]=\"'none'\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby() || null\"\n [attr.aria-describedby]=\"describedBy() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-invalid]=\"errorState() || null\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n [attr.data-variant]=\"resolvedVariant()\"\n (input)=\"onInputEvent($event)\"\n (blur)=\"onInputBlur()\"\n (focus)=\"onInputFocus()\"\n (keydown)=\"onInputKeydown($event)\"\n />\n\n @if (!hasCustomTrigger() && showClear() && !isEmpty() && !isDisabled() && !readonlyInput()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n [class]=\"clearButtonClasses()\"\n [attr.aria-label]=\"clearAriaLabel()\"\n (click)=\"onClearClick($event)\"\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\" class=\"size-4\">\n <path\n fill-rule=\"evenodd\"\n d=\"M10 8.586 4.707 3.293a1 1 0 0 0-1.414 1.414L8.586 10l-5.293 5.293a1 1 0 1 0 1.414 1.414L10 11.414l5.293 5.293a1 1 0 0 0 1.414-1.414L11.414 10l5.293-5.293a1 1 0 0 0-1.414-1.414L10 8.586Z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button>\n }\n\n @if (!hasCustomTrigger()) {\n <button\n #triggerBtn\n type=\"button\"\n [class]=\"triggerButtonClasses()\"\n [attr.aria-label]=\"triggerAriaLabel()\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-expanded]=\"open() ? 'true' : 'false'\"\n [attr.aria-controls]=\"dialogId\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n [disabled]=\"isDisabled()\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n >\n <ng-content select=\"[slot=trigger-icon]\">\n <svg\n [class]=\"triggerIconClasses()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n </ng-content>\n </button>\n }\n `,\n host: {\n '[class]': 'rootClasses()',\n },\n})\nexport class DatePickerComponent<D = Date>\n extends FormFieldControl<D>\n implements ControlValueAccessor, Validator, OnInit\n{\n // ── Inputs ──\n\n /** Id on the date-picker's input element. Auto-generated when not provided. Used by the form-field's `<label for>` attribute. */\n readonly idInput = input<string | undefined>(undefined, { alias: 'id' });\n\n /** Minimum selectable date. Typed input earlier than this commits the value and marks the bound control invalid with `calendarMinDate`; the calendar disables the cell. Defaults to `null`. */\n readonly minDate = input<D | null>(null);\n\n /** Maximum selectable date. Typed input later than this commits the value and marks the bound control invalid with `calendarMaxDate`; the calendar disables the cell. Defaults to `null`. */\n readonly maxDate = input<D | null>(null);\n\n /** Per-date predicate — return `false` to disable. Applied in the calendar, the text-parse path, and the `calendarDisabledDate` validation error. Defaults to `null`. */\n readonly dateFilter = input<DateFilterFn<D> | null>(null);\n\n /** Which calendar view opens first — `'day'`, `'month'`, or `'year'`. Defaults to `'day'`. */\n readonly startView = input<CalendarViewState>('day');\n\n /** Date to focus when the calendar opens with no selection. Falls back to today. Defaults to `null`. */\n readonly startAt = input<D | null>(null);\n\n /** Display format passed to `DateAdapter.format()`. With the default adapter, accepts `{ dateTimeFormat: Intl.DateTimeFormatOptions }`. When `withTime` is true and this is left at the default, hour/minute (and optional seconds) are folded in automatically. */\n readonly format = input<unknown>(DEFAULT_DISPLAY_FORMAT);\n\n /** Optional format hint passed to `DateAdapter.parse()`. Ignored by the native adapter. */\n readonly parseFormat = input<unknown | undefined>(undefined);\n\n /** Placeholder text shown in the input when no value is entered. Defaults to `undefined`. */\n readonly placeholder = input<string | undefined>(undefined);\n\n /** When true, the input is disabled, the trigger cannot open the calendar, and `aria-disabled=\"true\"` is set. Defaults to `false`. */\n readonly disabledInput = input<boolean, unknown>(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n /** When true, exposes `aria-required=\"true\"`. Validators.required on a bound NgControl is also honoured. Defaults to `false`. */\n readonly requiredInput = input<boolean, unknown>(false, {\n alias: 'required',\n transform: booleanAttribute,\n });\n\n /** When true, blocks typing but still allows picking via the calendar trigger. Defaults to `false`. Alias: `readonly`. */\n readonly readonlyInput = input<boolean, unknown>(false, {\n alias: 'readonly',\n transform: booleanAttribute,\n });\n\n /** Trigger padding, font size, and calendar cell density. Defaults to `'md'`. */\n readonly size = input<TwSize>('md');\n\n /** Semantic color for focused border, calendar selection ring, and today marker. Defaults to `'primary'`. */\n readonly color = input<TwColor>('primary');\n\n /** Visual style of the trigger. `'default'` draws its own border; `'naked'` strips chrome. Auto-resolves to `'naked'` when inside `<tw-form-field>`. */\n readonly variant = input<DatePickerVariant | undefined>(undefined);\n\n /** Whether to show a clear-button affordance inside the trigger when a value is set. Defaults to `true` — most form pickers expect the inline clear, matching `<tw-input>`'s clear button; without it consumers must wire one themselves. */\n readonly showClear = input<boolean>(true);\n\n /** When true, renders a `Today / Clear / Cancel / Apply` action bar at the bottom of the overlay. Defaults to `false`. */\n readonly showActions = input<boolean>(false);\n\n /** Label for the `Today` action in the overlay's action bar. Defaults to `'Today'`. */\n readonly todayLabel = input<string>('Today');\n\n /** Label for the `Clear` action in the overlay's action bar. Defaults to `'Clear'`. */\n readonly clearLabel = input<string>('Clear');\n\n /** Label for the `Cancel` action in the overlay's action bar. Defaults to `'Cancel'`. */\n readonly cancelLabel = input<string>('Cancel');\n\n /** Label for the `Apply` action in the overlay's action bar. Defaults to `'Apply'`. */\n readonly applyLabel = input<string>('Apply');\n\n /** When true, focusing the text input opens the overlay. Defaults to `false`. */\n readonly openOnFocus = input<boolean>(false);\n\n /** Extra class(es) applied to the overlay panel element. Defaults to an empty string. */\n readonly panelClass = input<string | readonly string[]>('');\n\n /** CDK scroll strategy for the overlay. Defaults to `'reposition'`. */\n readonly scrollStrategy = input<'reposition' | 'close' | 'block'>('reposition');\n\n /** Pixel distance between trigger and overlay. Defaults to `4`. */\n readonly offset = input<number>(4);\n\n /** Accessible name for the calendar trigger button. Defaults to `'Open calendar'`. */\n readonly triggerAriaLabel = input<string>('Open calendar');\n\n /** Accessible name for the inline clear button shown when a value is set. Mirrors `tw-date-range-picker`'s input of the same name; distinct from `clearLabel`, which is the overlay action bar's visible button text. Defaults to `'Clear date'`. */\n readonly clearAriaLabel = input<string>('Clear date');\n\n /**\n * Bundles the time-of-day configuration. Passing a non-null object turns on the embedded `<tw-time-picker>` and forwards each field.\n *\n * Defaults to `null` (no time field). Pass an empty object `{}` to enable the time picker with all defaults.\n */\n readonly timeConfig = input<DatePickerTimeConfig<D> | null>(null);\n\n /** Per-instance locale override. Forwarded to the embedded calendar and the underlying `DateAdapter` for parse/format. Falls back to Angular `LOCALE_ID` when `null`. Defaults to `null`. */\n readonly locale = input<string | null>(null);\n\n /** Function producing per-cell CSS classes, forwarded to the embedded calendar. Useful for visually marking special dates (holidays, billing cycles). Defaults to `null`. */\n readonly dateClass = input<DateClassFn<D> | null>(null);\n\n /** Optional cell-content template, forwarded to the embedded calendar. Use to customize cell visuals beyond `dateClass`. Defaults to `null`. */\n readonly cellTemplate = input<TemplateRef<{ $implicit: CalendarCell<D> }> | null>(null);\n\n /** Optional quick-select presets rendered as a vertical list before the calendar. Each preset provides a `label` and a `date` factory. An empty array hides the preset panel. Defaults to an empty array. */\n readonly presets = input<readonly DatePickerPreset<D>[]>([]);\n\n /** Per-instance override of the `ErrorStateMatcher`. Defaults to `undefined`. */\n readonly errorStateMatcher = input<ErrorStateMatcher | undefined>(undefined);\n\n /** Accessible name for the input. Required when no visible label is supplied. Alias: `aria-label`. Defaults to `undefined`. */\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n /** ID of an external element that labels the input. Alias: `aria-labelledby`. Defaults to `undefined`. */\n readonly ariaLabelledby = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n /** Consumer-supplied `aria-describedby` ids. The form-field preserves these when merging hint/error ids. Alias: `aria-describedby`. Defaults to `undefined`. */\n readonly userAriaDescribedByInput = input<string | undefined>(undefined, {\n alias: 'aria-describedby',\n });\n\n // ── Models (two-way) ──\n\n /** Two-way bound selected date. `null` when no selection. Setting programmatically updates the display; does NOT trigger `onChange`. Defaults to `null`. */\n readonly value = model<D | null>(null);\n\n /** Two-way bound open state of the calendar overlay. Defaults to `false`. */\n readonly open = model(false);\n\n // ── Outputs ──\n\n /** Fires after the overlay's enter animation completes. Payload is the trigger element. */\n readonly opened = output<DatePickerOpenedEvent>();\n\n /** Fires after the overlay's leave animation completes. Payload is the reason it closed. */\n readonly closed = output<DatePickerCloseReason>();\n\n /** Fires on every keystroke in the text input (before parsing). Does NOT mean the value has committed. */\n readonly dateInput = output<DatePickerInputEvent<D>>();\n\n /** Fires after a commit — from parsing typed input or picking in the calendar. */\n readonly dateChange = output<DatePickerChangeEvent<D>>();\n\n /** Fires when the user picks one of the entries from `presets`. Payload is the preset that fired. */\n readonly presetSelected = output<DatePickerPreset<D>>();\n\n // ── Injected deps ──\n\n private readonly adapter = inject<DateAdapter<D>>(DATE_ADAPTER);\n private readonly overlayService = inject(Overlay);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly liveAnnouncer = inject(LiveAnnouncer);\n private readonly coordinator = inject(PickerOverlayCoordinator);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly formField = inject(TW_FORM_FIELD, { optional: true });\n // Resolved lazily in `ngOnInit`, not via eager `inject(NgControl, { self })`:\n // this component provides NG_VALIDATORS with `useExisting`, so NgModel /\n // FormControlName pulling the validator set during construction would resolve\n // back into this instance while it is still being created. Mirrors\n // `date-range-picker.ts` and `calendar.ts`.\n private ngControl: NgControl | null = null;\n\n // ── View refs ──\n\n private readonly inputRef = viewChild.required<ElementRef<HTMLInputElement>>('dateInput');\n private readonly triggerRef = viewChild<ElementRef<HTMLButtonElement>>('triggerBtn');\n\n /** @internal Whether a `[slot=trigger]` is projected. Detected post-mount via DOM query so we can drop the default chrome. */\n readonly hasCustomTrigger = signal(false);\n\n // ── Identity ──\n\n private readonly uid = nextDatePickerId++;\n /** @internal */\n readonly hostId = `tw-date-picker-${this.uid}`;\n /** @internal */\n readonly dialogId = `${this.hostId}-dialog`;\n\n // ── Internal state ──\n\n /** @internal Decouples programmatic writes from user commits so `writeValue` doesn't re-trigger parent effects. */\n readonly internalValue = linkedSignal<D | null>(() => this.value());\n /** @internal */\n readonly rawInputText = signal<string>('');\n /**\n * @internal The text the user typed that could not be parsed into a date,\n * or `null` when the current entry parsed cleanly.\n *\n * This is the single source of truth for \"the typed text is bad\". It drives\n * both the visual error state (via `parseError` below) and the form error\n * (via `validate()`, which feeds it to `calendarValidator` as\n * `lastInvalidFormValue`). Keeping one field instead of a boolean flag plus a\n * separate string is what stops the two from disagreeing.\n */\n private readonly unparseableText = signal<string | null>(null);\n\n /** @internal Whether the current input text failed to parse. */\n readonly parseError = computed(() => this.unparseableText() !== null);\n /**\n * @internal Whether the committed value violates `minDate` / `maxDate` /\n * `dateFilter`.\n *\n * Derived, not a flag. An out-of-range entry is committed to the form (so the\n * control holds what the user typed and is *invalid*, rather than silently\n * keeping an older value), which means the value-sync effect below runs and\n * would immediately clear any manually-set flag. Deriving it also keeps the\n * error correct when the consumer moves a constraint after the fact, which a\n * flag set once at commit time cannot do.\n */\n readonly rangeError = computed(() => {\n const v = this.internalValue();\n return v !== null && !this.isInRange(v);\n });\n /** @internal */\n readonly focusedSignal = signal(false);\n\n private readonly cvaDisabled = signal(false);\n private readonly describedByIdsSignal = signal<readonly string[]>([]);\n private readonly lastValueBeforeOpen = signal<D | null>(null);\n private readonly pendingCalendarValue = signal<D | null>(null);\n private readonly activePresetIdSignal = signal<string | undefined>(undefined);\n\n /** @internal Shared `errorState` / `required` / `errors` derivation — see `wireErrorState`. */\n private readonly errorWiring = wireErrorState({\n ngControl: () => this.ngControl,\n matcher: () => this.errorStateMatcher(),\n required: () => this.requiredInput(),\n track: [() => this.focusedSignal()],\n // An unparseable entry or an out-of-range date is an error regardless of validator status.\n errorStateOverride: () => (this.parseError() || this.rangeError() ? true : undefined),\n });\n\n private onChange: (value: D | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n // Overlay lifecycle bookkeeping. Both are PLAIN FIELDS, not signals, and that\n // is load-bearing: the lifecycle effect in the constructor both reads and\n // writes them, so as signals they would form a read → write → re-trigger\n // cycle of exactly the shape CLAUDE.md forbids. Demoting them is the fix\n // `popover.ts` and `command-palette.ts` already use — see the comment on that\n // effect. Do not promote either back to `signal()`.\n private overlayInstance: DatePickerOverlayComponent<D> | null = null;\n private closing = false;\n private returnFocusTo: HTMLElement | null = null;\n\n // The one piece of overlay state that must stay a signal: it is the *only*\n // dependency that re-runs the overlay state-push effect when the panel\n // attaches. Written here (openOverlay / closeOverlay), never read by the\n // lifecycle effect, so it cannot cycle. Mirrors `command-palette.ts`.\n private readonly isAttached = signal(false);\n\n // ── Derived state ──\n\n /** @internal */\n readonly isDisabled = computed(() => {\n this.errorWiring.rev();\n return this.disabledInput() || this.cvaDisabled() || !!this.ngControl?.disabled;\n });\n\n /** @internal Effective variant — auto-naked when wrapped in tw-form-field. */\n readonly resolvedVariant = computed<DatePickerVariant>(\n () => this.variant() ?? (this.formField ? 'naked' : 'default'),\n );\n\n /** @internal */\n readonly isEmpty = computed(() => this.internalValue() === null && !this.rawInputText());\n\n /** Whether the time picker is rendered inside the overlay. True iff `timeConfig` is non-null. */\n readonly withTime = computed<boolean>(() => this.timeConfig() !== null);\n\n /** @internal Effective time-of-day configuration — merges `timeConfig` over the documented per-field defaults. */\n readonly effectiveTimeConfig = computed<Required<Omit<DatePickerTimeConfig<D>, 'minTime' | 'maxTime'>> & { minTime: D | null; maxTime: D | null }>(() => {\n const cfg = this.timeConfig();\n return {\n format: cfg?.format ?? '24h',\n showSeconds: cfg?.showSeconds ?? false,\n hourStep: cfg?.hourStep ?? 1,\n minuteStep: cfg?.minuteStep ?? 1,\n secondStep: cfg?.secondStep ?? 1,\n minTime: cfg?.minTime ?? null,\n maxTime: cfg?.maxTime ?? null,\n };\n });\n\n /** @internal Effective display format — folds hour/minute (and optional seconds) into the default when `withTime` is on and the user hasn't overridden `format`. */\n readonly effectiveFormat = computed<unknown>(() => {\n const fmt = this.format();\n if (!this.withTime() || fmt !== DEFAULT_DISPLAY_FORMAT) return fmt;\n const time = this.effectiveTimeConfig();\n const hour12 = time.format === '12h';\n const base: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n hour12,\n };\n if (time.showSeconds) base.second = '2-digit';\n return { dateTimeFormat: base };\n });\n\n /** @internal */\n readonly describedBy = computed(() => {\n const extra = this.describedByIdsSignal();\n const user = this.userAriaDescribedByInput();\n const merged = [...extra];\n if (user) {\n for (const id of user.split(/\\s+/)) {\n if (id) merged.push(id);\n }\n }\n return merged.length ? merged.join(' ') : '';\n });\n\n // ── tv() output ──\n\n private readonly variantResult = computed(() =>\n datePickerVariants({\n size: this.size(),\n variant: this.resolvedVariant(),\n customTrigger: this.hasCustomTrigger(),\n open: this.open(),\n disabled: this.isDisabled(),\n errorState: this.errorState(),\n focused: this.focusedSignal(),\n color: this.color(),\n }),\n );\n\n /** @internal */\n readonly rootClasses = computed(() => this.variantResult().root());\n /** @internal */\n readonly inputClasses = computed(() => this.variantResult().input());\n /** @internal */\n readonly triggerButtonClasses = computed(() => this.variantResult().triggerButton());\n /** @internal */\n readonly triggerIconClasses = computed(() => this.variantResult().triggerIcon());\n /** @internal */\n readonly clearButtonClasses = computed(() => this.variantResult().clearButton());\n\n // ── FormFieldControl impl ──\n\n /** @internal */\n readonly id: Signal<string> = computed(() => this.idInput() ?? this.hostId);\n /** @internal */\n readonly focused: Signal<boolean> = this.focusedSignal.asReadonly();\n /** @internal */\n readonly empty: Signal<boolean> = this.isEmpty;\n /** @internal */\n readonly disabled: Signal<boolean> = this.isDisabled;\n /** @internal */\n readonly required: Signal<boolean> = this.errorWiring.required;\n\n /** @internal */\n readonly errorState: Signal<boolean> = this.errorWiring.errorState;\n\n /**\n * @internal Active validation errors map from the bound `NgControl` (or `null` when the\n * control reports none / is unbound). This is what `[twError match=\"…\"]` filters on inside a\n * `<tw-form-field>`; without it every `match`-targeted message — including the\n * `calendarMinDate` / `calendarMaxDate` / `calendarDisabledDate` / `calendarInvalidValue`\n * codes this component's `NG_VALIDATORS` apparatus exists to produce — stays permanently\n * hidden. (Authoritative key list: `CalendarValidationErrors` in `calendar.types.ts`.)\n */\n override readonly errors: Signal<Record<string, unknown> | null> = this.errorWiring.errors;\n\n /** @internal */\n readonly controlType = 'date-picker';\n /** @internal */\n readonly userAriaDescribedBy: Signal<string | undefined> = computed(() =>\n this.userAriaDescribedByInput(),\n );\n\n // ── Constructor ──\n\n constructor() {\n super();\n\n // Re-run validation whenever a constraint input changes, so a consumer\n // moving `minDate` after a value was committed updates `control.errors`\n // instead of leaving a stale verdict. `validatorOnChange` is a plain\n // callback into Angular's validator plumbing, not a signal write, so the\n // effect cannot cycle; `untracked` keeps it that way regardless.\n // Mirrors `date-range-picker.ts` and `calendar.ts`.\n effect(() => {\n this.minDate();\n this.maxDate();\n this.dateFilter();\n untracked(() => this.validatorOnChange());\n });\n\n // Sync rawInputText whenever the underlying value changes (programmatic or user).\n effect(() => {\n const v = this.internalValue();\n const fmt = this.effectiveFormat();\n untracked(() => {\n // An unparseable entry commits `null` precisely *because* it failed to\n // parse, and this effect runs asynchronously afterwards. Syncing here\n // would undo both halves of that: it would clear the error state a\n // moment after it was set, and — because the input is bound to\n // `rawInputText` — blank the very text the user needs to correct,\n // leaving an error border over an empty box. Bail out and let the\n // parse-failure path own the display.\n if (v === null && this.unparseableText() !== null) return;\n\n const display = v === null ? '' : this.adapter.format(v, fmt);\n this.rawInputText.set(display);\n this.unparseableText.set(null);\n });\n });\n\n // Mirror the `open` model into the overlay lifecycle.\n //\n // The only tracked reads here are `open()` and `isDisabled()`. Everything\n // this effect *writes* — `overlayInstance`, `closing` — is a plain field,\n // never a signal, so opening or closing cannot re-trigger the effect that\n // ordered it. That is the whole reason those two are declared as fields\n // (see their declaration); promoting either back to `signal()` recreates\n // the read → write → re-trigger cycle CLAUDE.md forbids.\n //\n // `openOverlay()` / `closeOverlay()` do write `isAttached`, but this effect\n // never reads it, so that write is a one-way hand-off to the state-push\n // effect below and terminates there.\n //\n // The body is wrapped in `untracked()` because demoting the two fields is\n // NOT sufficient on its own. `openOverlay()` reads roughly twenty-five\n // inputs while pushing them into the freshly attached panel, and it writes\n // two signals it then reads straight back. Called from the tracked phase,\n // every one of those reads becomes a dependency of THIS effect, which both\n // recreates the forbidden write-then-read-back shape and re-runs the whole\n // lifecycle on any of those twenty-five inputs changing. Tracked reads are\n // now exactly `open()` and `isDisabled()`, which is what the paragraph\n // above claims — and only now true.\n effect(() => {\n const shouldOpen = this.open();\n const disabled = this.isDisabled();\n untracked(() => {\n if (disabled && this.overlayInstance) {\n this.closeOverlay('programmatic');\n return;\n }\n if (shouldOpen && !this.overlayInstance && !disabled && !this.closing) {\n this.openOverlay();\n } else if (!shouldOpen && this.overlayInstance && !this.closing) {\n this.closeOverlay('programmatic');\n }\n });\n });\n\n // Push state into the overlay whenever anything relevant changes.\n // Reads happen in the tracked phase; writes to the overlay instance are\n // wrapped in `untracked()` so they never feed back into this effect.\n //\n // `isAttached()` MUST be read first and unconditionally: it is this\n // effect's only dependency on the overlay's existence, so it is what makes\n // the initial push happen when the panel attaches (`overlayInstance` is a\n // plain field and is invisible to the signal graph). Do not reorder it\n // behind the null check — the effect would then never re-run on open.\n effect(() => {\n this.isAttached();\n const instance = this.overlayInstance;\n if (!instance) return;\n const time = this.effectiveTimeConfig();\n const size = this.size();\n const color = this.color();\n const minDate = this.minDate();\n const maxDate = this.maxDate();\n const dateFilter = this.dateFilter();\n const startView = this.startView();\n const startAt = this.startAt() ?? this.internalValue() ?? null;\n const pendingValue = this.pendingCalendarValue();\n const showActions = this.showActions();\n const todayLabel = this.todayLabel();\n const clearLabel = this.clearLabel();\n const cancelLabel = this.cancelLabel();\n const applyLabel = this.applyLabel();\n const dialogAriaLabel = this.resolveDialogAriaLabel();\n const panelClassValue = this.resolvePanelClass();\n const withTime = this.withTime();\n const locale = this.locale();\n const dateClass = this.dateClass();\n const cellTemplate = this.cellTemplate();\n const presets = this.presets();\n const activePresetId = this.activePresetIdSignal();\n untracked(() => {\n instance.size.set(size);\n instance.color.set(color);\n instance.minDate.set(minDate);\n instance.maxDate.set(maxDate);\n instance.dateFilter.set(dateFilter);\n instance.startView.set(startView);\n instance.startAt.set(startAt);\n instance.pendingValue.set(pendingValue);\n instance.showActions.set(showActions);\n instance.todayLabel.set(todayLabel);\n instance.clearLabel.set(clearLabel);\n instance.cancelLabel.set(cancelLabel);\n instance.applyLabel.set(applyLabel);\n instance.dialogId.set(this.dialogId);\n instance.dialogAriaLabel.set(dialogAriaLabel);\n instance.panelClassValue.set(panelClassValue);\n instance.withTime.set(withTime);\n instance.timeFormat.set(time.format);\n instance.showSeconds.set(time.showSeconds);\n instance.hourStep.set(time.hourStep);\n instance.minuteStep.set(time.minuteStep);\n instance.secondStep.set(time.secondStep);\n instance.minTime.set(time.minTime);\n instance.maxTime.set(time.maxTime);\n instance.locale.set(locale);\n instance.dateClass.set(dateClass);\n instance.cellTemplate.set(cellTemplate);\n instance.presets.set(presets);\n instance.activePresetId.set(activePresetId);\n });\n });\n\n // Push locale into the adapter for parse/format. The calendar also calls\n // setLocale, but a standalone picker without a calendar open still needs\n // the parser to honour the picker's locale.\n effect(() => {\n const locale = this.locale();\n if (locale === null) return;\n untracked(() => this.adapter.setLocale(locale));\n });\n\n // Dev-mode accessible-name warning + projected-trigger detection.\n afterNextRender(() => {\n const host = this.elementRef.nativeElement;\n // Detect [slot=trigger] projection by querying for projected children that carry the attribute.\n // Angular's <ng-content select=\"[slot=trigger]\"> moves them into the rendered DOM under the host.\n if (host.querySelector('[slot=\"trigger\"]')) {\n this.hasCustomTrigger.set(true);\n }\n\n if (!isDevMode()) return;\n const hasLabel =\n !!this.ariaLabel() ||\n !!this.ariaLabelledby() ||\n !!this.formField?.hasLabel();\n if (!hasLabel) {\n console.warn(\n '[tw-date-picker] The date-picker has no accessible name. Set aria-label, aria-labelledby, or wrap the component in a <tw-form-field> with a <label twLabel>.',\n );\n }\n });\n\n // Monitor focus on the host (trigger + input + overlay when opened).\n const monitorSub = this.focusMonitor\n .monitor(this.elementRef, true)\n .subscribe((origin) => {\n const wasFocused = this.focusedSignal();\n this.focusedSignal.set(!!origin);\n if (wasFocused && !origin) {\n this.onTouched();\n this.errorWiring.bump();\n }\n });\n\n this.destroyRef.onDestroy(() => {\n monitorSub.unsubscribe();\n this.focusMonitor.stopMonitoring(this.elementRef);\n // The coordinator's own DestroyRef.onDestroy disposes the overlay and\n // clears its timers; we only need to drop the local instance reference.\n this.overlayInstance = null;\n this.isAttached.set(false);\n });\n }\n\n ngOnInit(): void {\n // Resolve the bound NgControl now that the host's FormControlName / NgModel\n // is fully constructed (see the field declaration for why this is deferred).\n // The value accessor itself is registered statically via NG_VALUE_ACCESSOR,\n // which is what keeps `validate()` on the classic CVA path under v22.\n this.ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\n // Anything read off `ngControl` before this point saw `null`; bump the\n // revision so `isDisabled`, `required` and `errorState` recompute.\n this.errorWiring.bump();\n\n this.errorWiring.connect();\n }\n\n // ── Public imperative API ──\n\n /** Opens the overlay. No-op when disabled or already open. */\n openPicker(): void {\n if (this.isDisabled() || this.open()) return;\n this.open.set(true);\n }\n\n /** Closes the overlay. No-op when already closed. */\n closePicker(): void {\n if (!this.open()) return;\n this.open.set(false);\n }\n\n /** Toggles the overlay's open state. */\n toggle(): void {\n if (this.open()) this.closePicker();\n else this.openPicker();\n }\n\n /** Clears the current value and emits `dateChange` with `source: 'clear'`. */\n clear(): void {\n this.commit(null, 'clear');\n }\n\n // ── Input interactions ──\n\n /** @internal */\n onInputEvent(event: Event): void {\n const target = event.target as HTMLInputElement;\n const rawText = target.value;\n this.rawInputText.set(rawText);\n this.unparseableText.set(null);\n // Non-committing parse so the payload's `parsed` field reflects success when achievable.\n let parsed: D | null = null;\n if (rawText.trim()) {\n const candidate = this.adapter.parse(rawText, this.parseFormat());\n if (candidate && this.adapter.isValid(candidate) && this.isInRange(candidate)) {\n parsed = candidate;\n }\n }\n this.dateInput.emit({ rawText, parsed, target });\n }\n\n /** @internal */\n onInputBlur(): void {\n this.commitFromInput();\n }\n\n /** @internal */\n onInputFocus(): void {\n if (this.openOnFocus() && !this.isDisabled() && !this.readonlyInput()) {\n this.returnFocusTo = this.inputRef().nativeElement;\n this.openPicker();\n }\n }\n\n /** @internal */\n onInputKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) return;\n const key = event.key;\n\n if (event.altKey && key === 'ArrowDown') {\n event.preventDefault();\n this.returnFocusTo = this.inputRef().nativeElement;\n this.openPicker();\n return;\n }\n if (event.altKey && key === 'ArrowUp') {\n if (this.open()) {\n event.preventDefault();\n this.closeOverlay('cancel', /* restore */ true);\n }\n return;\n }\n\n switch (key) {\n case 'Enter':\n event.preventDefault();\n this.commitFromInput();\n if (this.open()) {\n this.closeOverlay('select');\n }\n return;\n case 'Escape':\n if (this.open()) {\n event.preventDefault();\n this.closeOverlay('escape', /* restore */ true);\n }\n return;\n case 'Tab':\n if (this.open()) {\n // Let focus move out naturally; close the overlay.\n this.closeOverlay('programmatic');\n }\n return;\n default:\n return;\n }\n }\n\n /** @internal */\n onClearClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.clear();\n }\n\n /** @internal */\n onTriggerClick(): void {\n if (this.isDisabled()) return;\n const trigger = this.triggerRef();\n if (trigger) this.returnFocusTo = trigger.nativeElement;\n this.toggle();\n }\n\n /** @internal */\n onTriggerKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) return;\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n event.preventDefault();\n const trigger = this.triggerRef();\n if (trigger) this.returnFocusTo = trigger.nativeElement;\n if (!this.open()) this.openPicker();\n } else if (event.key === 'Escape' && this.open()) {\n event.preventDefault();\n this.closeOverlay('escape', /* restore */ true);\n }\n }\n\n /** @internal */\n onCustomTriggerClick(event: MouseEvent): void {\n if (!this.hasCustomTrigger() || this.isDisabled()) return;\n // The projected element itself is the focus target on close.\n const target = event.currentTarget as HTMLElement | null;\n if (target) this.returnFocusTo = target;\n event.preventDefault();\n this.toggle();\n }\n\n /** @internal */\n onCustomTriggerKeydown(event: KeyboardEvent): void {\n if (!this.hasCustomTrigger() || this.isDisabled()) return;\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n event.preventDefault();\n const target = event.currentTarget as HTMLElement | null;\n if (target) this.returnFocusTo = target;\n if (!this.open()) this.openPicker();\n } else if (event.key === 'Escape' && this.open()) {\n event.preventDefault();\n this.closeOverlay('escape', /* restore */ true);\n }\n }\n\n // ── Parse & commit ──\n\n private commitFromInput(): void {\n const raw = this.rawInputText().trim();\n if (!raw) {\n this.unparseableText.set(null);\n if (this.internalValue() !== null || this.parseError() || this.rangeError()) {\n this.commit(null, 'input');\n } else {\n this.unparseableText.set(null);\n }\n this.validatorOnChange();\n return;\n }\n const parsed = this.adapter.parse(raw, this.parseFormat());\n if (!parsed || !this.adapter.isValid(parsed)) {\n // Unparseable. Both halves matter: the previously committed date must not\n // survive in the form behind an error border (that stale value would be\n // submitted), and the parse failure must be carried into `validate()`\n // because the `null` we commit is otherwise indistinguishable from an\n // empty optional field.\n // Deliberately not routed through `commit()`: that formats the committed\n // value into the input, which would erase the text the user just typed.\n // Clear the *form* value so a stale date cannot be submitted behind an\n // error border, while leaving the raw text on screen to be corrected.\n //\n // Keeping that text visible also depends on the bail-out in the\n // value-sync effect above — without it, this `internalValue.set(null)`\n // asynchronously blanks the input. Both halves are pinned by the\n // \"keeps unparseable text visible\" specs; changing one without the other\n // reintroduces an error border over an empty box.\n const previous = this.internalValue();\n this.internalValue.set(null);\n this.value.set(null);\n this.unparseableText.set(raw);\n this.onChange(null);\n this.onTouched();\n this.validatorOnChange();\n this.dateChange.emit({ value: null, previousValue: previous, source: 'input' });\n return;\n }\n if (!this.isInRange(parsed)) {\n // Out of range still commits: the form should hold what the user actually\n // entered and be *invalid*, not silently keep an older value. The range\n // codes come from `validate()` reading `control.value`, so no extra state\n // needs carrying here.\n this.unparseableText.set(null);\n this.commit(parsed, 'input');\n this.unparseableText.set(null);\n this.validatorOnChange();\n return;\n }\n this.unparseableText.set(null);\n this.commit(parsed, 'input');\n this.validatorOnChange();\n }\n\n private commit(next: D | null, source: DatePickerChangeSource): void {\n const previous = this.internalValue();\n this.internalValue.set(next);\n this.value.set(next);\n this.unparseableText.set(null);\n const display = next === null ? '' : this.adapter.format(next, this.effectiveFormat());\n this.rawInputText.set(display);\n const el = this.inputRef().nativeElement;\n if (el.value !== display) el.value = display;\n\n if (source !== 'programmatic') {\n this.onChange(next);\n this.onTouched();\n if (next === null) {\n this.liveAnnouncer.announce('Date cleared', 'polite');\n } else {\n this.liveAnnouncer.announce(`${display} selected`, 'polite');\n }\n }\n this.dateChange.emit({ value: next, previousValue: previous, source });\n }\n\n private isInRange(d: D): boolean {\n const min = this.minDate();\n if (min && this.adapter.compare(d, min) < 0) return false;\n const max = this.maxDate();\n if (max && this.adapter.compare(d, max) > 0) return false;\n const filter = this.dateFilter();\n if (filter && !filter(d)) return false;\n if (this.withTime() && !this.isTimeInRange(d)) return false;\n return true;\n }\n\n private isTimeInRange(d: D): boolean {\n const { minTime: min, maxTime: max } = this.effectiveTimeConfig();\n if (!min && !max) return true;\n const adapter = this.adapter;\n const vSecs = timeOfDaySeconds(adapter.getHours(d), adapter.getMinutes(d), adapter.getSeconds(d));\n if (min && adapter.isValid(min)) {\n const minSecs = timeOfDaySeconds(adapter.getHours(min), adapter.getMinutes(min), adapter.getSeconds(min));\n if (vSecs < minSecs) return false;\n }\n if (max && adapter.isValid(max)) {\n const maxSecs = timeOfDaySeconds(adapter.getHours(max), adapter.getMinutes(max), adapter.getSeconds(max));\n if (vSecs > maxSecs) return false;\n }\n return true;\n }\n\n // ── Overlay lifecycle ──\n\n private openOverlay(): void {\n if (!this.returnFocusTo) {\n this.returnFocusTo = this.resolveFocusTarget();\n }\n this.lastValueBeforeOpen.set(this.internalValue());\n this.pendingCalendarValue.set(this.internalValue());\n\n const result = this.coordinator.open<DatePickerOverlayComponent<D>>({\n origin: this.elementRef,\n portalComponent: DatePickerOverlayComponent as unknown as new (\n ...args: unknown[]\n ) => DatePickerOverlayComponent<D>,\n viewContainerRef: this.viewContainerRef,\n injector: this.injector,\n positions: buildSelectLikePositions(this.offset()),\n scrollStrategy: resolveSelectScrollStrategy(this.scrollStrategy(), this.overlayService),\n panelClass: 'tw-date-picker-panel',\n });\n if (!result) return;\n\n const instance = result.instance;\n instance.onCalendarSelect.set((date) => this.onCalendarSelection(date));\n instance.onTimeInput.set((date) => this.onTimeInput(date));\n instance.onToday.set(() => this.onTodayClicked());\n instance.onClear.set(() => this.onClearAction());\n instance.onCancel.set(() => this.onCancelAction());\n instance.onApply.set(() => this.onApplyAction());\n instance.onPresetSelect.set((preset) => this.onPresetClick(preset));\n instance.activePresetId.set(this.activePresetIdSignal());\n this.overlayInstance = instance;\n // Must follow the assignment above: this is what wakes the state-push\n // effect, and it reads `overlayInstance` as a plain field.\n this.isAttached.set(true);\n\n // Per-open streams from the coordinator complete on close, so no\n // takeUntilDestroyed is needed — accumulating subscribers across multiple\n // open/close cycles is the bug we'd hit otherwise.\n this.coordinator\n .backdropClick$()\n .subscribe(() => this.closeOverlay('backdrop'));\n\n this.coordinator.escape$().subscribe((event) => {\n event.preventDefault();\n this.closeOverlay('escape', /* restore */ true);\n });\n\n // Defer `opened` emission until after the enter animation completes — was\n // previously fired synchronously on open() (audit Medium, date-picker.ts:1199).\n this.coordinator\n .opened$()\n .subscribe(() => this.opened.emit({ trigger: this.elementRef.nativeElement }));\n\n queueMicrotask(() => {\n this.overlayInstance?.focusCalendar();\n });\n }\n\n private closeOverlay(reason: DatePickerCloseReason, restore = false): void {\n if (this.closing || !this.overlayInstance) return;\n this.closing = true;\n this.overlayInstance.leaving.set(true);\n\n if (restore) {\n const previous = this.lastValueBeforeOpen();\n if (previous !== this.internalValue()) {\n // Silent restore — no emit of dateChange.\n this.internalValue.set(previous);\n this.value.set(previous);\n const display = previous === null ? '' : this.adapter.format(previous, this.effectiveFormat());\n this.rawInputText.set(display);\n this.unparseableText.set(null);\n }\n }\n\n // Fallback chain ensures focus always returns to a visible element even when\n // returnFocusTo was never set (e.g. open() flipped programmatically).\n (this.returnFocusTo ?? this.resolveFocusTarget()).focus();\n\n this.coordinator.close(() => {\n this.overlayInstance = null;\n this.isAttached.set(false);\n this.pendingCalendarValue.set(null);\n this.returnFocusTo = null;\n untracked(() => this.open.set(false));\n this.closing = false;\n this.closed.emit(reason);\n });\n }\n\n // ── Calendar / action-bar callbacks ──\n\n private onCalendarSelection(date: D): void {\n const withTime = this.withTime() ? this.carryTimeOfDay(date) : date;\n // When time-of-day editing is active, picking a day never auto-commits —\n // the user needs a chance to tweak the time before closing.\n if (this.showActions() || this.withTime()) {\n this.pendingCalendarValue.set(withTime);\n return;\n }\n this.commit(withTime, 'calendar');\n this.closeOverlay('select');\n }\n\n /** @internal Called by the overlay when the embedded time-picker reports a new value. */\n private onTimeInput(date: D | null): void {\n if (date === null) {\n this.pendingCalendarValue.set(null);\n if (!this.showActions()) {\n this.commit(null, 'calendar');\n }\n return;\n }\n this.pendingCalendarValue.set(date);\n if (!this.showActions()) {\n this.commit(date, 'calendar');\n }\n }\n\n private onTodayClicked(): void {\n const today = this.adapter.today();\n if (!this.isInRange(today)) return;\n const withTime = this.withTime() ? this.carryTimeOfDay(today) : today;\n this.pendingCalendarValue.set(withTime);\n }\n\n /** Copies the time-of-day from the current pending/selected value onto `picked`. */\n private carryTimeOfDay(picked: D): D {\n const source = this.pendingCalendarValue() ?? this.internalValue();\n if (source === null || !this.adapter.isValid(source)) return picked;\n return this.adapter.withTime(\n picked,\n this.adapter.getHours(source),\n this.adapter.getMinutes(source),\n this.adapter.getSeconds(source),\n );\n }\n\n private onClearAction(): void {\n this.commit(null, 'clear');\n this.closeOverlay('apply');\n }\n\n private onCancelAction(): void {\n this.closeOverlay('cancel', /* restore */ true);\n }\n\n private onApplyAction(): void {\n const pending = this.pendingCalendarValue();\n if (pending !== null && !this.isInRange(pending)) {\n this.closeOverlay('cancel', /* restore */ true);\n return;\n }\n this.commit(pending, 'apply');\n this.closeOverlay('apply');\n }\n\n private onPresetClick(preset: DatePickerPreset<D>): void {\n const next = preset.date();\n if (!this.adapter.isValid(next) || !this.isInRange(next)) return;\n this.activePresetIdSignal.set(preset.id);\n this.presetSelected.emit(preset);\n if (this.showActions()) {\n this.pendingCalendarValue.set(next);\n return;\n }\n this.commit(next, 'calendar');\n this.closeOverlay('select');\n }\n\n // ── Helpers ──\n\n private resolveDialogAriaLabel(): string {\n return this.ariaLabel() || 'Choose a date';\n }\n\n private resolvePanelClass(): string {\n const raw = this.panelClass();\n return Array.isArray(raw) ? raw.join(' ') : (raw as string);\n }\n\n /** Picks the best element to receive focus on overlay close. Prefers the explicit `returnFocusTo` source, then the trigger button, the projected custom trigger, and finally the input. */\n private resolveFocusTarget(): HTMLElement {\n const trigger = this.triggerRef();\n if (trigger) return trigger.nativeElement;\n const host = this.elementRef.nativeElement;\n const custom = host.querySelector('[slot=\"trigger\"]') as HTMLElement | null;\n if (custom) return custom;\n return this.inputRef().nativeElement;\n }\n\n // ── ControlValueAccessor ──\n\n writeValue(value: unknown): void {\n if (value === null || value === undefined || value === '') {\n this.internalValue.set(null);\n this.value.set(null);\n this.unparseableText.set(null);\n this.rawInputText.set('');\n this.dateChange.emit({\n value: null,\n previousValue: this.internalValue(),\n source: 'programmatic',\n });\n return;\n }\n const coerced = this.adapter.deserialize(value);\n if (coerced === null) {\n this.internalValue.set(null);\n this.value.set(null);\n this.rawInputText.set('');\n this.unparseableText.set(null);\n return;\n }\n if (!this.adapter.isValid(coerced)) {\n this.unparseableText.set(String(value));\n this.rawInputText.set(String(value));\n return;\n }\n const previous = this.internalValue();\n this.internalValue.set(coerced);\n this.value.set(coerced);\n this.unparseableText.set(null);\n this.rawInputText.set(this.adapter.format(coerced, this.effectiveFormat()));\n this.dateChange.emit({ value: coerced, previousValue: previous, source: 'programmatic' });\n }\n\n registerOnChange(fn: (value: D | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n // ── Validator ──\n\n private validatorOnChange: () => void = () => {};\n\n /** @internal */\n validate(control: AbstractControl): ValidationErrors | null {\n // Delegate to the shared calendar validator so a `tw-date-picker` reports\n // the same CalendarErrorCode set as `tw-calendar` and `tw-date-range-picker`\n // for the same constraint violation.\n const validator = calendarValidator<'single', D>({\n mode: 'single',\n // Carried explicitly rather than inferred from `control.value`: an\n // unparseable entry commits `null`, and `null` is perfectly valid for a\n // non-required control, so reading the value alone would report the field\n // valid while the UI shows an error — the exact bug this fixes.\n lastInvalidFormValue: this.unparseableText(),\n constraints: {\n minDate: this.minDate(),\n maxDate: this.maxDate(),\n dateFilter: this.dateFilter(),\n },\n adapter: this.adapter,\n });\n return validator(control) as CalendarValidationErrors | null;\n }\n\n /** @internal */\n registerOnValidatorChange(fn: () => void): void {\n this.validatorOnChange = fn;\n }\n\n // ── FormFieldControl methods ──\n\n /** @internal */\n setDescribedByIds(ids: string[]): void {\n this.describedByIdsSignal.set([...ids]);\n }\n\n /** @internal */\n onContainerClick(event: MouseEvent): void {\n if (this.isDisabled() || this.hasCustomTrigger()) return;\n // Don't steal focus when the user clicks the trigger button directly.\n const target = event.target as HTMLElement | null;\n const triggerEl = this.triggerRef()?.nativeElement;\n if (triggerEl && target && triggerEl.contains(target)) return;\n const inputEl = this.inputRef()?.nativeElement;\n if (inputEl && document.activeElement !== inputEl) {\n inputEl.focus();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}