@dereekb/dbx-form 12.6.21 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/LICENSE +1 -1
  2. package/fesm2022/dereekb-dbx-form-calendar.mjs +86 -86
  3. package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
  4. package/fesm2022/dereekb-dbx-form-mapbox.mjs +28 -28
  5. package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
  6. package/fesm2022/dereekb-dbx-form.mjs +429 -600
  7. package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
  8. package/lib/formly/field/value/phone/_phone.scss +1 -0
  9. package/lib/style/_theming.scss +196 -1
  10. package/package.json +26 -32
  11. package/types/dereekb-dbx-form-calendar.d.ts +679 -0
  12. package/types/dereekb-dbx-form-mapbox.d.ts +216 -0
  13. package/types/dereekb-dbx-form.d.ts +3050 -0
  14. package/calendar/index.d.ts +0 -1
  15. package/calendar/lib/calendar.module.d.ts +0 -19
  16. package/calendar/lib/calendar.schedule.selection.cell.component.d.ts +0 -16
  17. package/calendar/lib/calendar.schedule.selection.component.d.ts +0 -74
  18. package/calendar/lib/calendar.schedule.selection.d.ts +0 -29
  19. package/calendar/lib/calendar.schedule.selection.days.component.d.ts +0 -15
  20. package/calendar/lib/calendar.schedule.selection.days.form.component.d.ts +0 -10
  21. package/calendar/lib/calendar.schedule.selection.dialog.button.component.d.ts +0 -15
  22. package/calendar/lib/calendar.schedule.selection.dialog.component.d.ts +0 -24
  23. package/calendar/lib/calendar.schedule.selection.form.d.ts +0 -4
  24. package/calendar/lib/calendar.schedule.selection.popover.button.component.d.ts +0 -17
  25. package/calendar/lib/calendar.schedule.selection.popover.component.d.ts +0 -14
  26. package/calendar/lib/calendar.schedule.selection.popover.content.component.d.ts +0 -5
  27. package/calendar/lib/calendar.schedule.selection.range.component.d.ts +0 -52
  28. package/calendar/lib/calendar.schedule.selection.store.d.ts +0 -282
  29. package/calendar/lib/calendar.schedule.selection.store.provide.d.ts +0 -23
  30. package/calendar/lib/calendar.schedule.selection.toggle.button.component.d.ts +0 -18
  31. package/calendar/lib/field/index.d.ts +0 -1
  32. package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +0 -102
  33. package/calendar/lib/field/schedule/calendar.schedule.field.d.ts +0 -6
  34. package/calendar/lib/field/schedule/calendar.schedule.module.d.ts +0 -8
  35. package/calendar/lib/field/schedule/index.d.ts +0 -3
  36. package/calendar/lib/index.d.ts +0 -17
  37. package/esm2022/calendar/dereekb-dbx-form-calendar.mjs +0 -5
  38. package/esm2022/calendar/index.mjs +0 -2
  39. package/esm2022/calendar/lib/calendar.module.mjs +0 -84
  40. package/esm2022/calendar/lib/calendar.schedule.selection.cell.component.mjs +0 -42
  41. package/esm2022/calendar/lib/calendar.schedule.selection.component.mjs +0 -156
  42. package/esm2022/calendar/lib/calendar.schedule.selection.days.component.mjs +0 -47
  43. package/esm2022/calendar/lib/calendar.schedule.selection.days.form.component.mjs +0 -22
  44. package/esm2022/calendar/lib/calendar.schedule.selection.dialog.button.component.mjs +0 -32
  45. package/esm2022/calendar/lib/calendar.schedule.selection.dialog.component.mjs +0 -59
  46. package/esm2022/calendar/lib/calendar.schedule.selection.form.mjs +0 -15
  47. package/esm2022/calendar/lib/calendar.schedule.selection.mjs +0 -31
  48. package/esm2022/calendar/lib/calendar.schedule.selection.popover.button.component.mjs +0 -50
  49. package/esm2022/calendar/lib/calendar.schedule.selection.popover.component.mjs +0 -41
  50. package/esm2022/calendar/lib/calendar.schedule.selection.popover.content.component.mjs +0 -34
  51. package/esm2022/calendar/lib/calendar.schedule.selection.range.component.mjs +0 -165
  52. package/esm2022/calendar/lib/calendar.schedule.selection.store.mjs +0 -785
  53. package/esm2022/calendar/lib/calendar.schedule.selection.store.provide.mjs +0 -48
  54. package/esm2022/calendar/lib/calendar.schedule.selection.toggle.button.component.mjs +0 -67
  55. package/esm2022/calendar/lib/field/index.mjs +0 -3
  56. package/esm2022/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +0 -154
  57. package/esm2022/calendar/lib/field/schedule/calendar.schedule.field.mjs +0 -28
  58. package/esm2022/calendar/lib/field/schedule/calendar.schedule.module.mjs +0 -26
  59. package/esm2022/calendar/lib/field/schedule/index.mjs +0 -4
  60. package/esm2022/calendar/lib/index.mjs +0 -18
  61. package/esm2022/dereekb-dbx-form.mjs +0 -5
  62. package/esm2022/index.mjs +0 -2
  63. package/esm2022/lib/form/action/form.action.dialog.component.mjs +0 -79
  64. package/esm2022/lib/form/action/form.action.directive.mjs +0 -167
  65. package/esm2022/lib/form/action/form.action.module.mjs +0 -19
  66. package/esm2022/lib/form/action/index.mjs +0 -5
  67. package/esm2022/lib/form/action/transition/form.action.transition.module.mjs +0 -19
  68. package/esm2022/lib/form/action/transition/form.action.transition.safety.directive.mjs +0 -28
  69. package/esm2022/lib/form/action/transition/index.mjs +0 -3
  70. package/esm2022/lib/form/form.angular.util.mjs +0 -13
  71. package/esm2022/lib/form/form.mjs +0 -42
  72. package/esm2022/lib/form/form.module.mjs +0 -17
  73. package/esm2022/lib/form/index.mjs +0 -6
  74. package/esm2022/lib/form/io/form.change.directive.mjs +0 -36
  75. package/esm2022/lib/form/io/form.input.directive.mjs +0 -95
  76. package/esm2022/lib/form/io/form.io.module.mjs +0 -26
  77. package/esm2022/lib/form/io/form.loading.directive.mjs +0 -36
  78. package/esm2022/lib/form/io/index.mjs +0 -5
  79. package/esm2022/lib/form.module.mjs +0 -18
  80. package/esm2022/lib/form.providers.mjs +0 -32
  81. package/esm2022/lib/formly/config/index.mjs +0 -2
  82. package/esm2022/lib/formly/config/validation.mjs +0 -23
  83. package/esm2022/lib/formly/field/checklist/checklist.field.mjs +0 -102
  84. package/esm2022/lib/formly/field/checklist/checklist.item.field.component.mjs +0 -86
  85. package/esm2022/lib/formly/field/checklist/checklist.item.field.content.default.component.mjs +0 -50
  86. package/esm2022/lib/formly/field/checklist/checklist.item.field.mjs +0 -14
  87. package/esm2022/lib/formly/field/checklist/checklist.item.field.module.mjs +0 -30
  88. package/esm2022/lib/formly/field/checklist/checklist.item.mjs +0 -2
  89. package/esm2022/lib/formly/field/checklist/index.mjs +0 -7
  90. package/esm2022/lib/formly/field/component/component.field.component.mjs +0 -25
  91. package/esm2022/lib/formly/field/component/component.field.mjs +0 -7
  92. package/esm2022/lib/formly/field/component/component.field.module.mjs +0 -26
  93. package/esm2022/lib/formly/field/component/index.mjs +0 -4
  94. package/esm2022/lib/formly/field/field.mjs +0 -97
  95. package/esm2022/lib/formly/field/form.field.module.mjs +0 -22
  96. package/esm2022/lib/formly/field/index.mjs +0 -9
  97. package/esm2022/lib/formly/field/selection/index.mjs +0 -8
  98. package/esm2022/lib/formly/field/selection/list/index.mjs +0 -4
  99. package/esm2022/lib/formly/field/selection/list/list.field.component.mjs +0 -90
  100. package/esm2022/lib/formly/field/selection/list/list.field.mjs +0 -15
  101. package/esm2022/lib/formly/field/selection/list/list.field.module.mjs +0 -26
  102. package/esm2022/lib/formly/field/selection/pickable/index.mjs +0 -8
  103. package/esm2022/lib/formly/field/selection/pickable/pickable.chip.field.component.mjs +0 -37
  104. package/esm2022/lib/formly/field/selection/pickable/pickable.field.directive.mjs +0 -272
  105. package/esm2022/lib/formly/field/selection/pickable/pickable.field.mjs +0 -26
  106. package/esm2022/lib/formly/field/selection/pickable/pickable.field.module.mjs +0 -33
  107. package/esm2022/lib/formly/field/selection/pickable/pickable.list.field.component.mjs +0 -130
  108. package/esm2022/lib/formly/field/selection/pickable/pickable.mjs +0 -2
  109. package/esm2022/lib/formly/field/selection/pickable/pickable.util.mjs +0 -35
  110. package/esm2022/lib/formly/field/selection/searchable/index.mjs +0 -9
  111. package/esm2022/lib/formly/field/selection/searchable/searchable.chip.field.component.mjs +0 -70
  112. package/esm2022/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.mjs +0 -90
  113. package/esm2022/lib/formly/field/selection/searchable/searchable.field.directive.mjs +0 -288
  114. package/esm2022/lib/formly/field/selection/searchable/searchable.field.mjs +0 -69
  115. package/esm2022/lib/formly/field/selection/searchable/searchable.field.module.mjs +0 -34
  116. package/esm2022/lib/formly/field/selection/searchable/searchable.mjs +0 -2
  117. package/esm2022/lib/formly/field/selection/searchable/searchable.text.field.component.mjs +0 -72
  118. package/esm2022/lib/formly/field/selection/searchable/text.chip.field.mjs +0 -15
  119. package/esm2022/lib/formly/field/selection/selection.field.mjs +0 -39
  120. package/esm2022/lib/formly/field/selection/selection.mjs +0 -2
  121. package/esm2022/lib/formly/field/selection/selection.module.mjs +0 -28
  122. package/esm2022/lib/formly/field/selection/sourceselect/index.mjs +0 -5
  123. package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.component.mjs +0 -325
  124. package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.mjs +0 -14
  125. package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.module.mjs +0 -26
  126. package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.mjs +0 -2
  127. package/esm2022/lib/formly/field/texteditor/index.mjs +0 -4
  128. package/esm2022/lib/formly/field/texteditor/texteditor.field.component.mjs +0 -97
  129. package/esm2022/lib/formly/field/texteditor/texteditor.field.mjs +0 -21
  130. package/esm2022/lib/formly/field/texteditor/texteditor.field.module.mjs +0 -26
  131. package/esm2022/lib/formly/field/value/array/array.field.component.mjs +0 -231
  132. package/esm2022/lib/formly/field/value/array/array.field.mjs +0 -28
  133. package/esm2022/lib/formly/field/value/array/array.field.module.mjs +0 -26
  134. package/esm2022/lib/formly/field/value/array/index.mjs +0 -4
  135. package/esm2022/lib/formly/field/value/boolean/boolean.field.mjs +0 -51
  136. package/esm2022/lib/formly/field/value/boolean/boolean.field.module.mjs +0 -19
  137. package/esm2022/lib/formly/field/value/boolean/index.mjs +0 -3
  138. package/esm2022/lib/formly/field/value/date/date.field.module.mjs +0 -36
  139. package/esm2022/lib/formly/field/value/date/date.value.mjs +0 -133
  140. package/esm2022/lib/formly/field/value/date/datetime.field.component.mjs +0 -737
  141. package/esm2022/lib/formly/field/value/date/datetime.field.mjs +0 -151
  142. package/esm2022/lib/formly/field/value/date/datetime.field.service.mjs +0 -23
  143. package/esm2022/lib/formly/field/value/date/datetime.mjs +0 -26
  144. package/esm2022/lib/formly/field/value/date/datetime.preset.mjs +0 -31
  145. package/esm2022/lib/formly/field/value/date/fixeddaterange.field.component.mjs +0 -521
  146. package/esm2022/lib/formly/field/value/date/index.mjs +0 -10
  147. package/esm2022/lib/formly/field/value/hidden.field.mjs +0 -8
  148. package/esm2022/lib/formly/field/value/index.mjs +0 -9
  149. package/esm2022/lib/formly/field/value/number/index.mjs +0 -3
  150. package/esm2022/lib/formly/field/value/number/number.field.mjs +0 -75
  151. package/esm2022/lib/formly/field/value/number/number.field.module.mjs +0 -18
  152. package/esm2022/lib/formly/field/value/phone/index.mjs +0 -4
  153. package/esm2022/lib/formly/field/value/phone/phone.field.component.mjs +0 -104
  154. package/esm2022/lib/formly/field/value/phone/phone.field.mjs +0 -66
  155. package/esm2022/lib/formly/field/value/phone/phone.field.module.mjs +0 -26
  156. package/esm2022/lib/formly/field/value/text/index.mjs +0 -5
  157. package/esm2022/lib/formly/field/value/text/text.additional.field.mjs +0 -114
  158. package/esm2022/lib/formly/field/value/text/text.address.field.mjs +0 -73
  159. package/esm2022/lib/formly/field/value/text/text.field.mjs +0 -47
  160. package/esm2022/lib/formly/field/value/text/text.field.module.mjs +0 -20
  161. package/esm2022/lib/formly/field/value/value.module.mjs +0 -31
  162. package/esm2022/lib/formly/field/wrapper/autotouch.wrapper.component.mjs +0 -32
  163. package/esm2022/lib/formly/field/wrapper/expand.wrapper.component.mjs +0 -34
  164. package/esm2022/lib/formly/field/wrapper/expand.wrapper.delegate.mjs +0 -58
  165. package/esm2022/lib/formly/field/wrapper/flex.wrapper.component.mjs +0 -38
  166. package/esm2022/lib/formly/field/wrapper/index.mjs +0 -13
  167. package/esm2022/lib/formly/field/wrapper/info.wrapper.component.mjs +0 -48
  168. package/esm2022/lib/formly/field/wrapper/section.wrapper.component.mjs +0 -31
  169. package/esm2022/lib/formly/field/wrapper/style.wrapper.component.mjs +0 -53
  170. package/esm2022/lib/formly/field/wrapper/subsection.wrapper.component.mjs +0 -30
  171. package/esm2022/lib/formly/field/wrapper/toggle.wrapper.component.mjs +0 -55
  172. package/esm2022/lib/formly/field/wrapper/working.wrapper.component.mjs +0 -45
  173. package/esm2022/lib/formly/field/wrapper/wrapper.key.mjs +0 -10
  174. package/esm2022/lib/formly/field/wrapper/wrapper.mjs +0 -77
  175. package/esm2022/lib/formly/field/wrapper/wrapper.module.mjs +0 -101
  176. package/esm2022/lib/formly/form/form.form.mjs +0 -17
  177. package/esm2022/lib/formly/form/form.form.module.mjs +0 -20
  178. package/esm2022/lib/formly/form/index.mjs +0 -4
  179. package/esm2022/lib/formly/form/search.form.component.mjs +0 -35
  180. package/esm2022/lib/formly/formly.component.template.mjs +0 -29
  181. package/esm2022/lib/formly/formly.context.directive.mjs +0 -23
  182. package/esm2022/lib/formly/formly.context.mjs +0 -102
  183. package/esm2022/lib/formly/formly.directive.mjs +0 -84
  184. package/esm2022/lib/formly/formly.form.component.mjs +0 -194
  185. package/esm2022/lib/formly/formly.module.mjs +0 -40
  186. package/esm2022/lib/formly/formly.providers.mjs +0 -8
  187. package/esm2022/lib/formly/index.mjs +0 -12
  188. package/esm2022/lib/formly/template/available.mjs +0 -18
  189. package/esm2022/lib/formly/template/available.module.mjs +0 -18
  190. package/esm2022/lib/formly/template/index.mjs +0 -8
  191. package/esm2022/lib/formly/template/login.mjs +0 -92
  192. package/esm2022/lib/formly/template/login.module.mjs +0 -17
  193. package/esm2022/lib/formly/template/timezone.mjs +0 -46
  194. package/esm2022/lib/formly/template/timezone.module.mjs +0 -17
  195. package/esm2022/lib/formly/template/website.mjs +0 -25
  196. package/esm2022/lib/index.mjs +0 -7
  197. package/esm2022/lib/layout/form.layout.module.mjs +0 -20
  198. package/esm2022/lib/layout/form.spacer.directive.mjs +0 -20
  199. package/esm2022/lib/layout/index.mjs +0 -3
  200. package/esm2022/lib/validator/available.mjs +0 -31
  201. package/esm2022/lib/validator/boolean.mjs +0 -12
  202. package/esm2022/lib/validator/email.mjs +0 -6
  203. package/esm2022/lib/validator/field.mjs +0 -31
  204. package/esm2022/lib/validator/index.mjs +0 -8
  205. package/esm2022/lib/validator/number.mjs +0 -53
  206. package/esm2022/lib/validator/phone.mjs +0 -61
  207. package/esm2022/lib/validator/website.mjs +0 -68
  208. package/esm2022/mapbox/dereekb-dbx-form-mapbox.mjs +0 -5
  209. package/esm2022/mapbox/index.mjs +0 -3
  210. package/esm2022/mapbox/lib/field/index.mjs +0 -3
  211. package/esm2022/mapbox/lib/field/latlng/index.mjs +0 -5
  212. package/esm2022/mapbox/lib/field/latlng/latlng.field.component.mjs +0 -262
  213. package/esm2022/mapbox/lib/field/latlng/latlng.field.marker.component.mjs +0 -34
  214. package/esm2022/mapbox/lib/field/latlng/latlng.field.mjs +0 -35
  215. package/esm2022/mapbox/lib/field/latlng/latlng.module.mjs +0 -26
  216. package/esm2022/mapbox/lib/field/zoom/index.mjs +0 -4
  217. package/esm2022/mapbox/lib/field/zoom/zoom.field.component.mjs +0 -146
  218. package/esm2022/mapbox/lib/field/zoom/zoom.field.mjs +0 -23
  219. package/esm2022/mapbox/lib/field/zoom/zoom.module.mjs +0 -26
  220. package/esm2022/mapbox/lib/mapbox.module.mjs +0 -16
  221. package/index.d.ts +0 -1
  222. package/lib/form/action/form.action.dialog.component.d.ts +0 -63
  223. package/lib/form/action/form.action.directive.d.ts +0 -66
  224. package/lib/form/action/form.action.module.d.ts +0 -10
  225. package/lib/form/action/index.d.ts +0 -4
  226. package/lib/form/action/transition/form.action.transition.module.d.ts +0 -10
  227. package/lib/form/action/transition/form.action.transition.safety.directive.d.ts +0 -17
  228. package/lib/form/action/transition/index.d.ts +0 -2
  229. package/lib/form/form.angular.util.d.ts +0 -15
  230. package/lib/form/form.d.ts +0 -92
  231. package/lib/form/form.module.d.ts +0 -9
  232. package/lib/form/index.d.ts +0 -5
  233. package/lib/form/io/form.change.directive.d.ts +0 -17
  234. package/lib/form/io/form.input.directive.d.ts +0 -28
  235. package/lib/form/io/form.io.module.d.ts +0 -16
  236. package/lib/form/io/form.loading.directive.d.ts +0 -23
  237. package/lib/form/io/index.d.ts +0 -4
  238. package/lib/form.module.d.ts +0 -10
  239. package/lib/form.providers.d.ts +0 -8
  240. package/lib/formly/config/index.d.ts +0 -1
  241. package/lib/formly/config/validation.d.ts +0 -23
  242. package/lib/formly/field/checklist/checklist.field.d.ts +0 -44
  243. package/lib/formly/field/checklist/checklist.item.d.ts +0 -36
  244. package/lib/formly/field/checklist/checklist.item.field.component.d.ts +0 -43
  245. package/lib/formly/field/checklist/checklist.item.field.content.default.component.d.ts +0 -10
  246. package/lib/formly/field/checklist/checklist.item.field.d.ts +0 -7
  247. package/lib/formly/field/checklist/checklist.item.field.module.d.ts +0 -10
  248. package/lib/formly/field/checklist/index.d.ts +0 -6
  249. package/lib/formly/field/component/component.field.component.d.ts +0 -12
  250. package/lib/formly/field/component/component.field.d.ts +0 -3
  251. package/lib/formly/field/component/component.field.module.d.ts +0 -8
  252. package/lib/formly/field/component/index.d.ts +0 -3
  253. package/lib/formly/field/field.d.ts +0 -99
  254. package/lib/formly/field/form.field.module.d.ts +0 -12
  255. package/lib/formly/field/index.d.ts +0 -8
  256. package/lib/formly/field/selection/index.d.ts +0 -7
  257. package/lib/formly/field/selection/list/index.d.ts +0 -3
  258. package/lib/formly/field/selection/list/list.field.component.d.ts +0 -55
  259. package/lib/formly/field/selection/list/list.field.d.ts +0 -8
  260. package/lib/formly/field/selection/list/list.field.module.d.ts +0 -8
  261. package/lib/formly/field/selection/pickable/index.d.ts +0 -7
  262. package/lib/formly/field/selection/pickable/pickable.chip.field.component.d.ts +0 -10
  263. package/lib/formly/field/selection/pickable/pickable.d.ts +0 -26
  264. package/lib/formly/field/selection/pickable/pickable.field.d.ts +0 -8
  265. package/lib/formly/field/selection/pickable/pickable.field.directive.d.ts +0 -169
  266. package/lib/formly/field/selection/pickable/pickable.field.module.d.ts +0 -9
  267. package/lib/formly/field/selection/pickable/pickable.list.field.component.d.ts +0 -39
  268. package/lib/formly/field/selection/pickable/pickable.util.d.ts +0 -14
  269. package/lib/formly/field/selection/searchable/index.d.ts +0 -8
  270. package/lib/formly/field/selection/searchable/searchable.chip.field.component.d.ts +0 -28
  271. package/lib/formly/field/selection/searchable/searchable.d.ts +0 -39
  272. package/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.d.ts +0 -22
  273. package/lib/formly/field/selection/searchable/searchable.field.d.ts +0 -25
  274. package/lib/formly/field/selection/searchable/searchable.field.directive.d.ts +0 -163
  275. package/lib/formly/field/selection/searchable/searchable.field.module.d.ts +0 -10
  276. package/lib/formly/field/selection/searchable/searchable.text.field.component.d.ts +0 -24
  277. package/lib/formly/field/selection/searchable/text.chip.field.d.ts +0 -8
  278. package/lib/formly/field/selection/selection.d.ts +0 -26
  279. package/lib/formly/field/selection/selection.field.d.ts +0 -38
  280. package/lib/formly/field/selection/selection.module.d.ts +0 -18
  281. package/lib/formly/field/selection/sourceselect/index.d.ts +0 -4
  282. package/lib/formly/field/selection/sourceselect/sourceselect.d.ts +0 -116
  283. package/lib/formly/field/selection/sourceselect/sourceselect.field.component.d.ts +0 -95
  284. package/lib/formly/field/selection/sourceselect/sourceselect.field.d.ts +0 -7
  285. package/lib/formly/field/selection/sourceselect/sourceselect.field.module.d.ts +0 -8
  286. package/lib/formly/field/texteditor/index.d.ts +0 -3
  287. package/lib/formly/field/texteditor/texteditor.field.component.d.ts +0 -24
  288. package/lib/formly/field/texteditor/texteditor.field.d.ts +0 -6
  289. package/lib/formly/field/texteditor/texteditor.field.module.d.ts +0 -8
  290. package/lib/formly/field/value/array/array.field.component.d.ts +0 -89
  291. package/lib/formly/field/value/array/array.field.d.ts +0 -40
  292. package/lib/formly/field/value/array/array.field.module.d.ts +0 -8
  293. package/lib/formly/field/value/array/index.d.ts +0 -3
  294. package/lib/formly/field/value/boolean/boolean.field.d.ts +0 -8
  295. package/lib/formly/field/value/boolean/boolean.field.module.d.ts +0 -9
  296. package/lib/formly/field/value/boolean/index.d.ts +0 -2
  297. package/lib/formly/field/value/date/date.field.module.d.ts +0 -10
  298. package/lib/formly/field/value/date/date.value.d.ts +0 -32
  299. package/lib/formly/field/value/date/datetime.d.ts +0 -56
  300. package/lib/formly/field/value/date/datetime.field.component.d.ts +0 -307
  301. package/lib/formly/field/value/date/datetime.field.d.ts +0 -31
  302. package/lib/formly/field/value/date/datetime.field.service.d.ts +0 -12
  303. package/lib/formly/field/value/date/datetime.preset.d.ts +0 -2
  304. package/lib/formly/field/value/date/fixeddaterange.field.component.d.ts +0 -163
  305. package/lib/formly/field/value/date/index.d.ts +0 -9
  306. package/lib/formly/field/value/hidden.field.d.ts +0 -4
  307. package/lib/formly/field/value/index.d.ts +0 -8
  308. package/lib/formly/field/value/number/index.d.ts +0 -2
  309. package/lib/formly/field/value/number/number.field.d.ts +0 -46
  310. package/lib/formly/field/value/number/number.field.module.d.ts +0 -8
  311. package/lib/formly/field/value/phone/index.d.ts +0 -3
  312. package/lib/formly/field/value/phone/phone.field.component.d.ts +0 -35
  313. package/lib/formly/field/value/phone/phone.field.d.ts +0 -28
  314. package/lib/formly/field/value/phone/phone.field.module.d.ts +0 -8
  315. package/lib/formly/field/value/text/index.d.ts +0 -4
  316. package/lib/formly/field/value/text/text.additional.field.d.ts +0 -24
  317. package/lib/formly/field/value/text/text.address.field.d.ts +0 -43
  318. package/lib/formly/field/value/text/text.field.d.ts +0 -21
  319. package/lib/formly/field/value/text/text.field.module.d.ts +0 -10
  320. package/lib/formly/field/value/value.module.d.ts +0 -21
  321. package/lib/formly/field/wrapper/autotouch.wrapper.component.d.ts +0 -11
  322. package/lib/formly/field/wrapper/expand.wrapper.component.d.ts +0 -14
  323. package/lib/formly/field/wrapper/expand.wrapper.delegate.d.ts +0 -31
  324. package/lib/formly/field/wrapper/flex.wrapper.component.d.ts +0 -25
  325. package/lib/formly/field/wrapper/index.d.ts +0 -12
  326. package/lib/formly/field/wrapper/info.wrapper.component.d.ts +0 -11
  327. package/lib/formly/field/wrapper/section.wrapper.component.d.ts +0 -10
  328. package/lib/formly/field/wrapper/style.wrapper.component.d.ts +0 -27
  329. package/lib/formly/field/wrapper/subsection.wrapper.component.d.ts +0 -10
  330. package/lib/formly/field/wrapper/toggle.wrapper.component.d.ts +0 -17
  331. package/lib/formly/field/wrapper/working.wrapper.component.d.ts +0 -21
  332. package/lib/formly/field/wrapper/wrapper.d.ts +0 -35
  333. package/lib/formly/field/wrapper/wrapper.key.d.ts +0 -9
  334. package/lib/formly/field/wrapper/wrapper.module.d.ts +0 -17
  335. package/lib/formly/form/form.form.d.ts +0 -11
  336. package/lib/formly/form/form.form.module.d.ts +0 -10
  337. package/lib/formly/form/index.d.ts +0 -3
  338. package/lib/formly/form/search.form.component.d.ts +0 -13
  339. package/lib/formly/formly.component.template.d.ts +0 -19
  340. package/lib/formly/formly.context.d.ts +0 -57
  341. package/lib/formly/formly.context.directive.d.ts +0 -18
  342. package/lib/formly/formly.directive.d.ts +0 -56
  343. package/lib/formly/formly.form.component.d.ts +0 -52
  344. package/lib/formly/formly.module.d.ts +0 -15
  345. package/lib/formly/formly.providers.d.ts +0 -1
  346. package/lib/formly/index.d.ts +0 -11
  347. package/lib/formly/template/available.d.ts +0 -7
  348. package/lib/formly/template/available.module.d.ts +0 -8
  349. package/lib/formly/template/index.d.ts +0 -7
  350. package/lib/formly/template/login.d.ts +0 -66
  351. package/lib/formly/template/login.module.d.ts +0 -7
  352. package/lib/formly/template/timezone.d.ts +0 -20
  353. package/lib/formly/template/timezone.module.d.ts +0 -7
  354. package/lib/formly/template/website.d.ts +0 -15
  355. package/lib/index.d.ts +0 -6
  356. package/lib/layout/form.layout.module.d.ts +0 -10
  357. package/lib/layout/form.spacer.directive.d.ts +0 -8
  358. package/lib/layout/index.d.ts +0 -2
  359. package/lib/validator/available.d.ts +0 -30
  360. package/lib/validator/boolean.d.ts +0 -2
  361. package/lib/validator/email.d.ts +0 -2
  362. package/lib/validator/field.d.ts +0 -32
  363. package/lib/validator/index.d.ts +0 -7
  364. package/lib/validator/number.d.ts +0 -23
  365. package/lib/validator/phone.d.ts +0 -16
  366. package/lib/validator/website.d.ts +0 -31
  367. package/mapbox/index.d.ts +0 -2
  368. package/mapbox/lib/field/index.d.ts +0 -2
  369. package/mapbox/lib/field/latlng/index.d.ts +0 -4
  370. package/mapbox/lib/field/latlng/latlng.field.component.d.ts +0 -116
  371. package/mapbox/lib/field/latlng/latlng.field.d.ts +0 -6
  372. package/mapbox/lib/field/latlng/latlng.field.marker.component.d.ts +0 -12
  373. package/mapbox/lib/field/latlng/latlng.module.d.ts +0 -8
  374. package/mapbox/lib/field/zoom/index.d.ts +0 -3
  375. package/mapbox/lib/field/zoom/zoom.field.component.d.ts +0 -68
  376. package/mapbox/lib/field/zoom/zoom.field.d.ts +0 -6
  377. package/mapbox/lib/field/zoom/zoom.module.d.ts +0 -8
  378. package/mapbox/lib/mapbox.module.d.ts +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"dereekb-dbx-form-calendar.mjs","sources":["../../../../packages/dbx-form/calendar/src/lib/field/schedule/calendar.schedule.field.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.store.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.store.provide.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.form.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.days.form.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.days.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.range.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.range.component.html","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.popover.content.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.popover.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.popover.button.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.cell.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.toggle.button.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.component.html","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.dialog.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.dialog.button.component.ts","../../../../packages/dbx-form/calendar/src/lib/field/schedule/calendar.schedule.field.component.ts","../../../../packages/dbx-form/calendar/src/lib/field/schedule/calendar.schedule.module.ts","../../../../packages/dbx-form/calendar/src/lib/field/index.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.module.ts","../../../../packages/dbx-form/calendar/src/dereekb-dbx-form-calendar.ts"],"sourcesContent":["import { type DescriptionFieldConfig, type FieldConfig, formlyField, type LabeledFieldConfig, propsAndConfigForFieldConfig } from '@dereekb/dbx-form';\nimport { type FormlyFieldConfig } from '@ngx-formly/core';\nimport { type DbxFormCalendarDateCellScheduleRangeFieldProps } from './calendar.schedule.field.component';\n\nexport interface DateScheduleRangeFieldConfig extends Omit<LabeledFieldConfig, 'key' | 'placeholder'>, DescriptionFieldConfig, Partial<FieldConfig>, DbxFormCalendarDateCellScheduleRangeFieldProps {}\n\nexport function dateScheduleRangeField(config: DateScheduleRangeFieldConfig = {}): FormlyFieldConfig {\n const { key = 'schedule', appearance, hideCustomize, allowTextInput, filter, outputTimezone, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions, defaultScheduleDays, minMaxDateRange, cellContentFactory, dialogContentConfig, customDetailsConfig } = config;\n\n const fieldConfig: FormlyFieldConfig = {\n ...formlyField({\n key,\n type: 'date-schedule-range',\n ...propsAndConfigForFieldConfig(config, {\n label: config.label ?? 'Schedule',\n allowTextInput,\n appearance,\n hideCustomize,\n outputTimezone,\n defaultScheduleDays,\n minMaxDateRange,\n filter,\n exclusions,\n dialogContentConfig,\n computeSelectionResultRelativeToFilter,\n initialSelectionState,\n cellContentFactory,\n customDetailsConfig\n })\n })\n };\n\n return fieldConfig;\n}\n","import { type DateCellIndex, type DateRange, type DateCellScheduleDateRange } from '@dereekb/date';\nimport { type FactoryWithRequiredInput } from '@dereekb/util';\nimport { type CalendarMonthViewDay } from 'angular-calendar';\n\nexport interface CalendarScheduleSelectionValue {\n /**\n * Schedule range.\n */\n readonly dateScheduleRange: DateCellScheduleDateRange;\n /**\n * Min and max dates in the selection.\n */\n readonly minMaxRange: DateRange;\n}\n\nexport enum CalendarScheduleSelectionDayState {\n NOT_APPLICABLE = 0,\n DISABLED = 1,\n NOT_SELECTED = 2,\n SELECTED = 3\n}\n\nexport interface CalendarScheduleSelectionMetadata {\n readonly state: CalendarScheduleSelectionDayState;\n readonly i: DateCellIndex;\n}\n\nexport interface CalendarScheduleSelectionCellContent {\n readonly icon?: string;\n readonly text?: string;\n}\n\nexport type CalendarScheduleSelectionCellContentFactory<M extends CalendarScheduleSelectionMetadata = CalendarScheduleSelectionMetadata> = FactoryWithRequiredInput<CalendarScheduleSelectionCellContent, CalendarMonthViewDay<M>>;\n\nexport const defaultCalendarScheduleSelectionCellContentFactory: CalendarScheduleSelectionCellContentFactory = (day: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>) => {\n let icon: string | undefined;\n let text: string | undefined;\n\n switch (day.meta?.state) {\n case CalendarScheduleSelectionDayState.SELECTED:\n icon = 'check_box';\n break;\n case CalendarScheduleSelectionDayState.DISABLED:\n icon = 'block';\n break;\n case CalendarScheduleSelectionDayState.NOT_APPLICABLE:\n break;\n case CalendarScheduleSelectionDayState.NOT_SELECTED:\n icon = 'check_box_outline_blank';\n text = 'Add';\n break;\n }\n\n const result: CalendarScheduleSelectionCellContent = {\n icon,\n text\n };\n\n return result;\n};\n","import { Injectable } from '@angular/core';\nimport {\n DateCellDayOfWeekFactory,\n dateCellDayOfWeekFactory,\n DateCellIndex,\n DateCellRangeWithRange,\n dateCellTimingDateFactory,\n DateRange,\n dateCellScheduleDateFilter,\n copyDateCellScheduleDateFilterConfig,\n DateCellScheduleDateFilterConfig,\n DateCellScheduleDayCode,\n dateCellScheduleEncodedWeek,\n DateCellScheduleEncodedWeek,\n DateCellTimingRelativeIndexFactory,\n dateCellTimingRelativeIndexFactory,\n expandDateCellScheduleDayCodes,\n expandDateCellScheduleDayCodesToDayOfWeekSet,\n findMaxDate,\n findMinDate,\n isDateInDateRangeFunction,\n IsDateWithinDateCellRangeFunction,\n isDateWithinDateCellRangeFunction,\n isSameDate,\n isSameDateDay,\n isSameDateRange,\n DateOrDateRangeOrDateCellIndexOrDateCellRange,\n dateCellTimingRelativeIndexArrayFactory,\n isInfiniteDateRange,\n dateTimezoneUtcNormal,\n DateTimezoneUtcNormalInstance,\n expandDateCellScheduleRange,\n DateCell,\n DateCellDurationSpan,\n formatToISO8601DayStringForSystem,\n DateCellTimingRelativeIndexFactoryInput,\n dateCellScheduleDayCodesAreSetsEquivalent,\n simplifyDateCellScheduleDayCodes,\n fullWeekDateCellScheduleDayCodes,\n dateCellTimingStartDateFactory,\n DateCellScheduleDateRange,\n dateCellTimingStartsAtForStartOfDay,\n isSameDateCellScheduleDateRange,\n FullDateCellScheduleRangeInputDateRange,\n fullDateCellScheduleRange,\n dateCellTimingTimezoneNormalInstance,\n changeDateCellScheduleDateRangeToTimezone,\n SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE\n} from '@dereekb/date';\nimport { distinctUntilHasDifferentValues, filterMaybe } from '@dereekb/rxjs';\nimport { Maybe, TimezoneString, DecisionFunction, IterableOrValue, iterableToArray, addToSet, toggleInSet, isIndexNumberInIndexRangeFunction, MaybeMap, minAndMaxNumber, DayOfWeek, range, AllOrNoneSelection, unique, mergeArrays, ArrayOrValue, ISO8601DayString, mapValuesToSet, isInAllowedDaysOfWeekSet, Building, firstValueFromIterable, isIterable, removeFromSet, Configurable } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { startOfDay, endOfDay, isBefore } from 'date-fns';\nimport { Observable, distinctUntilChanged, map, shareReplay, switchMap, tap, first, combineLatestWith, of } from 'rxjs';\nimport { CalendarScheduleSelectionCellContentFactory, CalendarScheduleSelectionValue, defaultCalendarScheduleSelectionCellContentFactory } from './calendar.schedule.selection';\n\nexport interface CalendarScheduleSelectionInputDateRange {\n /**\n * Input Start Date\n */\n readonly inputStart: Date;\n /**\n * Input End Date\n */\n readonly inputEnd: Date;\n}\n\nexport type PartialCalendarScheduleSelectionInputDateRange = Partial<MaybeMap<CalendarScheduleSelectionInputDateRange>>;\n\n/**\n * DbxCalendarScheduleSelectionStore selection mode.\n *\n * When in single mode the toggle function is treated as a set that clears all values and only selects the toggle'd value.\n */\nexport type DbxCalendarScheduleSelectionStoreSelectionMode = 'multiple' | 'single';\n\nexport interface CalendarScheduleSelectionState extends PartialCalendarScheduleSelectionInputDateRange {\n /**\n * Selection mode for this calendar. Defaults to \"multiple\"\n */\n readonly selectionMode: DbxCalendarScheduleSelectionStoreSelectionMode;\n /**\n * Readonly state of the view.\n *\n * Does not affect state changes directly, but instead acts as a flag for the parent view to set and the consuming views to update on.\n */\n readonly isViewReadonly?: Maybe<boolean>;\n /**\n * Set of the days of week that are allowed by default.\n */\n readonly defaultScheduleDays: Set<DateCellScheduleDayCode>;\n /**\n * Filters the days of the schedule to only allow selecting days in the schedule.\n *\n * The output will be relative to this filter, and in it's timezone unless computeSelectionResultRelativeToFilter is false.\n *\n * This is a copy of any set/configured input filter and will have a start date set from start or startsAt.\n */\n readonly filter?: Maybe<DateCellScheduleDateFilterConfig>;\n /**\n * Additional exclusions that may not be defined within the filter.\n */\n readonly inputExclusions?: Maybe<ArrayOrValue<DateOrDateRangeOrDateCellIndexOrDateCellRange>>;\n /**\n * The computed exclusions given the input exclusions.\n */\n readonly computedExclusions?: Maybe<DateCellIndex[]>;\n /**\n * The min/max date range. Used for restricting the min/max value. Works with the filter. The greater/lesser of the start/end dates are used if both are provided.\n */\n readonly minMaxDateRange?: Maybe<Partial<DateRange>>;\n /**\n * Start date. Is updated as the inputStart is modified or filter is provided that provides the start date.\n *\n * Defaults to today and the current timezone.\n */\n readonly start: DateCellScheduleDateRange['start'];\n /**\n * System Timezone. Does not change.\n */\n readonly systemTimezone: TimezoneString;\n /**\n * Timezone to use when outputting the value. Only influences the output start date.\n */\n readonly outputTimezone?: Maybe<TimezoneString>;\n /**\n * Current timezone normal with the current timezone.\n */\n readonly outputTimezoneNormal?: Maybe<DateTimezoneUtcNormalInstance>;\n /**\n * DateCellTimingRelativeIndexFactory\n */\n readonly indexFactory: DateCellTimingRelativeIndexFactory;\n /**\n * Array of manually selected dates within the picked range. This is NOT the set of all selected indexes in terms of output.\n *\n * Values that exist outside of the \"input\" range are considered toggled on, while those\n * that are selected within the range are considered toggled off.\n *\n * If dates are selected, and then a range is selected, then those dates within the range that fall\n * within the range are cleared from selection.\n *\n * These indexes are relative to the start date.\n */\n readonly toggledIndexes: Set<DateCellIndex>;\n /**\n * Days of the schedule that are allowed to be picked. If not defined, defaults to defaultScheduleDays.\n */\n readonly scheduleDays?: Maybe<Set<DateCellScheduleDayCode>>;\n /**\n * The current DateCellScheduleDayCode value.\n */\n readonly effectiveScheduleDays: Set<DateCellScheduleDayCode>;\n /**\n * Set of the days of week that are allowed. Derived from the current schedule days value.\n */\n readonly allowedDaysOfWeek: Set<DayOfWeek>;\n /**\n *\n */\n readonly indexDayOfWeek: DateCellDayOfWeekFactory;\n /**\n * Decision function that returns true if a value is enabled given the current filter.\n */\n readonly isEnabledFilterDay: DecisionFunction<DateCellTimingRelativeIndexFactoryInput>;\n /**\n * Decision function that returns true if a value is enabled.\n *\n * This function does not take the current filter into account.\n */\n readonly isEnabledDay: DecisionFunction<DateCellTimingRelativeIndexFactoryInput>;\n /**\n * CalendarScheduleSelectionCellContentFactory for the view.\n */\n readonly cellContentFactory: CalendarScheduleSelectionCellContentFactory;\n /**\n * Current selection value.\n */\n readonly currentSelectionValue?: Maybe<CalendarScheduleSelectionValue>;\n /**\n * Whether or not to use the filter as the start and end range instead of optimizing for the current index.\n *\n * Defaults to true.\n */\n readonly computeSelectionResultRelativeToFilter?: Maybe<boolean>;\n /**\n * The initial selection state when the calendar is reset.\n */\n readonly initialSelectionState?: Maybe<AllOrNoneSelection>;\n}\n\nexport function initialCalendarScheduleSelectionState(): CalendarScheduleSelectionState {\n const defaultScheduleDays = new Set([DateCellScheduleDayCode.WEEKDAY, DateCellScheduleDayCode.WEEKEND]);\n const allowedDaysOfWeek = expandDateCellScheduleDayCodesToDayOfWeekSet(defaultScheduleDays);\n const defaultStartsAt = dateCellTimingStartsAtForStartOfDay(); // get midnight of the current timezone\n const { startsAt, timezone: systemTimezone } = defaultStartsAt;\n const indexFactory = dateCellTimingRelativeIndexFactory(defaultStartsAt);\n const indexDayOfWeek = dateCellDayOfWeekFactory(startsAt);\n\n return {\n selectionMode: 'multiple',\n start: startsAt,\n systemTimezone,\n indexFactory,\n toggledIndexes: new Set(),\n defaultScheduleDays,\n effectiveScheduleDays: defaultScheduleDays,\n allowedDaysOfWeek,\n indexDayOfWeek,\n isEnabledFilterDay: () => true,\n isEnabledDay: () => false,\n computeSelectionResultRelativeToFilter: true,\n cellContentFactory: defaultCalendarScheduleSelectionCellContentFactory\n };\n}\n\n/**\n * This is used in cases where the dates in the min/max date range need to be shifted to the filter's timezone.\n *\n * This is because the index factory is always in system timezone, but when selecting all/none with a filter we need to use the filter's timezone.\n *\n * @param x\n * @returns\n */\nfunction calendarScheduleMinAndMaxDateRangeRelativeToFilter(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Partial<DateRange> {\n let input: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'> = x;\n\n if (x.filter?.timezone && x.minMaxDateRange != null) {\n const filterNormal = dateTimezoneUtcNormal(x.filter.timezone);\n const transformFn = filterNormal.transformFunction('systemDateToTargetDate');\n\n input = {\n filter: x.filter,\n minMaxDateRange: {\n start: x.minMaxDateRange.start ? transformFn(x.minMaxDateRange.start) : undefined,\n end: x.minMaxDateRange.end ? transformFn(x.minMaxDateRange.end) : undefined\n }\n };\n }\n\n return calendarScheduleMinAndMaxDateRange(input);\n}\n\nexport function calendarScheduleMinAndMaxDateRange(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Partial<DateRange> {\n return {\n start: calendarScheduleMinDate(x) || undefined,\n end: calendarScheduleMaxDate(x) || undefined\n };\n}\n\nexport function calendarScheduleMinDate(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Maybe<Date> {\n return findMaxDate([x.filter?.start, x.minMaxDateRange?.start]);\n}\n\nexport function calendarScheduleMaxDate(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Maybe<Date> {\n return findMinDate([x.filter?.end, x.minMaxDateRange?.end]);\n}\n\nexport function calendarScheduleStartBeingUsedFromFilter(x: Pick<CalendarScheduleSelectionState, 'filter' | 'computeSelectionResultRelativeToFilter'>) {\n return x.computeSelectionResultRelativeToFilter && x.filter?.start != null; // may be using either\n}\n\n@Injectable()\nexport class DbxCalendarScheduleSelectionStore extends ComponentStore<CalendarScheduleSelectionState> {\n constructor() {\n super(initialCalendarScheduleSelectionState());\n }\n\n // MARK:\n readonly toggleSelection = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() =>\n this.nextToggleSelection$.pipe(\n first(),\n filterMaybe(),\n tap((x) => {\n this.selectAllDates(x);\n })\n )\n )\n );\n });\n\n // MARK: Accessors\n readonly selectionMode$ = this.state$.pipe(\n map((x) => x.selectionMode),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly filter$ = this.state$.pipe(\n map((x) => x.filter),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly minMaxDateRange$ = this.state$.pipe(map(calendarScheduleMinAndMaxDateRange), distinctUntilChanged(isSameDateRange), shareReplay(1));\n\n readonly minDate$ = this.minMaxDateRange$.pipe(\n map((x) => x?.start),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n readonly maxDate$ = this.minMaxDateRange$.pipe(\n map((x) => x?.end),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n\n readonly hasConfiguredMinMaxRange$ = this.minMaxDateRange$.pipe(\n map((x) => x != null && x.start != null && x.end != null),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly inputStart$ = this.state$.pipe(\n map((x) => x.inputStart),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly inputEnd$ = this.state$.pipe(\n map((x) => x.inputEnd),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly currentInputRange$: Observable<Maybe<CalendarScheduleSelectionInputDateRange>> = this.state$.pipe(\n map(({ inputStart, inputEnd }) => ({ start: inputStart, end: inputEnd })),\n distinctUntilChanged((a, b) => isSameDateRange(a as DateRange, b as DateRange)),\n map((x) => ({ inputStart: x.start, inputEnd: x.end })),\n map((x) => {\n if (x.inputStart && x.inputEnd) {\n return x as CalendarScheduleSelectionInputDateRange;\n } else {\n return undefined;\n }\n }),\n shareReplay(1)\n );\n\n readonly inputRange$: Observable<CalendarScheduleSelectionInputDateRange> = this.currentInputRange$.pipe(filterMaybe(), shareReplay(1));\n\n readonly isEnabledFilterDayFunction$: Observable<DecisionFunction<DateCellTimingRelativeIndexFactoryInput>> = this.state$.pipe(\n map((x) => x.isEnabledFilterDay),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isEnabledDayFunction$: Observable<DecisionFunction<DateCellTimingRelativeIndexFactoryInput>> = this.state$.pipe(\n map((x) => x.isEnabledDay),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentDateRange$: Observable<Maybe<DateRange>> = this.state$.pipe(\n map(computeCalendarScheduleSelectionRange),\n distinctUntilChanged((a, b) => isSameDateRange(a, b)),\n shareReplay(1)\n );\n\n readonly computeSelectionResultRelativeToFilter$: Observable<Maybe<boolean>> = this.state$.pipe(\n map((x) => x.computeSelectionResultRelativeToFilter),\n shareReplay(1)\n );\n\n readonly startBeingUsedFromFilter$: Observable<Maybe<boolean>> = this.state$.pipe(\n //\n map(calendarScheduleStartBeingUsedFromFilter),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly dateRange$: Observable<DateRange> = this.currentDateRange$.pipe(filterMaybe(), shareReplay(1));\n\n readonly allowedDaysOfWeek$: Observable<Set<DayOfWeek>> = this.state$.pipe(\n map((x) => x.allowedDaysOfWeek),\n distinctUntilHasDifferentValues(),\n shareReplay(1)\n );\n\n readonly isInAllowedDaysOfWeekFunction$ = this.allowedDaysOfWeek$.pipe(\n map((x) => isInAllowedDaysOfWeekSet(x)),\n shareReplay(1)\n );\n\n readonly scheduleDays$: Observable<Set<DateCellScheduleDayCode>> = this.state$.pipe(\n map((x) => x.effectiveScheduleDays),\n distinctUntilHasDifferentValues(),\n shareReplay(1)\n );\n\n readonly outputTimezone$: Observable<Maybe<TimezoneString>> = this.state$.pipe(\n map((x) => x.outputTimezone),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n /**\n * The timezone of the output values.\n *\n * If an outputTimezone is not specified, this defaults to the system timezone.\n */\n readonly effectiveOutputTimezone$: Observable<TimezoneString> = this.state$.pipe(\n map((x) => x.outputTimezone || x.systemTimezone),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n /**\n * An outputTimezoneNormal to use.\n *\n * If an outputTimezone is not specified, this is undefined.\n */\n readonly effectiveOutputTimezoneNormal$: Observable<Maybe<DateTimezoneUtcNormalInstance>> = this.state$.pipe(\n map((x) => (x.outputTimezoneNormal ? x.outputTimezoneNormal : undefined)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentSelectionValue$ = this.state$.pipe(\n map((x) => x.currentSelectionValue),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentSelectionValueStart$ = this.currentSelectionValue$.pipe(\n map((x) => x?.dateScheduleRange.start),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly currentSelectionValueDateCellTimingDateFactory$ = this.currentSelectionValue$.pipe(\n map((x) => (x ? dateCellTimingDateFactory({ startsAt: x.dateScheduleRange.start, timezone: x.dateScheduleRange.timezone }) : undefined)),\n shareReplay(1)\n );\n\n readonly currentSelectionValueDateCellDurationSpanExpansion$: Observable<DateCellDurationSpan<DateCell>[]> = this.currentSelectionValue$.pipe(\n map((x) => (x ? expandDateCellScheduleRange({ dateCellScheduleRange: x.dateScheduleRange }) : [])),\n shareReplay(1)\n );\n\n readonly selectionValueSelectedIndexes$: Observable<Set<DateCellIndex>> = this.currentSelectionValueDateCellDurationSpanExpansion$.pipe(\n map((x) => new Set(x.map((y) => y.i))),\n distinctUntilHasDifferentValues(),\n shareReplay(1)\n );\n\n readonly selectionValueSelectedDates$: Observable<Set<ISO8601DayString>> = this.currentSelectionValueDateCellTimingDateFactory$.pipe(\n switchMap((dateFactory) => {\n return dateFactory ? this.selectionValueSelectedIndexes$.pipe(map((x) => mapValuesToSet(x, (y) => formatToISO8601DayStringForSystem(dateFactory(y))))) : of(new Set<ISO8601DayString>());\n }),\n shareReplay(1)\n );\n\n readonly selectionValue$ = this.currentSelectionValue$.pipe(filterMaybe(), shareReplay(1));\n\n readonly currentSelectionValueWithTimezone$ = this.currentSelectionValue$.pipe(\n combineLatestWith(this.effectiveOutputTimezoneNormal$),\n map(([x, timezoneNormal]) => {\n let currentValueWithTimezone = x;\n\n if (x && timezoneNormal) {\n currentValueWithTimezone = {\n dateScheduleRange: changeDateCellScheduleDateRangeToTimezone(x.dateScheduleRange, timezoneNormal),\n minMaxRange: x.minMaxRange\n } as CalendarScheduleSelectionValue;\n }\n\n return currentValueWithTimezone;\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly selectionValueWithTimezone$ = this.currentSelectionValueWithTimezone$.pipe(filterMaybe(), shareReplay(1));\n\n readonly selectionValueWithTimezoneDateCellDurationSpanExpansion$: Observable<DateCellDurationSpan<DateCell>[]> = this.selectionValueWithTimezone$.pipe(\n map((x) => expandDateCellScheduleRange({ dateCellScheduleRange: x.dateScheduleRange })),\n shareReplay(1)\n );\n\n readonly nextToggleSelection$: Observable<Maybe<AllOrNoneSelection>> = this.hasConfiguredMinMaxRange$.pipe(\n switchMap((hasConfiguredMinMaxRange) => {\n let obs: Observable<Maybe<AllOrNoneSelection>>;\n\n if (hasConfiguredMinMaxRange) {\n obs = this.currentSelectionValue$.pipe(map((x) => (x ? 'none' : 'all')));\n } else {\n obs = this.currentSelectionValue$.pipe(map((x) => (x ? 'none' : undefined)));\n }\n\n return obs;\n }),\n shareReplay(1)\n );\n\n readonly currentDateCellScheduleRangeValue$ = this.currentSelectionValueWithTimezone$.pipe(\n map((x) => x?.dateScheduleRange),\n distinctUntilChanged(isSameDateCellScheduleDateRange),\n shareReplay(1)\n );\n\n readonly dateCellScheduleRangeValue$ = this.currentDateCellScheduleRangeValue$.pipe(filterMaybe(), shareReplay(1));\n\n readonly cellContentFactory$ = this.state$.pipe(\n map((x) => x.cellContentFactory),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isCustomized$ = this.state$.pipe(\n map((x) => x.toggledIndexes.size > 0),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isViewReadonly$ = this.state$.pipe(\n map((x) => x.isViewReadonly),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n // MARK: State Changes\n readonly setMinMaxDateRange = this.updater(updateStateWithMinMaxDateRange);\n readonly setDefaultWeek = this.updater(updateStateWithMinMaxDateRange);\n readonly setFilter = this.updater(updateStateWithFilter);\n readonly setExclusions = this.updater(updateStateWithExclusions);\n readonly setComputeSelectionResultRelativeToFilter = this.updater(updateStateWithComputeSelectionResultRelativeToFilter);\n readonly clearFilter = this.updater((state) => updateStateWithFilter(state, undefined));\n\n readonly setOutputTimezone = this.updater(updateStateWithTimezoneValue);\n /**\n * Sets the \"input\" date range. This is the range that gets displayed on the date range picker.\n */\n readonly setInputRange = this.updater(updateStateWithChangedRange);\n\n // NOTE: Selected dates are NOT selected indexes. They are the internal selected dates that are excluded from the selection.\n readonly toggleSelectedDates = this.updater((state, toggle: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>) => updateStateWithChangedDates(state, { toggle }));\n readonly addSelectedDates = this.updater((state, add: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>) => updateStateWithChangedDates(state, { add }));\n readonly removeSelectedDates = this.updater((state, remove: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>) => updateStateWithChangedDates(state, { remove }));\n readonly setSelectedDates = this.updater((state, set: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>) => updateStateWithChangedDates(state, { set }));\n readonly selectAllDates = this.updater((state, selectAll: AllOrNoneSelection = 'all') => updateStateWithChangedDates(state, { selectAll }));\n\n // NOTE: Selected indexes are the typical/expected indexes that are selected or not.\n readonly setSelectedIndexes = this.updater((state, set: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>) => updateStateWithChangedDates(state, { set, invertSetBehavior: true }));\n readonly setInitialSelectionState = this.updater(updateStateWithInitialSelectionState);\n\n readonly setDefaultScheduleDays = this.updater(updateStateWithChangedDefaultScheduleDays);\n readonly setScheduleDays = this.updater(updateStateWithChangedScheduleDays);\n readonly setAllowAllScheduleDays = this.updater((state) => updateStateWithChangedScheduleDays(state, [DateCellScheduleDayCode.WEEKDAY, DateCellScheduleDayCode.WEEKEND]));\n\n readonly setDateScheduleRangeValue = this.updater((state, value: Maybe<FullDateCellScheduleRangeInputDateRange>) => updateStateWithDateCellScheduleRangeValue(state, value));\n readonly setCellContentFactory = this.updater((state, cellContentFactory: CalendarScheduleSelectionCellContentFactory) => ({ ...state, cellContentFactory }));\n\n /**\n * Sets the selection mode.\n */\n readonly setSelectionMode = this.updater(updateStateWithSelectionMode);\n\n /**\n * Used by the parent view to propogate a readonly state.\n *\n * Should typically not be used by the user directly with the intention of the parent synchronizing to this state.\n */\n readonly setViewReadonlyState = this.updater((state, isViewReadonly: boolean) => ({ ...state, isViewReadonly }));\n}\n\nexport function updateStateWithInitialSelectionState(state: CalendarScheduleSelectionState, initialSelectionState: Maybe<AllOrNoneSelection>): CalendarScheduleSelectionState {\n const { toggledIndexes } = state;\n\n if (toggledIndexes.size === 0 && initialSelectionState === 'all') {\n state = updateStateWithChangedDates(state, { selectAll: initialSelectionState });\n }\n\n return { ...state, initialSelectionState };\n}\n\nexport function updateStateWithComputeSelectionResultRelativeToFilter(currentState: CalendarScheduleSelectionState, computeSelectionResultRelativeToFilter: Maybe<boolean>): CalendarScheduleSelectionState {\n let state: CalendarScheduleSelectionState = { ...currentState, computeSelectionResultRelativeToFilter };\n\n if (Boolean(currentState.computeSelectionResultRelativeToFilter) !== Boolean(computeSelectionResultRelativeToFilter)) {\n state = updateStateWithChangedDates(state, {}); // recalculate if change occurs as it will affect the output value\n }\n\n return state;\n}\n\nexport function updateStateWithExclusions(state: CalendarScheduleSelectionState, inputExclusions: Maybe<ArrayOrValue<DateOrDateRangeOrDateCellIndexOrDateCellRange>>): CalendarScheduleSelectionState {\n let computedExclusions: Maybe<DateCellIndex[]>;\n\n if (inputExclusions) {\n const { indexFactory } = state;\n const indexArrayFactory = dateCellTimingRelativeIndexArrayFactory(indexFactory);\n computedExclusions = indexArrayFactory(inputExclusions);\n }\n\n state = { ...state, inputExclusions, computedExclusions };\n return updateStateWithFilter(state, state.filter);\n}\n\nexport function updateStateWithMinMaxDateRange(state: CalendarScheduleSelectionState, minMaxDateRange: Maybe<Partial<DateRange>>): CalendarScheduleSelectionState {\n if (minMaxDateRange != null && !isInfiniteDateRange(minMaxDateRange)) {\n state = {\n ...state,\n minMaxDateRange: {\n start: minMaxDateRange.start != null ? startOfDay(minMaxDateRange.start) : undefined,\n end: minMaxDateRange.end != null ? endOfDay(minMaxDateRange.end) : undefined\n }\n };\n } else {\n state = { ...state, minMaxDateRange: undefined };\n }\n\n return updateStateWithFilter(state, state.filter);\n}\n\nexport function updateStateWithFilter(currentState: CalendarScheduleSelectionState, inputFilter: Maybe<DateCellScheduleDateFilterConfig>): CalendarScheduleSelectionState {\n const { computedExclusions: exclusions, minMaxDateRange, systemTimezone } = currentState;\n\n let isEnabledFilterDay: Maybe<DecisionFunction<DateCellTimingRelativeIndexFactoryInput>> = () => true;\n let filter: Maybe<DateCellScheduleDateFilterConfig> = null;\n\n // create the filter using inputFilter, exclusions, and minMaxDateRange\n if (inputFilter || exclusions?.length || minMaxDateRange) {\n let enabledFilter: Configurable<DateCellScheduleDateFilterConfig>;\n let filterStart: Maybe<Date> = null; // the start date that will be used/set on the filter.\n\n if (inputFilter) {\n filter = copyDateCellScheduleDateFilterConfig(inputFilter); // copy filter\n\n let nextFilterTimezone: TimezoneString | undefined; // only set if inputFilter.start or inputFilter.startsAt\n\n // configure filter start\n if (inputFilter.start) {\n filterStart = inputFilter.start;\n\n // if no timezone is specified, then use the system timezone and align filterStart to the start of the day.\n if (!inputFilter.timezone) {\n filterStart = SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE.startOfDayInTargetTimezone(inputFilter.startsAt);\n nextFilterTimezone = systemTimezone;\n } else {\n nextFilterTimezone = inputFilter.timezone;\n }\n } else if (inputFilter.startsAt) {\n if (inputFilter.timezone) {\n // if no timezone is provided, use startsAt as-is\n const timezoneNormal = dateTimezoneUtcNormal(inputFilter.timezone);\n filterStart = timezoneNormal.startOfDayInTargetTimezone(inputFilter.startsAt);\n nextFilterTimezone = inputFilter.timezone;\n } else {\n // set to the start of today in the system timezone.\n filterStart = SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE.startOfDayInTargetTimezone(inputFilter.startsAt);\n nextFilterTimezone = systemTimezone;\n }\n }\n\n filter.start = filterStart ?? undefined;\n filter.timezone = nextFilterTimezone;\n\n // configure exclusions\n if (exclusions?.length) {\n enabledFilter = {\n ...filter,\n ex: unique(mergeArrays([filter.ex, exclusions]))\n };\n } else {\n enabledFilter = filter;\n }\n } else {\n enabledFilter = {\n w: '89',\n ex: exclusions as number[]\n };\n }\n\n if (minMaxDateRange) {\n enabledFilter.minMaxDateRange = minMaxDateRange;\n enabledFilter.setStartAsMinDate = filterStart ? true : false; // If a start date is set, then it becomes the floor.\n }\n\n /**\n * If the input filter has a start date, use that as the relative start to ensure indexes are compared the same,\n * otherwise use the state's start. This is important for the index calculations.\n */\n let finalEnabledStart: Date;\n let finalEnabledTimezone: TimezoneString;\n // filter?.start ?? state.start;\n\n if (!enabledFilter.start) {\n // use the current state's start, but make sure it is in the proper timezone.\n if (enabledFilter.timezone) {\n const timezoneNormal = dateTimezoneUtcNormal(enabledFilter.timezone);\n finalEnabledStart = timezoneNormal.startOfDayInTargetTimezone(currentState.start); // get the start of the day for the current start\n finalEnabledTimezone = enabledFilter.timezone;\n } else {\n finalEnabledStart = currentState.start;\n finalEnabledTimezone = systemTimezone;\n }\n } else if (!enabledFilter.timezone) {\n finalEnabledTimezone = systemTimezone;\n\n const timezoneNormal = dateTimezoneUtcNormal(finalEnabledTimezone);\n finalEnabledStart = timezoneNormal.startOfDayInTargetTimezone(enabledFilter.start); // get the start of the day for the target timezone\n } else {\n finalEnabledStart = enabledFilter.start;\n finalEnabledTimezone = enabledFilter.timezone;\n }\n\n enabledFilter.start = finalEnabledStart;\n enabledFilter.timezone = finalEnabledTimezone;\n\n // create the filter\n isEnabledFilterDay = dateCellScheduleDateFilter(enabledFilter);\n }\n\n let nextState: Building<CalendarScheduleSelectionState> = { ...currentState, filter, isEnabledFilterDay };\n\n // For the same reason as above, use the filter's start date as the relative start if applicable.\n if (filter && filter.start) {\n let startForSystemTimezone: Date = filter.start;\n\n if (filter.timezone) {\n const timezoneNormal = dateTimezoneUtcNormal(filter.timezone);\n startForSystemTimezone = timezoneNormal.systemDateToTargetDate(filter.start); // get the start of the day for the system timezone\n }\n\n nextState.start = startForSystemTimezone;\n nextState.indexFactory = dateCellTimingRelativeIndexFactory({ startsAt: startForSystemTimezone, timezone: systemTimezone });\n nextState.indexDayOfWeek = dateCellDayOfWeekFactory(startForSystemTimezone);\n }\n\n // attempt to re-apply the initial selection state once filter is applied\n if (nextState.initialSelectionState) {\n nextState = updateStateWithInitialSelectionState(nextState as CalendarScheduleSelectionState, nextState.initialSelectionState);\n }\n\n // re-calculate the selection given the filter\n const { inputStart, inputEnd } = nextState;\n\n if (inputStart && inputEnd) {\n nextState = updateStateWithChangedRange(nextState as CalendarScheduleSelectionState, { inputStart, inputEnd });\n }\n\n return nextState as CalendarScheduleSelectionState;\n}\n\nexport function updateStateWithTimezoneValue(state: CalendarScheduleSelectionState, timezone: Maybe<TimezoneString>): CalendarScheduleSelectionState {\n const { currentSelectionValue } = state;\n const timezoneNormal = timezone ? dateTimezoneUtcNormal({ timezone }) : undefined;\n\n if (timezoneNormal && currentSelectionValue) {\n // update the selection value to reflect the timezone changes.\n const { dateScheduleRange: currentDateCellScheduleRange } = currentSelectionValue;\n const start = timezoneNormal.targetDateToSystemDate(currentDateCellScheduleRange.start);\n const end = timezoneNormal.targetDateToSystemDate(currentDateCellScheduleRange.end);\n\n const newRange: DateCellScheduleDateRange = {\n ...currentSelectionValue.dateScheduleRange,\n start,\n end\n };\n\n return updateStateWithDateCellScheduleRangeValue({ ...state, outputTimezone: timezone, outputTimezoneNormal: timezoneNormal }, newRange);\n } else {\n return { ...state, outputTimezone: timezone, outputTimezoneNormal: timezoneNormal }; // no change in value\n }\n}\n\nexport function updateStateWithDateCellScheduleRangeValue(state: CalendarScheduleSelectionState, inputChange: Maybe<FullDateCellScheduleRangeInputDateRange>): CalendarScheduleSelectionState {\n const { currentSelectionValue, systemTimezone } = state;\n const currentDateCellScheduleRange = currentSelectionValue?.dateScheduleRange; // current range is always in system time\n let change: Maybe<Pick<DateCellScheduleDateRange, 'start' | 'end' | 'ex' | 'w' | 'timezone'>>;\n\n // When using timezones, always return from the start of the day. Inputs are converted to the system time and used as the start of the day.\n // Outputs remain accurate.\n\n if (inputChange) {\n // make sure a timezone is set. Input may not have a timezone attached. Default to system time.\n const inputChangeWithTimezoneSet = {\n ...inputChange,\n timezone: inputChange.timezone ?? systemTimezone\n };\n\n // calculate the schedule range\n const fullChange = fullDateCellScheduleRange({ dateCellScheduleRange: inputChangeWithTimezoneSet });\n const inputNormal = dateCellTimingTimezoneNormalInstance(fullChange);\n\n const startInSystemTz = inputNormal.systemDateToTargetDate(fullChange.start);\n const endInSystemTz = startOfDay(inputNormal.systemDateToTargetDate(fullChange.end));\n\n // convert the start/end to system time\n change = {\n start: startInSystemTz,\n end: endInSystemTz,\n w: fullChange.w,\n ex: fullChange.ex,\n timezone: fullChange.timezone\n };\n }\n\n const isSameValue = isSameDateCellScheduleDateRange(currentDateCellScheduleRange, change);\n\n if (isSameValue) {\n return state;\n } else {\n if (change != null) {\n const nextState: CalendarScheduleSelectionState = { ...state, inputStart: change.start, inputEnd: change.end, toggledIndexes: new Set(change.ex) };\n return updateStateWithChangedScheduleDays(finalizeNewCalendarScheduleSelectionState(nextState), expandDateCellScheduleDayCodes(change.w || '89'));\n } else {\n return noSelectionCalendarScheduleSelectionState(state); // clear selection, retain disabled days\n }\n }\n}\n\nexport function updateStateWithChangedDefaultScheduleDays(state: CalendarScheduleSelectionState, change: Maybe<Iterable<DateCellScheduleDayCode>>): CalendarScheduleSelectionState {\n const { defaultScheduleDays: currentDefaultScheduleDays } = state;\n const defaultScheduleDays = new Set(change ?? fullWeekDateCellScheduleDayCodes());\n\n if (dateCellScheduleDayCodesAreSetsEquivalent(defaultScheduleDays, currentDefaultScheduleDays)) {\n return state; // no change\n } else {\n return finalizeUpdateStateWithChangedScheduleDays(state, { ...state, defaultScheduleDays });\n }\n}\n\nexport function updateStateWithChangedScheduleDays(state: CalendarScheduleSelectionState, change: Maybe<Iterable<DateCellScheduleDayCode>>): CalendarScheduleSelectionState {\n const { scheduleDays: currentScheduleDays } = state;\n const scheduleDays = new Set(change ?? []);\n\n let newScheduleDays: Set<DateCellScheduleDayCode> | null | undefined;\n\n if (currentScheduleDays != null && change != null) {\n if (dateCellScheduleDayCodesAreSetsEquivalent(scheduleDays, currentScheduleDays)) {\n newScheduleDays = undefined; //no change\n } else {\n newScheduleDays = scheduleDays;\n }\n } else if (currentScheduleDays !== change) {\n newScheduleDays = change ? scheduleDays : null; // set the new one, or clear it\n }\n\n if (newScheduleDays === undefined) {\n return state;\n } else {\n return finalizeUpdateStateWithChangedScheduleDays(state, { ...state, scheduleDays: newScheduleDays ?? undefined });\n }\n}\n\nexport function updateStateWithSelectionMode(state: CalendarScheduleSelectionState, selectionMode: DbxCalendarScheduleSelectionStoreSelectionMode): CalendarScheduleSelectionState {\n const { selectionMode: currentSelectionMode } = state;\n\n if (currentSelectionMode !== selectionMode) {\n const nextState = { ...state, selectionMode };\n\n if (selectionMode === 'multiple') {\n return nextState;\n } else {\n const currentSelectionRange = computeCalendarScheduleSelectionDateCellRange(nextState);\n return currentSelectionRange ? updateStateWithChangedDates(nextState, { set: [currentSelectionRange.i], invertSetBehavior: true }) : nextState;\n }\n } else {\n return state;\n }\n}\n\nexport function finalizeUpdateStateWithChangedScheduleDays(previousState: CalendarScheduleSelectionState, nextState: CalendarScheduleSelectionState): CalendarScheduleSelectionState {\n const previousScheduleDays = previousState.effectiveScheduleDays;\n const nextScheduleDays = nextState.scheduleDays ?? nextState.defaultScheduleDays;\n\n if (dateCellScheduleDayCodesAreSetsEquivalent(nextScheduleDays, previousScheduleDays)) {\n return nextState; // the default or input schedule changed but the schedule is still the same, so no need for an update.\n } else {\n const effectiveScheduleDays = new Set(simplifyDateCellScheduleDayCodes(nextScheduleDays));\n const allowedDaysOfWeek = expandDateCellScheduleDayCodesToDayOfWeekSet(nextScheduleDays);\n\n return finalizeNewCalendarScheduleSelectionState({\n ...nextState,\n // update the effective schedule days and allowed days of week\n effectiveScheduleDays,\n allowedDaysOfWeek\n });\n }\n}\n\nexport interface CalendarScheduleSelectionStateDatesChange {\n reset?: true;\n toggle?: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>;\n add?: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>;\n remove?: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>;\n set?: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>;\n selectAll?: AllOrNoneSelection;\n /**\n * Inverts the set date changing behavior so that the set input is treated as items that should be retained instead of excluded.\n *\n * Ignored when set is not used. Ignored for selectAll.\n */\n invertSetBehavior?: boolean;\n}\n\nexport function updateStateWithChangedDates(state: CalendarScheduleSelectionState, change: CalendarScheduleSelectionStateDatesChange): CalendarScheduleSelectionState {\n const { selectionMode, allowedDaysOfWeek, indexFactory, indexDayOfWeek, inputStart: currentInputStart, inputEnd: currentInputEnd, minMaxDateRange, filter } = state;\n const { start: minDateFromFilter, end: maxDateFromFilter } = calendarScheduleMinAndMaxDateRangeRelativeToFilter(state);\n let inputStart = currentInputStart;\n let inputEnd = currentInputEnd;\n\n /**\n * This is a set of indexes that are internally \"selected\" so that they are excluded from the inputStart/inputEnd date range.\n *\n * Do not confuse this with the actual indexes that are selected.\n */\n let toggledIndexes: Set<DateCellIndex>;\n\n function asIndexes(indexes: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>): DateCellIndex[] {\n return iterableToArray(indexes).map(indexFactory);\n }\n\n // When using selection mode \"single\" we update the change to reflect the single selection.\n if (selectionMode === 'single') {\n function setFromFirstValue(input: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>): Set<DateCellTimingRelativeIndexFactoryInput> {\n const firstValue = isIterable(input) ? firstValueFromIterable(input) : input;\n const set = new Set<DateCellTimingRelativeIndexFactoryInput>();\n\n if (firstValue != null) {\n set.add(firstValue);\n }\n\n return set;\n }\n\n if (change.set) {\n change = { set: setFromFirstValue(change.set), invertSetBehavior: true };\n } else if (change.toggle) {\n const nextSet = setFromFirstValue(change.toggle);\n\n if (nextSet.size) {\n const firstSetValueIndex = indexFactory(firstValueFromIterable(nextSet) as DateCellTimingRelativeIndexFactoryInput);\n\n if (state.toggledIndexes.has(firstSetValueIndex) || (inputStart && indexFactory(inputStart) === firstSetValueIndex)) {\n nextSet.clear(); // clear with the next set\n }\n\n change = { set: nextSet, invertSetBehavior: true };\n }\n }\n\n // set, selectAll, add, and remove are treated as they normally are.\n }\n\n if (change.reset || change.selectAll != null || change.set != null) {\n let set: Maybe<IterableOrValue<DateCellTimingRelativeIndexFactoryInput>> = change.set ?? [];\n const selectAll: Maybe<AllOrNoneSelection> = change.reset === true ? state.initialSelectionState : change.selectAll;\n\n switch (selectAll) {\n case 'all':\n if (minDateFromFilter != null && maxDateFromFilter != null) {\n inputStart = minDateFromFilter;\n inputEnd = maxDateFromFilter;\n set = [];\n }\n break;\n case 'none':\n inputStart = null;\n inputEnd = null;\n set = [];\n break;\n }\n\n const inputSetIndexes = asIndexes(set);\n toggledIndexes = new Set(inputSetIndexes);\n\n if (change.invertSetBehavior && !selectAll) {\n let minIndex: Maybe<number>;\n let maxIndex: Maybe<number>;\n\n if (minDateFromFilter != null && maxDateFromFilter != null) {\n // only applicable when the filter is set.\n minIndex = indexFactory(minDateFromFilter);\n maxIndex = indexFactory(maxDateFromFilter);\n\n inputStart = minDateFromFilter;\n inputEnd = maxDateFromFilter;\n } else {\n // when the filter is not set, use the least and greatest indexes from the input set.\n const minAndMax = minAndMaxNumber(inputSetIndexes);\n\n if (minAndMax != null) {\n minIndex = minAndMax.min;\n maxIndex = minAndMax.max;\n const dateFactory = dateCellTimingStartDateFactory(indexFactory._timing);\n\n inputStart = dateFactory(minAndMax.min);\n inputEnd = minAndMax.min === minAndMax.max ? inputStart : dateFactory(minAndMax.max);\n } else {\n // equivalent to an empty set / using \"none\" with selectAll.\n inputStart = null;\n inputEnd = null;\n toggledIndexes = new Set();\n }\n }\n\n // toggledIndexes should not include any indexes we want to include\n if (minIndex != null && maxIndex != null) {\n toggledIndexes = new Set(range(minIndex, maxIndex + 1).filter((x) => !toggledIndexes.has(x)));\n }\n }\n } else {\n toggledIndexes = new Set(state.toggledIndexes); // copy the set\n\n if (change.toggle) {\n const allowedToToggle = asIndexes(change.toggle).filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));\n toggleInSet(toggledIndexes, allowedToToggle);\n }\n\n let addToExclusion: Maybe<IterableOrValue<DateCellTimingRelativeIndexFactoryInput>>;\n let removeFromExclusion: Maybe<IterableOrValue<DateCellTimingRelativeIndexFactoryInput>>;\n\n if (change.add) {\n if (change.invertSetBehavior) {\n addToExclusion = change.add;\n } else {\n removeFromExclusion = change.add;\n }\n }\n\n if (change.remove) {\n if (change.invertSetBehavior) {\n removeFromExclusion = change.remove;\n } else {\n addToExclusion = change.remove;\n }\n }\n\n if (addToExclusion) {\n removeFromSet(toggledIndexes, asIndexes(addToExclusion));\n }\n\n if (removeFromExclusion) {\n addToSet(toggledIndexes, asIndexes(removeFromExclusion));\n }\n }\n\n const nextState = { ...state, inputStart, inputEnd, toggledIndexes };\n nextState.isEnabledDay = isEnabledDayInCalendarScheduleSelectionState(nextState);\n\n // Recalculate the range and simplified to exclusions\n const rangeAndExclusion = computeScheduleSelectionRangeAndExclusion(nextState);\n\n if (rangeAndExclusion) {\n return finalizeNewCalendarScheduleSelectionState({ ...nextState, toggledIndexes: new Set(rangeAndExclusion.excluded), inputStart: rangeAndExclusion.start, inputEnd: rangeAndExclusion.end });\n } else {\n // no selected days\n return noSelectionCalendarScheduleSelectionState(nextState);\n }\n}\n\nexport function noSelectionCalendarScheduleSelectionState(state: CalendarScheduleSelectionState): CalendarScheduleSelectionState {\n return finalizeNewCalendarScheduleSelectionState({ ...state, toggledIndexes: new Set(), inputStart: null, inputEnd: null });\n}\n\nexport function updateStateWithChangedRange(state: CalendarScheduleSelectionState, change: CalendarScheduleSelectionInputDateRange): CalendarScheduleSelectionState {\n const { inputStart: currentInputStart, inputEnd: currentInputEnd, indexFactory } = state;\n const { start: minDate, end: maxDate } = calendarScheduleMinAndMaxDateRange(state);\n\n const inputStart: Date = startOfDay(change.inputStart);\n const inputEnd: Date = startOfDay(change.inputEnd); // midnight of the last day\n\n const isValidRange = minDate != null || maxDate != null ? isDateInDateRangeFunction({ start: minDate ?? undefined, end: maxDate ?? undefined }) : () => true;\n\n if (!isValidRange(inputStart) || !isValidRange(inputEnd) || (isSameDateDay(inputStart, currentInputStart) && isSameDateDay(inputEnd, currentInputEnd))) {\n return state; // if no change, return the current state.\n }\n\n // retain all indexes that are within the new range\n const minIndex = indexFactory(inputStart);\n const maxIndex = indexFactory(inputEnd) + 1;\n\n const currentIndexes: DateCellIndex[] = Array.from(state.toggledIndexes);\n const isInCurrentRange = isIndexNumberInIndexRangeFunction({ minIndex, maxIndex });\n const excludedIndexesInNewRange = currentIndexes.filter(isInCurrentRange);\n const toggledIndexes = new Set(excludedIndexesInNewRange);\n\n const nextState = { ...state, toggledIndexes, inputStart, inputEnd };\n return finalizeNewCalendarScheduleSelectionState(nextState);\n}\n\nexport function finalizeNewCalendarScheduleSelectionState(nextState: Building<CalendarScheduleSelectionState>): CalendarScheduleSelectionState {\n nextState.isEnabledDay = isEnabledDayInCalendarScheduleSelectionState(nextState as CalendarScheduleSelectionState);\n nextState.currentSelectionValue = computeScheduleSelectionValue(nextState as CalendarScheduleSelectionState);\n return nextState as CalendarScheduleSelectionState;\n}\n\nexport function isEnabledDayInCalendarScheduleSelectionState(state: CalendarScheduleSelectionState): DecisionFunction<DateCellTimingRelativeIndexFactoryInput> {\n const { allowedDaysOfWeek, indexFactory, inputStart, inputEnd, indexDayOfWeek, systemTimezone } = state;\n let isInStartAndEndRange: IsDateWithinDateCellRangeFunction;\n\n if (inputStart && inputEnd) {\n isInStartAndEndRange = isDateWithinDateCellRangeFunction({ startsAt: { startsAt: state.start, timezone: systemTimezone }, range: { start: inputStart, end: inputEnd } });\n } else {\n isInStartAndEndRange = () => false;\n }\n\n return (input: DateCellTimingRelativeIndexFactoryInput) => {\n const index = indexFactory(input);\n const dayOfWeek = indexDayOfWeek(index);\n\n const isInSelectedRange = isInStartAndEndRange(index);\n const isSelected = state.toggledIndexes.has(index);\n const isAllowedDayOfWeek = allowedDaysOfWeek.has(dayOfWeek);\n\n const result = isAllowedDayOfWeek && ((isInSelectedRange && !isSelected) || (isSelected && !isInSelectedRange));\n return result;\n };\n}\n\nexport function computeScheduleSelectionValue(state: CalendarScheduleSelectionState): Maybe<CalendarScheduleSelectionValue> {\n const { indexFactory: systemIndexFactory, allowedDaysOfWeek, effectiveScheduleDays, indexDayOfWeek, computeSelectionResultRelativeToFilter, filter, systemTimezone } = state;\n let timezone = systemTimezone;\n const rangeAndExclusion = computeScheduleSelectionRangeAndExclusion(state);\n\n if (rangeAndExclusion == null) {\n return null;\n }\n\n const { start: rangeStart, end: rangeEnd, excluded: allExcluded, dateCellRange } = rangeAndExclusion;\n let filterOffsetExcludedRange: DateCellIndex[] = [];\n let indexOffset = dateCellRange.i;\n\n let start = rangeStart;\n let end = rangeEnd;\n\n // If computeSelectionResultRelativeToFilter is true, then we need to offset the values to be relative to that start.\n if (computeSelectionResultRelativeToFilter && filter?.start) {\n start = filter.start; // always start at the filter's start date\n let startInSystemTimezone = start;\n\n if (filter.timezone) {\n timezone = filter.timezone;\n const filterNormal = dateTimezoneUtcNormal(timezone);\n end = filterNormal.startOfDayInTargetTimezone(end);\n startInSystemTimezone = filterNormal.systemDateToTargetDate(start); // convert the start to the system timezone normal for deriving the index\n }\n\n const rangeStartIndex = systemIndexFactory(rangeStart);\n const startIndex = systemIndexFactory(startInSystemTimezone);\n const filterStartIndexOffset = rangeStartIndex - startIndex;\n filterOffsetExcludedRange = range(0, filterStartIndexOffset);\n indexOffset = indexOffset - filterStartIndexOffset;\n }\n\n const excluded = computeSelectionResultRelativeToFilter\n ? allExcluded.filter((x) => {\n const isExcludedIndex = allowedDaysOfWeek.has(indexDayOfWeek(x)); // ???\n return isExcludedIndex;\n })\n : allExcluded;\n\n const offsetExcluded: DateCellIndex[] = excluded.map((x) => x - indexOffset); // set to the proper offset\n\n const ex = [...filterOffsetExcludedRange, ...offsetExcluded];\n\n const w: DateCellScheduleEncodedWeek = dateCellScheduleEncodedWeek(effectiveScheduleDays);\n const d: DateCellIndex[] = []; // \"included\" blocks are never used/calculated.\n\n // Always ensure the end is after or equal to the start.\n if (isBefore(end, start)) {\n end = start; // end is start\n }\n\n const dateScheduleRange: DateCellScheduleDateRange = {\n timezone,\n start,\n end,\n w,\n d,\n ex\n };\n\n return {\n dateScheduleRange,\n minMaxRange: { start, end }\n };\n}\n\n/**\n * The selected date range and the corresponding cell range.\n */\nexport interface CalendarScheduleSelectionRangeAndExclusion extends DateRange {\n /**\n * Corresponds to the start and end indexes in the date range.\n */\n dateCellRange: DateCellRangeWithRange;\n /**\n * All excluded indexes.\n */\n excluded: DateCellIndex[];\n}\n\nexport function computeScheduleSelectionRangeAndExclusion(state: CalendarScheduleSelectionState): Maybe<CalendarScheduleSelectionRangeAndExclusion> {\n const { start: currentStart, isEnabledDay, isEnabledFilterDay, systemTimezone } = state;\n\n const dateFactory = dateCellTimingStartDateFactory({ startsAt: currentStart, timezone: systemTimezone });\n const dateCellRange = computeCalendarScheduleSelectionDateCellRange(state);\n\n if (dateCellRange == null) {\n return null; // returns null if no items are selected.\n }\n\n const start = dateFactory(dateCellRange.i);\n const end = dateFactory(dateCellRange.to);\n\n const excluded: DateCellIndex[] = range(dateCellRange.i, dateCellRange.to + 1).filter((x) => {\n const isExcludedIndex = !isEnabledDay(x) || !isEnabledFilterDay(x);\n return isExcludedIndex;\n });\n\n const result: CalendarScheduleSelectionRangeAndExclusion = {\n dateCellRange,\n start,\n end,\n excluded\n };\n\n return result;\n}\n\nexport function computeCalendarScheduleSelectionRange(state: CalendarScheduleSelectionState): Maybe<DateRange> {\n const dateFactory = dateCellTimingDateFactory({ startsAt: state.start, timezone: state.systemTimezone });\n const dateCellRange = computeCalendarScheduleSelectionDateCellRange(state);\n const dateRange: Maybe<DateRange> = dateCellRange != null ? { start: dateFactory(dateCellRange.i), end: dateFactory(dateCellRange.to as number) } : undefined;\n return dateRange;\n}\n\nexport function computeCalendarScheduleSelectionDateCellRange(state: CalendarScheduleSelectionState): Maybe<DateCellRangeWithRange> {\n const { allowedDaysOfWeek, indexFactory, inputStart, inputEnd, indexDayOfWeek, isEnabledDay, isEnabledFilterDay } = state;\n const enabledExclusionIndexes = Array.from(state.toggledIndexes).filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));\n const minAndMaxSelectedValues = minAndMaxNumber(enabledExclusionIndexes);\n\n let startRange: Maybe<DateCellIndex>;\n let endRange: Maybe<DateCellIndex>;\n\n if (minAndMaxSelectedValues) {\n startRange = minAndMaxSelectedValues.min;\n endRange = minAndMaxSelectedValues.max;\n }\n\n if (inputStart != null && inputEnd != null) {\n const inputStartIndex = indexFactory(inputStart);\n const inputEndIndex = indexFactory(inputEnd);\n\n startRange = startRange != null ? Math.min(inputStartIndex, startRange) : inputStartIndex;\n endRange = endRange != null ? Math.max(inputEndIndex, endRange) : inputEndIndex;\n }\n\n if (startRange != null && endRange != null) {\n const scanStartIndex = startRange;\n const scanEndIndex = endRange;\n\n // clear start and end\n startRange = undefined;\n endRange = undefined;\n\n // if the min is equal to the start index, then we are in the range and need to iterate dates until we find one that is not selected/excluded.\n for (let i = scanStartIndex; i <= scanEndIndex; i += 1) {\n if (isEnabledFilterDay(i) && isEnabledDay(i)) {\n startRange = i;\n break;\n }\n }\n\n // same with the max\n for (let i = scanEndIndex; i >= scanStartIndex; i -= 1) {\n if (isEnabledFilterDay(i) && isEnabledDay(i)) {\n endRange = i;\n break;\n }\n }\n }\n\n if (startRange != null && endRange != null) {\n return { i: startRange, to: endRange };\n } else {\n return undefined;\n }\n}\n","import { Directive, Injectable, Injector, Optional, Provider, SkipSelf, inject } from '@angular/core';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\n\n/**\n * Token used by provideCalendarScheduleSelectionStoreIfDoesNotExist() to prevent injecting a parent DbxCalendarScheduleSelectionStore into the child view.\n */\n@Injectable()\nexport class DbxCalendarScheduleSelectionStoreProviderBlock {\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore, { skipSelf: true });\n}\n\n@Directive({\n selector: '[dbxCalendarScheduleSelectionStoreParentBlocker]',\n providers: [DbxCalendarScheduleSelectionStoreProviderBlock],\n standalone: true\n})\nexport class DbxCalendarScheduleSelectionStoreInjectionBlockDirective {}\n\n/**\n * Creates a Provider that initializes a new DbxCalendarScheduleSelectionStore if a parent does not exist.\n *\n * If a DbxCalendarScheduleSelectionStoreInjectionBlock is available in the context, and references the same dbxCalendarScheduleSelectionStore that is attempting to be injected, a new DbxCalendarScheduleSelectionStore is created.\n *\n * @returns\n */\nexport function provideCalendarScheduleSelectionStoreIfParentIsUnavailable(): Provider {\n return {\n provide: DbxCalendarScheduleSelectionStore,\n useFactory: (parentInjector: Injector, dbxCalendarScheduleSelectionStoreInjectionBlock?: DbxCalendarScheduleSelectionStoreProviderBlock, dbxCalendarScheduleSelectionStore?: DbxCalendarScheduleSelectionStore) => {\n if (!dbxCalendarScheduleSelectionStore || (dbxCalendarScheduleSelectionStore && dbxCalendarScheduleSelectionStoreInjectionBlock != null && dbxCalendarScheduleSelectionStoreInjectionBlock.dbxCalendarScheduleSelectionStore === dbxCalendarScheduleSelectionStore)) {\n // create a new dbxCalendarScheduleSelectionStore to use\n const injector = Injector.create({ providers: [{ provide: DbxCalendarScheduleSelectionStore }], parent: parentInjector });\n dbxCalendarScheduleSelectionStore = injector.get(DbxCalendarScheduleSelectionStore);\n }\n\n return dbxCalendarScheduleSelectionStore;\n },\n deps: [Injector, [new Optional(), DbxCalendarScheduleSelectionStoreProviderBlock], [new Optional(), new SkipSelf(), DbxCalendarScheduleSelectionStore]]\n };\n}\n","import { flexLayoutWrapper, toggleField } from '@dereekb/dbx-form';\nimport { getDaysOfWeekNames } from '@dereekb/util';\n\nexport function dbxScheduleSelectionCalendarDateDaysFormFields() {\n const fields = dbxScheduleSelectionCalendarDateDaysFormDayFields();\n return [flexLayoutWrapper(fields, { relative: true, size: 3 })];\n}\n\nexport function dbxScheduleSelectionCalendarDateDaysFormDayFields() {\n return getDaysOfWeekNames(false).map((dayOfWeekName: string) => {\n return toggleField({\n key: dayOfWeekName.toLowerCase(),\n label: dayOfWeekName\n });\n });\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { AbstractSyncFormlyFormDirective, dbxFormlyFormComponentProviders, DBX_FORMLY_FORM_COMPONENT_TEMPLATE, DbxFormlyFormComponentImportsModule, DbxFormFormlyWrapperModule, DbxFormFormlyBooleanFieldModule } from '@dereekb/dbx-form';\nimport { EnabledDays } from '@dereekb/util';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { dbxScheduleSelectionCalendarDateDaysFormFields } from './calendar.schedule.selection.form';\n\nexport type DbxScheduleSelectionCalendarDateDaysFormValue = EnabledDays;\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-days-form',\n template: DBX_FORMLY_FORM_COMPONENT_TEMPLATE,\n providers: dbxFormlyFormComponentProviders(),\n imports: [DbxFormlyFormComponentImportsModule, DbxFormFormlyWrapperModule, DbxFormFormlyBooleanFieldModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDateDaysFormComponent extends AbstractSyncFormlyFormDirective<DbxScheduleSelectionCalendarDateDaysFormValue> {\n readonly fields: FormlyFieldConfig[] = dbxScheduleSelectionCalendarDateDaysFormFields();\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { dateCellScheduleDayCodesAreSetsEquivalent, dateCellScheduleDayCodesFromEnabledDays, enabledDaysFromDateCellScheduleDayCodes } from '@dereekb/date';\nimport { WorkUsingObservable, IsModifiedFunction } from '@dereekb/rxjs';\nimport { DbxCalendarStore } from '@dereekb/dbx-web/calendar';\nimport { map, shareReplay, Observable, of } from 'rxjs';\nimport { DbxScheduleSelectionCalendarDateDaysFormComponent, DbxScheduleSelectionCalendarDateDaysFormValue } from './calendar.schedule.selection.days.form.component';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { DbxActionModule } from '@dereekb/dbx-web';\nimport { DbxActionFormDirective, DbxFormSourceDirective } from '@dereekb/dbx-form';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-days',\n template: `\n <div class=\"dbx-schedule-selection-calendar-date-days\" dbxAction dbxActionAutoTrigger dbxActionEnforceModified [useInstantTriggerPreset]=\"true\" [dbxActionHandler]=\"updateScheduleDays\">\n <dbx-schedule-selection-calendar-date-days-form dbxActionForm [dbxFormSource]=\"template$\" [dbxActionFormIsModified]=\"isFormModified\"></dbx-schedule-selection-calendar-date-days-form>\n </div>\n `,\n imports: [DbxScheduleSelectionCalendarDateDaysFormComponent, DbxFormSourceDirective, DbxActionModule, DbxActionFormDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDateDaysComponent {\n readonly dbxCalendarStore = inject(DbxCalendarStore);\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n\n readonly template$: Observable<DbxScheduleSelectionCalendarDateDaysFormValue> = this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map(enabledDaysFromDateCellScheduleDayCodes), shareReplay(1));\n\n readonly isFormModified: IsModifiedFunction<DbxScheduleSelectionCalendarDateDaysFormValue> = (value: DbxScheduleSelectionCalendarDateDaysFormValue) => {\n const newSetValue = new Set(dateCellScheduleDayCodesFromEnabledDays(value));\n return this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(\n map((currentSet) => {\n const result = !dateCellScheduleDayCodesAreSetsEquivalent(newSetValue, currentSet);\n return result;\n })\n );\n };\n\n readonly updateScheduleDays: WorkUsingObservable<DbxScheduleSelectionCalendarDateDaysFormValue> = (value) => {\n this.dbxCalendarScheduleSelectionStore.setScheduleDays(new Set(dateCellScheduleDayCodesFromEnabledDays(value)));\n return of(true);\n };\n}\n","import { SubscriptionObject } from '@dereekb/rxjs';\nimport { Component, OnDestroy, OnInit, inject, viewChild, input, effect, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { DbxCalendarStore } from '@dereekb/dbx-web/calendar';\nimport { FormGroup, FormControl, AbstractControl, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { type Maybe } from '@dereekb/util';\nimport { switchMap, throttleTime, distinctUntilChanged, filter, BehaviorSubject, startWith, Observable, map, shareReplay, combineLatest, EMPTY } from 'rxjs';\nimport { isSameDateDay } from '@dereekb/date';\nimport { MatFormFieldDefaultOptions, MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldModule } from '@angular/material/form-field';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { DateFilterFn, MatDateRangePicker, MatDatepickerModule } from '@angular/material/datepicker';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { DbxButtonSpacerDirective } from '@dereekb/dbx-web';\nimport { TimezoneAbbreviationPipe } from '@dereekb/dbx-core';\n\ninterface RangeValue {\n readonly start?: Maybe<Date>;\n readonly end?: Maybe<Date>;\n}\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-range',\n templateUrl: './calendar.schedule.selection.range.component.html',\n imports: [MatFormFieldModule, FormsModule, ReactiveFormsModule, DbxButtonSpacerDirective, MatDatepickerModule, TimezoneAbbreviationPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDateRangeComponent implements OnInit, OnDestroy {\n readonly dbxCalendarStore = inject(DbxCalendarStore);\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n readonly matFormFieldDefaultOptions = inject<MatFormFieldDefaultOptions>(MAT_FORM_FIELD_DEFAULT_OPTIONS, { optional: true });\n\n readonly picker = viewChild.required<MatDateRangePicker<Date>>('picker');\n\n readonly required = input<boolean>(false);\n readonly openPickerOnTextClick = input<boolean>(true);\n\n readonly label = input<Maybe<string>>('Enter a date range');\n readonly hint = input<Maybe<string>>();\n\n readonly disabled = input<Maybe<boolean>>();\n readonly showCustomize = input<boolean>(false);\n\n readonly timezone$ = this.dbxCalendarScheduleSelectionStore.effectiveOutputTimezone$;\n\n protected readonly _disabledEffect = effect(() => {\n const disabled = this.disabled();\n if (disabled) {\n this.range.disable();\n } else {\n this.range.enable();\n }\n });\n\n private readonly _pickerOpened = new BehaviorSubject<boolean>(false);\n\n private readonly _syncSub = new SubscriptionObject();\n private readonly _valueSub = new SubscriptionObject();\n\n readonly range = new FormGroup({\n start: new FormControl<Maybe<Date>>(null),\n end: new FormControl<Maybe<Date>>(null)\n });\n\n readonly errorStateMatcher: ErrorStateMatcher = {\n isErrorState: (control: AbstractControl | null, form) => {\n if (control) {\n return (control.invalid && (control.dirty || control.touched)) || (control.touched && this.range.invalid);\n } else {\n return false;\n }\n }\n };\n\n readonly minDate$ = this.dbxCalendarScheduleSelectionStore.minDate$;\n readonly maxDate$ = this.dbxCalendarScheduleSelectionStore.maxDate$;\n\n readonly timezoneReleventDate$ = this.dbxCalendarScheduleSelectionStore.currentDateRange$.pipe(\n map((currentDateRange) => {\n return (currentDateRange ? (currentDateRange.start ?? currentDateRange.end) : undefined) ?? new Date();\n }),\n shareReplay(1)\n );\n\n readonly isCustomized$ = this.dbxCalendarScheduleSelectionStore.isCustomized$;\n readonly currentErrorMessage$ = this.range.statusChanges.pipe(\n filter((x) => x === 'INVALID' || x === 'VALID'),\n map((x) => {\n let currentErrorMessage: string | undefined;\n\n if (x === 'INVALID') {\n const { start, end } = this.range.controls;\n\n if (this.range.hasError('required')) {\n currentErrorMessage = 'Date range is required';\n } else if (start.hasError('matStartDateInvalid')) {\n currentErrorMessage = 'Invalid start date';\n } else if (start.hasError('matDatepickerMin')) {\n currentErrorMessage = 'Start date is too early';\n } else if (start.hasError('matDatepickerMax')) {\n currentErrorMessage = 'Start date is too late';\n } else if (end.hasError('matStartDateInvalid')) {\n currentErrorMessage = 'Invalid end date';\n } else if (end.hasError('matDatepickerMin')) {\n currentErrorMessage = 'End date is too early';\n } else if (end.hasError('matDatepickerMax')) {\n currentErrorMessage = 'End date is too late';\n }\n }\n\n return currentErrorMessage;\n }),\n shareReplay(1)\n );\n\n readonly datePickerFilter$: Observable<DateFilterFn<Date>> = combineLatest([this.dbxCalendarScheduleSelectionStore.isEnabledFilterDayFunction$, this.dbxCalendarScheduleSelectionStore.isInAllowedDaysOfWeekFunction$]).pipe(\n map(([isEnabled, isAllowedDayOfWeek]) => {\n const fn = (date: Date | null) => {\n const result = date ? isAllowedDayOfWeek(date) && isEnabled(date) : true;\n return result;\n };\n\n return fn;\n }),\n shareReplay(1)\n );\n\n readonly timezoneSignal = toSignal(this.timezone$);\n readonly timezoneReleventDateSignal = toSignal(this.timezoneReleventDate$, { initialValue: new Date() });\n readonly isCustomizedSignal = toSignal(this.isCustomized$, { initialValue: false });\n\n readonly showCustomLabelSignal = computed(() => this.showCustomize() && this.isCustomizedSignal());\n readonly currentErrorMessageSignal = toSignal(this.currentErrorMessage$);\n readonly datePickerFilterSignal = toSignal(this.datePickerFilter$, { initialValue: (() => true) as DateFilterFn<Date> });\n\n protected readonly _requiredUpdateValidatorsEffect = effect(() => {\n const validators = this.required()\n ? [\n (control: AbstractControl) => {\n const range = control.value;\n\n if (!range || !range.start || !range.end) {\n return { required: true };\n }\n\n return null;\n }\n ]\n : [];\n\n this.range.setValidators(validators);\n });\n\n ngOnInit(): void {\n this._syncSub.subscription = this.dbxCalendarScheduleSelectionStore.currentInputRange$.subscribe((x) => {\n this.range.setValue({\n start: x?.inputStart ?? null,\n end: x?.inputEnd ?? null\n });\n });\n\n this._valueSub.subscription = this._pickerOpened\n .pipe(\n distinctUntilChanged(),\n switchMap((opened) => {\n let obs: Observable<RangeValue>;\n\n if (opened) {\n obs = EMPTY;\n } else {\n obs = this.range.valueChanges.pipe(startWith(this.range.value));\n }\n\n return obs;\n }),\n filter((x) => Boolean(x.start && x.end)),\n distinctUntilChanged((a, b) => isSameDateDay(a.start, b.start) && isSameDateDay(a.end, b.end)),\n throttleTime(100, undefined, { trailing: true })\n )\n .subscribe((x) => {\n if (x.start && x.end) {\n this.dbxCalendarScheduleSelectionStore.setInputRange({ inputStart: x.start, inputEnd: x.end });\n }\n });\n }\n\n ngOnDestroy(): void {\n this._syncSub.destroy();\n this._valueSub.destroy();\n }\n\n clickedDateRangeInput() {\n if (this.openPickerOnTextClick()) {\n const picker = this.picker();\n if (picker) {\n picker.open();\n }\n }\n }\n\n pickerOpened() {\n this._pickerOpened.next(true);\n }\n\n pickerClosed() {\n this._pickerOpened.next(false);\n }\n}\n","<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <div class=\"dbx-schedule-selection-calendar-date-range-field-content\">\n <!-- Primary Content -->\n <div class=\"dbx-flex-bar\">\n @if (showCustomLabelSignal()) {\n <div class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n }\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle class=\"mat-datepicker-button-highlight\" matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input (click)=\"clickedDateRangeInput()\" [required]=\"required()\" [dateFilter]=\"datePickerFilterSignal()\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n @if (timezoneSignal()) {\n <span class=\"dbx-schedule-selection-timezone dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezoneSignal() | timezoneAbbreviation: timezoneReleventDateSignal() }}</span>\n }\n @if (showCustomize()) {\n <div>\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n }\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n </div>\n <!-- Custom Content -->\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n @if (currentErrorMessageSignal()) {\n <mat-error>{{ currentErrorMessageSignal() }}</mat-error>\n }\n <mat-hint>{{ hint() }}</mat-hint>\n</mat-form-field>\n","import { DbxScheduleSelectionCalendarDateDaysComponent } from './calendar.schedule.selection.days.component';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DbxContentContainerDirective, DbxLabelBlockComponent } from '@dereekb/dbx-web';\nimport { DbxScheduleSelectionCalendarDateRangeComponent } from './calendar.schedule.selection.range.component';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-popover-content',\n template: `\n <dbx-content-container padding=\"min\" topPadding=\"normal\">\n <dbx-schedule-selection-calendar-date-range [openPickerOnTextClick]=\"false\"></dbx-schedule-selection-calendar-date-range>\n <dbx-label-block header=\"Allowed Days Of Week\">\n <dbx-schedule-selection-calendar-date-days></dbx-schedule-selection-calendar-date-days>\n </dbx-label-block>\n </dbx-content-container>\n `,\n imports: [DbxContentContainerDirective, DbxScheduleSelectionCalendarDateRangeComponent, DbxLabelBlockComponent, DbxScheduleSelectionCalendarDateDaysComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDatePopoverContentComponent {}\n","import { ChangeDetectionStrategy, Component, ElementRef, Injector } from '@angular/core';\nimport { DbxPopoverKey, AbstractPopoverDirective, DbxPopoverService, DbxPopoverInteractionModule } from '@dereekb/dbx-web';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { DbxScheduleSelectionCalendarDatePopoverContentComponent } from './calendar.schedule.selection.popover.content.component';\n\nexport const DEFAULT_SCHEDULE_SELECTION_CALENDAR_DATE_POPOVER_KEY = 'calendarselection';\n\nexport interface DbxScheduleSelectionCalendarDatePopoverConfig {\n origin: ElementRef;\n injector: Injector;\n}\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-popover',\n template: `\n <dbx-popover-content>\n <dbx-popover-scroll-content>\n <dbx-schedule-selection-calendar-date-popover-content></dbx-schedule-selection-calendar-date-popover-content>\n </dbx-popover-scroll-content>\n </dbx-popover-content>\n `,\n imports: [DbxPopoverInteractionModule, DbxScheduleSelectionCalendarDatePopoverContentComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDatePopoverComponent extends AbstractPopoverDirective<void> {\n static openPopover(popoverService: DbxPopoverService, { origin, injector }: DbxScheduleSelectionCalendarDatePopoverConfig, popoverKey?: DbxPopoverKey): NgPopoverRef<any, number> {\n return popoverService.open({\n key: popoverKey ?? DEFAULT_SCHEDULE_SELECTION_CALENDAR_DATE_POPOVER_KEY,\n origin,\n componentClass: DbxScheduleSelectionCalendarDatePopoverComponent,\n injector\n });\n }\n}\n","import { DbxScheduleSelectionCalendarDatePopoverComponent } from './calendar.schedule.selection.popover.component';\nimport { ChangeDetectionStrategy, Component, ElementRef, Injector, inject, viewChild } from '@angular/core';\nimport { DbxPopoverService, DbxButtonComponent } from '@dereekb/dbx-web';\nimport { map, shareReplay } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { formatToMonthDayString } from '@dereekb/date';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-popover-button',\n template: `\n <dbx-button #buttonPopoverOrigin icon=\"date_range\" [disabled]=\"disabledSignal()\" [raised]=\"true\" color=\"accent\" [text]=\"buttonTextSignal()\" (buttonClick)=\"openPopover()\"></dbx-button>\n `,\n imports: [DbxButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDatePopoverButtonComponent {\n readonly injector = inject(Injector);\n readonly popoverService = inject(DbxPopoverService);\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n\n readonly buttonPopoverOrigin = viewChild.required<string, ElementRef<HTMLButtonElement>>('buttonPopoverOrigin', { read: ElementRef });\n\n readonly disabled$ = this.dbxCalendarScheduleSelectionStore.isViewReadonly$;\n readonly buttonText$ = this.dbxCalendarScheduleSelectionStore.currentDateRange$.pipe(\n map((x) => {\n if (x?.start && x.end) {\n const startString = formatToMonthDayString(x.start);\n const endString = formatToMonthDayString(x.end);\n return startString === endString ? startString : `${formatToMonthDayString(x.start)} - ${formatToMonthDayString(x.end)}`;\n } else {\n return 'Pick a Date Range';\n }\n }),\n shareReplay(1)\n );\n\n readonly disabledSignal = toSignal(this.disabled$, { initialValue: false });\n readonly buttonTextSignal = toSignal(this.buttonText$, { initialValue: 'Pick a Date Range' });\n\n openPopover() {\n const buttonElement = this.buttonPopoverOrigin();\n if (buttonElement) {\n DbxScheduleSelectionCalendarDatePopoverComponent.openPopover(this.popoverService, { origin: buttonElement, injector: this.injector });\n }\n }\n}\n","import { Component, inject, ChangeDetectionStrategy, input, computed, Signal } from '@angular/core';\nimport { CalendarMonthViewDay } from 'angular-calendar';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { CalendarScheduleSelectionCellContent, CalendarScheduleSelectionMetadata } from './calendar.schedule.selection';\nimport { MatIconModule } from '@angular/material/icon';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { map, shareReplay, switchMap } from 'rxjs';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-cell',\n template: `\n @if (iconSignal()) {\n <mat-icon>{{ iconSignal() }}</mat-icon>\n }\n <span>{{ textSignal() }}</span>\n `,\n host: {\n class: 'dbx-schedule-selection-calendar-cell'\n },\n imports: [MatIconModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarCellComponent {\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n\n readonly day = input.required<CalendarMonthViewDay<CalendarScheduleSelectionMetadata>>();\n readonly day$ = toObservable(this.day);\n\n readonly cellContent$ = this.dbxCalendarScheduleSelectionStore.cellContentFactory$.pipe(\n switchMap((fn) => this.day$.pipe(map((x) => fn(x)))),\n shareReplay(1)\n );\n\n readonly contentSignal: Signal<CalendarScheduleSelectionCellContent> = toSignal(this.cellContent$, { initialValue: {} });\n\n readonly iconSignal = computed(() => this.contentSignal().icon);\n readonly textSignal = computed(() => this.contentSignal().text);\n}\n","import { Component, inject, ChangeDetectionStrategy, computed, input } from '@angular/core';\nimport { DbxButtonComponent } from '@dereekb/dbx-web';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { DbxButtonDisplay } from '@dereekb/dbx-core';\nimport { type Maybe } from '@dereekb/util';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n/**\n * Toggle button for selecting and clearing the current selection.\n */\n@Component({\n selector: 'dbx-schedule-selection-calendar-selection-toggle-button',\n template: `\n <dbx-button [disabled]=\"disableButtonSignal()\" [buttonDisplay]=\"buttonDisplaySignal()\" [raised]=\"true\" (buttonClick)=\"toggleSelection()\"></dbx-button>\n `,\n imports: [DbxButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarSelectionToggleButtonComponent {\n readonly disabled = input<Maybe<boolean>>();\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n\n readonly selectionModeSignal = toSignal(this.dbxCalendarScheduleSelectionStore.selectionMode$, { initialValue: 'multiple' });\n readonly nextToggleSelectionSignal = toSignal(this.dbxCalendarScheduleSelectionStore.nextToggleSelection$, { initialValue: 'none' });\n\n readonly disableButtonSignal = computed(() => {\n const disabled = this.disabled();\n const nextToggleSelection = this.nextToggleSelectionSignal();\n let disableButton = false;\n\n if (disabled) {\n disableButton = true;\n } else {\n disableButton = !nextToggleSelection;\n }\n\n return disableButton;\n });\n\n readonly buttonDisplaySignal = computed(() => {\n const selectionMode = this.selectionModeSignal();\n const nextToggleSelection = this.nextToggleSelectionSignal();\n\n let buttonDisplay: DbxButtonDisplay;\n\n switch (nextToggleSelection) {\n case 'all':\n buttonDisplay = {\n icon: 'select_all',\n text: 'Select All'\n };\n break;\n default:\n case 'none':\n buttonDisplay = {\n icon: 'clear',\n text: selectionMode === 'multiple' ? 'Clear All' : 'Clear'\n };\n break;\n }\n\n return buttonDisplay;\n });\n\n toggleSelection() {\n this.dbxCalendarScheduleSelectionStore.toggleSelection();\n }\n}\n","import { Component, OnDestroy, OnInit, inject, ChangeDetectionStrategy, input, output } from '@angular/core';\nimport { CalendarEvent, CalendarMonthViewBeforeRenderEvent, CalendarMonthViewDay, CalendarModule } from 'angular-calendar';\nimport { map, shareReplay, Subject, first, throttleTime, distinctUntilChanged, Observable, combineLatest, switchMap, of, combineLatestWith } from 'rxjs';\nimport { DbxCalendarEvent, DbxCalendarStore, prepareAndSortCalendarEvents, DbxCalendarBaseComponent } from '@dereekb/dbx-web/calendar';\nimport { DayOfWeek, Maybe, reduceBooleansWithAnd } from '@dereekb/util';\nimport { CalendarScheduleSelectionState, DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { CalendarScheduleSelectionDayState, CalendarScheduleSelectionMetadata } from './calendar.schedule.selection';\nimport { DbxInjectionComponentConfig, switchMapDbxInjectionComponentConfig, DbxInjectionComponent } from '@dereekb/dbx-core';\nimport { ObservableOrValue, ObservableOrValueGetter, SubscriptionObject, asObservable, asObservableFromGetter } from '@dereekb/rxjs';\nimport { DbxScheduleSelectionCalendarDatePopoverButtonComponent } from './calendar.schedule.selection.popover.button.component';\nimport { DateRangeType, dateRange, isSameDate } from '@dereekb/date';\nimport { endOfWeek } from 'date-fns';\nimport { toSignal, toObservable } from '@angular/core/rxjs-interop';\nimport { NgClass } from '@angular/common';\nimport { DbxScheduleSelectionCalendarCellComponent } from './calendar.schedule.selection.cell.component';\nimport { DbxScheduleSelectionCalendarSelectionToggleButtonComponent } from './calendar.schedule.selection.toggle.button.component';\nimport { DbxButtonSpacerDirective } from '@dereekb/dbx-web';\n\nexport interface DbxScheduleSelectionCalendarComponentConfig {\n /**\n * Whether or not the selection calendar is readonly. Defaults to 'false'.\n */\n readonly readonly?: Maybe<ObservableOrValueGetter<Maybe<boolean>>>;\n /**\n * Whether or not to show the configured buttons when readonly is true. Defaults to false.\n */\n readonly showButtonsOnReadonly?: boolean;\n /**\n * Whether or not to show the clear selection button. Defaults to `true`.\n */\n readonly showClearSelectionButton?: boolean;\n /**\n * Configuration for displaying a custom selection button. When null/undefined/true is passed, will show the default DbxScheduleSelectionCalendarDatePopoverButtonComponent.\n */\n readonly buttonInjectionConfig?: Maybe<ObservableOrValueGetter<Maybe<DbxInjectionComponentConfig<any> | boolean>>>;\n /**\n * Customize day function. When a new function is piped through the calendar is refreshed.\n */\n readonly customizeDay?: Maybe<ObservableOrValue<Maybe<DbxScheduleSelectionCalendarBeforeMonthViewRenderModifyDayFunction>>>;\n /**\n * Optional full control over the beforeMonthViewRender\n */\n readonly beforeMonthViewRenderFunctionFactory?: Maybe<ObservableOrValue<DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory>>;\n}\n\nexport type DbxScheduleSelectionCalendarBeforeMonthViewRenderModifyDayFunction = (viewDay: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>, state: CalendarScheduleSelectionState) => void;\n\nexport type DbxScheduleSelectionCalendarBeforeMonthViewRenderFunction = (renderEvent: CalendarMonthViewBeforeRenderEvent) => void;\n\nexport type DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory = (state: Observable<CalendarScheduleSelectionState>) => DbxScheduleSelectionCalendarBeforeMonthViewRenderFunction;\n\nexport function dbxScheduleSelectionCalendarBeforeMonthViewRenderFactory(inputModifyFn?: Maybe<DbxScheduleSelectionCalendarBeforeMonthViewRenderModifyDayFunction>): DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory {\n const modifyFn = inputModifyFn || (() => {});\n\n return (state$: Observable<CalendarScheduleSelectionState>) => {\n return (renderEvent: CalendarMonthViewBeforeRenderEvent) => {\n const { body }: { body: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>[] } = renderEvent;\n\n // use latest/current state\n state$.pipe(first()).subscribe((calendarScheduleState: CalendarScheduleSelectionState) => {\n const { isEnabledDay, indexFactory, isEnabledFilterDay, allowedDaysOfWeek } = calendarScheduleState;\n body.forEach((viewDay) => {\n const { date } = viewDay;\n const i = indexFactory(date);\n const day = date.getDay();\n\n let state: CalendarScheduleSelectionDayState;\n\n if (!isEnabledFilterDay(i)) {\n viewDay.cssClass = 'cal-day-not-applicable';\n state = CalendarScheduleSelectionDayState.NOT_APPLICABLE;\n } else if (!allowedDaysOfWeek.has(day as DayOfWeek)) {\n viewDay.cssClass = 'cal-day-disabled';\n state = CalendarScheduleSelectionDayState.DISABLED;\n } else if (isEnabledDay(i)) {\n viewDay.cssClass = 'cal-day-selected';\n state = CalendarScheduleSelectionDayState.SELECTED;\n } else {\n viewDay.cssClass = 'cal-day-not-selected';\n state = CalendarScheduleSelectionDayState.NOT_SELECTED;\n }\n\n const meta = {\n state,\n i\n };\n\n viewDay.meta = meta;\n modifyFn(viewDay, calendarScheduleState);\n });\n });\n };\n };\n}\n\n@Component({\n selector: 'dbx-schedule-selection-calendar',\n templateUrl: './calendar.schedule.selection.component.html',\n imports: [NgClass, CalendarModule, DbxCalendarBaseComponent, DbxInjectionComponent, DbxButtonSpacerDirective, DbxScheduleSelectionCalendarCellComponent, DbxScheduleSelectionCalendarSelectionToggleButtonComponent],\n providers: [DbxCalendarStore],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarComponent<T> implements OnInit, OnDestroy {\n readonly calendarStore = inject(DbxCalendarStore<T>);\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n\n readonly clickEvent = output<DbxCalendarEvent<T>>();\n\n readonly config = input<Maybe<DbxScheduleSelectionCalendarComponentConfig>>();\n readonly readonly = input<Maybe<boolean>>(false);\n\n private readonly _centerRangeSub = new SubscriptionObject();\n\n readonly config$: Observable<Maybe<DbxScheduleSelectionCalendarComponentConfig>> = toObservable(this.config).pipe(distinctUntilChanged(), shareReplay(1));\n\n readonly readonly$: Observable<boolean> = this.config$.pipe(\n switchMap((x) => (x?.readonly != null ? asObservableFromGetter(x.readonly) : of(undefined))),\n combineLatestWith(toObservable(this.readonly)),\n map(([configReadonly, inputReadonly]) => {\n return configReadonly || inputReadonly || false;\n }),\n shareReplay(1)\n );\n\n readonly showButtonsOnReadonly$: Observable<boolean> = this.config$.pipe(\n map((x) => x?.showButtonsOnReadonly ?? false),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly showButtons$ = this.showButtonsOnReadonly$.pipe(\n switchMap((x) => {\n if (x) {\n return of(true);\n } else {\n return this.readonly$.pipe(map((x) => !x));\n }\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly showClearSelectionButton$ = this.config$.pipe(\n map((config) => config?.showClearSelectionButton ?? true),\n combineLatestWith(this.showButtons$),\n map((x) => reduceBooleansWithAnd(x)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly datePopoverButtonInjectionConfig$: Observable<Maybe<DbxInjectionComponentConfig<any>>> = this.config$.pipe(\n map((x) => x?.buttonInjectionConfig),\n switchMapDbxInjectionComponentConfig(DbxScheduleSelectionCalendarDatePopoverButtonComponent),\n combineLatestWith(this.showButtons$),\n map(([config, showButton]) => (showButton ? config : undefined)),\n shareReplay(1)\n );\n\n // refresh any time the selected day function updates\n readonly state$ = this.dbxCalendarScheduleSelectionStore.state$;\n\n readonly beforeMonthViewRender$ = this.config$.pipe(\n switchMap((x) => {\n let factory: Observable<DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory>;\n\n if (x?.beforeMonthViewRenderFunctionFactory) {\n factory = asObservable(x.beforeMonthViewRenderFunctionFactory);\n } else {\n factory = asObservable(x?.customizeDay).pipe(map((x) => dbxScheduleSelectionCalendarBeforeMonthViewRenderFactory(x)));\n }\n\n return factory.pipe(map((x) => x(this.state$)));\n }),\n shareReplay(1)\n );\n\n readonly refresh$ = combineLatest([this.state$, this.beforeMonthViewRender$]).pipe(\n throttleTime(20, undefined, { leading: true, trailing: true }),\n map(() => undefined)\n ) as Subject<undefined>;\n\n readonly events$ = this.calendarStore.visibleEvents$.pipe(map(prepareAndSortCalendarEvents), shareReplay(1));\n readonly viewDate$ = this.calendarStore.date$;\n\n readonly beforeMonthViewRenderSignal = toSignal(this.beforeMonthViewRender$);\n readonly readonlySignal = toSignal(this.readonly$, { initialValue: false });\n readonly showClearSelectionButtonSignal = toSignal(this.showClearSelectionButton$);\n readonly datePopoverButtonInjectionConfigSignal = toSignal(this.datePopoverButtonInjectionConfig$);\n\n readonly eventsSignal = toSignal(this.events$, { initialValue: [] });\n readonly viewDateSignal = toSignal(this.viewDate$, { initialValue: new Date() });\n\n ngOnInit(): void {\n this.dbxCalendarScheduleSelectionStore.setViewReadonlyState(this.readonly$); // sync the readonly state\n\n this.calendarStore.setNavigationRangeLimit(this.dbxCalendarScheduleSelectionStore.minMaxDateRange$); // set navigation limit to the min/max allowed dates.\n this.calendarStore.setShowPageButtons(true);\n\n // when a new filter is set, if the first two pages of selectable indexes fit within the calendar month, focus on that calendar month.\n this._centerRangeSub.subscription = this.dbxCalendarScheduleSelectionStore.currentDateRange$\n .pipe(\n first(),\n switchMap((x) => {\n const result: Observable<[typeof x, boolean]> = x\n ? of([x, true])\n : this.dbxCalendarScheduleSelectionStore.minMaxDateRange$.pipe(\n first(),\n map((y) => [y, false] as [typeof x, boolean])\n );\n return result;\n })\n )\n .subscribe(([x, isFromSelectedDateRange]) => {\n if (x?.start) {\n let tapDay: Maybe<Date>;\n const startMonth = dateRange({ date: x.start, type: DateRangeType.CALENDAR_MONTH });\n const monthToFocus = endOfWeek(startMonth.start);\n\n if (x.end != null) {\n const endMonth = dateRange({ date: x.end, type: DateRangeType.CALENDAR_MONTH });\n\n if (isSameDate(startMonth.start, endMonth.start)) {\n tapDay = monthToFocus;\n }\n }\n\n if (!tapDay && isFromSelectedDateRange) {\n tapDay = monthToFocus;\n }\n\n if (tapDay) {\n this.calendarStore.tapDay(tapDay);\n }\n }\n });\n }\n\n ngOnDestroy(): void {\n this._centerRangeSub.destroy();\n }\n\n dayClicked({ date }: { date: Date }): void {\n if (!this.readonlySignal()) {\n this.dbxCalendarScheduleSelectionStore.toggleSelectedDates(date);\n }\n }\n\n eventClicked(action: string, event: CalendarEvent<T>): void {\n this.clickEvent.emit({ action, event });\n }\n\n beforeMonthViewRender(renderEvent: CalendarMonthViewBeforeRenderEvent): void {\n this.beforeMonthViewRenderSignal()?.(renderEvent);\n }\n}\n","<dbx-calendar-base class=\"dbx-schedule-selection-calendar\" [ngClass]=\"readonlySignal() ? 'dbx-schedule-selection-calendar-readonly' : ''\">\n <ng-container controls>\n @if (showClearSelectionButtonSignal()) {\n <dbx-schedule-selection-calendar-selection-toggle-button [disabled]=\"readonlySignal()\"></dbx-schedule-selection-calendar-selection-toggle-button>\n <dbx-button-spacer></dbx-button-spacer>\n }\n <dbx-injection [config]=\"datePopoverButtonInjectionConfigSignal()\"></dbx-injection>\n </ng-container>\n <div class=\"dbx-calendar-content dbx-calendar-content-month\">\n <mwl-calendar-month-view [refresh]=\"refresh$\" [viewDate]=\"viewDateSignal()!\" [events]=\"eventsSignal()\" (dayClicked)=\"dayClicked($event.day)\" (eventClicked)=\"eventClicked('Clicked', $event.event)\" (beforeViewRender)=\"beforeMonthViewRender($event)\" [cellTemplate]=\"monthDayCellTemplate\"></mwl-calendar-month-view>\n </div>\n</dbx-calendar-base>\n\n<!-- Cell -->\n<ng-template #monthDayCellTemplate let-day=\"day\" let-locale=\"locale\">\n <div class=\"cal-cell-top\">\n @if (day.badgeTotal > 0) {\n <span class=\"cal-day-badge\">{{ day.badgeTotal }}</span>\n }\n <span class=\"cal-day-number\">{{ day.date | calendarDate: 'monthViewDayNumber' : locale }}</span>\n </div>\n <dbx-schedule-selection-calendar-cell [day]=\"day\"></dbx-schedule-selection-calendar-cell>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, InjectionToken, Injector } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AbstractDialogDirective, DbxDialogContentConfig, DbxDialogContentFooterConfig, DbxDialogModule, sanitizeDbxDialogContentConfig } from '@dereekb/dbx-web';\nimport { KeyValueTypleValueFilter, Maybe, mergeObjects } from '@dereekb/util';\nimport { DbxScheduleSelectionCalendarComponent } from './calendar.schedule.selection.component';\n\n/**\n * Token used to configure the default DbxScheduleSelectionCalendarDatePopupConfig for DbxScheduleSelectionCalendarDateDialogComponent.\n */\nexport const DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CONTENT_CONFIG_TOKEN = new InjectionToken('DbxScheduleSelectionCalendarDatePopupContentConfig');\n\nexport interface DbxScheduleSelectionCalendarDatePopupContentConfig {\n readonly closeConfig?: DbxDialogContentFooterConfig;\n readonly dialogConfig?: DbxDialogContentConfig;\n}\n\nexport interface DbxScheduleSelectionCalendarDatePopupConfig {\n readonly injector: Injector;\n readonly contentConfig?: Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>;\n}\n\n@Component({\n template: `\n <dbx-dialog-content class=\"dbx-schedule-selection-calendar-date-dialog\">\n <dbx-dialog-content-close (close)=\"close()\"></dbx-dialog-content-close>\n <dbx-schedule-selection-calendar></dbx-schedule-selection-calendar>\n <dbx-dialog-content-footer [config]=\"closeConfig\" (close)=\"close()\"></dbx-dialog-content-footer>\n </dbx-dialog-content>\n `,\n standalone: true,\n imports: [DbxDialogModule, DbxScheduleSelectionCalendarComponent],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DbxScheduleSelectionCalendarDateDialogComponent extends AbstractDialogDirective<void, DbxScheduleSelectionCalendarDatePopupConfig> {\n get contentConfig() {\n return this.data.contentConfig;\n }\n\n get closeConfig() {\n return this.contentConfig?.closeConfig;\n }\n\n static openDialog(matDialog: MatDialog, config: DbxScheduleSelectionCalendarDatePopupConfig) {\n const { injector, contentConfig: inputContentConfig } = config;\n const defaultContentConfig = injector.get<Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>>(DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CONTENT_CONFIG_TOKEN, null);\n const contentConfig = mergeObjects([defaultContentConfig, inputContentConfig], KeyValueTypleValueFilter.NULL);\n return matDialog.open(DbxScheduleSelectionCalendarDateDialogComponent, {\n height: 'calc(var(--vh100) * 0.9)',\n width: '80vw',\n minHeight: 400,\n minWidth: 360,\n ...sanitizeDbxDialogContentConfig(contentConfig.dialogConfig),\n injector,\n data: {\n config,\n contentConfig\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, Injector, inject, input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DbxScheduleSelectionCalendarDateDialogComponent, DbxScheduleSelectionCalendarDatePopupContentConfig } from './calendar.schedule.selection.dialog.component';\nimport { type Maybe } from '@dereekb/util';\nimport { DbxButtonComponent } from '@dereekb/dbx-web';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-dialog-button',\n template: `\n <dbx-button [raised]=\"true\" color=\"accent\" [text]=\"buttonText()\" [disabled]=\"disabled()\" (buttonClick)=\"clickCustomize()\"></dbx-button>\n `,\n imports: [DbxButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDateDialogButtonComponent {\n readonly injector = inject(Injector);\n readonly matDialog = inject(MatDialog);\n\n readonly buttonText = input<string>('Customize');\n\n readonly disabled = input<Maybe<boolean>>();\n\n readonly contentConfig = input<Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>>();\n\n clickCustomize() {\n DbxScheduleSelectionCalendarDateDialogComponent.openDialog(this.matDialog, { injector: this.injector, contentConfig: this.contentConfig() });\n }\n}\n","import { AbstractControl, FormGroup } from '@angular/forms';\nimport { CompactContextStore } from '@dereekb/dbx-web';\nimport { ChangeDetectionStrategy, Component, OnDestroy, OnInit, inject } from '@angular/core';\nimport { FieldTypeConfig, FormlyFieldProps } from '@ngx-formly/core';\nimport { ArrayOrValue, type Maybe } from '@dereekb/util';\nimport { FieldType } from '@ngx-formly/material';\nimport { BehaviorSubject, distinctUntilChanged, map, shareReplay, startWith, Subscription, switchMap } from 'rxjs';\nimport { filterMaybe, ObservableOrValue, SubscriptionObject, asObservable } from '@dereekb/rxjs';\nimport { DateRange, TimezoneString, isSameDateCellScheduleDateRange, DateCellScheduleDateFilterConfig, DateCellScheduleDayCode, DateOrDateRangeOrDateCellIndexOrDateCellRange } from '@dereekb/date';\nimport { CalendarScheduleSelectionState, DbxCalendarScheduleSelectionStore } from '../../calendar.schedule.selection.store';\nimport { provideCalendarScheduleSelectionStoreIfParentIsUnavailable } from '../../calendar.schedule.selection.store.provide';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\nimport { DbxScheduleSelectionCalendarDatePopupContentConfig } from '../../calendar.schedule.selection.dialog.component';\nimport { DbxInjectionComponent, DbxInjectionComponentConfig } from '@dereekb/dbx-core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { DbxScheduleSelectionCalendarDateDialogButtonComponent } from '../../calendar.schedule.selection.dialog.button.component';\nimport { DbxScheduleSelectionCalendarDateRangeComponent } from '../../calendar.schedule.selection.range.component';\n\nexport interface DbxFormCalendarDateCellScheduleRangeFieldProps extends Pick<FormlyFieldProps, 'label' | 'description' | 'readonly' | 'required'>, Pick<CalendarScheduleSelectionState, 'computeSelectionResultRelativeToFilter' | 'initialSelectionState'>, Partial<Pick<CalendarScheduleSelectionState, 'cellContentFactory'>> {\n readonly appearance?: MatFormFieldAppearance;\n /**\n * Whether or not to allow inputting custom text into the picker.\n *\n * If false, when the input text is picked the date picker will open.\n *\n * Is false by default.\n */\n readonly allowTextInput?: boolean;\n /**\n * Whether or not to hide the customize button. Defaults to false.\n */\n readonly hideCustomize?: boolean;\n /**\n * Whether or not to allow customizing before picking a date range to customize.\n *\n * Defaults to false.\n */\n readonly allowCustomizeWithoutDateRange?: boolean;\n /**\n * (Optional) Timezone to use for the output start date.\n *\n * If a filter is provided, this timezone overrides the filter's timezone output.\n */\n readonly outputTimezone?: ObservableOrValue<Maybe<TimezoneString>>;\n /**\n * (Optional) Default schedule days to allow.\n */\n readonly defaultScheduleDays?: ObservableOrValue<Maybe<Iterable<DateCellScheduleDayCode>>>;\n /**\n * Optional min/max date range to filter on. Works in conjuction with the filter.\n */\n readonly minMaxDateRange?: ObservableOrValue<Maybe<Partial<DateRange>>>;\n /**\n * (Optional) Observable with a filter value to apply to the date range.\n */\n readonly filter?: ObservableOrValue<Maybe<DateCellScheduleDateFilterConfig>>;\n /**\n * (Optional) Observable with days and values to exclude from the date range.\n */\n readonly exclusions?: ObservableOrValue<Maybe<ArrayOrValue<DateOrDateRangeOrDateCellIndexOrDateCellRange>>>;\n /**\n * Custom dialog content config for the popup\n */\n readonly dialogContentConfig?: Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>;\n /**\n * Custom details config for the date range\n */\n readonly customDetailsConfig?: Maybe<DbxInjectionComponentConfig>;\n}\n\n@Component({\n template: `\n <div class=\"dbx-schedule-selection-field\">\n <dbx-schedule-selection-calendar-date-range [openPickerOnTextClick]=\"openPickerOnTextClick\" [showCustomize]=\"showCustomize\" [required]=\"required\" [disabled]=\"isReadonlyOrDisabled\" [label]=\"label\" [hint]=\"description\">\n <dbx-schedule-selection-calendar-date-dialog-button customizeButton [disabled]=\"disabledSignal()\" [contentConfig]=\"dialogContentConfig\"></dbx-schedule-selection-calendar-date-dialog-button>\n <dbx-injection [config]=\"customDetailsConfig\"></dbx-injection>\n </dbx-schedule-selection-calendar-date-range>\n </div>\n `,\n providers: [provideCalendarScheduleSelectionStoreIfParentIsUnavailable()],\n imports: [DbxInjectionComponent, DbxScheduleSelectionCalendarDateRangeComponent, DbxScheduleSelectionCalendarDateDialogButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxFormCalendarDateScheduleRangeFieldComponent<T extends DbxFormCalendarDateCellScheduleRangeFieldProps = DbxFormCalendarDateCellScheduleRangeFieldProps> extends FieldType<FieldTypeConfig<T>> implements OnInit, OnDestroy {\n readonly compact = inject(CompactContextStore, { optional: true });\n\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n\n private readonly _syncSub = new SubscriptionObject();\n private readonly _valueSub = new SubscriptionObject();\n private readonly _timezoneSub = new SubscriptionObject();\n private readonly _minMaxDateRangeSub = new SubscriptionObject();\n private readonly _defaultWeekSub = new SubscriptionObject();\n private readonly _filterSub = new SubscriptionObject();\n private readonly _exclusionsSub = new SubscriptionObject();\n\n private readonly _formControlObs = new BehaviorSubject<Maybe<AbstractControl>>(undefined);\n readonly formControl$ = this._formControlObs.pipe(filterMaybe());\n\n readonly value$ = this.formControl$.pipe(\n switchMap((control) => control.valueChanges.pipe(startWith(control.value))),\n shareReplay(1)\n );\n\n readonly disableCustomize$ = this.value$.pipe(\n map((x) => (this.allowCustomizeWithoutDateRange ? false : !x)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly disabledSignal = toSignal(this.disableCustomize$);\n\n get formGroupName(): string {\n return this.field.key as string;\n }\n\n get formGroup(): FormGroup {\n return this.form as FormGroup;\n }\n\n get label(): Maybe<string> {\n return this.field.props?.label;\n }\n\n get description(): Maybe<string> {\n return this.props.description;\n }\n\n get isReadonlyOrDisabled() {\n return this.props.readonly || this.disabled;\n }\n\n get openPickerOnTextClick() {\n return this.props.allowTextInput !== true; // Opposite of allowTextInput\n }\n\n get allowCustomizeWithoutDateRange() {\n return this.props.allowCustomizeWithoutDateRange ?? false;\n }\n\n get showCustomize() {\n return !this.props.hideCustomize;\n }\n\n get defaultScheduleDays() {\n return this.props.defaultScheduleDays;\n }\n\n get minMaxDateRange() {\n return this.props.minMaxDateRange;\n }\n\n get filter() {\n return this.props.filter;\n }\n\n get exclusions() {\n return this.props.exclusions;\n }\n\n get outputTimezone() {\n return this.props.outputTimezone;\n }\n\n get initialSelectionState() {\n return this.props.initialSelectionState;\n }\n\n get computeSelectionResultRelativeToFilter() {\n return this.props.computeSelectionResultRelativeToFilter;\n }\n\n get dialogContentConfig() {\n return this.props.dialogContentConfig;\n }\n\n get customDetailsConfig() {\n return this.props.customDetailsConfig;\n }\n\n get cellContentFactory() {\n return this.props.cellContentFactory;\n }\n\n ngOnInit(): void {\n this._formControlObs.next(this.formControl);\n\n this._syncSub.subscription = this.value$.pipe(distinctUntilChanged(isSameDateCellScheduleDateRange)).subscribe((x) => {\n this.dbxCalendarScheduleSelectionStore.setDateScheduleRangeValue(x);\n });\n\n this._valueSub.subscription = this.dbxCalendarScheduleSelectionStore.currentDateCellScheduleRangeValue$.subscribe((x) => {\n this.formControl.setValue(x);\n });\n\n const { outputTimezone, minMaxDateRange, filter, exclusions, defaultScheduleDays } = this;\n\n if (filter != null) {\n this._filterSub.subscription = this.dbxCalendarScheduleSelectionStore.setFilter(asObservable(filter)) as Subscription;\n }\n\n if (defaultScheduleDays != null) {\n this._defaultWeekSub.subscription = this.dbxCalendarScheduleSelectionStore.setDefaultScheduleDays(asObservable(defaultScheduleDays)) as Subscription;\n }\n\n if (minMaxDateRange != null) {\n this._minMaxDateRangeSub.subscription = this.dbxCalendarScheduleSelectionStore.setMinMaxDateRange(asObservable(minMaxDateRange)) as Subscription;\n }\n\n if (exclusions != null) {\n this._exclusionsSub.subscription = this.dbxCalendarScheduleSelectionStore.setExclusions(asObservable(exclusions)) as Subscription;\n }\n\n if (outputTimezone != null) {\n this.dbxCalendarScheduleSelectionStore.setOutputTimezone(asObservable(this.outputTimezone));\n }\n\n if (this.initialSelectionState !== undefined) {\n this.dbxCalendarScheduleSelectionStore.setInitialSelectionState(this.initialSelectionState);\n }\n\n if (this.computeSelectionResultRelativeToFilter != null) {\n this.dbxCalendarScheduleSelectionStore.setComputeSelectionResultRelativeToFilter(this.computeSelectionResultRelativeToFilter);\n }\n\n if (this.cellContentFactory != null) {\n this.dbxCalendarScheduleSelectionStore.setCellContentFactory(this.cellContentFactory);\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._syncSub.destroy();\n this._valueSub.destroy();\n this._filterSub.destroy();\n this._timezoneSub.destroy();\n this._minMaxDateRangeSub.destroy();\n this._exclusionsSub.destroy();\n this._formControlObs.complete();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DbxFormCalendarDateScheduleRangeFieldComponent } from './calendar.schedule.field.component';\nimport { FormlyModule } from '@ngx-formly/core';\n\nconst importsAndExports = [DbxFormCalendarDateScheduleRangeFieldComponent];\n\n@NgModule({\n imports: [\n ...importsAndExports,\n FormlyModule.forChild({\n types: [{ name: 'date-schedule-range', component: DbxFormCalendarDateScheduleRangeFieldComponent }]\n })\n ],\n exports: importsAndExports\n})\nexport class DbxFormDateScheduleRangeFieldModule {}\n","export * from './schedule';\n// export * from './selection';\n","import { NgModule } from '@angular/core';\nimport { DbxScheduleSelectionCalendarComponent } from './calendar.schedule.selection.component';\nimport { DbxScheduleSelectionCalendarDatePopoverButtonComponent } from './calendar.schedule.selection.popover.button.component';\nimport { DbxScheduleSelectionCalendarDateDaysComponent } from './calendar.schedule.selection.days.component';\nimport { DbxScheduleSelectionCalendarDatePopoverComponent } from './calendar.schedule.selection.popover.component';\nimport { DbxScheduleSelectionCalendarDatePopoverContentComponent } from './calendar.schedule.selection.popover.content.component';\nimport { DbxScheduleSelectionCalendarDateRangeComponent } from './calendar.schedule.selection.range.component';\nimport { DbxScheduleSelectionCalendarDateDaysFormComponent } from './calendar.schedule.selection.days.form.component';\nimport { DbxScheduleSelectionCalendarCellComponent } from './calendar.schedule.selection.cell.component';\nimport { DbxCalendarScheduleSelectionStoreInjectionBlockDirective } from './calendar.schedule.selection.store.provide';\nimport { DbxScheduleSelectionCalendarDateDialogComponent } from './calendar.schedule.selection.dialog.component';\nimport { DbxScheduleSelectionCalendarDateDialogButtonComponent } from './calendar.schedule.selection.dialog.button.component';\nimport { DbxScheduleSelectionCalendarSelectionToggleButtonComponent } from './calendar.schedule.selection.toggle.button.component';\nimport { DbxFormFormlyWrapperModule } from '@dereekb/dbx-form';\n\nconst importsAndExports = [\n DbxScheduleSelectionCalendarComponent,\n DbxScheduleSelectionCalendarDateDaysComponent,\n DbxScheduleSelectionCalendarDateDaysFormComponent,\n DbxScheduleSelectionCalendarDateRangeComponent,\n DbxScheduleSelectionCalendarDatePopoverButtonComponent,\n DbxScheduleSelectionCalendarCellComponent,\n DbxScheduleSelectionCalendarDatePopoverComponent,\n DbxScheduleSelectionCalendarDatePopoverContentComponent,\n DbxCalendarScheduleSelectionStoreInjectionBlockDirective,\n DbxScheduleSelectionCalendarDateDialogComponent,\n DbxScheduleSelectionCalendarDateDialogButtonComponent,\n DbxScheduleSelectionCalendarSelectionToggleButtonComponent,\n //\n DbxFormFormlyWrapperModule\n];\n\n@NgModule({\n imports: importsAndExports,\n exports: importsAndExports\n})\nexport class DbxFormCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","importsAndExports"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMgB,SAAA,sBAAsB,CAAC,MAAA,GAAuC,EAAE,EAAA;AAC9E,IAAA,MAAM,EAAE,GAAG,GAAG,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,qBAAqB,EAAE,sCAAsC,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAC;AAEtR,IAAA,MAAM,WAAW,GAAsB;AACrC,QAAA,GAAG,WAAW,CAAC;YACb,GAAG;AACH,YAAA,IAAI,EAAE,qBAAqB;YAC3B,GAAG,4BAA4B,CAAC,MAAM,EAAE;AACtC,gBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,UAAU;gBACjC,cAAc;gBACd,UAAU;gBACV,aAAa;gBACb,cAAc;gBACd,mBAAmB;gBACnB,eAAe;gBACf,MAAM;gBACN,UAAU;gBACV,mBAAmB;gBACnB,sCAAsC;gBACtC,qBAAqB;gBACrB,kBAAkB;gBAClB,mBAAmB;aACpB,CAAC;SACH,CAAC;KACH,CAAC;AAEF,IAAA,OAAO,WAAW,CAAC;AACrB;;IClBY,kCAKX;AALD,CAAA,UAAY,iCAAiC,EAAA;AAC3C,IAAA,iCAAA,CAAA,iCAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB,CAAA;AAClB,IAAA,iCAAA,CAAA,iCAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,IAAA,iCAAA,CAAA,iCAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AAChB,IAAA,iCAAA,CAAA,iCAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACd,CAAC,EALW,iCAAiC,KAAjC,iCAAiC,GAK5C,EAAA,CAAA,CAAA,CAAA;AAcY,MAAA,kDAAkD,GAAgD,CAAC,GAA4D,KAAI;AAC9K,IAAA,IAAI,IAAwB,CAAC;AAC7B,IAAA,IAAI,IAAwB,CAAC;AAE7B,IAAA,QAAQ,GAAG,CAAC,IAAI,EAAE,KAAK;QACrB,KAAK,iCAAiC,CAAC,QAAQ;YAC7C,IAAI,GAAG,WAAW,CAAC;YACnB,MAAM;QACR,KAAK,iCAAiC,CAAC,QAAQ;YAC7C,IAAI,GAAG,OAAO,CAAC;YACf,MAAM;QACR,KAAK,iCAAiC,CAAC,cAAc;YACnD,MAAM;QACR,KAAK,iCAAiC,CAAC,YAAY;YACjD,IAAI,GAAG,yBAAyB,CAAC;YACjC,IAAI,GAAG,KAAK,CAAC;YACb,MAAM;KACT;AAED,IAAA,MAAM,MAAM,GAAyC;QACnD,IAAI;QACJ,IAAI;KACL,CAAC;AAEF,IAAA,OAAO,MAAM,CAAC;AAChB;;SCoIgB,qCAAqC,GAAA;AACnD,IAAA,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,uBAAuB,CAAC,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;AACxG,IAAA,MAAM,iBAAiB,GAAG,4CAA4C,CAAC,mBAAmB,CAAC,CAAC;AAC5F,IAAA,MAAM,eAAe,GAAG,mCAAmC,EAAE,CAAC;IAC9D,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,eAAe,CAAC;AAC/D,IAAA,MAAM,YAAY,GAAG,kCAAkC,CAAC,eAAe,CAAC,CAAC;AACzE,IAAA,MAAM,cAAc,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAE1D,OAAO;AACL,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,KAAK,EAAE,QAAQ;QACf,cAAc;QACd,YAAY;QACZ,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,mBAAmB;AACnB,QAAA,qBAAqB,EAAE,mBAAmB;QAC1C,iBAAiB;QACjB,cAAc;AACd,QAAA,kBAAkB,EAAE,MAAM,IAAI;AAC9B,QAAA,YAAY,EAAE,MAAM,KAAK;AACzB,QAAA,sCAAsC,EAAE,IAAI;AAC5C,QAAA,kBAAkB,EAAE,kDAAkD;KACvE,CAAC;AACJ,CAAC;AAED;;;;;;;AAOG;AACH,SAAS,kDAAkD,CAAC,CAAqE,EAAA;IAC/H,IAAI,KAAK,GAAuE,CAAC,CAAC;AAElF,IAAA,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC,CAAC,eAAe,IAAI,IAAI,EAAE;QACnD,MAAM,YAAY,GAAG,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,YAAY,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC;AAE7E,QAAA,KAAK,GAAG;YACN,MAAM,EAAE,CAAC,CAAC,MAAM;AAChB,YAAA,eAAe,EAAE;gBACf,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,SAAS;gBACjF,GAAG,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,SAAS;AAC5E,aAAA;SACF,CAAC;KACH;AAED,IAAA,OAAO,kCAAkC,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AAEK,SAAU,kCAAkC,CAAC,CAAqE,EAAA;IACtH,OAAO;AACL,QAAA,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,IAAI,SAAS;AAC9C,QAAA,GAAG,EAAE,uBAAuB,CAAC,CAAC,CAAC,IAAI,SAAS;KAC7C,CAAC;AACJ,CAAC;AAEK,SAAU,uBAAuB,CAAC,CAAqE,EAAA;AAC3G,IAAA,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;AAClE,CAAC;AAEK,SAAU,uBAAuB,CAAC,CAAqE,EAAA;AAC3G,IAAA,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AAEK,SAAU,wCAAwC,CAAC,CAA4F,EAAA;AACnJ,IAAA,OAAO,CAAC,CAAC,sCAAsC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC;AAC7E,CAAC;AAGK,MAAO,iCAAkC,SAAQ,cAA8C,CAAA;AACnG,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,CAAC,qCAAqC,EAAE,CAAC,CAAC;KAChD;;IAGQ,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAuB,KAAI;QACjE,OAAO,KAAK,CAAC,IAAI,CACf,SAAS,CAAC,MACR,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,KAAK,EAAE,EACP,WAAW,EAAE,EACb,GAAG,CAAC,CAAC,CAAC,KAAI;AACR,YAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACzB,SAAC,CAAC,CACH,CACF,CACF,CAAC;AACJ,KAAC,CAAC,CAAC;;IAGM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACxC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,EAC3B,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACjC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EACpB,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,kCAAkC,CAAC,EAAE,oBAAoB,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpI,IAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC5C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EACpB,oBAAoB,CAAC,aAAa,CAAC,EACnC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AACO,IAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC5C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAClB,oBAAoB,CAAC,aAAa,CAAC,EACnC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC7D,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EACzD,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,EACxB,oBAAoB,CAAC,UAAU,CAAC,EAChC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EACtB,oBAAoB,CAAC,UAAU,CAAC,EAChC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,kBAAkB,GAA+D,IAAI,CAAC,MAAM,CAAC,IAAI,CACxG,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,EACzE,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,eAAe,CAAC,CAAc,EAAE,CAAc,CAAC,CAAC,EAC/E,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EACtD,GAAG,CAAC,CAAC,CAAC,KAAI;QACR,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,QAAQ,EAAE;AAC9B,YAAA,OAAO,CAA4C,CAAC;SACrD;aAAM;AACL,YAAA,OAAO,SAAS,CAAC;SAClB;AACH,KAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,WAAW,GAAwD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/H,2BAA2B,GAA0E,IAAI,CAAC,MAAM,CAAC,IAAI,CAC5H,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,EAChC,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,qBAAqB,GAA0E,IAAI,CAAC,MAAM,CAAC,IAAI,CACtH,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAC1B,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,iBAAiB,GAAiC,IAAI,CAAC,MAAM,CAAC,IAAI,CACzE,GAAG,CAAC,qCAAqC,CAAC,EAC1C,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACrD,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,uCAAuC,GAA+B,IAAI,CAAC,MAAM,CAAC,IAAI,CAC7F,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,sCAAsC,CAAC,EACpD,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,yBAAyB,GAA+B,IAAI,CAAC,MAAM,CAAC,IAAI;;AAE/E,IAAA,GAAG,CAAC,wCAAwC,CAAC,EAC7C,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,UAAU,GAA0B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/F,kBAAkB,GAA+B,IAAI,CAAC,MAAM,CAAC,IAAI,CACxE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,EAC/B,+BAA+B,EAAE,EACjC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,8BAA8B,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACpE,GAAG,CAAC,CAAC,CAAC,KAAK,wBAAwB,CAAC,CAAC,CAAC,CAAC,EACvC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,aAAa,GAA6C,IAAI,CAAC,MAAM,CAAC,IAAI,CACjF,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,EACnC,+BAA+B,EAAE,EACjC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,eAAe,GAAsC,IAAI,CAAC,MAAM,CAAC,IAAI,CAC5E,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,EAC5B,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEF;;;;AAIG;AACM,IAAA,wBAAwB,GAA+B,IAAI,CAAC,MAAM,CAAC,IAAI,CAC9E,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,EAChD,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEF;;;;AAIG;AACM,IAAA,8BAA8B,GAAqD,IAAI,CAAC,MAAM,CAAC,IAAI,CAC1G,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,oBAAoB,GAAG,CAAC,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC,EACzE,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAChD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,EACnC,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,2BAA2B,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CACrE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,EACtC,oBAAoB,CAAC,UAAU,CAAC,EAChC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,+CAA+C,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CACzF,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,yBAAyB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EACxI,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,mDAAmD,GAAiD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAC3I,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,2BAA2B,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAClG,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,8BAA8B,GAAmC,IAAI,CAAC,mDAAmD,CAAC,IAAI,CACrI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtC,+BAA+B,EAAE,EACjC,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,4BAA4B,GAAsC,IAAI,CAAC,+CAA+C,CAAC,IAAI,CAClI,SAAS,CAAC,CAAC,WAAW,KAAI;QACxB,OAAO,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,iCAAiC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAoB,CAAC,CAAC;AAC3L,KAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAElF,kCAAkC,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAC5E,iBAAiB,CAAC,IAAI,CAAC,8BAA8B,CAAC,EACtD,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,KAAI;QAC1B,IAAI,wBAAwB,GAAG,CAAC,CAAC;AAEjC,QAAA,IAAI,CAAC,IAAI,cAAc,EAAE;AACvB,YAAA,wBAAwB,GAAG;gBACzB,iBAAiB,EAAE,yCAAyC,CAAC,CAAC,CAAC,iBAAiB,EAAE,cAAc,CAAC;gBACjG,WAAW,EAAE,CAAC,CAAC,WAAW;aACO,CAAC;SACrC;AAED,QAAA,OAAO,wBAAwB,CAAC;KACjC,CAAC,EACF,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,2BAA2B,GAAG,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1G,IAAA,wDAAwD,GAAiD,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACrJ,GAAG,CAAC,CAAC,CAAC,KAAK,2BAA2B,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,EACvF,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,oBAAoB,GAA0C,IAAI,CAAC,yBAAyB,CAAC,IAAI,CACxG,SAAS,CAAC,CAAC,wBAAwB,KAAI;AACrC,QAAA,IAAI,GAA0C,CAAC;QAE/C,IAAI,wBAAwB,EAAE;YAC5B,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SAC1E;aAAM;YACL,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;SAC9E;AAED,QAAA,OAAO,GAAG,CAAC;AACb,KAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,kCAAkC,GAAG,IAAI,CAAC,kCAAkC,CAAC,IAAI,CACxF,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,EAChC,oBAAoB,CAAC,+BAA+B,CAAC,EACrD,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,2BAA2B,GAAG,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1G,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAC7C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,EAChC,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACvC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,EACrC,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACzC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,EAC5B,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;;AAGO,IAAA,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAClE,IAAA,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAC9D,IAAA,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAChD,IAAA,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACxD,IAAA,yCAAyC,GAAG,IAAI,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC;AAChH,IAAA,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAE/E,IAAA,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACxE;;AAEG;AACM,IAAA,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;;IAG1D,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAgE,KAAK,2BAA2B,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAChK,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAA6D,KAAK,2BAA2B,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACvJ,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAgE,KAAK,2BAA2B,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAChK,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAA6D,KAAK,2BAA2B,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACvJ,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,SAAA,GAAgC,KAAK,KAAK,2BAA2B,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;;IAGnI,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAA6D,KAAK,2BAA2B,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAClL,IAAA,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;AAE9E,IAAA,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;AACjF,IAAA,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACnE,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,kCAAkC,CAAC,KAAK,EAAE,CAAC,uBAAuB,CAAC,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjK,IAAA,yBAAyB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAqD,KAAK,yCAAyC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACpK,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,kBAA+D,MAAM,EAAE,GAAG,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;AAE9J;;AAEG;AACM,IAAA,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;AAEvE;;;;AAIG;IACM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,cAAuB,MAAM,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;wGA9StG,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAjC,iCAAiC,EAAA,CAAA,CAAA;;4FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C,UAAU;;AAkTK,SAAA,oCAAoC,CAAC,KAAqC,EAAE,qBAAgD,EAAA;AAC1I,IAAA,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEjC,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC,IAAI,qBAAqB,KAAK,KAAK,EAAE;QAChE,KAAK,GAAG,2BAA2B,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,CAAC;KAClF;AAED,IAAA,OAAO,EAAE,GAAG,KAAK,EAAE,qBAAqB,EAAE,CAAC;AAC7C,CAAC;AAEe,SAAA,qDAAqD,CAAC,YAA4C,EAAE,sCAAsD,EAAA;IACxK,IAAI,KAAK,GAAmC,EAAE,GAAG,YAAY,EAAE,sCAAsC,EAAE,CAAC;AAExG,IAAA,IAAI,OAAO,CAAC,YAAY,CAAC,sCAAsC,CAAC,KAAK,OAAO,CAAC,sCAAsC,CAAC,EAAE;QACpH,KAAK,GAAG,2BAA2B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;KAChD;AAED,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAEe,SAAA,yBAAyB,CAAC,KAAqC,EAAE,eAAmF,EAAA;AAClK,IAAA,IAAI,kBAA0C,CAAC;IAE/C,IAAI,eAAe,EAAE;AACnB,QAAA,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;AAC/B,QAAA,MAAM,iBAAiB,GAAG,uCAAuC,CAAC,YAAY,CAAC,CAAC;AAChF,QAAA,kBAAkB,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;KACzD;IAED,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAC;IAC1D,OAAO,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC;AAEe,SAAA,8BAA8B,CAAC,KAAqC,EAAE,eAA0C,EAAA;IAC9H,IAAI,eAAe,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE;AACpE,QAAA,KAAK,GAAG;AACN,YAAA,GAAG,KAAK;AACR,YAAA,eAAe,EAAE;AACf,gBAAA,KAAK,EAAE,eAAe,CAAC,KAAK,IAAI,IAAI,GAAG,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,SAAS;AACpF,gBAAA,GAAG,EAAE,eAAe,CAAC,GAAG,IAAI,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,SAAS;AAC7E,aAAA;SACF,CAAC;KACH;SAAM;QACL,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;KAClD;IAED,OAAO,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC;AAEe,SAAA,qBAAqB,CAAC,YAA4C,EAAE,WAAoD,EAAA;IACtI,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC;AAEzF,IAAA,IAAI,kBAAkB,GAAqE,MAAM,IAAI,CAAC;IACtG,IAAI,MAAM,GAA4C,IAAI,CAAC;;IAG3D,IAAI,WAAW,IAAI,UAAU,EAAE,MAAM,IAAI,eAAe,EAAE;AACxD,QAAA,IAAI,aAA6D,CAAC;AAClE,QAAA,IAAI,WAAW,GAAgB,IAAI,CAAC;QAEpC,IAAI,WAAW,EAAE;AACf,YAAA,MAAM,GAAG,oCAAoC,CAAC,WAAW,CAAC,CAAC;YAE3D,IAAI,kBAA8C,CAAC;;AAGnD,YAAA,IAAI,WAAW,CAAC,KAAK,EAAE;AACrB,gBAAA,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;;AAGhC,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;oBACzB,WAAW,GAAG,wCAAwC,CAAC,0BAA0B,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBACxG,kBAAkB,GAAG,cAAc,CAAC;iBACrC;qBAAM;AACL,oBAAA,kBAAkB,GAAG,WAAW,CAAC,QAAQ,CAAC;iBAC3C;aACF;AAAM,iBAAA,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC/B,gBAAA,IAAI,WAAW,CAAC,QAAQ,EAAE;;oBAExB,MAAM,cAAc,GAAG,qBAAqB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBACnE,WAAW,GAAG,cAAc,CAAC,0BAA0B,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9E,oBAAA,kBAAkB,GAAG,WAAW,CAAC,QAAQ,CAAC;iBAC3C;qBAAM;;oBAEL,WAAW,GAAG,wCAAwC,CAAC,0BAA0B,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBACxG,kBAAkB,GAAG,cAAc,CAAC;iBACrC;aACF;AAED,YAAA,MAAM,CAAC,KAAK,GAAG,WAAW,IAAI,SAAS,CAAC;AACxC,YAAA,MAAM,CAAC,QAAQ,GAAG,kBAAkB,CAAC;;AAGrC,YAAA,IAAI,UAAU,EAAE,MAAM,EAAE;AACtB,gBAAA,aAAa,GAAG;AACd,oBAAA,GAAG,MAAM;AACT,oBAAA,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;iBACjD,CAAC;aACH;iBAAM;gBACL,aAAa,GAAG,MAAM,CAAC;aACxB;SACF;aAAM;AACL,YAAA,aAAa,GAAG;AACd,gBAAA,CAAC,EAAE,IAAI;AACP,gBAAA,EAAE,EAAE,UAAsB;aAC3B,CAAC;SACH;QAED,IAAI,eAAe,EAAE;AACnB,YAAA,aAAa,CAAC,eAAe,GAAG,eAAe,CAAC;AAChD,YAAA,aAAa,CAAC,iBAAiB,GAAG,WAAW,GAAG,IAAI,GAAG,KAAK,CAAC;SAC9D;AAED;;;AAGG;AACH,QAAA,IAAI,iBAAuB,CAAC;AAC5B,QAAA,IAAI,oBAAoC,CAAC;;AAGzC,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;;AAExB,YAAA,IAAI,aAAa,CAAC,QAAQ,EAAE;gBAC1B,MAAM,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACrE,iBAAiB,GAAG,cAAc,CAAC,0BAA0B,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAClF,gBAAA,oBAAoB,GAAG,aAAa,CAAC,QAAQ,CAAC;aAC/C;iBAAM;AACL,gBAAA,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC;gBACvC,oBAAoB,GAAG,cAAc,CAAC;aACvC;SACF;AAAM,aAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAClC,oBAAoB,GAAG,cAAc,CAAC;AAEtC,YAAA,MAAM,cAAc,GAAG,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;YACnE,iBAAiB,GAAG,cAAc,CAAC,0BAA0B,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACpF;aAAM;AACL,YAAA,iBAAiB,GAAG,aAAa,CAAC,KAAK,CAAC;AACxC,YAAA,oBAAoB,GAAG,aAAa,CAAC,QAAQ,CAAC;SAC/C;AAED,QAAA,aAAa,CAAC,KAAK,GAAG,iBAAiB,CAAC;AACxC,QAAA,aAAa,CAAC,QAAQ,GAAG,oBAAoB,CAAC;;AAG9C,QAAA,kBAAkB,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAC;KAChE;IAED,IAAI,SAAS,GAA6C,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;;AAG1G,IAAA,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,sBAAsB,GAAS,MAAM,CAAC,KAAK,CAAC;AAEhD,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9D,sBAAsB,GAAG,cAAc,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9E;AAED,QAAA,SAAS,CAAC,KAAK,GAAG,sBAAsB,CAAC;AACzC,QAAA,SAAS,CAAC,YAAY,GAAG,kCAAkC,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;AAC5H,QAAA,SAAS,CAAC,cAAc,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;KAC7E;;AAGD,IAAA,IAAI,SAAS,CAAC,qBAAqB,EAAE;QACnC,SAAS,GAAG,oCAAoC,CAAC,SAA2C,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;KAChI;;AAGD,IAAA,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;AAE3C,IAAA,IAAI,UAAU,IAAI,QAAQ,EAAE;QAC1B,SAAS,GAAG,2BAA2B,CAAC,SAA2C,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;KAChH;AAED,IAAA,OAAO,SAA2C,CAAC;AACrD,CAAC;AAEe,SAAA,4BAA4B,CAAC,KAAqC,EAAE,QAA+B,EAAA;AACjH,IAAA,MAAM,EAAE,qBAAqB,EAAE,GAAG,KAAK,CAAC;AACxC,IAAA,MAAM,cAAc,GAAG,QAAQ,GAAG,qBAAqB,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC;AAElF,IAAA,IAAI,cAAc,IAAI,qBAAqB,EAAE;;AAE3C,QAAA,MAAM,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,GAAG,qBAAqB,CAAC;QAClF,MAAM,KAAK,GAAG,cAAc,CAAC,sBAAsB,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;QACxF,MAAM,GAAG,GAAG,cAAc,CAAC,sBAAsB,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;AAEpF,QAAA,MAAM,QAAQ,GAA8B;YAC1C,GAAG,qBAAqB,CAAC,iBAAiB;YAC1C,KAAK;YACL,GAAG;SACJ,CAAC;AAEF,QAAA,OAAO,yCAAyC,CAAC,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,oBAAoB,EAAE,cAAc,EAAE,EAAE,QAAQ,CAAC,CAAC;KAC1I;SAAM;AACL,QAAA,OAAO,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAC;KACrF;AACH,CAAC;AAEe,SAAA,yCAAyC,CAAC,KAAqC,EAAE,WAA2D,EAAA;AAC1J,IAAA,MAAM,EAAE,qBAAqB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;AACxD,IAAA,MAAM,4BAA4B,GAAG,qBAAqB,EAAE,iBAAiB,CAAC;AAC9E,IAAA,IAAI,MAAyF,CAAC;;;IAK9F,IAAI,WAAW,EAAE;;AAEf,QAAA,MAAM,0BAA0B,GAAG;AACjC,YAAA,GAAG,WAAW;AACd,YAAA,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,cAAc;SACjD,CAAC;;QAGF,MAAM,UAAU,GAAG,yBAAyB,CAAC,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,CAAC,CAAC;AACpG,QAAA,MAAM,WAAW,GAAG,oCAAoC,CAAC,UAAU,CAAC,CAAC;QAErE,MAAM,eAAe,GAAG,WAAW,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC7E,QAAA,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;;AAGrF,QAAA,MAAM,GAAG;AACP,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,GAAG,EAAE,aAAa;YAClB,CAAC,EAAE,UAAU,CAAC,CAAC;YACf,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAC9B,CAAC;KACH;IAED,MAAM,WAAW,GAAG,+BAA+B,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;IAE1F,IAAI,WAAW,EAAE;AACf,QAAA,OAAO,KAAK,CAAC;KACd;SAAM;AACL,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,YAAA,MAAM,SAAS,GAAmC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;AACnJ,YAAA,OAAO,kCAAkC,CAAC,yCAAyC,CAAC,SAAS,CAAC,EAAE,8BAA8B,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;SACnJ;aAAM;AACL,YAAA,OAAO,yCAAyC,CAAC,KAAK,CAAC,CAAC;SACzD;KACF;AACH,CAAC;AAEe,SAAA,yCAAyC,CAAC,KAAqC,EAAE,MAAgD,EAAA;AAC/I,IAAA,MAAM,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,GAAG,KAAK,CAAC;IAClE,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,gCAAgC,EAAE,CAAC,CAAC;AAElF,IAAA,IAAI,yCAAyC,CAAC,mBAAmB,EAAE,0BAA0B,CAAC,EAAE;QAC9F,OAAO,KAAK,CAAC;KACd;SAAM;QACL,OAAO,0CAA0C,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;KAC7F;AACH,CAAC;AAEe,SAAA,kCAAkC,CAAC,KAAqC,EAAE,MAAgD,EAAA;AACxI,IAAA,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC;IACpD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AAE3C,IAAA,IAAI,eAAgE,CAAC;IAErE,IAAI,mBAAmB,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;AACjD,QAAA,IAAI,yCAAyC,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAE;AAChF,YAAA,eAAe,GAAG,SAAS,CAAC;SAC7B;aAAM;YACL,eAAe,GAAG,YAAY,CAAC;SAChC;KACF;AAAM,SAAA,IAAI,mBAAmB,KAAK,MAAM,EAAE;AACzC,QAAA,eAAe,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;KAChD;AAED,IAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AACjC,QAAA,OAAO,KAAK,CAAC;KACd;SAAM;AACL,QAAA,OAAO,0CAA0C,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,eAAe,IAAI,SAAS,EAAE,CAAC,CAAC;KACpH;AACH,CAAC;AAEe,SAAA,4BAA4B,CAAC,KAAqC,EAAE,aAA6D,EAAA;AAC/I,IAAA,MAAM,EAAE,aAAa,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAAC;AAEtD,IAAA,IAAI,oBAAoB,KAAK,aAAa,EAAE;QAC1C,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,CAAC;AAE9C,QAAA,IAAI,aAAa,KAAK,UAAU,EAAE;AAChC,YAAA,OAAO,SAAS,CAAC;SAClB;aAAM;AACL,YAAA,MAAM,qBAAqB,GAAG,6CAA6C,CAAC,SAAS,CAAC,CAAC;YACvF,OAAO,qBAAqB,GAAG,2BAA2B,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;SAChJ;KACF;SAAM;AACL,QAAA,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAEe,SAAA,0CAA0C,CAAC,aAA6C,EAAE,SAAyC,EAAA;AACjJ,IAAA,MAAM,oBAAoB,GAAG,aAAa,CAAC,qBAAqB,CAAC;IACjE,MAAM,gBAAgB,GAAG,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,mBAAmB,CAAC;AAEjF,IAAA,IAAI,yCAAyC,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,EAAE;QACrF,OAAO,SAAS,CAAC;KAClB;SAAM;QACL,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,gCAAgC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC1F,QAAA,MAAM,iBAAiB,GAAG,4CAA4C,CAAC,gBAAgB,CAAC,CAAC;AAEzF,QAAA,OAAO,yCAAyC,CAAC;AAC/C,YAAA,GAAG,SAAS;;YAEZ,qBAAqB;YACrB,iBAAiB;AAClB,SAAA,CAAC,CAAC;KACJ;AACH,CAAC;AAiBe,SAAA,2BAA2B,CAAC,KAAqC,EAAE,MAAiD,EAAA;IAClI,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;AACpK,IAAA,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,kDAAkD,CAAC,KAAK,CAAC,CAAC;IACvH,IAAI,UAAU,GAAG,iBAAiB,CAAC;IACnC,IAAI,QAAQ,GAAG,eAAe,CAAC;AAE/B;;;;AAIG;AACH,IAAA,IAAI,cAAkC,CAAC;IAEvC,SAAS,SAAS,CAAC,OAAiE,EAAA;QAClF,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KACnD;;AAGD,IAAA,IAAI,aAAa,KAAK,QAAQ,EAAE;QAC9B,SAAS,iBAAiB,CAAC,KAA+D,EAAA;AACxF,YAAA,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC7E,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAA2C,CAAC;AAE/D,YAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,gBAAA,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;aACrB;AAED,YAAA,OAAO,GAAG,CAAC;SACZ;AAED,QAAA,IAAI,MAAM,CAAC,GAAG,EAAE;AACd,YAAA,MAAM,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;SAC1E;AAAM,aAAA,IAAI,MAAM,CAAC,MAAM,EAAE;YACxB,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAEjD,YAAA,IAAI,OAAO,CAAC,IAAI,EAAE;gBAChB,MAAM,kBAAkB,GAAG,YAAY,CAAC,sBAAsB,CAAC,OAAO,CAA4C,CAAC,CAAC;gBAEpH,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,UAAU,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,kBAAkB,CAAC,EAAE;AACnH,oBAAA,OAAO,CAAC,KAAK,EAAE,CAAC;iBACjB;gBAED,MAAM,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;aACpD;SACF;;KAGF;AAED,IAAA,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;AAClE,QAAA,IAAI,GAAG,GAAoE,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;AAC5F,QAAA,MAAM,SAAS,GAA8B,MAAM,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC;QAEpH,QAAQ,SAAS;AACf,YAAA,KAAK,KAAK;gBACR,IAAI,iBAAiB,IAAI,IAAI,IAAI,iBAAiB,IAAI,IAAI,EAAE;oBAC1D,UAAU,GAAG,iBAAiB,CAAC;oBAC/B,QAAQ,GAAG,iBAAiB,CAAC;oBAC7B,GAAG,GAAG,EAAE,CAAC;iBACV;gBACD,MAAM;AACR,YAAA,KAAK,MAAM;gBACT,UAAU,GAAG,IAAI,CAAC;gBAClB,QAAQ,GAAG,IAAI,CAAC;gBAChB,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;SACT;AAED,QAAA,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AACvC,QAAA,cAAc,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;AAE1C,QAAA,IAAI,MAAM,CAAC,iBAAiB,IAAI,CAAC,SAAS,EAAE;AAC1C,YAAA,IAAI,QAAuB,CAAC;AAC5B,YAAA,IAAI,QAAuB,CAAC;YAE5B,IAAI,iBAAiB,IAAI,IAAI,IAAI,iBAAiB,IAAI,IAAI,EAAE;;AAE1D,gBAAA,QAAQ,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;AAC3C,gBAAA,QAAQ,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;gBAE3C,UAAU,GAAG,iBAAiB,CAAC;gBAC/B,QAAQ,GAAG,iBAAiB,CAAC;aAC9B;iBAAM;;AAEL,gBAAA,MAAM,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;AAEnD,gBAAA,IAAI,SAAS,IAAI,IAAI,EAAE;AACrB,oBAAA,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC;AACzB,oBAAA,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC;oBACzB,MAAM,WAAW,GAAG,8BAA8B,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAEzE,oBAAA,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACxC,QAAQ,GAAG,SAAS,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,GAAG,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;iBACtF;qBAAM;;oBAEL,UAAU,GAAG,IAAI,CAAC;oBAClB,QAAQ,GAAG,IAAI,CAAC;AAChB,oBAAA,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;iBAC5B;aACF;;YAGD,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;AACxC,gBAAA,cAAc,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/F;SACF;KACF;SAAM;QACL,cAAc,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAE/C,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzG,YAAA,WAAW,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;SAC9C;AAED,QAAA,IAAI,cAA+E,CAAC;AACpF,QAAA,IAAI,mBAAoF,CAAC;AAEzF,QAAA,IAAI,MAAM,CAAC,GAAG,EAAE;AACd,YAAA,IAAI,MAAM,CAAC,iBAAiB,EAAE;AAC5B,gBAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC;aAC7B;iBAAM;AACL,gBAAA,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC;aAClC;SACF;AAED,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,IAAI,MAAM,CAAC,iBAAiB,EAAE;AAC5B,gBAAA,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;aACrC;iBAAM;AACL,gBAAA,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;aAChC;SACF;QAED,IAAI,cAAc,EAAE;YAClB,aAAa,CAAC,cAAc,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;SAC1D;QAED,IAAI,mBAAmB,EAAE;YACvB,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC;SAC1D;KACF;AAED,IAAA,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AACrE,IAAA,SAAS,CAAC,YAAY,GAAG,4CAA4C,CAAC,SAAS,CAAC,CAAC;;AAGjF,IAAA,MAAM,iBAAiB,GAAG,yCAAyC,CAAC,SAAS,CAAC,CAAC;IAE/E,IAAI,iBAAiB,EAAE;AACrB,QAAA,OAAO,yCAAyC,CAAC,EAAE,GAAG,SAAS,EAAE,cAAc,EAAE,IAAI,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;KAC/L;SAAM;;AAEL,QAAA,OAAO,yCAAyC,CAAC,SAAS,CAAC,CAAC;KAC7D;AACH,CAAC;AAEK,SAAU,yCAAyC,CAAC,KAAqC,EAAA;IAC7F,OAAO,yCAAyC,CAAC,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,IAAI,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9H,CAAC;AAEe,SAAA,2BAA2B,CAAC,KAAqC,EAAE,MAA+C,EAAA;AAChI,IAAA,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;AACzF,IAAA,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,kCAAkC,CAAC,KAAK,CAAC,CAAC;IAEnF,MAAM,UAAU,GAAS,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAS,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEnD,IAAA,MAAM,YAAY,GAAG,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,GAAG,yBAAyB,CAAC,EAAE,KAAK,EAAE,OAAO,IAAI,SAAS,EAAE,GAAG,EAAE,OAAO,IAAI,SAAS,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC;AAE7J,IAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,aAAa,CAAC,UAAU,EAAE,iBAAiB,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE;QACtJ,OAAO,KAAK,CAAC;KACd;;AAGD,IAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE5C,MAAM,cAAc,GAAoB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,iCAAiC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnF,MAAM,yBAAyB,GAAG,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC1E,IAAA,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAE1D,IAAA,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AACrE,IAAA,OAAO,yCAAyC,CAAC,SAAS,CAAC,CAAC;AAC9D,CAAC;AAEK,SAAU,yCAAyC,CAAC,SAAmD,EAAA;AAC3G,IAAA,SAAS,CAAC,YAAY,GAAG,4CAA4C,CAAC,SAA2C,CAAC,CAAC;AACnH,IAAA,SAAS,CAAC,qBAAqB,GAAG,6BAA6B,CAAC,SAA2C,CAAC,CAAC;AAC7G,IAAA,OAAO,SAA2C,CAAC;AACrD,CAAC;AAEK,SAAU,4CAA4C,CAAC,KAAqC,EAAA;AAChG,IAAA,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;AACxG,IAAA,IAAI,oBAAuD,CAAC;AAE5D,IAAA,IAAI,UAAU,IAAI,QAAQ,EAAE;AAC1B,QAAA,oBAAoB,GAAG,iCAAiC,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;KAC1K;SAAM;AACL,QAAA,oBAAoB,GAAG,MAAM,KAAK,CAAC;KACpC;IAED,OAAO,CAAC,KAA8C,KAAI;AACxD,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;AAClC,QAAA,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAExC,QAAA,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAE5D,QAAA,MAAM,MAAM,GAAG,kBAAkB,KAAK,CAAC,iBAAiB,IAAI,CAAC,UAAU,MAAM,UAAU,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAChH,QAAA,OAAO,MAAM,CAAC;AAChB,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,6BAA6B,CAAC,KAAqC,EAAA;AACjF,IAAA,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,cAAc,EAAE,sCAAsC,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAC7K,IAAI,QAAQ,GAAG,cAAc,CAAC;AAC9B,IAAA,MAAM,iBAAiB,GAAG,yCAAyC,CAAC,KAAK,CAAC,CAAC;AAE3E,IAAA,IAAI,iBAAiB,IAAI,IAAI,EAAE;AAC7B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAAC;IACrG,IAAI,yBAAyB,GAAoB,EAAE,CAAC;AACpD,IAAA,IAAI,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC;IAElC,IAAI,KAAK,GAAG,UAAU,CAAC;IACvB,IAAI,GAAG,GAAG,QAAQ,CAAC;;AAGnB,IAAA,IAAI,sCAAsC,IAAI,MAAM,EAAE,KAAK,EAAE;AAC3D,QAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACrB,IAAI,qBAAqB,GAAG,KAAK,CAAC;AAElC,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,YAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,YAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACrD,YAAA,GAAG,GAAG,YAAY,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;YACnD,qBAAqB,GAAG,YAAY,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;SACpE;AAED,QAAA,MAAM,eAAe,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACvD,QAAA,MAAM,UAAU,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;AAC7D,QAAA,MAAM,sBAAsB,GAAG,eAAe,GAAG,UAAU,CAAC;AAC5D,QAAA,yBAAyB,GAAG,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;AAC7D,QAAA,WAAW,GAAG,WAAW,GAAG,sBAAsB,CAAC;KACpD;IAED,MAAM,QAAQ,GAAG,sCAAsC;UACnD,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACvB,YAAA,MAAM,eAAe,GAAG,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,YAAA,OAAO,eAAe,CAAC;AACzB,SAAC,CAAC;UACF,WAAW,CAAC;AAEhB,IAAA,MAAM,cAAc,GAAoB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC;IAE7E,MAAM,EAAE,GAAG,CAAC,GAAG,yBAAyB,EAAE,GAAG,cAAc,CAAC,CAAC;AAE7D,IAAA,MAAM,CAAC,GAAgC,2BAA2B,CAAC,qBAAqB,CAAC,CAAC;AAC1F,IAAA,MAAM,CAAC,GAAoB,EAAE,CAAC;;AAG9B,IAAA,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;AACxB,QAAA,GAAG,GAAG,KAAK,CAAC;KACb;AAED,IAAA,MAAM,iBAAiB,GAA8B;QACnD,QAAQ;QACR,KAAK;QACL,GAAG;QACH,CAAC;QACD,CAAC;QACD,EAAE;KACH,CAAC;IAEF,OAAO;QACL,iBAAiB;AACjB,QAAA,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;KAC5B,CAAC;AACJ,CAAC;AAgBK,SAAU,yCAAyC,CAAC,KAAqC,EAAA;AAC7F,IAAA,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;AAExF,IAAA,MAAM,WAAW,GAAG,8BAA8B,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;AACzG,IAAA,MAAM,aAAa,GAAG,6CAA6C,CAAC,KAAK,CAAC,CAAC;AAE3E,IAAA,IAAI,aAAa,IAAI,IAAI,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAoB,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AAC1F,QAAA,MAAM,eAAe,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACnE,QAAA,OAAO,eAAe,CAAC;AACzB,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,MAAM,GAA+C;QACzD,aAAa;QACb,KAAK;QACL,GAAG;QACH,QAAQ;KACT,CAAC;AAEF,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAEK,SAAU,qCAAqC,CAAC,KAAqC,EAAA;AACzF,IAAA,MAAM,WAAW,GAAG,yBAAyB,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;AACzG,IAAA,MAAM,aAAa,GAAG,6CAA6C,CAAC,KAAK,CAAC,CAAC;AAC3E,IAAA,MAAM,SAAS,GAAqB,aAAa,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,aAAa,CAAC,EAAY,CAAC,EAAE,GAAG,SAAS,CAAC;AAC9J,IAAA,OAAO,SAAS,CAAC;AACnB,CAAC;AAEK,SAAU,6CAA6C,CAAC,KAAqC,EAAA;AACjG,IAAA,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC;AAC1H,IAAA,MAAM,uBAAuB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzH,IAAA,MAAM,uBAAuB,GAAG,eAAe,CAAC,uBAAuB,CAAC,CAAC;AAEzE,IAAA,IAAI,UAAgC,CAAC;AACrC,IAAA,IAAI,QAA8B,CAAC;IAEnC,IAAI,uBAAuB,EAAE;AAC3B,QAAA,UAAU,GAAG,uBAAuB,CAAC,GAAG,CAAC;AACzC,QAAA,QAAQ,GAAG,uBAAuB,CAAC,GAAG,CAAC;KACxC;IAED,IAAI,UAAU,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC1C,QAAA,MAAM,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AACjD,QAAA,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AAE7C,QAAA,UAAU,GAAG,UAAU,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG,eAAe,CAAC;AAC1F,QAAA,QAAQ,GAAG,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,aAAa,CAAC;KACjF;IAED,IAAI,UAAU,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;QAC1C,MAAM,cAAc,GAAG,UAAU,CAAC;QAClC,MAAM,YAAY,GAAG,QAAQ,CAAC;;QAG9B,UAAU,GAAG,SAAS,CAAC;QACvB,QAAQ,GAAG,SAAS,CAAC;;AAGrB,QAAA,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE;YACtD,IAAI,kBAAkB,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;gBAC5C,UAAU,GAAG,CAAC,CAAC;gBACf,MAAM;aACP;SACF;;AAGD,QAAA,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE;YACtD,IAAI,kBAAkB,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;gBAC5C,QAAQ,GAAG,CAAC,CAAC;gBACb,MAAM;aACP;SACF;KACF;IAED,IAAI,UAAU,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;QAC1C,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;KACxC;SAAM;AACL,QAAA,OAAO,SAAS,CAAC;KAClB;AACH;;ACjwCA;;AAEG;MAEU,8CAA8C,CAAA;IAChD,iCAAiC,GAAG,MAAM,CAAC,iCAAiC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;wGADhG,8CAA8C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAA9C,8CAA8C,EAAA,CAAA,CAAA;;4FAA9C,8CAA8C,EAAA,UAAA,EAAA,CAAA;kBAD1D,UAAU;;MAUE,wDAAwD,CAAA;wGAAxD,wDAAwD,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAxD,wDAAwD,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,SAAA,EAHxD,CAAC,8CAA8C,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAGhD,wDAAwD,EAAA,UAAA,EAAA,CAAA;kBALpE,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kDAAkD;oBAC5D,SAAS,EAAE,CAAC,8CAA8C,CAAC;AAC3D,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;AAGD;;;;;;AAMG;SACa,0DAA0D,GAAA;IACxE,OAAO;AACL,QAAA,OAAO,EAAE,iCAAiC;QAC1C,UAAU,EAAE,CAAC,cAAwB,EAAE,+CAAgG,EAAE,iCAAqE,KAAI;AAChN,YAAA,IAAI,CAAC,iCAAiC,KAAK,iCAAiC,IAAI,+CAA+C,IAAI,IAAI,IAAI,+CAA+C,CAAC,iCAAiC,KAAK,iCAAiC,CAAC,EAAE;;gBAEnQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;AAC1H,gBAAA,iCAAiC,GAAG,QAAQ,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;aACrF;AAED,YAAA,OAAO,iCAAiC,CAAC;SAC1C;QACD,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,8CAA8C,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,iCAAiC,CAAC,CAAC;KACxJ,CAAC;AACJ;;SCpCgB,8CAA8C,GAAA;AAC5D,IAAA,MAAM,MAAM,GAAG,iDAAiD,EAAE,CAAC;AACnE,IAAA,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC;SAEe,iDAAiD,GAAA;IAC/D,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,aAAqB,KAAI;AAC7D,QAAA,OAAO,WAAW,CAAC;AACjB,YAAA,GAAG,EAAE,aAAa,CAAC,WAAW,EAAE;AAChC,YAAA,KAAK,EAAE,aAAa;AACrB,SAAA,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;AACL;;ACCM,MAAO,iDAAkD,SAAQ,+BAA8E,CAAA;IAC1I,MAAM,GAAwB,8CAA8C,EAAE,CAAC;wGAD7E,iDAAiD,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAjD,iDAAiD,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,SAAA,EALjD,+BAA+B,EAAE,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClC,mCAAmC,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,0BAA0B,8BAAE,+BAA+B,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAI/F,iDAAiD,EAAA,UAAA,EAAA,CAAA;kBAR7D,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gDAAgD;AAC1D,oBAAA,QAAQ,EAAE,kCAAkC;oBAC5C,SAAS,EAAE,+BAA+B,EAAE;AAC5C,oBAAA,OAAO,EAAE,CAAC,mCAAmC,EAAE,0BAA0B,EAAE,+BAA+B,CAAC;oBAC3G,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCMY,6CAA6C,CAAA;AAC/C,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5C,IAAA,iCAAiC,GAAG,MAAM,CAAC,iCAAiC,CAAC,CAAC;AAE9E,IAAA,SAAS,GAA8D,IAAI,CAAC,iCAAiC,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,uCAAuC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/L,IAAA,cAAc,GAAsE,CAAC,KAAoD,KAAI;QACpJ,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,uCAAuC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5E,QAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,aAAa,CAAC,IAAI,CAC9D,GAAG,CAAC,CAAC,UAAU,KAAI;YACjB,MAAM,MAAM,GAAG,CAAC,yCAAyC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACnF,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CACH,CAAC;AACJ,KAAC,CAAC;AAEO,IAAA,kBAAkB,GAAuE,CAAC,KAAK,KAAI;AAC1G,QAAA,IAAI,CAAC,iCAAiC,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,uCAAuC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChH,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAClB,KAAC,CAAC;wGAnBS,6CAA6C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6CAA6C,EAT9C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,iDAAiD,EAAE,QAAA,EAAA,gDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sBAAsB,EAAE,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,qwBAAE,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gCAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIjH,6CAA6C,EAAA,UAAA,EAAA,CAAA;kBAXzD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2CAA2C;AACrD,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;oBACD,OAAO,EAAE,CAAC,iDAAiD,EAAE,sBAAsB,EAAE,eAAe,EAAE,sBAAsB,CAAC;oBAC7H,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCOY,8CAA8C,CAAA;AAChD,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5C,IAAA,iCAAiC,GAAG,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAC9E,0BAA0B,GAAG,MAAM,CAA6B,8BAA8B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEpH,IAAA,MAAM,GAAG,SAAS,CAAC,QAAQ,CAA2B,QAAQ,CAAC,CAAC;AAEhE,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AACjC,IAAA,qBAAqB,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AAE7C,IAAA,KAAK,GAAG,KAAK,CAAgB,oBAAoB,CAAC,CAAC;IACnD,IAAI,GAAG,KAAK,EAAiB,CAAC;IAE9B,QAAQ,GAAG,KAAK,EAAkB,CAAC;AACnC,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AAEtC,IAAA,SAAS,GAAG,IAAI,CAAC,iCAAiC,CAAC,wBAAwB,CAAC;AAElE,IAAA,eAAe,GAAG,MAAM,CAAC,MAAK;AAC/C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;SACtB;aAAM;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SACrB;AACH,KAAC,CAAC,CAAC;AAEc,IAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAEpD,IAAA,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;AACpC,IAAA,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAE7C,KAAK,GAAG,IAAI,SAAS,CAAC;AAC7B,QAAA,KAAK,EAAE,IAAI,WAAW,CAAc,IAAI,CAAC;AACzC,QAAA,GAAG,EAAE,IAAI,WAAW,CAAc,IAAI,CAAC;AACxC,KAAA,CAAC,CAAC;AAEM,IAAA,iBAAiB,GAAsB;AAC9C,QAAA,YAAY,EAAE,CAAC,OAA+B,EAAE,IAAI,KAAI;YACtD,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC3G;iBAAM;AACL,gBAAA,OAAO,KAAK,CAAC;aACd;SACF;KACF,CAAC;AAEO,IAAA,QAAQ,GAAG,IAAI,CAAC,iCAAiC,CAAC,QAAQ,CAAC;AAC3D,IAAA,QAAQ,GAAG,IAAI,CAAC,iCAAiC,CAAC,QAAQ,CAAC;AAE3D,IAAA,qBAAqB,GAAG,IAAI,CAAC,iCAAiC,CAAC,iBAAiB,CAAC,IAAI,CAC5F,GAAG,CAAC,CAAC,gBAAgB,KAAI;QACvB,OAAO,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,KAAK,IAAI,gBAAgB,CAAC,GAAG,IAAI,SAAS,KAAK,IAAI,IAAI,EAAE,CAAC;AACzG,KAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,aAAa,GAAG,IAAI,CAAC,iCAAiC,CAAC,aAAa,CAAC;AACrE,IAAA,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAC3D,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,OAAO,CAAC,EAC/C,GAAG,CAAC,CAAC,CAAC,KAAI;AACR,QAAA,IAAI,mBAAuC,CAAC;AAE5C,QAAA,IAAI,CAAC,KAAK,SAAS,EAAE;YACnB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAE3C,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBACnC,mBAAmB,GAAG,wBAAwB,CAAC;aAChD;AAAM,iBAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;gBAChD,mBAAmB,GAAG,oBAAoB,CAAC;aAC5C;AAAM,iBAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;gBAC7C,mBAAmB,GAAG,yBAAyB,CAAC;aACjD;AAAM,iBAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;gBAC7C,mBAAmB,GAAG,wBAAwB,CAAC;aAChD;AAAM,iBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;gBAC9C,mBAAmB,GAAG,kBAAkB,CAAC;aAC1C;AAAM,iBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;gBAC3C,mBAAmB,GAAG,uBAAuB,CAAC;aAC/C;AAAM,iBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;gBAC3C,mBAAmB,GAAG,sBAAsB,CAAC;aAC9C;SACF;AAED,QAAA,OAAO,mBAAmB,CAAC;AAC7B,KAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,iBAAiB,GAAmC,aAAa,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,2BAA2B,EAAE,IAAI,CAAC,iCAAiC,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,CAC1N,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,kBAAkB,CAAC,KAAI;AACtC,QAAA,MAAM,EAAE,GAAG,CAAC,IAAiB,KAAI;AAC/B,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACzE,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAC;AAEF,QAAA,OAAO,EAAE,CAAC;AACZ,KAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1C,IAAA,0BAA0B,GAAG,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;AAChG,IAAA,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AAE3E,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC1F,IAAA,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAChE,IAAA,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,YAAY,GAAG,MAAM,IAAI,CAAuB,EAAE,CAAC,CAAC;AAEtG,IAAA,+BAA+B,GAAG,MAAM,CAAC,MAAK;AAC/D,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,cAAE;gBACE,CAAC,OAAwB,KAAI;AAC3B,oBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAE5B,oBAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;AACxC,wBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;qBAC3B;AAED,oBAAA,OAAO,IAAI,CAAC;iBACb;AACF,aAAA;cACD,EAAE,CAAC;AAEP,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACvC,KAAC,CAAC,CAAC;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,iCAAiC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACrG,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClB,gBAAA,KAAK,EAAE,CAAC,EAAE,UAAU,IAAI,IAAI;AAC5B,gBAAA,GAAG,EAAE,CAAC,EAAE,QAAQ,IAAI,IAAI;AACzB,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;aAC7C,IAAI,CACH,oBAAoB,EAAE,EACtB,SAAS,CAAC,CAAC,MAAM,KAAI;AACnB,YAAA,IAAI,GAA2B,CAAC;YAEhC,IAAI,MAAM,EAAE;gBACV,GAAG,GAAG,KAAK,CAAC;aACb;iBAAM;AACL,gBAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;aACjE;AAED,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC,EACF,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EACxC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAC9F,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CACjD;AACA,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;YACf,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE;AACpB,gBAAA,IAAI,CAAC,iCAAiC,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;aAChG;AACH,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;KAC1B;IAED,qBAAqB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,IAAI,EAAE,CAAC;aACf;SACF;KACF;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;wGAnLU,8CAA8C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8CAA8C,EC3B3D,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,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,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,86DAwCA,EDjBY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,wBAAwB,EAAE,QAAA,EAAA,qCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,gzBAAE,wBAAwB,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAI5H,8CAA8C,EAAA,UAAA,EAAA,CAAA;kBAP1D,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4CAA4C,WAE7C,CAAC,kBAAkB,EAAE,WAAW,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,wBAAwB,CAAC,EAAA,eAAA,EACvH,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,QAAA,EAAA,86DAAA,EAAA,CAAA;;;MENL,uDAAuD,CAAA;wGAAvD,uDAAuD,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvD,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uDAAuD,EAZxD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,4BAA4B,EAAE,QAAA,EAAA,oEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,8CAA8C,EAAE,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sBAAsB,gFAAE,6CAA6C,EAAA,QAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIlJ,uDAAuD,EAAA,UAAA,EAAA,CAAA;kBAdnE,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sDAAsD;AAChE,oBAAA,QAAQ,EAAE,CAAA;;;;;;;AAOT,EAAA,CAAA;oBACD,OAAO,EAAE,CAAC,4BAA4B,EAAE,8CAA8C,EAAE,sBAAsB,EAAE,6CAA6C,CAAC;oBAC9J,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACbM,MAAM,oDAAoD,GAAG,oBAAoB;AAoBlF,MAAO,gDAAiD,SAAQ,wBAA8B,CAAA;IAClG,OAAO,WAAW,CAAC,cAAiC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAiD,EAAE,UAA0B,EAAA;QACnJ,OAAO,cAAc,CAAC,IAAI,CAAC;YACzB,GAAG,EAAE,UAAU,IAAI,oDAAoD;YACvE,MAAM;AACN,YAAA,cAAc,EAAE,gDAAgD;YAChE,QAAQ;AACT,SAAA,CAAC,CAAC;KACJ;wGARU,gDAAgD,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhD,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gDAAgD,EAXjD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;GAMT,EACS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,2BAA2B,gSAAE,uDAAuD,EAAA,QAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAInF,gDAAgD,EAAA,UAAA,EAAA,CAAA;kBAb5D,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8CAA8C;AACxD,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMT,EAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,2BAA2B,EAAE,uDAAuD,CAAC;oBAC/F,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCPY,sDAAsD,CAAA;AACxD,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,IAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC3C,IAAA,iCAAiC,GAAG,MAAM,CAAC,iCAAiC,CAAC,CAAC;AAE9E,IAAA,mBAAmB,GAAG,SAAS,CAAC,QAAQ,CAAwC,qBAAqB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AAE7H,IAAA,SAAS,GAAG,IAAI,CAAC,iCAAiC,CAAC,eAAe,CAAC;AACnE,IAAA,WAAW,GAAG,IAAI,CAAC,iCAAiC,CAAC,iBAAiB,CAAC,IAAI,CAClF,GAAG,CAAC,CAAC,CAAC,KAAI;QACR,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE;YACrB,MAAM,WAAW,GAAG,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChD,OAAO,WAAW,KAAK,SAAS,GAAG,WAAW,GAAG,CAAG,EAAA,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAM,GAAA,EAAA,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;SAC1H;aAAM;AACL,YAAA,OAAO,mBAAmB,CAAC;SAC5B;AACH,KAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,IAAA,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAE9F,WAAW,GAAA;AACT,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjD,IAAI,aAAa,EAAE;AACjB,YAAA,gDAAgD,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACvI;KACF;wGA7BU,sDAAsD,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAtD,sDAAsD,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAKuD,UAAU,EAZxH,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIjB,sDAAsD,EAAA,UAAA,EAAA,CAAA;kBATlE,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qDAAqD;AAC/D,oBAAA,QAAQ,EAAE,CAAA;;AAET,EAAA,CAAA;oBACD,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCOY,yCAAyC,CAAA;AAC3C,IAAA,iCAAiC,GAAG,MAAM,CAAC,iCAAiC,CAAC,CAAC;AAE9E,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,EAA2D,CAAC;AAChF,IAAA,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE9B,IAAA,YAAY,GAAG,IAAI,CAAC,iCAAiC,CAAC,mBAAmB,CAAC,IAAI,CACrF,SAAS,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpD,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,aAAa,GAAiD,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;AAEhH,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;wGAdrD,yCAAyC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yCAAyC,EAb1C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAIS,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIZ,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBAfrD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,QAAQ,EAAE,CAAA;;;;;AAKT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,sCAAsC;AAC9C,qBAAA;oBACD,OAAO,EAAE,CAAC,aAAa,CAAC;oBACxB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACfD;;AAEG;MAUU,0DAA0D,CAAA;IAC5D,QAAQ,GAAG,KAAK,EAAkB,CAAC;AACnC,IAAA,iCAAiC,GAAG,MAAM,CAAC,iCAAiC,CAAC,CAAC;AAE9E,IAAA,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;AACpH,IAAA,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC,oBAAoB,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;AAE5H,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjC,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC7D,IAAI,aAAa,GAAG,KAAK,CAAC;QAE1B,IAAI,QAAQ,EAAE;YACZ,aAAa,GAAG,IAAI,CAAC;SACtB;aAAM;YACL,aAAa,GAAG,CAAC,mBAAmB,CAAC;SACtC;AAED,QAAA,OAAO,aAAa,CAAC;AACvB,KAAC,CAAC,CAAC;AAEM,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACjD,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAE7D,QAAA,IAAI,aAA+B,CAAC;QAEpC,QAAQ,mBAAmB;AACzB,YAAA,KAAK,KAAK;AACR,gBAAA,aAAa,GAAG;AACd,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,IAAI,EAAE,YAAY;iBACnB,CAAC;gBACF,MAAM;YACR,QAAQ;AACR,YAAA,KAAK,MAAM;AACT,gBAAA,aAAa,GAAG;AACd,oBAAA,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,aAAa,KAAK,UAAU,GAAG,WAAW,GAAG,OAAO;iBAC3D,CAAC;gBACF,MAAM;SACT;AAED,QAAA,OAAO,aAAa,CAAC;AACvB,KAAC,CAAC,CAAC;IAEH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,iCAAiC,CAAC,eAAe,EAAE,CAAC;KAC1D;wGAhDU,0DAA0D,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1D,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0DAA0D,EAP3D,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIjB,0DAA0D,EAAA,UAAA,EAAA,CAAA;kBATtE,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yDAAyD;AACnE,oBAAA,QAAQ,EAAE,CAAA;;AAET,EAAA,CAAA;oBACD,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACiCK,SAAU,wDAAwD,CAAC,aAAyF,EAAA;IAChK,MAAM,QAAQ,GAAG,aAAa,KAAK,MAAK,GAAG,CAAC,CAAC;IAE7C,OAAO,CAAC,MAAkD,KAAI;QAC5D,OAAO,CAAC,WAA+C,KAAI;AACzD,YAAA,MAAM,EAAE,IAAI,EAAE,GAAwE,WAAW,CAAC;;AAGlG,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,qBAAqD,KAAI;gBACvF,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,qBAAqB,CAAC;AACpG,gBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AACvB,oBAAA,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;AACzB,oBAAA,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAC7B,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAE1B,oBAAA,IAAI,KAAwC,CAAC;AAE7C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;AAC1B,wBAAA,OAAO,CAAC,QAAQ,GAAG,wBAAwB,CAAC;AAC5C,wBAAA,KAAK,GAAG,iCAAiC,CAAC,cAAc,CAAC;qBAC1D;yBAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAgB,CAAC,EAAE;AACnD,wBAAA,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC;AACtC,wBAAA,KAAK,GAAG,iCAAiC,CAAC,QAAQ,CAAC;qBACpD;AAAM,yBAAA,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;AAC1B,wBAAA,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC;AACtC,wBAAA,KAAK,GAAG,iCAAiC,CAAC,QAAQ,CAAC;qBACpD;yBAAM;AACL,wBAAA,OAAO,CAAC,QAAQ,GAAG,sBAAsB,CAAC;AAC1C,wBAAA,KAAK,GAAG,iCAAiC,CAAC,YAAY,CAAC;qBACxD;AAED,oBAAA,MAAM,IAAI,GAAG;wBACX,KAAK;wBACL,CAAC;qBACF,CAAC;AAEF,oBAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,oBAAA,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;AAC3C,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACL,SAAC,CAAC;AACJ,KAAC,CAAC;AACJ,CAAC;MAUY,qCAAqC,CAAA;AACvC,IAAA,aAAa,GAAG,MAAM,EAAC,gBAAmB,EAAC,CAAC;AAC5C,IAAA,iCAAiC,GAAG,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAE9E,UAAU,GAAG,MAAM,EAAuB,CAAC;IAE3C,MAAM,GAAG,KAAK,EAAsD,CAAC;AACrE,IAAA,QAAQ,GAAG,KAAK,CAAiB,KAAK,CAAC,CAAC;AAEhC,IAAA,eAAe,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAEnD,IAAA,OAAO,GAAmE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjJ,SAAS,GAAwB,IAAI,CAAC,OAAO,CAAC,IAAI,CACzD,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,IAAI,IAAI,GAAG,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAC5F,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAC9C,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,aAAa,CAAC,KAAI;AACtC,QAAA,OAAO,cAAc,IAAI,aAAa,IAAI,KAAK,CAAC;AAClD,KAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,sBAAsB,GAAwB,IAAI,CAAC,OAAO,CAAC,IAAI,CACtE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,qBAAqB,IAAI,KAAK,CAAC,EAC7C,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CACtD,SAAS,CAAC,CAAC,CAAC,KAAI;QACd,IAAI,CAAC,EAAE;AACL,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;SACjB;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5C;KACF,CAAC,EACF,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;IAEO,yBAAyB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACpD,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,wBAAwB,IAAI,IAAI,CAAC,EACzD,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EACpC,GAAG,CAAC,CAAC,CAAC,KAAK,qBAAqB,CAAC,CAAC,CAAC,CAAC,EACpC,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,iCAAiC,GAAwD,IAAI,CAAC,OAAO,CAAC,IAAI,CACjH,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,EACpC,oCAAoC,CAAC,sDAAsD,CAAC,EAC5F,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EACpC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC,EAChE,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;;AAGO,IAAA,MAAM,GAAG,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC;AAEvD,IAAA,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACjD,SAAS,CAAC,CAAC,CAAC,KAAI;AACd,QAAA,IAAI,OAAqF,CAAC;AAE1F,QAAA,IAAI,CAAC,EAAE,oCAAoC,EAAE;AAC3C,YAAA,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC;SAChE;aAAM;YACL,OAAO,GAAG,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,wDAAwD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACvH;AAED,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClD,KAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,QAAQ,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAChF,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAC9D,GAAG,CAAC,MAAM,SAAS,CAAC,CACC,CAAC;AAEf,IAAA,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,IAAA,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAErC,IAAA,2BAA2B,GAAG,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACpE,IAAA,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,IAAA,8BAA8B,GAAG,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC1E,IAAA,sCAAsC,GAAG,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;AAE1F,IAAA,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5D,IAAA,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAEjF,QAAQ,GAAA;QACN,IAAI,CAAC,iCAAiC,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAE5E,QAAA,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,iCAAiC,CAAC,gBAAgB,CAAC,CAAC;AACpG,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;;QAG5C,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,IAAI,CAAC,iCAAiC,CAAC,iBAAiB;aACzF,IAAI,CACH,KAAK,EAAE,EACP,SAAS,CAAC,CAAC,CAAC,KAAI;YACd,MAAM,MAAM,GAAoC,CAAC;kBAC7C,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;kBACb,IAAI,CAAC,iCAAiC,CAAC,gBAAgB,CAAC,IAAI,CAC1D,KAAK,EAAE,EACP,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAwB,CAAC,CAC9C,CAAC;AACN,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAC,CACH;aACA,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,KAAI;AAC1C,YAAA,IAAI,CAAC,EAAE,KAAK,EAAE;AACZ,gBAAA,IAAI,MAAmB,CAAC;AACxB,gBAAA,MAAM,UAAU,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC;gBACpF,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAEjD,gBAAA,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE;AACjB,oBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC;oBAEhF,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;wBAChD,MAAM,GAAG,YAAY,CAAC;qBACvB;iBACF;AAED,gBAAA,IAAI,CAAC,MAAM,IAAI,uBAAuB,EAAE;oBACtC,MAAM,GAAG,YAAY,CAAC;iBACvB;gBAED,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBACnC;aACF;AACH,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;KAChC;IAED,UAAU,CAAC,EAAE,IAAI,EAAkB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AAC1B,YAAA,IAAI,CAAC,iCAAiC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;SAClE;KACF;IAED,YAAY,CAAC,MAAc,EAAE,KAAuB,EAAA;QAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;KACzC;AAED,IAAA,qBAAqB,CAAC,WAA+C,EAAA;AACnE,QAAA,IAAI,CAAC,2BAA2B,EAAE,GAAG,WAAW,CAAC,CAAC;KACnD;wGAvJU,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qCAAqC,6XAJrC,CAAC,gBAAgB,CAAC,ECnG/B,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,64CAuBA,4CD2EY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAE,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,wBAAwB,8DAAE,qBAAqB,EAAA,QAAA,EAAA,gDAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,EAAE,QAAA,EAAA,qCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,yCAAyC,kGAAE,0DAA0D,EAAA,QAAA,EAAA,yDAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAKxM,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBARjD,SAAS;+BACE,iCAAiC,EAAA,OAAA,EAElC,CAAC,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,yCAAyC,EAAE,0DAA0D,CAAC,EAAA,SAAA,EACzM,CAAC,gBAAgB,CAAC,EAAA,eAAA,EACZ,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,QAAA,EAAA,64CAAA,EAAA,CAAA;;;AE/FlB;;AAEG;MACU,uEAAuE,GAAG,IAAI,cAAc,CAAC,oDAAoD,EAAE;AAwB1J,MAAO,+CAAgD,SAAQ,uBAA0E,CAAA;AAC7I,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;KAChC;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC;KACxC;AAED,IAAA,OAAO,UAAU,CAAC,SAAoB,EAAE,MAAmD,EAAA;QACzF,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;QAC/D,MAAM,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAA4D,uEAAuE,EAAE,IAAI,CAAC,CAAC;AACpL,QAAA,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;AAC9G,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,+CAA+C,EAAE;AACrE,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,QAAQ,EAAE,GAAG;AACb,YAAA,GAAG,8BAA8B,CAAC,aAAa,CAAC,YAAY,CAAC;YAC7D,QAAQ;AACR,YAAA,IAAI,EAAE;gBACJ,MAAM;gBACN,aAAa;AACd,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;wGAzBU,+CAA+C,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+CAA+C,EAXhD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;GAMT,EAES,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,ofAAE,qCAAqC,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGrD,+CAA+C,EAAA,UAAA,EAAA,CAAA;kBAZ3D,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMT,EAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,qCAAqC,CAAC;oBACjE,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA,CAAA;;;MCjBY,qDAAqD,CAAA;AACvD,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAE9B,IAAA,UAAU,GAAG,KAAK,CAAS,WAAW,CAAC,CAAC;IAExC,QAAQ,GAAG,KAAK,EAAkB,CAAC;IAEnC,aAAa,GAAG,KAAK,EAA6D,CAAC;IAE5F,cAAc,GAAA;QACZ,+CAA+C,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;KAC9I;wGAZU,qDAAqD,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArD,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qDAAqD,EAPtD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,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,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIjB,qDAAqD,EAAA,UAAA,EAAA,CAAA;kBATjE,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oDAAoD;AAC9D,oBAAA,QAAQ,EAAE,CAAA;;AAET,EAAA,CAAA;oBACD,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACsEK,MAAO,8CAA0J,SAAQ,SAA6B,CAAA;IACjM,OAAO,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAE1D,IAAA,iCAAiC,GAAG,MAAM,CAAC,iCAAiC,CAAC,CAAC;AAEtE,IAAA,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;AACpC,IAAA,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;AACrC,IAAA,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;AACxC,IAAA,mBAAmB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAC/C,IAAA,eAAe,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAC3C,IAAA,UAAU,GAAG,IAAI,kBAAkB,EAAE,CAAC;AACtC,IAAA,cAAc,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAE1C,IAAA,eAAe,GAAG,IAAI,eAAe,CAAyB,SAAS,CAAC,CAAC;IACjF,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAExD,IAAA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CACtC,SAAS,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAC3E,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAC3C,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,8BAA8B,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAC9D,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAE3D,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAa,CAAC;KACjC;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,IAAiB,CAAC;KAC/B;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;KAChC;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;KAC/B;AAED,IAAA,IAAI,oBAAoB,GAAA;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;KAC7C;AAED,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC;KAC3C;AAED,IAAA,IAAI,8BAA8B,GAAA;AAChC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,8BAA8B,IAAI,KAAK,CAAC;KAC3D;AAED,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;KAClC;AAED,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;KACvC;AAED,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;KACnC;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;KAC1B;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;KAC9B;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;KAClC;AAED,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;KACzC;AAED,IAAA,IAAI,sCAAsC,GAAA;AACxC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,sCAAsC,CAAC;KAC1D;AAED,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;KACvC;AAED,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;KACvC;AAED,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;KACtC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,+BAA+B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACnH,YAAA,IAAI,CAAC,iCAAiC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;AACtE,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,iCAAiC,CAAC,kCAAkC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACtH,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;AAE1F,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,iCAAiC,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAiB,CAAC;SACvH;AAED,QAAA,IAAI,mBAAmB,IAAI,IAAI,EAAE;AAC/B,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,IAAI,CAAC,iCAAiC,CAAC,sBAAsB,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAiB,CAAC;SACtJ;AAED,QAAA,IAAI,eAAe,IAAI,IAAI,EAAE;AAC3B,YAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,GAAG,IAAI,CAAC,iCAAiC,CAAC,kBAAkB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAiB,CAAC;SAClJ;AAED,QAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,iCAAiC,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,CAAiB,CAAC;SACnI;AAED,QAAA,IAAI,cAAc,IAAI,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,iCAAiC,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;SAC7F;AAED,QAAA,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAAE;YAC5C,IAAI,CAAC,iCAAiC,CAAC,wBAAwB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SAC7F;AAED,QAAA,IAAI,IAAI,CAAC,sCAAsC,IAAI,IAAI,EAAE;YACvD,IAAI,CAAC,iCAAiC,CAAC,yCAAyC,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;SAC/H;AAED,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE;YACnC,IAAI,CAAC,iCAAiC,CAAC,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACvF;KACF;IAEQ,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;KACjC;wGA5JU,8CAA8C,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8CAA8C,EAL9C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,CAAC,0DAA0D,EAAE,CAAC,EAR/D,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAES,qBAAqB,EAAA,QAAA,EAAA,gDAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,8CAA8C,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qDAAqD,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAI3H,8CAA8C,EAAA,UAAA,EAAA,CAAA;kBAd1D,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,CAAA;;;;;;;AAOT,EAAA,CAAA;AACD,oBAAA,SAAS,EAAE,CAAC,0DAA0D,EAAE,CAAC;AACzE,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,8CAA8C,EAAE,qDAAqD,CAAC;oBACvI,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;AC/ED,MAAMC,mBAAiB,GAAG,CAAC,8CAA8C,CAAC,CAAC;MAW9D,mCAAmC,CAAA;wGAAnC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAnC,mCAAmC,EAAA,OAAA,EAAA,CAXrB,8CAA8C,EAAAD,IAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAA9C,8CAA8C,CAAA,EAAA,CAAA,CAAA;AAW5D,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,YAPzCC,mBAAiB,EACpB,YAAY,CAAC,QAAQ,CAAC;gBACpB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,8CAA8C,EAAE,CAAC;aACpG,CAAC,CAAA,EAAA,CAAA,CAAA;;4FAIO,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAT/C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,GAAGA,mBAAiB;wBACpB,YAAY,CAAC,QAAQ,CAAC;4BACpB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,8CAA8C,EAAE,CAAC;yBACpG,CAAC;AACH,qBAAA;AACD,oBAAA,OAAO,EAAEA,mBAAiB;AAC3B,iBAAA,CAAA;;;ACbD;;ACcA,MAAM,iBAAiB,GAAG;IACxB,qCAAqC;IACrC,6CAA6C;IAC7C,iDAAiD;IACjD,8CAA8C;IAC9C,sDAAsD;IACtD,yCAAyC;IACzC,gDAAgD;IAChD,uDAAuD;IACvD,wDAAwD;IACxD,+CAA+C;IAC/C,qDAAqD;IACrD,0DAA0D;;IAE1D,0BAA0B;CAC3B,CAAC;MAMW,qBAAqB,CAAA;wGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YApBhC,qCAAqC;YACrC,6CAA6C;YAC7C,iDAAiD;YACjD,8CAA8C;YAC9C,sDAAsD;YACtD,yCAAyC;YACzC,gDAAgD;YAChD,uDAAuD;YACvD,wDAAwD;YACxD,+CAA+C;YAC/C,qDAAqD;YACrD,0DAA0D;;AAE1D,YAAA,0BAA0B,aAb1B,qCAAqC;YACrC,6CAA6C;YAC7C,iDAAiD;YACjD,8CAA8C;YAC9C,sDAAsD;YACtD,yCAAyC;YACzC,gDAAgD;YAChD,uDAAuD;YACvD,wDAAwD;YACxD,+CAA+C;YAC/C,qDAAqD;YACrD,0DAA0D;;YAE1D,0BAA0B,CAAA,EAAA,CAAA,CAAA;AAOf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YApBhC,qCAAqC;YACrC,6CAA6C;YAC7C,iDAAiD;YACjD,8CAA8C;YAC9C,sDAAsD;YACtD,yCAAyC;YACzC,gDAAgD;YAChD,uDAAuD;YAEvD,+CAA+C;YAC/C,qDAAqD;YACrD,0DAA0D;;YAE1D,0BAA0B;;YAA1B,0BAA0B,CAAA,EAAA,CAAA,CAAA;;4FAOf,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,iBAAiB;AAC1B,oBAAA,OAAO,EAAE,iBAAiB;AAC3B,iBAAA,CAAA;;;ACnCD;;AAEG;;;;"}
1
+ {"version":3,"file":"dereekb-dbx-form-calendar.mjs","sources":["../../../../packages/dbx-form/calendar/src/lib/field/schedule/calendar.schedule.field.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.store.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.store.provide.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.form.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.days.form.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.days.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.range.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.range.component.html","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.popover.content.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.popover.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.popover.button.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.cell.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.toggle.button.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.component.html","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.dialog.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.dialog.button.component.ts","../../../../packages/dbx-form/calendar/src/lib/field/schedule/calendar.schedule.field.component.ts","../../../../packages/dbx-form/calendar/src/lib/field/schedule/calendar.schedule.module.ts","../../../../packages/dbx-form/calendar/src/lib/field/index.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.module.ts","../../../../packages/dbx-form/calendar/src/dereekb-dbx-form-calendar.ts"],"sourcesContent":["import { type DescriptionFieldConfig, type FieldConfig, formlyField, type LabeledFieldConfig, propsAndConfigForFieldConfig } from '@dereekb/dbx-form';\nimport { type FormlyFieldConfig } from '@ngx-formly/core';\nimport { type DbxFormCalendarDateCellScheduleRangeFieldProps } from './calendar.schedule.field.component';\n\nexport interface DateScheduleRangeFieldConfig extends Omit<LabeledFieldConfig, 'key' | 'placeholder'>, DescriptionFieldConfig, Partial<FieldConfig>, DbxFormCalendarDateCellScheduleRangeFieldProps {}\n\nexport function dateScheduleRangeField(config: DateScheduleRangeFieldConfig = {}): FormlyFieldConfig {\n const { key = 'schedule', appearance, hideCustomize, allowTextInput, filter, outputTimezone, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions, defaultScheduleDays, minMaxDateRange, cellContentFactory, dialogContentConfig, customDetailsConfig } = config;\n\n const fieldConfig: FormlyFieldConfig = {\n ...formlyField({\n key,\n type: 'date-schedule-range',\n ...propsAndConfigForFieldConfig(config, {\n label: config.label ?? 'Schedule',\n allowTextInput,\n appearance,\n hideCustomize,\n outputTimezone,\n defaultScheduleDays,\n minMaxDateRange,\n filter,\n exclusions,\n dialogContentConfig,\n computeSelectionResultRelativeToFilter,\n initialSelectionState,\n cellContentFactory,\n customDetailsConfig\n })\n })\n };\n\n return fieldConfig;\n}\n","import { type DateCellIndex, type DateRange, type DateCellScheduleDateRange } from '@dereekb/date';\nimport { type FactoryWithRequiredInput } from '@dereekb/util';\nimport { type CalendarMonthViewDay } from 'angular-calendar';\n\nexport interface CalendarScheduleSelectionValue {\n /**\n * Schedule range.\n */\n readonly dateScheduleRange: DateCellScheduleDateRange;\n /**\n * Min and max dates in the selection.\n */\n readonly minMaxRange: DateRange;\n}\n\nexport enum CalendarScheduleSelectionDayState {\n NOT_APPLICABLE = 0,\n DISABLED = 1,\n NOT_SELECTED = 2,\n SELECTED = 3\n}\n\nexport interface CalendarScheduleSelectionMetadata {\n readonly state: CalendarScheduleSelectionDayState;\n readonly i: DateCellIndex;\n}\n\nexport interface CalendarScheduleSelectionCellContent {\n readonly icon?: string;\n readonly text?: string;\n}\n\nexport type CalendarScheduleSelectionCellContentFactory<M extends CalendarScheduleSelectionMetadata = CalendarScheduleSelectionMetadata> = FactoryWithRequiredInput<CalendarScheduleSelectionCellContent, CalendarMonthViewDay<M>>;\n\nexport const defaultCalendarScheduleSelectionCellContentFactory: CalendarScheduleSelectionCellContentFactory = (day: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>) => {\n let icon: string | undefined;\n let text: string | undefined;\n\n switch (day.meta?.state) {\n case CalendarScheduleSelectionDayState.SELECTED:\n icon = 'check_box';\n break;\n case CalendarScheduleSelectionDayState.DISABLED:\n icon = 'block';\n break;\n case CalendarScheduleSelectionDayState.NOT_APPLICABLE:\n break;\n case CalendarScheduleSelectionDayState.NOT_SELECTED:\n icon = 'check_box_outline_blank';\n text = 'Add';\n break;\n }\n\n const result: CalendarScheduleSelectionCellContent = {\n icon,\n text\n };\n\n return result;\n};\n","import { Injectable } from '@angular/core';\nimport {\n DateCellDayOfWeekFactory,\n dateCellDayOfWeekFactory,\n DateCellIndex,\n DateCellRangeWithRange,\n dateCellTimingDateFactory,\n DateRange,\n dateCellScheduleDateFilter,\n copyDateCellScheduleDateFilterConfig,\n DateCellScheduleDateFilterConfig,\n DateCellScheduleDayCode,\n dateCellScheduleEncodedWeek,\n DateCellScheduleEncodedWeek,\n DateCellTimingRelativeIndexFactory,\n dateCellTimingRelativeIndexFactory,\n expandDateCellScheduleDayCodes,\n expandDateCellScheduleDayCodesToDayOfWeekSet,\n findMaxDate,\n findMinDate,\n isDateInDateRangeFunction,\n IsDateWithinDateCellRangeFunction,\n isDateWithinDateCellRangeFunction,\n isSameDate,\n isSameDateDay,\n isSameDateRange,\n DateOrDateRangeOrDateCellIndexOrDateCellRange,\n dateCellTimingRelativeIndexArrayFactory,\n isInfiniteDateRange,\n dateTimezoneUtcNormal,\n DateTimezoneUtcNormalInstance,\n expandDateCellScheduleRange,\n DateCell,\n DateCellDurationSpan,\n formatToISO8601DayStringForSystem,\n DateCellTimingRelativeIndexFactoryInput,\n dateCellScheduleDayCodesAreSetsEquivalent,\n simplifyDateCellScheduleDayCodes,\n fullWeekDateCellScheduleDayCodes,\n dateCellTimingStartDateFactory,\n DateCellScheduleDateRange,\n dateCellTimingStartsAtForStartOfDay,\n isSameDateCellScheduleDateRange,\n FullDateCellScheduleRangeInputDateRange,\n fullDateCellScheduleRange,\n dateCellTimingTimezoneNormalInstance,\n changeDateCellScheduleDateRangeToTimezone,\n SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE\n} from '@dereekb/date';\nimport { distinctUntilHasDifferentValues, filterMaybe } from '@dereekb/rxjs';\nimport { Maybe, TimezoneString, DecisionFunction, IterableOrValue, iterableToArray, addToSet, toggleInSet, isIndexNumberInIndexRangeFunction, MaybeMap, minAndMaxNumber, DayOfWeek, range, AllOrNoneSelection, unique, mergeArrays, ArrayOrValue, ISO8601DayString, mapValuesToSet, isInAllowedDaysOfWeekSet, Building, firstValueFromIterable, isIterable, removeFromSet, Configurable } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { startOfDay, endOfDay, isBefore } from 'date-fns';\nimport { Observable, distinctUntilChanged, map, shareReplay, switchMap, tap, first, combineLatestWith, of } from 'rxjs';\nimport { CalendarScheduleSelectionCellContentFactory, CalendarScheduleSelectionValue, defaultCalendarScheduleSelectionCellContentFactory } from './calendar.schedule.selection';\n\nexport interface CalendarScheduleSelectionInputDateRange {\n /**\n * Input Start Date\n */\n readonly inputStart: Date;\n /**\n * Input End Date\n */\n readonly inputEnd: Date;\n}\n\nexport type PartialCalendarScheduleSelectionInputDateRange = Partial<MaybeMap<CalendarScheduleSelectionInputDateRange>>;\n\n/**\n * DbxCalendarScheduleSelectionStore selection mode.\n *\n * When in single mode the toggle function is treated as a set that clears all values and only selects the toggle'd value.\n */\nexport type DbxCalendarScheduleSelectionStoreSelectionMode = 'multiple' | 'single';\n\nexport interface CalendarScheduleSelectionState extends PartialCalendarScheduleSelectionInputDateRange {\n /**\n * Selection mode for this calendar. Defaults to \"multiple\"\n */\n readonly selectionMode: DbxCalendarScheduleSelectionStoreSelectionMode;\n /**\n * Readonly state of the view.\n *\n * Does not affect state changes directly, but instead acts as a flag for the parent view to set and the consuming views to update on.\n */\n readonly isViewReadonly?: Maybe<boolean>;\n /**\n * Set of the days of week that are allowed by default.\n */\n readonly defaultScheduleDays: Set<DateCellScheduleDayCode>;\n /**\n * Filters the days of the schedule to only allow selecting days in the schedule.\n *\n * The output will be relative to this filter, and in it's timezone unless computeSelectionResultRelativeToFilter is false.\n *\n * This is a copy of any set/configured input filter and will have a start date set from start or startsAt.\n */\n readonly filter?: Maybe<DateCellScheduleDateFilterConfig>;\n /**\n * Additional exclusions that may not be defined within the filter.\n */\n readonly inputExclusions?: Maybe<ArrayOrValue<DateOrDateRangeOrDateCellIndexOrDateCellRange>>;\n /**\n * The computed exclusions given the input exclusions.\n */\n readonly computedExclusions?: Maybe<DateCellIndex[]>;\n /**\n * The min/max date range. Used for restricting the min/max value. Works with the filter. The greater/lesser of the start/end dates are used if both are provided.\n */\n readonly minMaxDateRange?: Maybe<Partial<DateRange>>;\n /**\n * Start date. Is updated as the inputStart is modified or filter is provided that provides the start date.\n *\n * Defaults to today and the current timezone.\n */\n readonly start: DateCellScheduleDateRange['start'];\n /**\n * System Timezone. Does not change.\n */\n readonly systemTimezone: TimezoneString;\n /**\n * Timezone to use when outputting the value. Only influences the output start date.\n */\n readonly outputTimezone?: Maybe<TimezoneString>;\n /**\n * Current timezone normal with the current timezone.\n */\n readonly outputTimezoneNormal?: Maybe<DateTimezoneUtcNormalInstance>;\n /**\n * DateCellTimingRelativeIndexFactory\n */\n readonly indexFactory: DateCellTimingRelativeIndexFactory;\n /**\n * Array of manually selected dates within the picked range. This is NOT the set of all selected indexes in terms of output.\n *\n * Values that exist outside of the \"input\" range are considered toggled on, while those\n * that are selected within the range are considered toggled off.\n *\n * If dates are selected, and then a range is selected, then those dates within the range that fall\n * within the range are cleared from selection.\n *\n * These indexes are relative to the start date.\n */\n readonly toggledIndexes: Set<DateCellIndex>;\n /**\n * Days of the schedule that are allowed to be picked. If not defined, defaults to defaultScheduleDays.\n */\n readonly scheduleDays?: Maybe<Set<DateCellScheduleDayCode>>;\n /**\n * The current DateCellScheduleDayCode value.\n */\n readonly effectiveScheduleDays: Set<DateCellScheduleDayCode>;\n /**\n * Set of the days of week that are allowed. Derived from the current schedule days value.\n */\n readonly allowedDaysOfWeek: Set<DayOfWeek>;\n /**\n *\n */\n readonly indexDayOfWeek: DateCellDayOfWeekFactory;\n /**\n * Decision function that returns true if a value is enabled given the current filter.\n */\n readonly isEnabledFilterDay: DecisionFunction<DateCellTimingRelativeIndexFactoryInput>;\n /**\n * Decision function that returns true if a value is enabled.\n *\n * This function does not take the current filter into account.\n */\n readonly isEnabledDay: DecisionFunction<DateCellTimingRelativeIndexFactoryInput>;\n /**\n * CalendarScheduleSelectionCellContentFactory for the view.\n */\n readonly cellContentFactory: CalendarScheduleSelectionCellContentFactory;\n /**\n * Current selection value.\n */\n readonly currentSelectionValue?: Maybe<CalendarScheduleSelectionValue>;\n /**\n * Whether or not to use the filter as the start and end range instead of optimizing for the current index.\n *\n * Defaults to true.\n */\n readonly computeSelectionResultRelativeToFilter?: Maybe<boolean>;\n /**\n * The initial selection state when the calendar is reset.\n */\n readonly initialSelectionState?: Maybe<AllOrNoneSelection>;\n}\n\nexport function initialCalendarScheduleSelectionState(): CalendarScheduleSelectionState {\n const defaultScheduleDays = new Set([DateCellScheduleDayCode.WEEKDAY, DateCellScheduleDayCode.WEEKEND]);\n const allowedDaysOfWeek = expandDateCellScheduleDayCodesToDayOfWeekSet(defaultScheduleDays);\n const defaultStartsAt = dateCellTimingStartsAtForStartOfDay(); // get midnight of the current timezone\n const { startsAt, timezone: systemTimezone } = defaultStartsAt;\n const indexFactory = dateCellTimingRelativeIndexFactory(defaultStartsAt);\n const indexDayOfWeek = dateCellDayOfWeekFactory(startsAt);\n\n return {\n selectionMode: 'multiple',\n start: startsAt,\n systemTimezone,\n indexFactory,\n toggledIndexes: new Set(),\n defaultScheduleDays,\n effectiveScheduleDays: defaultScheduleDays,\n allowedDaysOfWeek,\n indexDayOfWeek,\n isEnabledFilterDay: () => true,\n isEnabledDay: () => false,\n computeSelectionResultRelativeToFilter: true,\n cellContentFactory: defaultCalendarScheduleSelectionCellContentFactory\n };\n}\n\n/**\n * This is used in cases where the dates in the min/max date range need to be shifted to the filter's timezone.\n *\n * This is because the index factory is always in system timezone, but when selecting all/none with a filter we need to use the filter's timezone.\n *\n * @param x\n * @returns\n */\nfunction calendarScheduleMinAndMaxDateRangeRelativeToFilter(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Partial<DateRange> {\n let input: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'> = x;\n\n if (x.filter?.timezone && x.minMaxDateRange != null) {\n const filterNormal = dateTimezoneUtcNormal(x.filter.timezone);\n const transformFn = filterNormal.transformFunction('systemDateToTargetDate');\n\n input = {\n filter: x.filter,\n minMaxDateRange: {\n start: x.minMaxDateRange.start ? transformFn(x.minMaxDateRange.start) : undefined,\n end: x.minMaxDateRange.end ? transformFn(x.minMaxDateRange.end) : undefined\n }\n };\n }\n\n return calendarScheduleMinAndMaxDateRange(input);\n}\n\nexport function calendarScheduleMinAndMaxDateRange(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Partial<DateRange> {\n return {\n start: calendarScheduleMinDate(x) || undefined,\n end: calendarScheduleMaxDate(x) || undefined\n };\n}\n\nexport function calendarScheduleMinDate(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Maybe<Date> {\n return findMaxDate([x.filter?.start, x.minMaxDateRange?.start]);\n}\n\nexport function calendarScheduleMaxDate(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Maybe<Date> {\n return findMinDate([x.filter?.end, x.minMaxDateRange?.end]);\n}\n\nexport function calendarScheduleStartBeingUsedFromFilter(x: Pick<CalendarScheduleSelectionState, 'filter' | 'computeSelectionResultRelativeToFilter'>) {\n return x.computeSelectionResultRelativeToFilter && x.filter?.start != null; // may be using either\n}\n\n@Injectable()\nexport class DbxCalendarScheduleSelectionStore extends ComponentStore<CalendarScheduleSelectionState> {\n constructor() {\n super(initialCalendarScheduleSelectionState());\n }\n\n // MARK:\n readonly toggleSelection = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() =>\n this.nextToggleSelection$.pipe(\n first(),\n filterMaybe(),\n tap((x) => {\n this.selectAllDates(x);\n })\n )\n )\n );\n });\n\n // MARK: Accessors\n readonly selectionMode$ = this.state$.pipe(\n map((x) => x.selectionMode),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly filter$ = this.state$.pipe(\n map((x) => x.filter),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly minMaxDateRange$ = this.state$.pipe(map(calendarScheduleMinAndMaxDateRange), distinctUntilChanged(isSameDateRange), shareReplay(1));\n\n readonly minDate$ = this.minMaxDateRange$.pipe(\n map((x) => x?.start),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n readonly maxDate$ = this.minMaxDateRange$.pipe(\n map((x) => x?.end),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n\n readonly hasConfiguredMinMaxRange$ = this.minMaxDateRange$.pipe(\n map((x) => x != null && x.start != null && x.end != null),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly inputStart$ = this.state$.pipe(\n map((x) => x.inputStart),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly inputEnd$ = this.state$.pipe(\n map((x) => x.inputEnd),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly currentInputRange$: Observable<Maybe<CalendarScheduleSelectionInputDateRange>> = this.state$.pipe(\n map(({ inputStart, inputEnd }) => ({ start: inputStart, end: inputEnd })),\n distinctUntilChanged((a, b) => isSameDateRange(a as DateRange, b as DateRange)),\n map((x) => ({ inputStart: x.start, inputEnd: x.end })),\n map((x) => {\n if (x.inputStart && x.inputEnd) {\n return x as CalendarScheduleSelectionInputDateRange;\n } else {\n return undefined;\n }\n }),\n shareReplay(1)\n );\n\n readonly inputRange$: Observable<CalendarScheduleSelectionInputDateRange> = this.currentInputRange$.pipe(filterMaybe(), shareReplay(1));\n\n readonly isEnabledFilterDayFunction$: Observable<DecisionFunction<DateCellTimingRelativeIndexFactoryInput>> = this.state$.pipe(\n map((x) => x.isEnabledFilterDay),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isEnabledDayFunction$: Observable<DecisionFunction<DateCellTimingRelativeIndexFactoryInput>> = this.state$.pipe(\n map((x) => x.isEnabledDay),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentDateRange$: Observable<Maybe<DateRange>> = this.state$.pipe(\n map(computeCalendarScheduleSelectionRange),\n distinctUntilChanged((a, b) => isSameDateRange(a, b)),\n shareReplay(1)\n );\n\n readonly computeSelectionResultRelativeToFilter$: Observable<Maybe<boolean>> = this.state$.pipe(\n map((x) => x.computeSelectionResultRelativeToFilter),\n shareReplay(1)\n );\n\n readonly startBeingUsedFromFilter$: Observable<Maybe<boolean>> = this.state$.pipe(\n //\n map(calendarScheduleStartBeingUsedFromFilter),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly dateRange$: Observable<DateRange> = this.currentDateRange$.pipe(filterMaybe(), shareReplay(1));\n\n readonly allowedDaysOfWeek$: Observable<Set<DayOfWeek>> = this.state$.pipe(\n map((x) => x.allowedDaysOfWeek),\n distinctUntilHasDifferentValues(),\n shareReplay(1)\n );\n\n readonly isInAllowedDaysOfWeekFunction$ = this.allowedDaysOfWeek$.pipe(\n map((x) => isInAllowedDaysOfWeekSet(x)),\n shareReplay(1)\n );\n\n readonly scheduleDays$: Observable<Set<DateCellScheduleDayCode>> = this.state$.pipe(\n map((x) => x.effectiveScheduleDays),\n distinctUntilHasDifferentValues(),\n shareReplay(1)\n );\n\n readonly outputTimezone$: Observable<Maybe<TimezoneString>> = this.state$.pipe(\n map((x) => x.outputTimezone),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n /**\n * The timezone of the output values.\n *\n * If an outputTimezone is not specified, this defaults to the system timezone.\n */\n readonly effectiveOutputTimezone$: Observable<TimezoneString> = this.state$.pipe(\n map((x) => x.outputTimezone || x.systemTimezone),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n /**\n * An outputTimezoneNormal to use.\n *\n * If an outputTimezone is not specified, this is undefined.\n */\n readonly effectiveOutputTimezoneNormal$: Observable<Maybe<DateTimezoneUtcNormalInstance>> = this.state$.pipe(\n map((x) => (x.outputTimezoneNormal ? x.outputTimezoneNormal : undefined)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentSelectionValue$ = this.state$.pipe(\n map((x) => x.currentSelectionValue),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentSelectionValueStart$ = this.currentSelectionValue$.pipe(\n map((x) => x?.dateScheduleRange.start),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly currentSelectionValueDateCellTimingDateFactory$ = this.currentSelectionValue$.pipe(\n map((x) => (x ? dateCellTimingDateFactory({ startsAt: x.dateScheduleRange.start, timezone: x.dateScheduleRange.timezone }) : undefined)),\n shareReplay(1)\n );\n\n readonly currentSelectionValueDateCellDurationSpanExpansion$: Observable<DateCellDurationSpan<DateCell>[]> = this.currentSelectionValue$.pipe(\n map((x) => (x ? expandDateCellScheduleRange({ dateCellScheduleRange: x.dateScheduleRange }) : [])),\n shareReplay(1)\n );\n\n readonly selectionValueSelectedIndexes$: Observable<Set<DateCellIndex>> = this.currentSelectionValueDateCellDurationSpanExpansion$.pipe(\n map((x) => new Set(x.map((y) => y.i))),\n distinctUntilHasDifferentValues(),\n shareReplay(1)\n );\n\n readonly selectionValueSelectedDates$: Observable<Set<ISO8601DayString>> = this.currentSelectionValueDateCellTimingDateFactory$.pipe(\n switchMap((dateFactory) => {\n return dateFactory ? this.selectionValueSelectedIndexes$.pipe(map((x) => mapValuesToSet(x, (y) => formatToISO8601DayStringForSystem(dateFactory(y))))) : of(new Set<ISO8601DayString>());\n }),\n shareReplay(1)\n );\n\n readonly selectionValue$ = this.currentSelectionValue$.pipe(filterMaybe(), shareReplay(1));\n\n readonly currentSelectionValueWithTimezone$ = this.currentSelectionValue$.pipe(\n combineLatestWith(this.effectiveOutputTimezoneNormal$),\n map(([x, timezoneNormal]) => {\n let currentValueWithTimezone = x;\n\n if (x && timezoneNormal) {\n currentValueWithTimezone = {\n dateScheduleRange: changeDateCellScheduleDateRangeToTimezone(x.dateScheduleRange, timezoneNormal),\n minMaxRange: x.minMaxRange\n } as CalendarScheduleSelectionValue;\n }\n\n return currentValueWithTimezone;\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly selectionValueWithTimezone$ = this.currentSelectionValueWithTimezone$.pipe(filterMaybe(), shareReplay(1));\n\n readonly selectionValueWithTimezoneDateCellDurationSpanExpansion$: Observable<DateCellDurationSpan<DateCell>[]> = this.selectionValueWithTimezone$.pipe(\n map((x) => expandDateCellScheduleRange({ dateCellScheduleRange: x.dateScheduleRange })),\n shareReplay(1)\n );\n\n readonly nextToggleSelection$: Observable<Maybe<AllOrNoneSelection>> = this.hasConfiguredMinMaxRange$.pipe(\n switchMap((hasConfiguredMinMaxRange) => {\n let obs: Observable<Maybe<AllOrNoneSelection>>;\n\n if (hasConfiguredMinMaxRange) {\n obs = this.currentSelectionValue$.pipe(map((x) => (x ? 'none' : 'all')));\n } else {\n obs = this.currentSelectionValue$.pipe(map((x) => (x ? 'none' : undefined)));\n }\n\n return obs;\n }),\n shareReplay(1)\n );\n\n readonly currentDateCellScheduleRangeValue$ = this.currentSelectionValueWithTimezone$.pipe(\n map((x) => x?.dateScheduleRange),\n distinctUntilChanged(isSameDateCellScheduleDateRange),\n shareReplay(1)\n );\n\n readonly dateCellScheduleRangeValue$ = this.currentDateCellScheduleRangeValue$.pipe(filterMaybe(), shareReplay(1));\n\n readonly cellContentFactory$ = this.state$.pipe(\n map((x) => x.cellContentFactory),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isCustomized$ = this.state$.pipe(\n map((x) => x.toggledIndexes.size > 0),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isViewReadonly$ = this.state$.pipe(\n map((x) => x.isViewReadonly),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n // MARK: State Changes\n readonly setMinMaxDateRange = this.updater(updateStateWithMinMaxDateRange);\n readonly setDefaultWeek = this.updater(updateStateWithMinMaxDateRange);\n readonly setFilter = this.updater(updateStateWithFilter);\n readonly setExclusions = this.updater(updateStateWithExclusions);\n readonly setComputeSelectionResultRelativeToFilter = this.updater(updateStateWithComputeSelectionResultRelativeToFilter);\n readonly clearFilter = this.updater((state) => updateStateWithFilter(state, undefined));\n\n readonly setOutputTimezone = this.updater(updateStateWithTimezoneValue);\n /**\n * Sets the \"input\" date range. This is the range that gets displayed on the date range picker.\n */\n readonly setInputRange = this.updater(updateStateWithChangedRange);\n\n // NOTE: Selected dates are NOT selected indexes. They are the internal selected dates that are excluded from the selection.\n readonly toggleSelectedDates = this.updater((state, toggle: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>) => updateStateWithChangedDates(state, { toggle }));\n readonly addSelectedDates = this.updater((state, add: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>) => updateStateWithChangedDates(state, { add }));\n readonly removeSelectedDates = this.updater((state, remove: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>) => updateStateWithChangedDates(state, { remove }));\n readonly setSelectedDates = this.updater((state, set: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>) => updateStateWithChangedDates(state, { set }));\n readonly selectAllDates = this.updater((state, selectAll: AllOrNoneSelection = 'all') => updateStateWithChangedDates(state, { selectAll }));\n\n // NOTE: Selected indexes are the typical/expected indexes that are selected or not.\n readonly setSelectedIndexes = this.updater((state, set: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>) => updateStateWithChangedDates(state, { set, invertSetBehavior: true }));\n readonly setInitialSelectionState = this.updater(updateStateWithInitialSelectionState);\n\n readonly setDefaultScheduleDays = this.updater(updateStateWithChangedDefaultScheduleDays);\n readonly setScheduleDays = this.updater(updateStateWithChangedScheduleDays);\n readonly setAllowAllScheduleDays = this.updater((state) => updateStateWithChangedScheduleDays(state, [DateCellScheduleDayCode.WEEKDAY, DateCellScheduleDayCode.WEEKEND]));\n\n readonly setDateScheduleRangeValue = this.updater((state, value: Maybe<FullDateCellScheduleRangeInputDateRange>) => updateStateWithDateCellScheduleRangeValue(state, value));\n readonly setCellContentFactory = this.updater((state, cellContentFactory: CalendarScheduleSelectionCellContentFactory) => ({ ...state, cellContentFactory }));\n\n /**\n * Sets the selection mode.\n */\n readonly setSelectionMode = this.updater(updateStateWithSelectionMode);\n\n /**\n * Used by the parent view to propogate a readonly state.\n *\n * Should typically not be used by the user directly with the intention of the parent synchronizing to this state.\n */\n readonly setViewReadonlyState = this.updater((state, isViewReadonly: boolean) => ({ ...state, isViewReadonly }));\n}\n\nexport function updateStateWithInitialSelectionState(state: CalendarScheduleSelectionState, initialSelectionState: Maybe<AllOrNoneSelection>): CalendarScheduleSelectionState {\n const { toggledIndexes } = state;\n\n if (toggledIndexes.size === 0 && initialSelectionState === 'all') {\n state = updateStateWithChangedDates(state, { selectAll: initialSelectionState });\n }\n\n return { ...state, initialSelectionState };\n}\n\nexport function updateStateWithComputeSelectionResultRelativeToFilter(currentState: CalendarScheduleSelectionState, computeSelectionResultRelativeToFilter: Maybe<boolean>): CalendarScheduleSelectionState {\n let state: CalendarScheduleSelectionState = { ...currentState, computeSelectionResultRelativeToFilter };\n\n if (Boolean(currentState.computeSelectionResultRelativeToFilter) !== Boolean(computeSelectionResultRelativeToFilter)) {\n state = updateStateWithChangedDates(state, {}); // recalculate if change occurs as it will affect the output value\n }\n\n return state;\n}\n\nexport function updateStateWithExclusions(state: CalendarScheduleSelectionState, inputExclusions: Maybe<ArrayOrValue<DateOrDateRangeOrDateCellIndexOrDateCellRange>>): CalendarScheduleSelectionState {\n let computedExclusions: Maybe<DateCellIndex[]>;\n\n if (inputExclusions) {\n const { indexFactory } = state;\n const indexArrayFactory = dateCellTimingRelativeIndexArrayFactory(indexFactory);\n computedExclusions = indexArrayFactory(inputExclusions);\n }\n\n state = { ...state, inputExclusions, computedExclusions };\n return updateStateWithFilter(state, state.filter);\n}\n\nexport function updateStateWithMinMaxDateRange(state: CalendarScheduleSelectionState, minMaxDateRange: Maybe<Partial<DateRange>>): CalendarScheduleSelectionState {\n if (minMaxDateRange != null && !isInfiniteDateRange(minMaxDateRange)) {\n state = {\n ...state,\n minMaxDateRange: {\n start: minMaxDateRange.start != null ? startOfDay(minMaxDateRange.start) : undefined,\n end: minMaxDateRange.end != null ? endOfDay(minMaxDateRange.end) : undefined\n }\n };\n } else {\n state = { ...state, minMaxDateRange: undefined };\n }\n\n return updateStateWithFilter(state, state.filter);\n}\n\nexport function updateStateWithFilter(currentState: CalendarScheduleSelectionState, inputFilter: Maybe<DateCellScheduleDateFilterConfig>): CalendarScheduleSelectionState {\n const { computedExclusions: exclusions, minMaxDateRange, systemTimezone } = currentState;\n\n let isEnabledFilterDay: Maybe<DecisionFunction<DateCellTimingRelativeIndexFactoryInput>> = () => true;\n let filter: Maybe<DateCellScheduleDateFilterConfig> = null;\n\n // create the filter using inputFilter, exclusions, and minMaxDateRange\n if (inputFilter || exclusions?.length || minMaxDateRange) {\n let enabledFilter: Configurable<DateCellScheduleDateFilterConfig>;\n let filterStart: Maybe<Date> = null; // the start date that will be used/set on the filter.\n\n if (inputFilter) {\n filter = copyDateCellScheduleDateFilterConfig(inputFilter); // copy filter\n\n let nextFilterTimezone: TimezoneString | undefined; // only set if inputFilter.start or inputFilter.startsAt\n\n // configure filter start\n if (inputFilter.start) {\n filterStart = inputFilter.start;\n\n // if no timezone is specified, then use the system timezone and align filterStart to the start of the day.\n if (!inputFilter.timezone) {\n filterStart = SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE.startOfDayInTargetTimezone(inputFilter.startsAt);\n nextFilterTimezone = systemTimezone;\n } else {\n nextFilterTimezone = inputFilter.timezone;\n }\n } else if (inputFilter.startsAt) {\n if (inputFilter.timezone) {\n // if no timezone is provided, use startsAt as-is\n const timezoneNormal = dateTimezoneUtcNormal(inputFilter.timezone);\n filterStart = timezoneNormal.startOfDayInTargetTimezone(inputFilter.startsAt);\n nextFilterTimezone = inputFilter.timezone;\n } else {\n // set to the start of today in the system timezone.\n filterStart = SYSTEM_DATE_TIMEZONE_UTC_NORMAL_INSTANCE.startOfDayInTargetTimezone(inputFilter.startsAt);\n nextFilterTimezone = systemTimezone;\n }\n }\n\n filter.start = filterStart ?? undefined;\n filter.timezone = nextFilterTimezone;\n\n // configure exclusions\n if (exclusions?.length) {\n enabledFilter = {\n ...filter,\n ex: unique(mergeArrays([filter.ex, exclusions]))\n };\n } else {\n enabledFilter = filter;\n }\n } else {\n enabledFilter = {\n w: '89',\n ex: exclusions as number[]\n };\n }\n\n if (minMaxDateRange) {\n enabledFilter.minMaxDateRange = minMaxDateRange;\n enabledFilter.setStartAsMinDate = filterStart ? true : false; // If a start date is set, then it becomes the floor.\n }\n\n /**\n * If the input filter has a start date, use that as the relative start to ensure indexes are compared the same,\n * otherwise use the state's start. This is important for the index calculations.\n */\n let finalEnabledStart: Date;\n let finalEnabledTimezone: TimezoneString;\n // filter?.start ?? state.start;\n\n if (!enabledFilter.start) {\n // use the current state's start, but make sure it is in the proper timezone.\n if (enabledFilter.timezone) {\n const timezoneNormal = dateTimezoneUtcNormal(enabledFilter.timezone);\n finalEnabledStart = timezoneNormal.startOfDayInTargetTimezone(currentState.start); // get the start of the day for the current start\n finalEnabledTimezone = enabledFilter.timezone;\n } else {\n finalEnabledStart = currentState.start;\n finalEnabledTimezone = systemTimezone;\n }\n } else if (!enabledFilter.timezone) {\n finalEnabledTimezone = systemTimezone;\n\n const timezoneNormal = dateTimezoneUtcNormal(finalEnabledTimezone);\n finalEnabledStart = timezoneNormal.startOfDayInTargetTimezone(enabledFilter.start); // get the start of the day for the target timezone\n } else {\n finalEnabledStart = enabledFilter.start;\n finalEnabledTimezone = enabledFilter.timezone;\n }\n\n enabledFilter.start = finalEnabledStart;\n enabledFilter.timezone = finalEnabledTimezone;\n\n // create the filter\n isEnabledFilterDay = dateCellScheduleDateFilter(enabledFilter);\n }\n\n let nextState: Building<CalendarScheduleSelectionState> = { ...currentState, filter, isEnabledFilterDay };\n\n // For the same reason as above, use the filter's start date as the relative start if applicable.\n if (filter && filter.start) {\n let startForSystemTimezone: Date = filter.start;\n\n if (filter.timezone) {\n const timezoneNormal = dateTimezoneUtcNormal(filter.timezone);\n startForSystemTimezone = timezoneNormal.systemDateToTargetDate(filter.start); // get the start of the day for the system timezone\n }\n\n nextState.start = startForSystemTimezone;\n nextState.indexFactory = dateCellTimingRelativeIndexFactory({ startsAt: startForSystemTimezone, timezone: systemTimezone });\n nextState.indexDayOfWeek = dateCellDayOfWeekFactory(startForSystemTimezone);\n }\n\n // attempt to re-apply the initial selection state once filter is applied\n if (nextState.initialSelectionState) {\n nextState = updateStateWithInitialSelectionState(nextState as CalendarScheduleSelectionState, nextState.initialSelectionState);\n }\n\n // re-calculate the selection given the filter\n const { inputStart, inputEnd } = nextState;\n\n if (inputStart && inputEnd) {\n nextState = updateStateWithChangedRange(nextState as CalendarScheduleSelectionState, { inputStart, inputEnd });\n }\n\n return nextState as CalendarScheduleSelectionState;\n}\n\nexport function updateStateWithTimezoneValue(state: CalendarScheduleSelectionState, timezone: Maybe<TimezoneString>): CalendarScheduleSelectionState {\n const { currentSelectionValue } = state;\n const timezoneNormal = timezone ? dateTimezoneUtcNormal({ timezone }) : undefined;\n\n if (timezoneNormal && currentSelectionValue) {\n // update the selection value to reflect the timezone changes.\n const { dateScheduleRange: currentDateCellScheduleRange } = currentSelectionValue;\n const start = timezoneNormal.targetDateToSystemDate(currentDateCellScheduleRange.start);\n const end = timezoneNormal.targetDateToSystemDate(currentDateCellScheduleRange.end);\n\n const newRange: DateCellScheduleDateRange = {\n ...currentSelectionValue.dateScheduleRange,\n start,\n end\n };\n\n return updateStateWithDateCellScheduleRangeValue({ ...state, outputTimezone: timezone, outputTimezoneNormal: timezoneNormal }, newRange);\n } else {\n return { ...state, outputTimezone: timezone, outputTimezoneNormal: timezoneNormal }; // no change in value\n }\n}\n\nexport function updateStateWithDateCellScheduleRangeValue(state: CalendarScheduleSelectionState, inputChange: Maybe<FullDateCellScheduleRangeInputDateRange>): CalendarScheduleSelectionState {\n const { currentSelectionValue, systemTimezone } = state;\n const currentDateCellScheduleRange = currentSelectionValue?.dateScheduleRange; // current range is always in system time\n let change: Maybe<Pick<DateCellScheduleDateRange, 'start' | 'end' | 'ex' | 'w' | 'timezone'>>;\n\n // When using timezones, always return from the start of the day. Inputs are converted to the system time and used as the start of the day.\n // Outputs remain accurate.\n\n if (inputChange) {\n // make sure a timezone is set. Input may not have a timezone attached. Default to system time.\n const inputChangeWithTimezoneSet = {\n ...inputChange,\n timezone: inputChange.timezone ?? systemTimezone\n };\n\n // calculate the schedule range\n const fullChange = fullDateCellScheduleRange({ dateCellScheduleRange: inputChangeWithTimezoneSet });\n const inputNormal = dateCellTimingTimezoneNormalInstance(fullChange);\n\n const startInSystemTz = inputNormal.systemDateToTargetDate(fullChange.start);\n const endInSystemTz = startOfDay(inputNormal.systemDateToTargetDate(fullChange.end));\n\n // convert the start/end to system time\n change = {\n start: startInSystemTz,\n end: endInSystemTz,\n w: fullChange.w,\n ex: fullChange.ex,\n timezone: fullChange.timezone\n };\n }\n\n const isSameValue = isSameDateCellScheduleDateRange(currentDateCellScheduleRange, change);\n\n if (isSameValue) {\n return state;\n } else {\n if (change != null) {\n const nextState: CalendarScheduleSelectionState = { ...state, inputStart: change.start, inputEnd: change.end, toggledIndexes: new Set(change.ex) };\n return updateStateWithChangedScheduleDays(finalizeNewCalendarScheduleSelectionState(nextState), expandDateCellScheduleDayCodes(change.w || '89'));\n } else {\n return noSelectionCalendarScheduleSelectionState(state); // clear selection, retain disabled days\n }\n }\n}\n\nexport function updateStateWithChangedDefaultScheduleDays(state: CalendarScheduleSelectionState, change: Maybe<Iterable<DateCellScheduleDayCode>>): CalendarScheduleSelectionState {\n const { defaultScheduleDays: currentDefaultScheduleDays } = state;\n const defaultScheduleDays = new Set(change ?? fullWeekDateCellScheduleDayCodes());\n\n if (dateCellScheduleDayCodesAreSetsEquivalent(defaultScheduleDays, currentDefaultScheduleDays)) {\n return state; // no change\n } else {\n return finalizeUpdateStateWithChangedScheduleDays(state, { ...state, defaultScheduleDays });\n }\n}\n\nexport function updateStateWithChangedScheduleDays(state: CalendarScheduleSelectionState, change: Maybe<Iterable<DateCellScheduleDayCode>>): CalendarScheduleSelectionState {\n const { scheduleDays: currentScheduleDays } = state;\n const scheduleDays = new Set(change ?? []);\n\n let newScheduleDays: Set<DateCellScheduleDayCode> | null | undefined;\n\n if (currentScheduleDays != null && change != null) {\n if (dateCellScheduleDayCodesAreSetsEquivalent(scheduleDays, currentScheduleDays)) {\n newScheduleDays = undefined; //no change\n } else {\n newScheduleDays = scheduleDays;\n }\n } else if (currentScheduleDays !== change) {\n newScheduleDays = change ? scheduleDays : null; // set the new one, or clear it\n }\n\n if (newScheduleDays === undefined) {\n return state;\n } else {\n return finalizeUpdateStateWithChangedScheduleDays(state, { ...state, scheduleDays: newScheduleDays ?? undefined });\n }\n}\n\nexport function updateStateWithSelectionMode(state: CalendarScheduleSelectionState, selectionMode: DbxCalendarScheduleSelectionStoreSelectionMode): CalendarScheduleSelectionState {\n const { selectionMode: currentSelectionMode } = state;\n\n if (currentSelectionMode !== selectionMode) {\n const nextState = { ...state, selectionMode };\n\n if (selectionMode === 'multiple') {\n return nextState;\n } else {\n const currentSelectionRange = computeCalendarScheduleSelectionDateCellRange(nextState);\n return currentSelectionRange ? updateStateWithChangedDates(nextState, { set: [currentSelectionRange.i], invertSetBehavior: true }) : nextState;\n }\n } else {\n return state;\n }\n}\n\nexport function finalizeUpdateStateWithChangedScheduleDays(previousState: CalendarScheduleSelectionState, nextState: CalendarScheduleSelectionState): CalendarScheduleSelectionState {\n const previousScheduleDays = previousState.effectiveScheduleDays;\n const nextScheduleDays = nextState.scheduleDays ?? nextState.defaultScheduleDays;\n\n if (dateCellScheduleDayCodesAreSetsEquivalent(nextScheduleDays, previousScheduleDays)) {\n return nextState; // the default or input schedule changed but the schedule is still the same, so no need for an update.\n } else {\n const effectiveScheduleDays = new Set(simplifyDateCellScheduleDayCodes(nextScheduleDays));\n const allowedDaysOfWeek = expandDateCellScheduleDayCodesToDayOfWeekSet(nextScheduleDays);\n\n return finalizeNewCalendarScheduleSelectionState({\n ...nextState,\n // update the effective schedule days and allowed days of week\n effectiveScheduleDays,\n allowedDaysOfWeek\n });\n }\n}\n\nexport interface CalendarScheduleSelectionStateDatesChange {\n reset?: true;\n toggle?: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>;\n add?: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>;\n remove?: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>;\n set?: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>;\n selectAll?: AllOrNoneSelection;\n /**\n * Inverts the set date changing behavior so that the set input is treated as items that should be retained instead of excluded.\n *\n * Ignored when set is not used. Ignored for selectAll.\n */\n invertSetBehavior?: boolean;\n}\n\nexport function updateStateWithChangedDates(state: CalendarScheduleSelectionState, change: CalendarScheduleSelectionStateDatesChange): CalendarScheduleSelectionState {\n const { selectionMode, allowedDaysOfWeek, indexFactory, indexDayOfWeek, inputStart: currentInputStart, inputEnd: currentInputEnd, minMaxDateRange, filter } = state;\n const { start: minDateFromFilter, end: maxDateFromFilter } = calendarScheduleMinAndMaxDateRangeRelativeToFilter(state);\n let inputStart = currentInputStart;\n let inputEnd = currentInputEnd;\n\n /**\n * This is a set of indexes that are internally \"selected\" so that they are excluded from the inputStart/inputEnd date range.\n *\n * Do not confuse this with the actual indexes that are selected.\n */\n let toggledIndexes: Set<DateCellIndex>;\n\n function asIndexes(indexes: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>): DateCellIndex[] {\n return iterableToArray(indexes).map(indexFactory);\n }\n\n // When using selection mode \"single\" we update the change to reflect the single selection.\n if (selectionMode === 'single') {\n function setFromFirstValue(input: IterableOrValue<DateCellTimingRelativeIndexFactoryInput>): Set<DateCellTimingRelativeIndexFactoryInput> {\n const firstValue = isIterable(input) ? firstValueFromIterable(input) : input;\n const set = new Set<DateCellTimingRelativeIndexFactoryInput>();\n\n if (firstValue != null) {\n set.add(firstValue);\n }\n\n return set;\n }\n\n if (change.set) {\n change = { set: setFromFirstValue(change.set), invertSetBehavior: true };\n } else if (change.toggle) {\n const nextSet = setFromFirstValue(change.toggle);\n\n if (nextSet.size) {\n const firstSetValueIndex = indexFactory(firstValueFromIterable(nextSet) as DateCellTimingRelativeIndexFactoryInput);\n\n if (state.toggledIndexes.has(firstSetValueIndex) || (inputStart && indexFactory(inputStart) === firstSetValueIndex)) {\n nextSet.clear(); // clear with the next set\n }\n\n change = { set: nextSet, invertSetBehavior: true };\n }\n }\n\n // set, selectAll, add, and remove are treated as they normally are.\n }\n\n if (change.reset || change.selectAll != null || change.set != null) {\n let set: Maybe<IterableOrValue<DateCellTimingRelativeIndexFactoryInput>> = change.set ?? [];\n const selectAll: Maybe<AllOrNoneSelection> = change.reset === true ? state.initialSelectionState : change.selectAll;\n\n switch (selectAll) {\n case 'all':\n if (minDateFromFilter != null && maxDateFromFilter != null) {\n inputStart = minDateFromFilter;\n inputEnd = maxDateFromFilter;\n set = [];\n }\n break;\n case 'none':\n inputStart = null;\n inputEnd = null;\n set = [];\n break;\n }\n\n const inputSetIndexes = asIndexes(set);\n toggledIndexes = new Set(inputSetIndexes);\n\n if (change.invertSetBehavior && !selectAll) {\n let minIndex: Maybe<number>;\n let maxIndex: Maybe<number>;\n\n if (minDateFromFilter != null && maxDateFromFilter != null) {\n // only applicable when the filter is set.\n minIndex = indexFactory(minDateFromFilter);\n maxIndex = indexFactory(maxDateFromFilter);\n\n inputStart = minDateFromFilter;\n inputEnd = maxDateFromFilter;\n } else {\n // when the filter is not set, use the least and greatest indexes from the input set.\n const minAndMax = minAndMaxNumber(inputSetIndexes);\n\n if (minAndMax != null) {\n minIndex = minAndMax.min;\n maxIndex = minAndMax.max;\n const dateFactory = dateCellTimingStartDateFactory(indexFactory._timing);\n\n inputStart = dateFactory(minAndMax.min);\n inputEnd = minAndMax.min === minAndMax.max ? inputStart : dateFactory(minAndMax.max);\n } else {\n // equivalent to an empty set / using \"none\" with selectAll.\n inputStart = null;\n inputEnd = null;\n toggledIndexes = new Set();\n }\n }\n\n // toggledIndexes should not include any indexes we want to include\n if (minIndex != null && maxIndex != null) {\n toggledIndexes = new Set(range(minIndex, maxIndex + 1).filter((x) => !toggledIndexes.has(x)));\n }\n }\n } else {\n toggledIndexes = new Set(state.toggledIndexes); // copy the set\n\n if (change.toggle) {\n const allowedToToggle = asIndexes(change.toggle).filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));\n toggleInSet(toggledIndexes, allowedToToggle);\n }\n\n let addToExclusion: Maybe<IterableOrValue<DateCellTimingRelativeIndexFactoryInput>>;\n let removeFromExclusion: Maybe<IterableOrValue<DateCellTimingRelativeIndexFactoryInput>>;\n\n if (change.add) {\n if (change.invertSetBehavior) {\n addToExclusion = change.add;\n } else {\n removeFromExclusion = change.add;\n }\n }\n\n if (change.remove) {\n if (change.invertSetBehavior) {\n removeFromExclusion = change.remove;\n } else {\n addToExclusion = change.remove;\n }\n }\n\n if (addToExclusion) {\n removeFromSet(toggledIndexes, asIndexes(addToExclusion));\n }\n\n if (removeFromExclusion) {\n addToSet(toggledIndexes, asIndexes(removeFromExclusion));\n }\n }\n\n const nextState = { ...state, inputStart, inputEnd, toggledIndexes };\n nextState.isEnabledDay = isEnabledDayInCalendarScheduleSelectionState(nextState);\n\n // Recalculate the range and simplified to exclusions\n const rangeAndExclusion = computeScheduleSelectionRangeAndExclusion(nextState);\n\n if (rangeAndExclusion) {\n return finalizeNewCalendarScheduleSelectionState({ ...nextState, toggledIndexes: new Set(rangeAndExclusion.excluded), inputStart: rangeAndExclusion.start, inputEnd: rangeAndExclusion.end });\n } else {\n // no selected days\n return noSelectionCalendarScheduleSelectionState(nextState);\n }\n}\n\nexport function noSelectionCalendarScheduleSelectionState(state: CalendarScheduleSelectionState): CalendarScheduleSelectionState {\n return finalizeNewCalendarScheduleSelectionState({ ...state, toggledIndexes: new Set(), inputStart: null, inputEnd: null });\n}\n\nexport function updateStateWithChangedRange(state: CalendarScheduleSelectionState, change: CalendarScheduleSelectionInputDateRange): CalendarScheduleSelectionState {\n const { inputStart: currentInputStart, inputEnd: currentInputEnd, indexFactory } = state;\n const { start: minDate, end: maxDate } = calendarScheduleMinAndMaxDateRange(state);\n\n const inputStart: Date = startOfDay(change.inputStart);\n const inputEnd: Date = startOfDay(change.inputEnd); // midnight of the last day\n\n const isValidRange = minDate != null || maxDate != null ? isDateInDateRangeFunction({ start: minDate ?? undefined, end: maxDate ?? undefined }) : () => true;\n\n if (!isValidRange(inputStart) || !isValidRange(inputEnd) || (isSameDateDay(inputStart, currentInputStart) && isSameDateDay(inputEnd, currentInputEnd))) {\n return state; // if no change, return the current state.\n }\n\n // retain all indexes that are within the new range\n const minIndex = indexFactory(inputStart);\n const maxIndex = indexFactory(inputEnd) + 1;\n\n const currentIndexes: DateCellIndex[] = Array.from(state.toggledIndexes);\n const isInCurrentRange = isIndexNumberInIndexRangeFunction({ minIndex, maxIndex });\n const excludedIndexesInNewRange = currentIndexes.filter(isInCurrentRange);\n const toggledIndexes = new Set(excludedIndexesInNewRange);\n\n const nextState = { ...state, toggledIndexes, inputStart, inputEnd };\n return finalizeNewCalendarScheduleSelectionState(nextState);\n}\n\nexport function finalizeNewCalendarScheduleSelectionState(nextState: Building<CalendarScheduleSelectionState>): CalendarScheduleSelectionState {\n nextState.isEnabledDay = isEnabledDayInCalendarScheduleSelectionState(nextState as CalendarScheduleSelectionState);\n nextState.currentSelectionValue = computeScheduleSelectionValue(nextState as CalendarScheduleSelectionState);\n return nextState as CalendarScheduleSelectionState;\n}\n\nexport function isEnabledDayInCalendarScheduleSelectionState(state: CalendarScheduleSelectionState): DecisionFunction<DateCellTimingRelativeIndexFactoryInput> {\n const { allowedDaysOfWeek, indexFactory, inputStart, inputEnd, indexDayOfWeek, systemTimezone } = state;\n let isInStartAndEndRange: IsDateWithinDateCellRangeFunction;\n\n if (inputStart && inputEnd) {\n isInStartAndEndRange = isDateWithinDateCellRangeFunction({ startsAt: { startsAt: state.start, timezone: systemTimezone }, range: { start: inputStart, end: inputEnd } });\n } else {\n isInStartAndEndRange = () => false;\n }\n\n return (input: DateCellTimingRelativeIndexFactoryInput) => {\n const index = indexFactory(input);\n const dayOfWeek = indexDayOfWeek(index);\n\n const isInSelectedRange = isInStartAndEndRange(index);\n const isSelected = state.toggledIndexes.has(index);\n const isAllowedDayOfWeek = allowedDaysOfWeek.has(dayOfWeek);\n\n const result = isAllowedDayOfWeek && ((isInSelectedRange && !isSelected) || (isSelected && !isInSelectedRange));\n return result;\n };\n}\n\nexport function computeScheduleSelectionValue(state: CalendarScheduleSelectionState): Maybe<CalendarScheduleSelectionValue> {\n const { indexFactory: systemIndexFactory, allowedDaysOfWeek, effectiveScheduleDays, indexDayOfWeek, computeSelectionResultRelativeToFilter, filter, systemTimezone } = state;\n let timezone = systemTimezone;\n const rangeAndExclusion = computeScheduleSelectionRangeAndExclusion(state);\n\n if (rangeAndExclusion == null) {\n return null;\n }\n\n const { start: rangeStart, end: rangeEnd, excluded: allExcluded, dateCellRange } = rangeAndExclusion;\n let filterOffsetExcludedRange: DateCellIndex[] = [];\n let indexOffset = dateCellRange.i;\n\n let start = rangeStart;\n let end = rangeEnd;\n\n // If computeSelectionResultRelativeToFilter is true, then we need to offset the values to be relative to that start.\n if (computeSelectionResultRelativeToFilter && filter?.start) {\n start = filter.start; // always start at the filter's start date\n let startInSystemTimezone = start;\n\n if (filter.timezone) {\n timezone = filter.timezone;\n const filterNormal = dateTimezoneUtcNormal(timezone);\n end = filterNormal.startOfDayInTargetTimezone(end);\n startInSystemTimezone = filterNormal.systemDateToTargetDate(start); // convert the start to the system timezone normal for deriving the index\n }\n\n const rangeStartIndex = systemIndexFactory(rangeStart);\n const startIndex = systemIndexFactory(startInSystemTimezone);\n const filterStartIndexOffset = rangeStartIndex - startIndex;\n filterOffsetExcludedRange = range(0, filterStartIndexOffset);\n indexOffset = indexOffset - filterStartIndexOffset;\n }\n\n const excluded = computeSelectionResultRelativeToFilter\n ? allExcluded.filter((x) => {\n const isExcludedIndex = allowedDaysOfWeek.has(indexDayOfWeek(x)); // ???\n return isExcludedIndex;\n })\n : allExcluded;\n\n const offsetExcluded: DateCellIndex[] = excluded.map((x) => x - indexOffset); // set to the proper offset\n\n const ex = [...filterOffsetExcludedRange, ...offsetExcluded];\n\n const w: DateCellScheduleEncodedWeek = dateCellScheduleEncodedWeek(effectiveScheduleDays);\n const d: DateCellIndex[] = []; // \"included\" blocks are never used/calculated.\n\n // Always ensure the end is after or equal to the start.\n if (isBefore(end, start)) {\n end = start; // end is start\n }\n\n const dateScheduleRange: DateCellScheduleDateRange = {\n timezone,\n start,\n end,\n w,\n d,\n ex\n };\n\n return {\n dateScheduleRange,\n minMaxRange: { start, end }\n };\n}\n\n/**\n * The selected date range and the corresponding cell range.\n */\nexport interface CalendarScheduleSelectionRangeAndExclusion extends DateRange {\n /**\n * Corresponds to the start and end indexes in the date range.\n */\n dateCellRange: DateCellRangeWithRange;\n /**\n * All excluded indexes.\n */\n excluded: DateCellIndex[];\n}\n\nexport function computeScheduleSelectionRangeAndExclusion(state: CalendarScheduleSelectionState): Maybe<CalendarScheduleSelectionRangeAndExclusion> {\n const { start: currentStart, isEnabledDay, isEnabledFilterDay, systemTimezone } = state;\n\n const dateFactory = dateCellTimingStartDateFactory({ startsAt: currentStart, timezone: systemTimezone });\n const dateCellRange = computeCalendarScheduleSelectionDateCellRange(state);\n\n if (dateCellRange == null) {\n return null; // returns null if no items are selected.\n }\n\n const start = dateFactory(dateCellRange.i);\n const end = dateFactory(dateCellRange.to);\n\n const excluded: DateCellIndex[] = range(dateCellRange.i, dateCellRange.to + 1).filter((x) => {\n const isExcludedIndex = !isEnabledDay(x) || !isEnabledFilterDay(x);\n return isExcludedIndex;\n });\n\n const result: CalendarScheduleSelectionRangeAndExclusion = {\n dateCellRange,\n start,\n end,\n excluded\n };\n\n return result;\n}\n\nexport function computeCalendarScheduleSelectionRange(state: CalendarScheduleSelectionState): Maybe<DateRange> {\n const dateFactory = dateCellTimingDateFactory({ startsAt: state.start, timezone: state.systemTimezone });\n const dateCellRange = computeCalendarScheduleSelectionDateCellRange(state);\n const dateRange: Maybe<DateRange> = dateCellRange != null ? { start: dateFactory(dateCellRange.i), end: dateFactory(dateCellRange.to as number) } : undefined;\n return dateRange;\n}\n\nexport function computeCalendarScheduleSelectionDateCellRange(state: CalendarScheduleSelectionState): Maybe<DateCellRangeWithRange> {\n const { allowedDaysOfWeek, indexFactory, inputStart, inputEnd, indexDayOfWeek, isEnabledDay, isEnabledFilterDay } = state;\n const enabledExclusionIndexes = Array.from(state.toggledIndexes).filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));\n const minAndMaxSelectedValues = minAndMaxNumber(enabledExclusionIndexes);\n\n let startRange: Maybe<DateCellIndex>;\n let endRange: Maybe<DateCellIndex>;\n\n if (minAndMaxSelectedValues) {\n startRange = minAndMaxSelectedValues.min;\n endRange = minAndMaxSelectedValues.max;\n }\n\n if (inputStart != null && inputEnd != null) {\n const inputStartIndex = indexFactory(inputStart);\n const inputEndIndex = indexFactory(inputEnd);\n\n startRange = startRange != null ? Math.min(inputStartIndex, startRange) : inputStartIndex;\n endRange = endRange != null ? Math.max(inputEndIndex, endRange) : inputEndIndex;\n }\n\n if (startRange != null && endRange != null) {\n const scanStartIndex = startRange;\n const scanEndIndex = endRange;\n\n // clear start and end\n startRange = undefined;\n endRange = undefined;\n\n // if the min is equal to the start index, then we are in the range and need to iterate dates until we find one that is not selected/excluded.\n for (let i = scanStartIndex; i <= scanEndIndex; i += 1) {\n if (isEnabledFilterDay(i) && isEnabledDay(i)) {\n startRange = i;\n break;\n }\n }\n\n // same with the max\n for (let i = scanEndIndex; i >= scanStartIndex; i -= 1) {\n if (isEnabledFilterDay(i) && isEnabledDay(i)) {\n endRange = i;\n break;\n }\n }\n }\n\n if (startRange != null && endRange != null) {\n return { i: startRange, to: endRange };\n } else {\n return undefined;\n }\n}\n","import { Directive, Injectable, Injector, Optional, Provider, SkipSelf, inject } from '@angular/core';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\n\n/**\n * Token used by provideCalendarScheduleSelectionStoreIfDoesNotExist() to prevent injecting a parent DbxCalendarScheduleSelectionStore into the child view.\n */\n@Injectable()\nexport class DbxCalendarScheduleSelectionStoreProviderBlock {\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore, { skipSelf: true });\n}\n\n@Directive({\n selector: '[dbxCalendarScheduleSelectionStoreParentBlocker]',\n providers: [DbxCalendarScheduleSelectionStoreProviderBlock],\n standalone: true\n})\nexport class DbxCalendarScheduleSelectionStoreInjectionBlockDirective {}\n\n/**\n * Creates a Provider that initializes a new DbxCalendarScheduleSelectionStore if a parent does not exist.\n *\n * If a DbxCalendarScheduleSelectionStoreInjectionBlock is available in the context, and references the same dbxCalendarScheduleSelectionStore that is attempting to be injected, a new DbxCalendarScheduleSelectionStore is created.\n *\n * @returns\n */\nexport function provideCalendarScheduleSelectionStoreIfParentIsUnavailable(): Provider {\n return {\n provide: DbxCalendarScheduleSelectionStore,\n useFactory: (parentInjector: Injector, dbxCalendarScheduleSelectionStoreInjectionBlock?: DbxCalendarScheduleSelectionStoreProviderBlock, dbxCalendarScheduleSelectionStore?: DbxCalendarScheduleSelectionStore) => {\n if (!dbxCalendarScheduleSelectionStore || (dbxCalendarScheduleSelectionStore && dbxCalendarScheduleSelectionStoreInjectionBlock != null && dbxCalendarScheduleSelectionStoreInjectionBlock.dbxCalendarScheduleSelectionStore === dbxCalendarScheduleSelectionStore)) {\n // create a new dbxCalendarScheduleSelectionStore to use\n const injector = Injector.create({ providers: [{ provide: DbxCalendarScheduleSelectionStore }], parent: parentInjector });\n dbxCalendarScheduleSelectionStore = injector.get(DbxCalendarScheduleSelectionStore);\n }\n\n return dbxCalendarScheduleSelectionStore;\n },\n deps: [Injector, [new Optional(), DbxCalendarScheduleSelectionStoreProviderBlock], [new Optional(), new SkipSelf(), DbxCalendarScheduleSelectionStore]]\n };\n}\n","import { flexLayoutWrapper, toggleField } from '@dereekb/dbx-form';\nimport { getDaysOfWeekNames } from '@dereekb/util';\n\nexport function dbxScheduleSelectionCalendarDateDaysFormFields() {\n const fields = dbxScheduleSelectionCalendarDateDaysFormDayFields();\n return [flexLayoutWrapper(fields, { relative: true, size: 3 })];\n}\n\nexport function dbxScheduleSelectionCalendarDateDaysFormDayFields() {\n return getDaysOfWeekNames(false).map((dayOfWeekName: string) => {\n return toggleField({\n key: dayOfWeekName.toLowerCase(),\n label: dayOfWeekName\n });\n });\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { AbstractSyncFormlyFormDirective, dbxFormlyFormComponentProviders, DBX_FORMLY_FORM_COMPONENT_TEMPLATE, DbxFormlyFormComponentImportsModule, DbxFormFormlyWrapperModule, DbxFormFormlyBooleanFieldModule } from '@dereekb/dbx-form';\nimport { EnabledDays } from '@dereekb/util';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { dbxScheduleSelectionCalendarDateDaysFormFields } from './calendar.schedule.selection.form';\n\nexport type DbxScheduleSelectionCalendarDateDaysFormValue = EnabledDays;\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-days-form',\n template: DBX_FORMLY_FORM_COMPONENT_TEMPLATE,\n providers: dbxFormlyFormComponentProviders(),\n imports: [DbxFormlyFormComponentImportsModule, DbxFormFormlyWrapperModule, DbxFormFormlyBooleanFieldModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDateDaysFormComponent extends AbstractSyncFormlyFormDirective<DbxScheduleSelectionCalendarDateDaysFormValue> {\n readonly fields: FormlyFieldConfig[] = dbxScheduleSelectionCalendarDateDaysFormFields();\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { dateCellScheduleDayCodesAreSetsEquivalent, dateCellScheduleDayCodesFromEnabledDays, enabledDaysFromDateCellScheduleDayCodes } from '@dereekb/date';\nimport { WorkUsingObservable, IsModifiedFunction } from '@dereekb/rxjs';\nimport { DbxCalendarStore } from '@dereekb/dbx-web/calendar';\nimport { map, shareReplay, Observable, of } from 'rxjs';\nimport { DbxScheduleSelectionCalendarDateDaysFormComponent, DbxScheduleSelectionCalendarDateDaysFormValue } from './calendar.schedule.selection.days.form.component';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { DbxActionModule } from '@dereekb/dbx-web';\nimport { DbxActionFormDirective, DbxFormSourceDirective } from '@dereekb/dbx-form';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-days',\n template: `\n <div class=\"dbx-schedule-selection-calendar-date-days\" dbxAction dbxActionAutoTrigger dbxActionEnforceModified [useInstantTriggerPreset]=\"true\" [dbxActionHandler]=\"updateScheduleDays\">\n <dbx-schedule-selection-calendar-date-days-form dbxActionForm [dbxFormSource]=\"template$\" [dbxActionFormIsModified]=\"isFormModified\"></dbx-schedule-selection-calendar-date-days-form>\n </div>\n `,\n imports: [DbxScheduleSelectionCalendarDateDaysFormComponent, DbxFormSourceDirective, DbxActionModule, DbxActionFormDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDateDaysComponent {\n readonly dbxCalendarStore = inject(DbxCalendarStore);\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n\n readonly template$: Observable<DbxScheduleSelectionCalendarDateDaysFormValue> = this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map(enabledDaysFromDateCellScheduleDayCodes), shareReplay(1));\n\n readonly isFormModified: IsModifiedFunction<DbxScheduleSelectionCalendarDateDaysFormValue> = (value: DbxScheduleSelectionCalendarDateDaysFormValue) => {\n const newSetValue = new Set(dateCellScheduleDayCodesFromEnabledDays(value));\n return this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(\n map((currentSet) => {\n const result = !dateCellScheduleDayCodesAreSetsEquivalent(newSetValue, currentSet);\n return result;\n })\n );\n };\n\n readonly updateScheduleDays: WorkUsingObservable<DbxScheduleSelectionCalendarDateDaysFormValue> = (value) => {\n this.dbxCalendarScheduleSelectionStore.setScheduleDays(new Set(dateCellScheduleDayCodesFromEnabledDays(value)));\n return of(true);\n };\n}\n","import { SubscriptionObject } from '@dereekb/rxjs';\nimport { Component, OnDestroy, OnInit, inject, viewChild, input, effect, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { DbxCalendarStore } from '@dereekb/dbx-web/calendar';\nimport { FormGroup, FormControl, AbstractControl, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { type Maybe } from '@dereekb/util';\nimport { switchMap, throttleTime, distinctUntilChanged, filter, BehaviorSubject, startWith, Observable, map, shareReplay, combineLatest, EMPTY } from 'rxjs';\nimport { isSameDateDay } from '@dereekb/date';\nimport { MatFormFieldDefaultOptions, MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldModule } from '@angular/material/form-field';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { DateFilterFn, MatDateRangePicker, MatDatepickerModule } from '@angular/material/datepicker';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { DbxButtonSpacerDirective } from '@dereekb/dbx-web';\nimport { TimezoneAbbreviationPipe } from '@dereekb/dbx-core';\n\ninterface RangeValue {\n readonly start?: Maybe<Date>;\n readonly end?: Maybe<Date>;\n}\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-range',\n templateUrl: './calendar.schedule.selection.range.component.html',\n imports: [MatFormFieldModule, FormsModule, ReactiveFormsModule, DbxButtonSpacerDirective, MatDatepickerModule, TimezoneAbbreviationPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDateRangeComponent implements OnInit, OnDestroy {\n readonly dbxCalendarStore = inject(DbxCalendarStore);\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n readonly matFormFieldDefaultOptions = inject<MatFormFieldDefaultOptions>(MAT_FORM_FIELD_DEFAULT_OPTIONS, { optional: true });\n\n readonly picker = viewChild.required<MatDateRangePicker<Date>>('picker');\n\n readonly required = input<boolean>(false);\n readonly openPickerOnTextClick = input<boolean>(true);\n\n readonly label = input<Maybe<string>>('Enter a date range');\n readonly hint = input<Maybe<string>>();\n\n readonly disabled = input<Maybe<boolean>>();\n readonly showCustomize = input<boolean>(false);\n\n readonly timezone$ = this.dbxCalendarScheduleSelectionStore.effectiveOutputTimezone$;\n\n protected readonly _disabledEffect = effect(() => {\n const disabled = this.disabled();\n if (disabled) {\n this.range.disable();\n } else {\n this.range.enable();\n }\n });\n\n private readonly _pickerOpened = new BehaviorSubject<boolean>(false);\n\n private readonly _syncSub = new SubscriptionObject();\n private readonly _valueSub = new SubscriptionObject();\n\n readonly range = new FormGroup({\n start: new FormControl<Maybe<Date>>(null),\n end: new FormControl<Maybe<Date>>(null)\n });\n\n readonly errorStateMatcher: ErrorStateMatcher = {\n isErrorState: (control: AbstractControl | null, form) => {\n if (control) {\n return (control.invalid && (control.dirty || control.touched)) || (control.touched && this.range.invalid);\n } else {\n return false;\n }\n }\n };\n\n readonly minDate$ = this.dbxCalendarScheduleSelectionStore.minDate$;\n readonly maxDate$ = this.dbxCalendarScheduleSelectionStore.maxDate$;\n\n readonly timezoneReleventDate$ = this.dbxCalendarScheduleSelectionStore.currentDateRange$.pipe(\n map((currentDateRange) => {\n return (currentDateRange ? (currentDateRange.start ?? currentDateRange.end) : undefined) ?? new Date();\n }),\n shareReplay(1)\n );\n\n readonly isCustomized$ = this.dbxCalendarScheduleSelectionStore.isCustomized$;\n readonly currentErrorMessage$ = this.range.statusChanges.pipe(\n filter((x) => x === 'INVALID' || x === 'VALID'),\n map((x) => {\n let currentErrorMessage: string | undefined;\n\n if (x === 'INVALID') {\n const { start, end } = this.range.controls;\n\n if (this.range.hasError('required')) {\n currentErrorMessage = 'Date range is required';\n } else if (start.hasError('matStartDateInvalid')) {\n currentErrorMessage = 'Invalid start date';\n } else if (start.hasError('matDatepickerMin')) {\n currentErrorMessage = 'Start date is too early';\n } else if (start.hasError('matDatepickerMax')) {\n currentErrorMessage = 'Start date is too late';\n } else if (end.hasError('matStartDateInvalid')) {\n currentErrorMessage = 'Invalid end date';\n } else if (end.hasError('matDatepickerMin')) {\n currentErrorMessage = 'End date is too early';\n } else if (end.hasError('matDatepickerMax')) {\n currentErrorMessage = 'End date is too late';\n }\n }\n\n return currentErrorMessage;\n }),\n shareReplay(1)\n );\n\n readonly datePickerFilter$: Observable<DateFilterFn<Date>> = combineLatest([this.dbxCalendarScheduleSelectionStore.isEnabledFilterDayFunction$, this.dbxCalendarScheduleSelectionStore.isInAllowedDaysOfWeekFunction$]).pipe(\n map(([isEnabled, isAllowedDayOfWeek]) => {\n const fn = (date: Date | null) => {\n const result = date ? isAllowedDayOfWeek(date) && isEnabled(date) : true;\n return result;\n };\n\n return fn;\n }),\n shareReplay(1)\n );\n\n readonly timezoneSignal = toSignal(this.timezone$);\n readonly timezoneReleventDateSignal = toSignal(this.timezoneReleventDate$, { initialValue: new Date() });\n readonly isCustomizedSignal = toSignal(this.isCustomized$, { initialValue: false });\n\n readonly showCustomLabelSignal = computed(() => this.showCustomize() && this.isCustomizedSignal());\n readonly currentErrorMessageSignal = toSignal(this.currentErrorMessage$);\n readonly datePickerFilterSignal = toSignal(this.datePickerFilter$, { initialValue: (() => true) as DateFilterFn<Date> });\n\n protected readonly _requiredUpdateValidatorsEffect = effect(() => {\n const validators = this.required()\n ? [\n (control: AbstractControl) => {\n const range = control.value;\n\n if (!range || !range.start || !range.end) {\n return { required: true };\n }\n\n return null;\n }\n ]\n : [];\n\n this.range.setValidators(validators);\n });\n\n ngOnInit(): void {\n this._syncSub.subscription = this.dbxCalendarScheduleSelectionStore.currentInputRange$.subscribe((x) => {\n this.range.setValue({\n start: x?.inputStart ?? null,\n end: x?.inputEnd ?? null\n });\n });\n\n this._valueSub.subscription = this._pickerOpened\n .pipe(\n distinctUntilChanged(),\n switchMap((opened) => {\n let obs: Observable<RangeValue>;\n\n if (opened) {\n obs = EMPTY;\n } else {\n obs = this.range.valueChanges.pipe(startWith(this.range.value));\n }\n\n return obs;\n }),\n filter((x) => Boolean(x.start && x.end)),\n distinctUntilChanged((a, b) => isSameDateDay(a.start, b.start) && isSameDateDay(a.end, b.end)),\n throttleTime(100, undefined, { trailing: true })\n )\n .subscribe((x) => {\n if (x.start && x.end) {\n this.dbxCalendarScheduleSelectionStore.setInputRange({ inputStart: x.start, inputEnd: x.end });\n }\n });\n }\n\n ngOnDestroy(): void {\n this._syncSub.destroy();\n this._valueSub.destroy();\n }\n\n clickedDateRangeInput() {\n if (this.openPickerOnTextClick()) {\n const picker = this.picker();\n if (picker) {\n picker.open();\n }\n }\n }\n\n pickerOpened() {\n this._pickerOpened.next(true);\n }\n\n pickerClosed() {\n this._pickerOpened.next(false);\n }\n}\n","<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <div class=\"dbx-schedule-selection-calendar-date-range-field-content\">\n <!-- Primary Content -->\n <div class=\"dbx-flex-bar\">\n @if (showCustomLabelSignal()) {\n <div class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n }\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle class=\"mat-datepicker-button-highlight\" matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input (click)=\"clickedDateRangeInput()\" [required]=\"required()\" [dateFilter]=\"datePickerFilterSignal()\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n @if (timezoneSignal()) {\n <span class=\"dbx-schedule-selection-timezone dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezoneSignal() | timezoneAbbreviation: timezoneReleventDateSignal() }}</span>\n }\n @if (showCustomize()) {\n <div>\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n }\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n </div>\n <!-- Custom Content -->\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n @if (currentErrorMessageSignal()) {\n <mat-error>{{ currentErrorMessageSignal() }}</mat-error>\n }\n <mat-hint>{{ hint() }}</mat-hint>\n</mat-form-field>\n","import { DbxScheduleSelectionCalendarDateDaysComponent } from './calendar.schedule.selection.days.component';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DbxContentContainerDirective, DbxLabelBlockComponent } from '@dereekb/dbx-web';\nimport { DbxScheduleSelectionCalendarDateRangeComponent } from './calendar.schedule.selection.range.component';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-popover-content',\n template: `\n <dbx-content-container padding=\"min\" topPadding=\"normal\">\n <dbx-schedule-selection-calendar-date-range [openPickerOnTextClick]=\"false\"></dbx-schedule-selection-calendar-date-range>\n <dbx-label-block header=\"Allowed Days Of Week\">\n <dbx-schedule-selection-calendar-date-days></dbx-schedule-selection-calendar-date-days>\n </dbx-label-block>\n </dbx-content-container>\n `,\n imports: [DbxContentContainerDirective, DbxScheduleSelectionCalendarDateRangeComponent, DbxLabelBlockComponent, DbxScheduleSelectionCalendarDateDaysComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDatePopoverContentComponent {}\n","import { ChangeDetectionStrategy, Component, ElementRef, Injector } from '@angular/core';\nimport { DbxPopoverKey, AbstractPopoverDirective, DbxPopoverService, DbxPopoverInteractionModule } from '@dereekb/dbx-web';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { DbxScheduleSelectionCalendarDatePopoverContentComponent } from './calendar.schedule.selection.popover.content.component';\n\nexport const DEFAULT_SCHEDULE_SELECTION_CALENDAR_DATE_POPOVER_KEY = 'calendarselection';\n\nexport interface DbxScheduleSelectionCalendarDatePopoverConfig {\n origin: ElementRef;\n injector: Injector;\n}\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-popover',\n template: `\n <dbx-popover-content>\n <dbx-popover-scroll-content>\n <dbx-schedule-selection-calendar-date-popover-content></dbx-schedule-selection-calendar-date-popover-content>\n </dbx-popover-scroll-content>\n </dbx-popover-content>\n `,\n imports: [DbxPopoverInteractionModule, DbxScheduleSelectionCalendarDatePopoverContentComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDatePopoverComponent extends AbstractPopoverDirective<void> {\n static openPopover(popoverService: DbxPopoverService, { origin, injector }: DbxScheduleSelectionCalendarDatePopoverConfig, popoverKey?: DbxPopoverKey): NgPopoverRef<any, number> {\n return popoverService.open({\n key: popoverKey ?? DEFAULT_SCHEDULE_SELECTION_CALENDAR_DATE_POPOVER_KEY,\n origin,\n componentClass: DbxScheduleSelectionCalendarDatePopoverComponent,\n injector\n });\n }\n}\n","import { DbxScheduleSelectionCalendarDatePopoverComponent } from './calendar.schedule.selection.popover.component';\nimport { ChangeDetectionStrategy, Component, ElementRef, Injector, inject, viewChild } from '@angular/core';\nimport { DbxPopoverService, DbxButtonComponent } from '@dereekb/dbx-web';\nimport { map, shareReplay } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { formatToMonthDayString } from '@dereekb/date';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-popover-button',\n template: `\n <dbx-button #buttonPopoverOrigin icon=\"date_range\" [disabled]=\"disabledSignal()\" [raised]=\"true\" color=\"accent\" [text]=\"buttonTextSignal()\" (buttonClick)=\"openPopover()\"></dbx-button>\n `,\n imports: [DbxButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDatePopoverButtonComponent {\n readonly injector = inject(Injector);\n readonly popoverService = inject(DbxPopoverService);\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n\n readonly buttonPopoverOrigin = viewChild.required<string, ElementRef<HTMLButtonElement>>('buttonPopoverOrigin', { read: ElementRef });\n\n readonly disabled$ = this.dbxCalendarScheduleSelectionStore.isViewReadonly$;\n readonly buttonText$ = this.dbxCalendarScheduleSelectionStore.currentDateRange$.pipe(\n map((x) => {\n if (x?.start && x.end) {\n const startString = formatToMonthDayString(x.start);\n const endString = formatToMonthDayString(x.end);\n return startString === endString ? startString : `${formatToMonthDayString(x.start)} - ${formatToMonthDayString(x.end)}`;\n } else {\n return 'Pick a Date Range';\n }\n }),\n shareReplay(1)\n );\n\n readonly disabledSignal = toSignal(this.disabled$, { initialValue: false });\n readonly buttonTextSignal = toSignal(this.buttonText$, { initialValue: 'Pick a Date Range' });\n\n openPopover() {\n const buttonElement = this.buttonPopoverOrigin();\n if (buttonElement) {\n DbxScheduleSelectionCalendarDatePopoverComponent.openPopover(this.popoverService, { origin: buttonElement, injector: this.injector });\n }\n }\n}\n","import { Component, inject, ChangeDetectionStrategy, input, computed, Signal } from '@angular/core';\nimport { CalendarMonthViewDay } from 'angular-calendar';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { CalendarScheduleSelectionCellContent, CalendarScheduleSelectionMetadata } from './calendar.schedule.selection';\nimport { MatIconModule } from '@angular/material/icon';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { map, shareReplay, switchMap } from 'rxjs';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-cell',\n template: `\n @if (iconSignal()) {\n <mat-icon>{{ iconSignal() }}</mat-icon>\n }\n <span>{{ textSignal() }}</span>\n `,\n host: {\n class: 'dbx-schedule-selection-calendar-cell'\n },\n imports: [MatIconModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarCellComponent {\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n\n readonly day = input.required<CalendarMonthViewDay<CalendarScheduleSelectionMetadata>>();\n readonly day$ = toObservable(this.day);\n\n readonly cellContent$ = this.dbxCalendarScheduleSelectionStore.cellContentFactory$.pipe(\n switchMap((fn) => this.day$.pipe(map((x) => fn(x)))),\n shareReplay(1)\n );\n\n readonly contentSignal: Signal<CalendarScheduleSelectionCellContent> = toSignal(this.cellContent$, { initialValue: {} });\n\n readonly iconSignal = computed(() => this.contentSignal().icon);\n readonly textSignal = computed(() => this.contentSignal().text);\n}\n","import { Component, inject, ChangeDetectionStrategy, computed, input } from '@angular/core';\nimport { DbxButtonComponent } from '@dereekb/dbx-web';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { DbxButtonDisplay } from '@dereekb/dbx-core';\nimport { type Maybe } from '@dereekb/util';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n/**\n * Toggle button for selecting and clearing the current selection.\n */\n@Component({\n selector: 'dbx-schedule-selection-calendar-selection-toggle-button',\n template: `\n <dbx-button [disabled]=\"disableButtonSignal()\" [buttonDisplay]=\"buttonDisplaySignal()\" [raised]=\"true\" (buttonClick)=\"toggleSelection()\"></dbx-button>\n `,\n imports: [DbxButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarSelectionToggleButtonComponent {\n readonly disabled = input<Maybe<boolean>>();\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n\n readonly selectionModeSignal = toSignal(this.dbxCalendarScheduleSelectionStore.selectionMode$, { initialValue: 'multiple' });\n readonly nextToggleSelectionSignal = toSignal(this.dbxCalendarScheduleSelectionStore.nextToggleSelection$, { initialValue: 'none' });\n\n readonly disableButtonSignal = computed(() => {\n const disabled = this.disabled();\n const nextToggleSelection = this.nextToggleSelectionSignal();\n let disableButton = false;\n\n if (disabled) {\n disableButton = true;\n } else {\n disableButton = !nextToggleSelection;\n }\n\n return disableButton;\n });\n\n readonly buttonDisplaySignal = computed(() => {\n const selectionMode = this.selectionModeSignal();\n const nextToggleSelection = this.nextToggleSelectionSignal();\n\n let buttonDisplay: DbxButtonDisplay;\n\n switch (nextToggleSelection) {\n case 'all':\n buttonDisplay = {\n icon: 'select_all',\n text: 'Select All'\n };\n break;\n default:\n case 'none':\n buttonDisplay = {\n icon: 'clear',\n text: selectionMode === 'multiple' ? 'Clear All' : 'Clear'\n };\n break;\n }\n\n return buttonDisplay;\n });\n\n toggleSelection() {\n this.dbxCalendarScheduleSelectionStore.toggleSelection();\n }\n}\n","import { Component, OnDestroy, OnInit, inject, ChangeDetectionStrategy, input, output } from '@angular/core';\nimport { CalendarEvent, CalendarMonthViewBeforeRenderEvent, CalendarMonthViewDay, CalendarModule } from 'angular-calendar';\nimport { map, shareReplay, Subject, first, throttleTime, distinctUntilChanged, Observable, combineLatest, switchMap, of, combineLatestWith } from 'rxjs';\nimport { DbxCalendarEvent, DbxCalendarStore, prepareAndSortCalendarEvents, DbxCalendarBaseComponent } from '@dereekb/dbx-web/calendar';\nimport { DayOfWeek, Maybe, reduceBooleansWithAnd } from '@dereekb/util';\nimport { CalendarScheduleSelectionState, DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { CalendarScheduleSelectionDayState, CalendarScheduleSelectionMetadata } from './calendar.schedule.selection';\nimport { DbxInjectionComponentConfig, switchMapDbxInjectionComponentConfig, DbxInjectionComponent } from '@dereekb/dbx-core';\nimport { ObservableOrValue, ObservableOrValueGetter, SubscriptionObject, asObservable, asObservableFromGetter } from '@dereekb/rxjs';\nimport { DbxScheduleSelectionCalendarDatePopoverButtonComponent } from './calendar.schedule.selection.popover.button.component';\nimport { DateRangeType, dateRange, isSameDate } from '@dereekb/date';\nimport { endOfWeek } from 'date-fns';\nimport { toSignal, toObservable } from '@angular/core/rxjs-interop';\nimport { NgClass } from '@angular/common';\nimport { DbxScheduleSelectionCalendarCellComponent } from './calendar.schedule.selection.cell.component';\nimport { DbxScheduleSelectionCalendarSelectionToggleButtonComponent } from './calendar.schedule.selection.toggle.button.component';\nimport { DbxButtonSpacerDirective } from '@dereekb/dbx-web';\n\nexport interface DbxScheduleSelectionCalendarComponentConfig {\n /**\n * Whether or not the selection calendar is readonly. Defaults to 'false'.\n */\n readonly readonly?: Maybe<ObservableOrValueGetter<Maybe<boolean>>>;\n /**\n * Whether or not to show the configured buttons when readonly is true. Defaults to false.\n */\n readonly showButtonsOnReadonly?: boolean;\n /**\n * Whether or not to show the clear selection button. Defaults to `true`.\n */\n readonly showClearSelectionButton?: boolean;\n /**\n * Configuration for displaying a custom selection button. When null/undefined/true is passed, will show the default DbxScheduleSelectionCalendarDatePopoverButtonComponent.\n */\n readonly buttonInjectionConfig?: Maybe<ObservableOrValueGetter<Maybe<DbxInjectionComponentConfig<any> | boolean>>>;\n /**\n * Customize day function. When a new function is piped through the calendar is refreshed.\n */\n readonly customizeDay?: Maybe<ObservableOrValue<Maybe<DbxScheduleSelectionCalendarBeforeMonthViewRenderModifyDayFunction>>>;\n /**\n * Optional full control over the beforeMonthViewRender\n */\n readonly beforeMonthViewRenderFunctionFactory?: Maybe<ObservableOrValue<DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory>>;\n}\n\nexport type DbxScheduleSelectionCalendarBeforeMonthViewRenderModifyDayFunction = (viewDay: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>, state: CalendarScheduleSelectionState) => void;\n\nexport type DbxScheduleSelectionCalendarBeforeMonthViewRenderFunction = (renderEvent: CalendarMonthViewBeforeRenderEvent) => void;\n\nexport type DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory = (state: Observable<CalendarScheduleSelectionState>) => DbxScheduleSelectionCalendarBeforeMonthViewRenderFunction;\n\nexport function dbxScheduleSelectionCalendarBeforeMonthViewRenderFactory(inputModifyFn?: Maybe<DbxScheduleSelectionCalendarBeforeMonthViewRenderModifyDayFunction>): DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory {\n const modifyFn = inputModifyFn || (() => {});\n\n return (state$: Observable<CalendarScheduleSelectionState>) => {\n return (renderEvent: CalendarMonthViewBeforeRenderEvent) => {\n const { body }: { body: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>[] } = renderEvent;\n\n // use latest/current state\n state$.pipe(first()).subscribe((calendarScheduleState: CalendarScheduleSelectionState) => {\n const { isEnabledDay, indexFactory, isEnabledFilterDay, allowedDaysOfWeek } = calendarScheduleState;\n body.forEach((viewDay) => {\n const { date } = viewDay;\n const i = indexFactory(date);\n const day = date.getDay();\n\n let state: CalendarScheduleSelectionDayState;\n\n if (!isEnabledFilterDay(i)) {\n viewDay.cssClass = 'cal-day-not-applicable';\n state = CalendarScheduleSelectionDayState.NOT_APPLICABLE;\n } else if (!allowedDaysOfWeek.has(day as DayOfWeek)) {\n viewDay.cssClass = 'cal-day-disabled';\n state = CalendarScheduleSelectionDayState.DISABLED;\n } else if (isEnabledDay(i)) {\n viewDay.cssClass = 'cal-day-selected';\n state = CalendarScheduleSelectionDayState.SELECTED;\n } else {\n viewDay.cssClass = 'cal-day-not-selected';\n state = CalendarScheduleSelectionDayState.NOT_SELECTED;\n }\n\n const meta = {\n state,\n i\n };\n\n viewDay.meta = meta;\n modifyFn(viewDay, calendarScheduleState);\n });\n });\n };\n };\n}\n\n@Component({\n selector: 'dbx-schedule-selection-calendar',\n templateUrl: './calendar.schedule.selection.component.html',\n imports: [NgClass, CalendarModule, DbxCalendarBaseComponent, DbxInjectionComponent, DbxButtonSpacerDirective, DbxScheduleSelectionCalendarCellComponent, DbxScheduleSelectionCalendarSelectionToggleButtonComponent],\n providers: [DbxCalendarStore],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarComponent<T> implements OnInit, OnDestroy {\n readonly calendarStore = inject(DbxCalendarStore<T>);\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n\n readonly clickEvent = output<DbxCalendarEvent<T>>();\n\n readonly config = input<Maybe<DbxScheduleSelectionCalendarComponentConfig>>();\n readonly readonly = input<Maybe<boolean>>(false);\n\n private readonly _centerRangeSub = new SubscriptionObject();\n\n readonly config$: Observable<Maybe<DbxScheduleSelectionCalendarComponentConfig>> = toObservable(this.config).pipe(distinctUntilChanged(), shareReplay(1));\n\n readonly readonly$: Observable<boolean> = this.config$.pipe(\n switchMap((x) => (x?.readonly != null ? asObservableFromGetter(x.readonly) : of(undefined))),\n combineLatestWith(toObservable(this.readonly)),\n map(([configReadonly, inputReadonly]) => {\n return configReadonly || inputReadonly || false;\n }),\n shareReplay(1)\n );\n\n readonly showButtonsOnReadonly$: Observable<boolean> = this.config$.pipe(\n map((x) => x?.showButtonsOnReadonly ?? false),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly showButtons$ = this.showButtonsOnReadonly$.pipe(\n switchMap((x) => {\n if (x) {\n return of(true);\n } else {\n return this.readonly$.pipe(map((x) => !x));\n }\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly showClearSelectionButton$ = this.config$.pipe(\n map((config) => config?.showClearSelectionButton ?? true),\n combineLatestWith(this.showButtons$),\n map((x) => reduceBooleansWithAnd(x)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly datePopoverButtonInjectionConfig$: Observable<Maybe<DbxInjectionComponentConfig<any>>> = this.config$.pipe(\n map((x) => x?.buttonInjectionConfig),\n switchMapDbxInjectionComponentConfig(DbxScheduleSelectionCalendarDatePopoverButtonComponent),\n combineLatestWith(this.showButtons$),\n map(([config, showButton]) => (showButton ? config : undefined)),\n shareReplay(1)\n );\n\n // refresh any time the selected day function updates\n readonly state$ = this.dbxCalendarScheduleSelectionStore.state$;\n\n readonly beforeMonthViewRender$ = this.config$.pipe(\n switchMap((x) => {\n let factory: Observable<DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory>;\n\n if (x?.beforeMonthViewRenderFunctionFactory) {\n factory = asObservable(x.beforeMonthViewRenderFunctionFactory);\n } else {\n factory = asObservable(x?.customizeDay).pipe(map((x) => dbxScheduleSelectionCalendarBeforeMonthViewRenderFactory(x)));\n }\n\n return factory.pipe(map((x) => x(this.state$)));\n }),\n shareReplay(1)\n );\n\n readonly refresh$ = combineLatest([this.state$, this.beforeMonthViewRender$]).pipe(\n throttleTime(20, undefined, { leading: true, trailing: true }),\n map(() => undefined)\n ) as Subject<undefined>;\n\n readonly events$ = this.calendarStore.visibleEvents$.pipe(map(prepareAndSortCalendarEvents), shareReplay(1));\n readonly viewDate$ = this.calendarStore.date$;\n\n readonly beforeMonthViewRenderSignal = toSignal(this.beforeMonthViewRender$);\n readonly readonlySignal = toSignal(this.readonly$, { initialValue: false });\n readonly showClearSelectionButtonSignal = toSignal(this.showClearSelectionButton$);\n readonly datePopoverButtonInjectionConfigSignal = toSignal(this.datePopoverButtonInjectionConfig$);\n\n readonly eventsSignal = toSignal(this.events$, { initialValue: [] });\n readonly viewDateSignal = toSignal(this.viewDate$, { initialValue: new Date() });\n\n ngOnInit(): void {\n this.dbxCalendarScheduleSelectionStore.setViewReadonlyState(this.readonly$); // sync the readonly state\n\n this.calendarStore.setNavigationRangeLimit(this.dbxCalendarScheduleSelectionStore.minMaxDateRange$); // set navigation limit to the min/max allowed dates.\n this.calendarStore.setShowPageButtons(true);\n\n // when a new filter is set, if the first two pages of selectable indexes fit within the calendar month, focus on that calendar month.\n this._centerRangeSub.subscription = this.dbxCalendarScheduleSelectionStore.currentDateRange$\n .pipe(\n first(),\n switchMap((x) => {\n const result: Observable<[typeof x, boolean]> = x\n ? of([x, true])\n : this.dbxCalendarScheduleSelectionStore.minMaxDateRange$.pipe(\n first(),\n map((y) => [y, false] as [typeof x, boolean])\n );\n return result;\n })\n )\n .subscribe(([x, isFromSelectedDateRange]) => {\n if (x?.start) {\n let tapDay: Maybe<Date>;\n const startMonth = dateRange({ date: x.start, type: DateRangeType.CALENDAR_MONTH });\n const monthToFocus = endOfWeek(startMonth.start);\n\n if (x.end != null) {\n const endMonth = dateRange({ date: x.end, type: DateRangeType.CALENDAR_MONTH });\n\n if (isSameDate(startMonth.start, endMonth.start)) {\n tapDay = monthToFocus;\n }\n }\n\n if (!tapDay && isFromSelectedDateRange) {\n tapDay = monthToFocus;\n }\n\n if (tapDay) {\n this.calendarStore.tapDay(tapDay);\n }\n }\n });\n }\n\n ngOnDestroy(): void {\n this._centerRangeSub.destroy();\n }\n\n dayClicked({ date }: { date: Date }): void {\n if (!this.readonlySignal()) {\n this.dbxCalendarScheduleSelectionStore.toggleSelectedDates(date);\n }\n }\n\n eventClicked(action: string, event: CalendarEvent<T>): void {\n this.clickEvent.emit({ action, event });\n }\n\n beforeMonthViewRender(renderEvent: CalendarMonthViewBeforeRenderEvent): void {\n this.beforeMonthViewRenderSignal()?.(renderEvent);\n }\n}\n","<dbx-calendar-base class=\"dbx-schedule-selection-calendar\" [ngClass]=\"readonlySignal() ? 'dbx-schedule-selection-calendar-readonly' : ''\">\n <ng-container controls>\n @if (showClearSelectionButtonSignal()) {\n <dbx-schedule-selection-calendar-selection-toggle-button [disabled]=\"readonlySignal()\"></dbx-schedule-selection-calendar-selection-toggle-button>\n <dbx-button-spacer></dbx-button-spacer>\n }\n <dbx-injection [config]=\"datePopoverButtonInjectionConfigSignal()\"></dbx-injection>\n </ng-container>\n <div class=\"dbx-calendar-content dbx-calendar-content-month\">\n <mwl-calendar-month-view [refresh]=\"refresh$\" [viewDate]=\"viewDateSignal()!\" [events]=\"eventsSignal()\" (dayClicked)=\"dayClicked($event.day)\" (eventClicked)=\"eventClicked('Clicked', $event.event)\" (beforeViewRender)=\"beforeMonthViewRender($event)\" [cellTemplate]=\"monthDayCellTemplate\"></mwl-calendar-month-view>\n </div>\n</dbx-calendar-base>\n\n<!-- Cell -->\n<ng-template #monthDayCellTemplate let-day=\"day\" let-locale=\"locale\">\n <div class=\"cal-cell-top\">\n @if (day.badgeTotal > 0) {\n <span class=\"cal-day-badge\">{{ day.badgeTotal }}</span>\n }\n <span class=\"cal-day-number\">{{ day.date | calendarDate: 'monthViewDayNumber' : locale }}</span>\n </div>\n <dbx-schedule-selection-calendar-cell [day]=\"day\"></dbx-schedule-selection-calendar-cell>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, InjectionToken, Injector } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AbstractDialogDirective, DbxDialogContentConfig, DbxDialogContentFooterConfig, DbxDialogModule, sanitizeDbxDialogContentConfig } from '@dereekb/dbx-web';\nimport { KeyValueTypleValueFilter, Maybe, mergeObjects } from '@dereekb/util';\nimport { DbxScheduleSelectionCalendarComponent } from './calendar.schedule.selection.component';\n\n/**\n * Token used to configure the default DbxScheduleSelectionCalendarDatePopupConfig for DbxScheduleSelectionCalendarDateDialogComponent.\n */\nexport const DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CONTENT_CONFIG_TOKEN = new InjectionToken('DbxScheduleSelectionCalendarDatePopupContentConfig');\n\nexport interface DbxScheduleSelectionCalendarDatePopupContentConfig {\n readonly closeConfig?: DbxDialogContentFooterConfig;\n readonly dialogConfig?: DbxDialogContentConfig;\n}\n\nexport interface DbxScheduleSelectionCalendarDatePopupConfig {\n readonly injector: Injector;\n readonly contentConfig?: Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>;\n}\n\n@Component({\n template: `\n <dbx-dialog-content class=\"dbx-schedule-selection-calendar-date-dialog\">\n <dbx-dialog-content-close (close)=\"close()\"></dbx-dialog-content-close>\n <dbx-schedule-selection-calendar></dbx-schedule-selection-calendar>\n <dbx-dialog-content-footer [config]=\"closeConfig\" (close)=\"close()\"></dbx-dialog-content-footer>\n </dbx-dialog-content>\n `,\n standalone: true,\n imports: [DbxDialogModule, DbxScheduleSelectionCalendarComponent],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DbxScheduleSelectionCalendarDateDialogComponent extends AbstractDialogDirective<void, DbxScheduleSelectionCalendarDatePopupConfig> {\n get contentConfig() {\n return this.data.contentConfig;\n }\n\n get closeConfig() {\n return this.contentConfig?.closeConfig;\n }\n\n static openDialog(matDialog: MatDialog, config: DbxScheduleSelectionCalendarDatePopupConfig) {\n const { injector, contentConfig: inputContentConfig } = config;\n const defaultContentConfig = injector.get<Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>>(DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CONTENT_CONFIG_TOKEN, null);\n const contentConfig = mergeObjects([defaultContentConfig, inputContentConfig], KeyValueTypleValueFilter.NULL);\n return matDialog.open(DbxScheduleSelectionCalendarDateDialogComponent, {\n height: 'calc(var(--vh100) * 0.9)',\n width: '80vw',\n minHeight: 400,\n minWidth: 360,\n ...sanitizeDbxDialogContentConfig(contentConfig.dialogConfig),\n injector,\n data: {\n config,\n contentConfig\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, Injector, inject, input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DbxScheduleSelectionCalendarDateDialogComponent, DbxScheduleSelectionCalendarDatePopupContentConfig } from './calendar.schedule.selection.dialog.component';\nimport { type Maybe } from '@dereekb/util';\nimport { DbxButtonComponent } from '@dereekb/dbx-web';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-dialog-button',\n template: `\n <dbx-button [raised]=\"true\" color=\"accent\" [text]=\"buttonText()\" [disabled]=\"disabled()\" (buttonClick)=\"clickCustomize()\"></dbx-button>\n `,\n imports: [DbxButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxScheduleSelectionCalendarDateDialogButtonComponent {\n readonly injector = inject(Injector);\n readonly matDialog = inject(MatDialog);\n\n readonly buttonText = input<string>('Customize');\n\n readonly disabled = input<Maybe<boolean>>();\n\n readonly contentConfig = input<Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>>();\n\n clickCustomize() {\n DbxScheduleSelectionCalendarDateDialogComponent.openDialog(this.matDialog, { injector: this.injector, contentConfig: this.contentConfig() });\n }\n}\n","import { AbstractControl, FormGroup } from '@angular/forms';\nimport { CompactContextStore } from '@dereekb/dbx-web';\nimport { ChangeDetectionStrategy, Component, OnDestroy, OnInit, inject } from '@angular/core';\nimport { FieldTypeConfig, FormlyFieldProps } from '@ngx-formly/core';\nimport { ArrayOrValue, TimezoneString, type Maybe } from '@dereekb/util';\nimport { FieldType } from '@ngx-formly/material';\nimport { BehaviorSubject, distinctUntilChanged, map, shareReplay, startWith, Subscription, switchMap } from 'rxjs';\nimport { filterMaybe, ObservableOrValue, SubscriptionObject, asObservable } from '@dereekb/rxjs';\nimport { DateRange, isSameDateCellScheduleDateRange, DateCellScheduleDateFilterConfig, DateCellScheduleDayCode, DateOrDateRangeOrDateCellIndexOrDateCellRange } from '@dereekb/date';\nimport { CalendarScheduleSelectionState, DbxCalendarScheduleSelectionStore } from '../../calendar.schedule.selection.store';\nimport { provideCalendarScheduleSelectionStoreIfParentIsUnavailable } from '../../calendar.schedule.selection.store.provide';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\nimport { DbxScheduleSelectionCalendarDatePopupContentConfig } from '../../calendar.schedule.selection.dialog.component';\nimport { DbxInjectionComponent, DbxInjectionComponentConfig } from '@dereekb/dbx-core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { DbxScheduleSelectionCalendarDateDialogButtonComponent } from '../../calendar.schedule.selection.dialog.button.component';\nimport { DbxScheduleSelectionCalendarDateRangeComponent } from '../../calendar.schedule.selection.range.component';\n\nexport interface DbxFormCalendarDateCellScheduleRangeFieldProps extends Pick<FormlyFieldProps, 'label' | 'description' | 'readonly' | 'required'>, Pick<CalendarScheduleSelectionState, 'computeSelectionResultRelativeToFilter' | 'initialSelectionState'>, Partial<Pick<CalendarScheduleSelectionState, 'cellContentFactory'>> {\n readonly appearance?: MatFormFieldAppearance;\n /**\n * Whether or not to allow inputting custom text into the picker.\n *\n * If false, when the input text is picked the date picker will open.\n *\n * Is false by default.\n */\n readonly allowTextInput?: boolean;\n /**\n * Whether or not to hide the customize button. Defaults to false.\n */\n readonly hideCustomize?: boolean;\n /**\n * Whether or not to allow customizing before picking a date range to customize.\n *\n * Defaults to false.\n */\n readonly allowCustomizeWithoutDateRange?: boolean;\n /**\n * (Optional) Timezone to use for the output start date.\n *\n * If a filter is provided, this timezone overrides the filter's timezone output.\n */\n readonly outputTimezone?: ObservableOrValue<Maybe<TimezoneString>>;\n /**\n * (Optional) Default schedule days to allow.\n */\n readonly defaultScheduleDays?: ObservableOrValue<Maybe<Iterable<DateCellScheduleDayCode>>>;\n /**\n * Optional min/max date range to filter on. Works in conjuction with the filter.\n */\n readonly minMaxDateRange?: ObservableOrValue<Maybe<Partial<DateRange>>>;\n /**\n * (Optional) Observable with a filter value to apply to the date range.\n */\n readonly filter?: ObservableOrValue<Maybe<DateCellScheduleDateFilterConfig>>;\n /**\n * (Optional) Observable with days and values to exclude from the date range.\n */\n readonly exclusions?: ObservableOrValue<Maybe<ArrayOrValue<DateOrDateRangeOrDateCellIndexOrDateCellRange>>>;\n /**\n * Custom dialog content config for the popup\n */\n readonly dialogContentConfig?: Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>;\n /**\n * Custom details config for the date range\n */\n readonly customDetailsConfig?: Maybe<DbxInjectionComponentConfig>;\n}\n\n@Component({\n template: `\n <div class=\"dbx-schedule-selection-field\">\n <dbx-schedule-selection-calendar-date-range [openPickerOnTextClick]=\"openPickerOnTextClick\" [showCustomize]=\"showCustomize\" [required]=\"required\" [disabled]=\"isReadonlyOrDisabled\" [label]=\"label\" [hint]=\"description\">\n <dbx-schedule-selection-calendar-date-dialog-button customizeButton [disabled]=\"disabledSignal()\" [contentConfig]=\"dialogContentConfig\"></dbx-schedule-selection-calendar-date-dialog-button>\n <dbx-injection [config]=\"customDetailsConfig\"></dbx-injection>\n </dbx-schedule-selection-calendar-date-range>\n </div>\n `,\n providers: [provideCalendarScheduleSelectionStoreIfParentIsUnavailable()],\n imports: [DbxInjectionComponent, DbxScheduleSelectionCalendarDateRangeComponent, DbxScheduleSelectionCalendarDateDialogButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxFormCalendarDateScheduleRangeFieldComponent<T extends DbxFormCalendarDateCellScheduleRangeFieldProps = DbxFormCalendarDateCellScheduleRangeFieldProps> extends FieldType<FieldTypeConfig<T>> implements OnInit, OnDestroy {\n readonly compact = inject(CompactContextStore, { optional: true });\n\n readonly dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);\n\n private readonly _syncSub = new SubscriptionObject();\n private readonly _valueSub = new SubscriptionObject();\n private readonly _timezoneSub = new SubscriptionObject();\n private readonly _minMaxDateRangeSub = new SubscriptionObject();\n private readonly _defaultWeekSub = new SubscriptionObject();\n private readonly _filterSub = new SubscriptionObject();\n private readonly _exclusionsSub = new SubscriptionObject();\n\n private readonly _formControlObs = new BehaviorSubject<Maybe<AbstractControl>>(undefined);\n readonly formControl$ = this._formControlObs.pipe(filterMaybe());\n\n readonly value$ = this.formControl$.pipe(\n switchMap((control) => control.valueChanges.pipe(startWith(control.value))),\n shareReplay(1)\n );\n\n readonly disableCustomize$ = this.value$.pipe(\n map((x) => (this.allowCustomizeWithoutDateRange ? false : !x)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly disabledSignal = toSignal(this.disableCustomize$);\n\n get formGroupName(): string {\n return this.field.key as string;\n }\n\n get formGroup(): FormGroup {\n return this.form as FormGroup;\n }\n\n get label(): Maybe<string> {\n return this.field.props?.label;\n }\n\n get description(): Maybe<string> {\n return this.props.description;\n }\n\n get isReadonlyOrDisabled() {\n return this.props.readonly || this.disabled;\n }\n\n get openPickerOnTextClick() {\n return this.props.allowTextInput !== true; // Opposite of allowTextInput\n }\n\n get allowCustomizeWithoutDateRange() {\n return this.props.allowCustomizeWithoutDateRange ?? false;\n }\n\n get showCustomize() {\n return !this.props.hideCustomize;\n }\n\n get defaultScheduleDays() {\n return this.props.defaultScheduleDays;\n }\n\n get minMaxDateRange() {\n return this.props.minMaxDateRange;\n }\n\n get filter() {\n return this.props.filter;\n }\n\n get exclusions() {\n return this.props.exclusions;\n }\n\n get outputTimezone() {\n return this.props.outputTimezone;\n }\n\n get initialSelectionState() {\n return this.props.initialSelectionState;\n }\n\n get computeSelectionResultRelativeToFilter() {\n return this.props.computeSelectionResultRelativeToFilter;\n }\n\n get dialogContentConfig() {\n return this.props.dialogContentConfig;\n }\n\n get customDetailsConfig() {\n return this.props.customDetailsConfig;\n }\n\n get cellContentFactory() {\n return this.props.cellContentFactory;\n }\n\n ngOnInit(): void {\n this._formControlObs.next(this.formControl);\n\n this._syncSub.subscription = this.value$.pipe(distinctUntilChanged(isSameDateCellScheduleDateRange)).subscribe((x) => {\n this.dbxCalendarScheduleSelectionStore.setDateScheduleRangeValue(x);\n });\n\n this._valueSub.subscription = this.dbxCalendarScheduleSelectionStore.currentDateCellScheduleRangeValue$.subscribe((x) => {\n this.formControl.setValue(x);\n });\n\n const { outputTimezone, minMaxDateRange, filter, exclusions, defaultScheduleDays } = this;\n\n if (filter != null) {\n this._filterSub.subscription = this.dbxCalendarScheduleSelectionStore.setFilter(asObservable(filter)) as Subscription;\n }\n\n if (defaultScheduleDays != null) {\n this._defaultWeekSub.subscription = this.dbxCalendarScheduleSelectionStore.setDefaultScheduleDays(asObservable(defaultScheduleDays)) as Subscription;\n }\n\n if (minMaxDateRange != null) {\n this._minMaxDateRangeSub.subscription = this.dbxCalendarScheduleSelectionStore.setMinMaxDateRange(asObservable(minMaxDateRange)) as Subscription;\n }\n\n if (exclusions != null) {\n this._exclusionsSub.subscription = this.dbxCalendarScheduleSelectionStore.setExclusions(asObservable(exclusions)) as Subscription;\n }\n\n if (outputTimezone != null) {\n this.dbxCalendarScheduleSelectionStore.setOutputTimezone(asObservable(this.outputTimezone));\n }\n\n if (this.initialSelectionState !== undefined) {\n this.dbxCalendarScheduleSelectionStore.setInitialSelectionState(this.initialSelectionState);\n }\n\n if (this.computeSelectionResultRelativeToFilter != null) {\n this.dbxCalendarScheduleSelectionStore.setComputeSelectionResultRelativeToFilter(this.computeSelectionResultRelativeToFilter);\n }\n\n if (this.cellContentFactory != null) {\n this.dbxCalendarScheduleSelectionStore.setCellContentFactory(this.cellContentFactory);\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._syncSub.destroy();\n this._valueSub.destroy();\n this._filterSub.destroy();\n this._timezoneSub.destroy();\n this._minMaxDateRangeSub.destroy();\n this._exclusionsSub.destroy();\n this._formControlObs.complete();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DbxFormCalendarDateScheduleRangeFieldComponent } from './calendar.schedule.field.component';\nimport { FormlyModule } from '@ngx-formly/core';\n\nconst importsAndExports = [DbxFormCalendarDateScheduleRangeFieldComponent];\n\n@NgModule({\n imports: [\n ...importsAndExports,\n FormlyModule.forChild({\n types: [{ name: 'date-schedule-range', component: DbxFormCalendarDateScheduleRangeFieldComponent }]\n })\n ],\n exports: importsAndExports\n})\nexport class DbxFormDateScheduleRangeFieldModule {}\n","export * from './schedule';\n// export * from './selection';\n","import { NgModule } from '@angular/core';\nimport { DbxScheduleSelectionCalendarComponent } from './calendar.schedule.selection.component';\nimport { DbxScheduleSelectionCalendarDatePopoverButtonComponent } from './calendar.schedule.selection.popover.button.component';\nimport { DbxScheduleSelectionCalendarDateDaysComponent } from './calendar.schedule.selection.days.component';\nimport { DbxScheduleSelectionCalendarDatePopoverComponent } from './calendar.schedule.selection.popover.component';\nimport { DbxScheduleSelectionCalendarDatePopoverContentComponent } from './calendar.schedule.selection.popover.content.component';\nimport { DbxScheduleSelectionCalendarDateRangeComponent } from './calendar.schedule.selection.range.component';\nimport { DbxScheduleSelectionCalendarDateDaysFormComponent } from './calendar.schedule.selection.days.form.component';\nimport { DbxScheduleSelectionCalendarCellComponent } from './calendar.schedule.selection.cell.component';\nimport { DbxCalendarScheduleSelectionStoreInjectionBlockDirective } from './calendar.schedule.selection.store.provide';\nimport { DbxScheduleSelectionCalendarDateDialogComponent } from './calendar.schedule.selection.dialog.component';\nimport { DbxScheduleSelectionCalendarDateDialogButtonComponent } from './calendar.schedule.selection.dialog.button.component';\nimport { DbxScheduleSelectionCalendarSelectionToggleButtonComponent } from './calendar.schedule.selection.toggle.button.component';\nimport { DbxFormFormlyWrapperModule } from '@dereekb/dbx-form';\n\nconst importsAndExports = [\n DbxScheduleSelectionCalendarComponent,\n DbxScheduleSelectionCalendarDateDaysComponent,\n DbxScheduleSelectionCalendarDateDaysFormComponent,\n DbxScheduleSelectionCalendarDateRangeComponent,\n DbxScheduleSelectionCalendarDatePopoverButtonComponent,\n DbxScheduleSelectionCalendarCellComponent,\n DbxScheduleSelectionCalendarDatePopoverComponent,\n DbxScheduleSelectionCalendarDatePopoverContentComponent,\n DbxCalendarScheduleSelectionStoreInjectionBlockDirective,\n DbxScheduleSelectionCalendarDateDialogComponent,\n DbxScheduleSelectionCalendarDateDialogButtonComponent,\n DbxScheduleSelectionCalendarSelectionToggleButtonComponent,\n //\n DbxFormFormlyWrapperModule\n];\n\n@NgModule({\n imports: importsAndExports,\n exports: importsAndExports\n})\nexport class DbxFormCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","importsAndExports"],"mappings":"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"}