guestbell-forms 3.0.39 → 3.0.41

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 (342) hide show
  1. package/.env.bat +1 -0
  2. package/.eslintrc.json +21 -14
  3. package/build/components/base/input/BaseInput.d.ts +99 -99
  4. package/build/components/base/input/BaseInput.js +4 -0
  5. package/build/components/base/input/BaseInput.js.map +1 -1
  6. package/build/components/base/input/index.d.ts +1 -1
  7. package/build/components/bookingCalendar/BookingCalendar.d.ts +47 -46
  8. package/build/components/bookingCalendar/BookingCalendar.js +38 -14
  9. package/build/components/bookingCalendar/BookingCalendar.js.map +1 -1
  10. package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.d.ts +17 -17
  11. package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js +12 -12
  12. package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js.map +1 -1
  13. package/build/components/bookingCalendar/bookingCalendarControls/classes.d.ts +9 -9
  14. package/build/components/bookingCalendar/bookingCalendarControls/index.d.ts +2 -2
  15. package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.d.ts +13 -13
  16. package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js +3 -3
  17. package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js.map +1 -1
  18. package/build/components/bookingCalendar/bookingCalendarDatePicker/classes.d.ts +5 -5
  19. package/build/components/bookingCalendar/bookingCalendarDatePicker/index.d.ts +2 -2
  20. package/build/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.d.ts +10 -10
  21. package/build/components/bookingCalendar/bookingCalendarGrid/classes.d.ts +5 -5
  22. package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.d.ts +57 -57
  23. package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js +2 -1
  24. package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js.map +1 -1
  25. package/build/components/bookingCalendar/bookingCalendarItem/classes.d.ts +4 -4
  26. package/build/components/bookingCalendar/bookingCalendarItem/index.d.ts +2 -2
  27. package/build/components/bookingCalendar/bookingCalendarLane/BookingCalendarLane.d.ts +16 -16
  28. package/build/components/bookingCalendar/bookingCalendarLane/classes.d.ts +4 -4
  29. package/build/components/bookingCalendar/bookingCalendarLane/index.d.ts +2 -2
  30. package/build/components/bookingCalendar/bookingCalendarLaneHeader/BookingCalendarLaneHeader.d.ts +7 -7
  31. package/build/components/bookingCalendar/bookingCalendarLaneHeader/classes.d.ts +4 -4
  32. package/build/components/bookingCalendar/bookingCalendarLaneHeader/index.d.ts +1 -1
  33. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.d.ts +11 -11
  34. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.js +3 -3
  35. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.js.map +1 -1
  36. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.d.ts +4 -5
  37. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.js.map +1 -1
  38. package/build/components/bookingCalendar/bookingCalendarLanesHeader/classes.d.ts +5 -5
  39. package/build/components/bookingCalendar/bookingCalendarLanesHeader/index.d.ts +2 -2
  40. package/build/components/bookingCalendar/bookingCalendarRenderItem/BookingCalendarRenderItem.d.ts +9 -9
  41. package/build/components/bookingCalendar/bookingCalendarRenderItem/classes.d.ts +6 -6
  42. package/build/components/bookingCalendar/bookingCalendarRenderItem/index.d.ts +1 -1
  43. package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.d.ts +38 -37
  44. package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js +7 -4
  45. package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js.map +1 -1
  46. package/build/components/bookingCalendar/bookingCalendarSelection/classes.d.ts +5 -0
  47. package/build/components/bookingCalendar/bookingCalendarSelection/classes.js +12 -0
  48. package/build/components/bookingCalendar/bookingCalendarSelection/classes.js.map +1 -0
  49. package/build/components/bookingCalendar/bookingCalendarTimeAxis/BookingCalendarTimeAxis.d.ts +11 -11
  50. package/build/components/bookingCalendar/bookingCalendarTimeAxis/classes.d.ts +5 -5
  51. package/build/components/bookingCalendar/classes.d.ts +11 -11
  52. package/build/components/bookingCalendar/common.d.ts +24 -23
  53. package/build/components/bookingCalendar/common.js +3 -4
  54. package/build/components/bookingCalendar/common.js.map +1 -1
  55. package/build/components/bookingCalendar/index.d.ts +3 -3
  56. package/build/components/bookingCalendar/utils.d.ts +55 -50
  57. package/build/components/bookingCalendar/utils.js +2 -1
  58. package/build/components/bookingCalendar/utils.js.map +1 -1
  59. package/build/components/button/Button.d.ts +81 -81
  60. package/build/components/button/Button.js +1 -0
  61. package/build/components/button/Button.js.map +1 -1
  62. package/build/components/button/index.d.ts +2 -2
  63. package/build/components/checkbox/Checkbox.d.ts +23 -23
  64. package/build/components/checkbox/index.d.ts +2 -2
  65. package/build/components/dropdown/Dropdown.d.ts +44 -44
  66. package/build/components/dropdown/index.d.ts +2 -2
  67. package/build/components/dynamicSubmit/DynamicSubmit.d.ts +54 -54
  68. package/build/components/dynamicSubmit/DynamicSubmit.js.map +1 -1
  69. package/build/components/dynamicSubmit/index.d.ts +2 -2
  70. package/build/components/externalValidationComponent/ExternalValidationComponent.d.ts +15 -15
  71. package/build/components/externalValidationComponent/index.d.ts +2 -2
  72. package/build/components/form/Form.d.ts +47 -47
  73. package/build/components/form/FormContext.d.ts +30 -30
  74. package/build/components/form/FormValidationSummary.d.ts +38 -38
  75. package/build/components/form/FormValidationSummary.js.map +1 -1
  76. package/build/components/form/index.d.ts +5 -5
  77. package/build/components/form/withFormContext.d.ts +3 -3
  78. package/build/components/inputGroup/InputGroup.d.ts +15 -17
  79. package/build/components/inputGroup/index.d.ts +2 -2
  80. package/build/components/inputHeader/InputHeader.d.ts +97 -97
  81. package/build/components/inputHeader/InputHeader.js.map +1 -1
  82. package/build/components/inputHeader/InputHeaderContext.d.ts +24 -24
  83. package/build/components/inputHeader/index.d.ts +2 -2
  84. package/build/components/inputHeader/withInputHeaderContext.d.ts +3 -3
  85. package/build/components/money/Money.d.ts +78 -78
  86. package/build/components/money/Money.js.map +1 -1
  87. package/build/components/money/index.d.ts +2 -2
  88. package/build/components/numberInput/NumberInput.d.ts +28 -28
  89. package/build/components/numberInput/index.d.ts +2 -2
  90. package/build/components/openingHours/openingHoursDay/OpeningHoursDay.d.ts +84 -84
  91. package/build/components/openingHours/openingHoursDay/OpeningHoursDay.js +3 -3
  92. package/build/components/openingHours/openingHoursDay/OpeningHoursDay.js.map +1 -1
  93. package/build/components/openingHours/openingHoursDay/index.d.ts +2 -2
  94. package/build/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.d.ts +92 -90
  95. package/build/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.js.map +1 -1
  96. package/build/components/openingHours/openingHoursSpecial/index.d.ts +2 -2
  97. package/build/components/openingHours/openingHoursWeek/OpeningHoursWeek.d.ts +109 -109
  98. package/build/components/openingHours/openingHoursWeek/index.d.ts +2 -2
  99. package/build/components/openingHours/utils/OpeningHoursUtil.d.ts +21 -21
  100. package/build/components/radio/Radio.d.ts +20 -20
  101. package/build/components/radio/index.d.ts +2 -2
  102. package/build/components/radioContainer/RadioContainer.d.ts +17 -16
  103. package/build/components/radioContainer/RadioContainer.js.map +1 -1
  104. package/build/components/radioContainer/index.d.ts +2 -2
  105. package/build/components/select/Select.d.ts +79 -79
  106. package/build/components/select/index.d.ts +2 -2
  107. package/build/components/submit/Submit.d.ts +137 -137
  108. package/build/components/submit/index.d.ts +2 -2
  109. package/build/components/submit/subComponents/SubmitValidationSummary.d.ts +5 -5
  110. package/build/components/tags/Tags.d.ts +92 -92
  111. package/build/components/tags/Tags.js +2 -0
  112. package/build/components/tags/Tags.js.map +1 -1
  113. package/build/components/tags/index.d.ts +2 -2
  114. package/build/components/tags/subComponents/TagsSuggestions.d.ts +34 -34
  115. package/build/components/tags/subComponents/TagsSuggestions.js +2 -2
  116. package/build/components/tags/subComponents/TagsSuggestions.js.map +1 -1
  117. package/build/components/text/Text.d.ts +31 -31
  118. package/build/components/text/index.d.ts +2 -2
  119. package/build/components/textArea/TextArea.d.ts +28 -28
  120. package/build/components/textArea/TextArea.js +1 -0
  121. package/build/components/textArea/TextArea.js.map +1 -1
  122. package/build/components/textArea/index.d.ts +2 -2
  123. package/build/components/themeProvider/ThemeContext.d.ts +9 -9
  124. package/build/components/themeProvider/ThemeProvider.d.ts +8 -7
  125. package/build/components/themeProvider/ThemeProvider.js.map +1 -1
  126. package/build/components/themeProvider/index.d.ts +4 -4
  127. package/build/components/themeProvider/withThemeContext.d.ts +4 -4
  128. package/build/components/time/Time.d.ts +32 -32
  129. package/build/components/time/Time.js +3 -3
  130. package/build/components/time/Time.js.map +1 -1
  131. package/build/components/time/index.d.ts +2 -2
  132. package/build/components/timeSpan/TimeSpan.d.ts +46 -46
  133. package/build/components/timeSpan/TimeSpan.js +6 -6
  134. package/build/components/timeSpan/TimeSpan.js.map +1 -1
  135. package/build/components/timeSpan/index.d.ts +2 -2
  136. package/build/components/utils/Guid.d.ts +2 -2
  137. package/build/components/utils/ShallowEqual.d.ts +16 -16
  138. package/build/components/utils/TimeUtil.d.ts +6 -6
  139. package/build/components/utils/Typescript.d.ts +5 -5
  140. package/build/dist/guestbell-forms.css +154 -170
  141. package/build/dist/guestbell-forms.css.map +1 -1
  142. package/build/dist/guestbell-forms.js +15 -24
  143. package/build/dist/guestbell-forms.js.map +1 -1
  144. package/build/dist/guestbell-forms.min.css +1 -1
  145. package/build/dist/guestbell-forms.min.js +1 -1
  146. package/build/dist/guestbell-forms.min.js.map +1 -1
  147. package/build/dist/report.html +3 -3
  148. package/build/index.d.ts +24 -24
  149. package/build/scss/components/bookingCalendar/bookingCalendar.scss +32 -7
  150. package/build/types/ElementOverrideProp.d.ts +3 -3
  151. package/build/types/Theme.d.ts +4 -4
  152. package/build/types/ThemeOverrides.d.ts +45 -45
  153. package/build/validators/EmailValidator.d.ts +4 -4
  154. package/build/validators/LatitudeValidator.d.ts +4 -4
  155. package/build/validators/LongitudeValidator.d.ts +4 -4
  156. package/build/validators/NumberValidator.d.ts +12 -12
  157. package/build/validators/NumberValidator.js +1 -0
  158. package/build/validators/NumberValidator.js.map +1 -1
  159. package/build/validators/UrlValidator.d.ts +4 -4
  160. package/build/validators/base.d.ts +4 -4
  161. package/build/validators/index.d.ts +6 -6
  162. package/package.json +130 -136
  163. package/src/lib/components/base/input/BaseInput.tsx +526 -0
  164. package/src/lib/components/base/input/index.tsx +1 -0
  165. package/src/lib/components/bookingCalendar/BookingCalendar.tsx +399 -0
  166. package/src/lib/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.tsx +249 -0
  167. package/src/lib/components/bookingCalendar/bookingCalendarControls/classes.ts +20 -0
  168. package/src/lib/components/bookingCalendar/bookingCalendarControls/index.ts +2 -0
  169. package/src/lib/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.tsx +104 -0
  170. package/src/lib/components/bookingCalendar/bookingCalendarDatePicker/classes.ts +9 -0
  171. package/src/lib/components/bookingCalendar/bookingCalendarDatePicker/index.ts +2 -0
  172. package/src/lib/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.tsx +56 -0
  173. package/src/lib/components/bookingCalendar/bookingCalendarGrid/classes.ts +9 -0
  174. package/src/lib/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.tsx +98 -0
  175. package/src/lib/components/bookingCalendar/bookingCalendarItem/classes.ts +7 -0
  176. package/src/lib/components/bookingCalendar/bookingCalendarItem/index.ts +2 -0
  177. package/src/lib/components/bookingCalendar/bookingCalendarLane/BookingCalendarLane.tsx +69 -0
  178. package/src/lib/components/bookingCalendar/bookingCalendarLane/classes.ts +7 -0
  179. package/src/lib/components/bookingCalendar/bookingCalendarLane/index.ts +2 -0
  180. package/src/lib/components/bookingCalendar/bookingCalendarLaneHeader/BookingCalendarLaneHeader.tsx +28 -0
  181. package/src/lib/components/bookingCalendar/bookingCalendarLaneHeader/classes.ts +7 -0
  182. package/src/lib/components/bookingCalendar/bookingCalendarLaneHeader/index.ts +1 -0
  183. package/src/lib/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.tsx +57 -0
  184. package/src/lib/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.tsx +53 -0
  185. package/src/lib/components/bookingCalendar/bookingCalendarLanesHeader/classes.ts +9 -0
  186. package/src/lib/components/bookingCalendar/bookingCalendarLanesHeader/index.ts +2 -0
  187. package/src/lib/components/bookingCalendar/bookingCalendarRenderItem/BookingCalendarRenderItem.tsx +57 -0
  188. package/src/lib/components/bookingCalendar/bookingCalendarRenderItem/classes.ts +11 -0
  189. package/src/lib/components/bookingCalendar/bookingCalendarRenderItem/index.ts +1 -0
  190. package/src/lib/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.tsx +225 -0
  191. package/src/lib/components/bookingCalendar/bookingCalendarSelection/classes.ts +10 -0
  192. package/src/lib/components/bookingCalendar/bookingCalendarTimeAxis/BookingCalendarTimeAxis.tsx +53 -0
  193. package/src/lib/components/bookingCalendar/bookingCalendarTimeAxis/classes.ts +9 -0
  194. package/src/lib/components/bookingCalendar/classes.ts +21 -0
  195. package/src/lib/components/bookingCalendar/common.ts +62 -0
  196. package/src/lib/components/bookingCalendar/index.ts +3 -0
  197. package/src/lib/components/bookingCalendar/utils.ts +350 -0
  198. package/src/lib/components/button/Button.tsx +193 -0
  199. package/src/lib/components/button/index.tsx +2 -0
  200. package/src/lib/components/checkbox/Checkbox.tsx +178 -0
  201. package/src/lib/components/checkbox/index.tsx +2 -0
  202. package/src/lib/components/dropdown/Dropdown.tsx +135 -0
  203. package/src/lib/components/dropdown/index.tsx +2 -0
  204. package/src/lib/components/dynamicSubmit/DynamicSubmit.tsx +153 -0
  205. package/src/lib/components/dynamicSubmit/index.tsx +2 -0
  206. package/src/lib/components/externalValidationComponent/ExternalValidationComponent.tsx +78 -0
  207. package/src/lib/components/externalValidationComponent/index.tsx +2 -0
  208. package/src/lib/components/form/Form.tsx +276 -0
  209. package/src/lib/components/form/FormContext.ts +49 -0
  210. package/src/lib/components/form/FormValidationSummary.tsx +122 -0
  211. package/src/lib/components/form/index.tsx +5 -0
  212. package/src/lib/components/form/withFormContext.tsx +20 -0
  213. package/src/lib/components/inputGroup/InputGroup.tsx +60 -0
  214. package/src/lib/components/inputGroup/index.tsx +2 -0
  215. package/src/lib/components/inputHeader/InputHeader.tsx +448 -0
  216. package/src/lib/components/inputHeader/InputHeaderContext.ts +42 -0
  217. package/src/lib/components/inputHeader/index.tsx +2 -0
  218. package/src/lib/components/inputHeader/withInputHeaderContext.tsx +24 -0
  219. package/src/lib/components/money/Money.tsx +298 -0
  220. package/src/lib/components/money/index.tsx +2 -0
  221. package/src/lib/components/numberInput/NumberInput.tsx +186 -0
  222. package/src/lib/components/numberInput/index.tsx +2 -0
  223. package/src/lib/components/openingHours/openingHoursDay/OpeningHoursDay.tsx +394 -0
  224. package/src/lib/components/openingHours/openingHoursDay/index.tsx +2 -0
  225. package/src/lib/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.tsx +227 -0
  226. package/src/lib/components/openingHours/openingHoursSpecial/index.tsx +2 -0
  227. package/src/lib/components/openingHours/openingHoursWeek/OpeningHoursWeek.tsx +283 -0
  228. package/src/lib/components/openingHours/openingHoursWeek/index.tsx +2 -0
  229. package/src/lib/components/openingHours/utils/OpeningHoursUtil.tsx +111 -0
  230. package/src/lib/components/radio/Radio.tsx +87 -0
  231. package/src/lib/components/radio/index.tsx +2 -0
  232. package/src/lib/components/radioContainer/RadioContainer.tsx +50 -0
  233. package/src/lib/components/radioContainer/index.tsx +2 -0
  234. package/src/lib/components/select/Select.tsx +335 -0
  235. package/src/lib/components/select/index.tsx +2 -0
  236. package/src/lib/components/submit/Submit.tsx +117 -0
  237. package/src/lib/components/submit/index.tsx +2 -0
  238. package/src/lib/components/submit/subComponents/SubmitValidationSummary.tsx +55 -0
  239. package/src/lib/components/tags/Tags.tsx +702 -0
  240. package/src/lib/components/tags/index.tsx +2 -0
  241. package/src/lib/components/tags/subComponents/TagsSuggestions.tsx +150 -0
  242. package/src/lib/components/text/Text.tsx +200 -0
  243. package/src/lib/components/text/index.tsx +2 -0
  244. package/src/lib/components/textArea/TextArea.tsx +109 -0
  245. package/src/lib/components/textArea/index.tsx +2 -0
  246. package/src/lib/components/themeProvider/ThemeContext.ts +16 -0
  247. package/src/lib/components/themeProvider/ThemeProvider.tsx +21 -0
  248. package/src/lib/components/themeProvider/index.tsx +4 -0
  249. package/src/lib/components/themeProvider/withThemeContext.tsx +30 -0
  250. package/src/lib/components/time/Time.tsx +296 -0
  251. package/src/lib/components/time/index.tsx +2 -0
  252. package/src/lib/components/timeSpan/TimeSpan.tsx +378 -0
  253. package/src/lib/components/timeSpan/index.tsx +2 -0
  254. package/src/lib/components/utils/Guid.ts +9 -0
  255. package/src/lib/components/utils/ShallowEqual.ts +75 -0
  256. package/src/lib/components/utils/TimeUtil.ts +22 -0
  257. package/src/lib/components/utils/Typescript.ts +11 -0
  258. package/src/lib/declarations/import.d.ts +1 -0
  259. package/src/lib/index.ts +24 -0
  260. package/src/lib/scss/components/base/index.scss +1 -0
  261. package/src/lib/scss/components/base/input/index.scss +1 -0
  262. package/src/lib/scss/components/base/input/input.scss +237 -0
  263. package/src/lib/scss/components/bookingCalendar/bookingCalendar.scss +274 -0
  264. package/src/lib/scss/components/bookingCalendar/index.scss +1 -0
  265. package/src/lib/scss/components/button/buttons.scss +161 -0
  266. package/src/lib/scss/components/button/index.scss +1 -0
  267. package/src/lib/scss/components/checkbox/checkbox.scss +115 -0
  268. package/src/lib/scss/components/checkbox/index.scss +1 -0
  269. package/src/lib/scss/components/dropdown/dropdown.scss +111 -0
  270. package/src/lib/scss/components/dropdown/index.scss +1 -0
  271. package/src/lib/scss/components/dynamicSubmit/dynamicSubmit.scss +1 -0
  272. package/src/lib/scss/components/dynamicSubmit/index.scss +1 -0
  273. package/src/lib/scss/components/form/form.scss +1 -0
  274. package/src/lib/scss/components/form/formValidationSummary.scss +55 -0
  275. package/src/lib/scss/components/form/index.scss +2 -0
  276. package/src/lib/scss/components/index.scss +21 -0
  277. package/src/lib/scss/components/inputGroup/index.scss +1 -0
  278. package/src/lib/scss/components/inputGroup/inputGroup.scss +67 -0
  279. package/src/lib/scss/components/inputHeader/index.scss +1 -0
  280. package/src/lib/scss/components/inputHeader/inputHeader.scss +132 -0
  281. package/src/lib/scss/components/money/index.scss +1 -0
  282. package/src/lib/scss/components/money/money.scss +51 -0
  283. package/src/lib/scss/components/numberInput/index.scss +1 -0
  284. package/src/lib/scss/components/numberInput/numberInput.scss +116 -0
  285. package/src/lib/scss/components/openingHours/index.scss +3 -0
  286. package/src/lib/scss/components/openingHours/openingHoursDay/index.scss +1 -0
  287. package/src/lib/scss/components/openingHours/openingHoursDay/openingHoursDay.scss +127 -0
  288. package/src/lib/scss/components/openingHours/openingHoursSpecial/index.scss +1 -0
  289. package/src/lib/scss/components/openingHours/openingHoursSpecial/openingHoursSpecial.scss +93 -0
  290. package/src/lib/scss/components/openingHours/openingHoursWeek/index.scss +1 -0
  291. package/src/lib/scss/components/openingHours/openingHoursWeek/openingHoursWeek.scss +23 -0
  292. package/src/lib/scss/components/radio/index.scss +1 -0
  293. package/src/lib/scss/components/radio/radio.scss +68 -0
  294. package/src/lib/scss/components/radioContainer/index.scss +1 -0
  295. package/src/lib/scss/components/radioContainer/radioContainer.scss +15 -0
  296. package/src/lib/scss/components/select/index.scss +1 -0
  297. package/src/lib/scss/components/select/select.scss +64 -0
  298. package/src/lib/scss/components/submit/index.scss +1 -0
  299. package/src/lib/scss/components/submit/submitValidationSummary.scss +35 -0
  300. package/src/lib/scss/components/tags/index.scss +1 -0
  301. package/src/lib/scss/components/tags/tags.scss +128 -0
  302. package/src/lib/scss/components/text/index.scss +1 -0
  303. package/src/lib/scss/components/text/text.scss +42 -0
  304. package/src/lib/scss/components/textArea/index.scss +1 -0
  305. package/src/lib/scss/components/textArea/textArea.scss +32 -0
  306. package/src/lib/scss/components/time/index.scss +1 -0
  307. package/src/lib/scss/components/time/time.scss +111 -0
  308. package/src/lib/scss/components/timeSpan/index.scss +1 -0
  309. package/src/lib/scss/components/timeSpan/timeSpan.scss +115 -0
  310. package/src/lib/scss/index.scss +8 -0
  311. package/src/lib/scss/styles/base.scss +7 -0
  312. package/src/lib/scss/styles/index.scss +2 -0
  313. package/src/lib/scss/styles/react-tippy.scss +4 -0
  314. package/src/lib/scss/variables/_buttons.scss +6 -0
  315. package/src/lib/scss/variables/_colors.scss +1 -0
  316. package/src/lib/scss/variables/_common.scss +12 -0
  317. package/src/lib/tsconfig.json +19 -0
  318. package/src/lib/types/ElementOverrideProp.ts +3 -0
  319. package/src/lib/types/Theme.ts +5 -0
  320. package/src/lib/types/ThemeOverrides.ts +46 -0
  321. package/src/lib/validators/EmailValidator.ts +15 -0
  322. package/src/lib/validators/LatitudeValidator.ts +25 -0
  323. package/src/lib/validators/LongitudeValidator.ts +25 -0
  324. package/src/lib/validators/NumberValidator.ts +50 -0
  325. package/src/lib/validators/UrlValidator.ts +20 -0
  326. package/src/lib/validators/base.ts +15 -0
  327. package/src/lib/validators/index.ts +6 -0
  328. package/src/stories/Basic.stories.ts +17 -0
  329. package/src/stories/Basic.tsx +1065 -0
  330. package/src/stories/Schedule.stories.ts +16 -0
  331. package/src/stories/Schedule.tsx +85 -0
  332. package/src/stories/ValidationPage.tsx +417 -0
  333. package/tsconfig.json +9 -22
  334. package/typedoc.json +6 -0
  335. package/webpack/webpack.config.base.js +139 -0
  336. package/webpack/webpack.config.dev.js +78 -0
  337. package/webpack/webpack.config.gh-pages.js +78 -0
  338. package/webpack/webpack.config.js +21 -0
  339. package/webpack/webpack.config.min.js +100 -0
  340. package/.vscode/launch.json +0 -15
  341. package/.vscode/settings.json +0 -27
  342. package/.vscode/tasks.json +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"BookingCalendarSelection.js","names":["React","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","BookingCalendarSelection","Component","constructor","props","animationInProgress","containerRef","createRef","state","hold","selectionBox","selectionBoxOrigin","selectionBoxTarget","animation","handleMouseUp","bind","handleMouseDown","handleMouseMove","handleMouseLeave","handleTransformBox","evt","_this$props$onSelecte","_this$props","distance","Math","sqrt","pow","setState","setTimeout","minSelectionSize","onSelected","origin","target","e","_this$containerRef$cu","disabled","nativeEvent","button","clearTimeout","bb","current","getBoundingClientRect","pageX","x","pageY","y","_this$containerRef$cu2","_this$props$onSelecti","_this$props2","onSelecting","render","baseStyle","zIndex","left","top","height","abs","width","userSelect","transformOrigin","transform","boxVisible","createElement","ref","className","style","undefined","gridRowEnd","dataRowsCount","onMouseDown","onMouseUp","onMouseMove","onMouseLeave","children","exports"],"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.tsx"],"sourcesContent":["import * as React from 'react';\r\n\r\nexport type BookingCalendarSelectionCoordinates = [number, number];\r\nexport interface BookingCalendarSelectionData {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n}\r\nexport interface BookingCalendarSelectionProps {\r\n disabled?: boolean;\r\n onSelecting?: (data: {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n }) => void;\r\n onSelected?: (data: {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n }) => void;\r\n dataRowsCount: number;\r\n minSelectionSize: number;\r\n}\r\n\r\nexport interface BookingCalendarSelectionState {\r\n selectionBoxOrigin: BookingCalendarSelectionCoordinates;\r\n selectionBoxTarget: BookingCalendarSelectionCoordinates;\r\n hold: boolean;\r\n animation: string;\r\n selectionBox: boolean;\r\n}\r\n\r\nexport default class BookingCalendarSelection extends React.Component<\r\n BookingCalendarSelectionProps,\r\n BookingCalendarSelectionState\r\n> {\r\n private animationInProgress: number;\r\n private containerRef: React.RefObject<HTMLDivElement>;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.animationInProgress = null;\r\n this.containerRef = React.createRef();\r\n this.state = {\r\n hold: false,\r\n selectionBox: false,\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n animation: '',\r\n };\r\n this.handleMouseUp = this.handleMouseUp.bind(this);\r\n this.handleMouseDown = this.handleMouseDown.bind(this);\r\n this.handleMouseMove = this.handleMouseMove.bind(this);\r\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\r\n }\r\n\r\n handleTransformBox() {\r\n const { selectionBoxOrigin, selectionBoxTarget } = this.state;\r\n if (\r\n selectionBoxOrigin[1] > selectionBoxTarget[1] &&\r\n selectionBoxOrigin[0] > selectionBoxTarget[0]\r\n ) {\r\n return 'scaleY(-1) scaleX(-1)';\r\n }\r\n\r\n if (selectionBoxOrigin[1] > selectionBoxTarget[1]) {\r\n return 'scaleY(-1)';\r\n }\r\n if (selectionBoxOrigin[0] > selectionBoxTarget[0]) {\r\n return 'scaleX(-1)';\r\n }\r\n return null;\r\n }\r\n\r\n handleMouseLeave(evt: React.MouseEvent<HTMLElement>) {\r\n /*if (this.state.hold) {\r\n this.setState({\r\n hold: false,\r\n animation: 'bookingCalendar__selection--fadeout',\r\n });\r\n this.animationInProgress = (setTimeout(() => {\r\n this.setState({\r\n selectionBox: false,\r\n animation: '',\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n });\r\n this.animationInProgress = null;\r\n }, 300) as unknown) as number;\r\n }*/\r\n }\r\n\r\n handleMouseUp(evt: React.MouseEvent<HTMLElement>) {\r\n if (this.state.hold) {\r\n const distance = Math.sqrt(\r\n Math.pow(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\r\n 2\r\n ) +\r\n Math.pow(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\r\n 2\r\n )\r\n );\r\n this.setState({\r\n hold: false,\r\n animation: 'bookingCalendar__selection--fadeout',\r\n });\r\n this.animationInProgress = (setTimeout(() => {\r\n this.setState({\r\n selectionBox: false,\r\n animation: '',\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n });\r\n this.animationInProgress = null;\r\n }, 300) as unknown) as number;\r\n if (distance < this.props.minSelectionSize) {\r\n return;\r\n }\r\n this.props.onSelected?.({\r\n origin: this.state.selectionBoxOrigin,\r\n target: this.state.selectionBoxTarget,\r\n });\r\n }\r\n }\r\n\r\n handleMouseDown(e: React.MouseEvent<HTMLDivElement>) {\r\n if (this.props.disabled || e.nativeEvent.button !== 0) {\r\n return;\r\n }\r\n clearTimeout(this.animationInProgress);\r\n this.animationInProgress = null;\r\n this.setState({ selectionBox: false, animation: '' });\r\n\r\n const bb = this.containerRef.current?.getBoundingClientRect();\r\n this.setState({\r\n hold: true,\r\n selectionBoxOrigin: [\r\n e.nativeEvent.pageX - bb.x,\r\n e.nativeEvent.pageY - bb.y,\r\n ],\r\n selectionBoxTarget: [\r\n e.nativeEvent.pageX - bb.x,\r\n e.nativeEvent.pageY - bb.y,\r\n ],\r\n });\r\n }\r\n\r\n private handleMouseMove(evt: React.MouseEvent<HTMLDivElement>) {\r\n if (this.state.hold && !this.state.selectionBox) {\r\n this.setState({ selectionBox: true });\r\n }\r\n if (this.state.selectionBox && !this.animationInProgress) {\r\n const bb = this.containerRef.current?.getBoundingClientRect();\r\n this.setState({\r\n selectionBoxTarget: [\r\n evt.nativeEvent.pageX - bb?.x,\r\n evt.nativeEvent.pageY - bb?.y,\r\n ],\r\n });\r\n\r\n this.props.onSelecting?.({\r\n origin: this.state.selectionBoxOrigin,\r\n target: this.state.selectionBoxTarget,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const baseStyle: React.CSSProperties = {\r\n zIndex: 10,\r\n left: this.state.selectionBoxOrigin[0],\r\n top: this.state.selectionBoxOrigin[1],\r\n height: Math.abs(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1] - 1\r\n ),\r\n width: Math.abs(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0] - 1\r\n ),\r\n userSelect: 'none',\r\n transformOrigin: 'top left',\r\n transform: this.handleTransformBox(),\r\n };\r\n const boxVisible =\r\n Math.sqrt(\r\n Math.pow(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\r\n 2\r\n ) +\r\n Math.pow(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\r\n 2\r\n )\r\n ) > this.props.minSelectionSize;\r\n return (\r\n <div\r\n ref={this.containerRef}\r\n className=\"bookingCalendar__selection__container\"\r\n style={{\r\n zIndex: this.state.selectionBox ? 99999 : undefined,\r\n gridRowEnd: `span ${this.props.dataRowsCount}`,\r\n }}\r\n onMouseDown={this.handleMouseDown}\r\n onMouseUp={this.handleMouseUp}\r\n onMouseMove={this.handleMouseMove}\r\n onMouseLeave={this.handleMouseLeave}\r\n >\r\n {boxVisible && this.state.selectionBox && (\r\n <div\r\n className={`bookingCalendar__selection ${this.state.animation}`}\r\n style={baseStyle}\r\n />\r\n )}\r\n {this.props.children}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"BookingCalendarSelection.js","names":["React","_interopRequireWildcard","require","_classes","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","BookingCalendarSelection","Component","constructor","props","animationInProgress","containerRef","createRef","state","hold","selectionBox","selectionBoxOrigin","selectionBoxTarget","animation","handleMouseUp","bind","handleMouseDown","handleMouseMove","handleMouseLeave","handleTransformBox","evt","_this$props$onSelecte","_this$props","distance","Math","sqrt","pow","setState","setTimeout","minSelectionSize","onSelected","origin","target","e","_this$containerRef$cu","disabled","nativeEvent","button","clearTimeout","bb","current","getBoundingClientRect","pageX","x","pageY","y","_this$containerRef$cu2","_this$props$onSelecti","_this$props2","onSelecting","render","baseStyle","zIndex","left","top","height","abs","width","userSelect","transformOrigin","transform","boxVisible","createElement","ref","className","bookingCalendarSelectionDefaultClasses","root","style","undefined","gridRowEnd","dataRowsCount","onMouseDown","onMouseUp","onMouseMove","onMouseLeave","selection","children","exports"],"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { bookingCalendarSelectionDefaultClasses } from './classes';\r\n\r\nexport type BookingCalendarSelectionCoordinates = [number, number];\r\nexport interface BookingCalendarSelectionData {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n}\r\nexport interface BookingCalendarSelectionProps {\r\n disabled?: boolean;\r\n onSelecting?: (data: {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n }) => void;\r\n onSelected?: (\r\n data: {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n },\r\n e: React.MouseEvent<HTMLElement>\r\n ) => void;\r\n dataRowsCount: number;\r\n minSelectionSize: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport interface BookingCalendarSelectionState {\r\n selectionBoxOrigin: BookingCalendarSelectionCoordinates;\r\n selectionBoxTarget: BookingCalendarSelectionCoordinates;\r\n hold: boolean;\r\n animation: string;\r\n selectionBox: boolean;\r\n}\r\n\r\nexport default class BookingCalendarSelection extends React.Component<\r\n BookingCalendarSelectionProps,\r\n BookingCalendarSelectionState\r\n> {\r\n private animationInProgress: number;\r\n private containerRef: React.RefObject<HTMLDivElement>;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.animationInProgress = null;\r\n this.containerRef = React.createRef();\r\n this.state = {\r\n hold: false,\r\n selectionBox: false,\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n animation: '',\r\n };\r\n this.handleMouseUp = this.handleMouseUp.bind(this);\r\n this.handleMouseDown = this.handleMouseDown.bind(this);\r\n this.handleMouseMove = this.handleMouseMove.bind(this);\r\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\r\n }\r\n\r\n handleTransformBox() {\r\n const { selectionBoxOrigin, selectionBoxTarget } = this.state;\r\n if (\r\n selectionBoxOrigin[1] > selectionBoxTarget[1] &&\r\n selectionBoxOrigin[0] > selectionBoxTarget[0]\r\n ) {\r\n return 'scaleY(-1) scaleX(-1)';\r\n }\r\n\r\n if (selectionBoxOrigin[1] > selectionBoxTarget[1]) {\r\n return 'scaleY(-1)';\r\n }\r\n if (selectionBoxOrigin[0] > selectionBoxTarget[0]) {\r\n return 'scaleX(-1)';\r\n }\r\n return null;\r\n }\r\n\r\n handleMouseLeave(evt: React.MouseEvent<HTMLElement>) {\r\n /*if (this.state.hold) {\r\n this.setState({\r\n hold: false,\r\n animation: 'bookingCalendar__selection--fadeout',\r\n });\r\n this.animationInProgress = (setTimeout(() => {\r\n this.setState({\r\n selectionBox: false,\r\n animation: '',\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n });\r\n this.animationInProgress = null;\r\n }, 300) as unknown) as number;\r\n }*/\r\n }\r\n\r\n handleMouseUp(evt: React.MouseEvent<HTMLElement>) {\r\n if (this.state.hold) {\r\n const distance = Math.sqrt(\r\n Math.pow(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\r\n 2\r\n ) +\r\n Math.pow(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\r\n 2\r\n )\r\n );\r\n this.setState({\r\n hold: false,\r\n animation: 'bookingCalendar__selection--fadeout',\r\n });\r\n this.animationInProgress = setTimeout(() => {\r\n this.setState({\r\n selectionBox: false,\r\n animation: '',\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n });\r\n this.animationInProgress = null;\r\n }, 300) as unknown as number;\r\n if (distance < this.props.minSelectionSize) {\r\n return;\r\n }\r\n this.props.onSelected?.(\r\n {\r\n origin: this.state.selectionBoxOrigin,\r\n target: this.state.selectionBoxTarget,\r\n },\r\n evt\r\n );\r\n }\r\n }\r\n\r\n handleMouseDown(e: React.MouseEvent<HTMLDivElement>) {\r\n if (this.props.disabled || e.nativeEvent.button !== 0) {\r\n return;\r\n }\r\n clearTimeout(this.animationInProgress);\r\n this.animationInProgress = null;\r\n this.setState({ selectionBox: false, animation: '' });\r\n\r\n const bb = this.containerRef.current?.getBoundingClientRect();\r\n this.setState({\r\n hold: true,\r\n selectionBoxOrigin: [\r\n e.nativeEvent.pageX - bb.x,\r\n e.nativeEvent.pageY - bb.y,\r\n ],\r\n selectionBoxTarget: [\r\n e.nativeEvent.pageX - bb.x,\r\n e.nativeEvent.pageY - bb.y,\r\n ],\r\n });\r\n }\r\n\r\n private handleMouseMove(evt: React.MouseEvent<HTMLDivElement>) {\r\n if (this.state.hold && !this.state.selectionBox) {\r\n this.setState({ selectionBox: true });\r\n }\r\n if (this.state.selectionBox && !this.animationInProgress) {\r\n const bb = this.containerRef.current?.getBoundingClientRect();\r\n this.setState({\r\n selectionBoxTarget: [\r\n evt.nativeEvent.pageX - bb?.x,\r\n evt.nativeEvent.pageY - bb?.y,\r\n ],\r\n });\r\n\r\n this.props.onSelecting?.({\r\n origin: this.state.selectionBoxOrigin,\r\n target: this.state.selectionBoxTarget,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const baseStyle: React.CSSProperties = {\r\n zIndex: 10,\r\n left: this.state.selectionBoxOrigin[0],\r\n top: this.state.selectionBoxOrigin[1],\r\n height: Math.abs(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1] - 1\r\n ),\r\n width: Math.abs(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0] - 1\r\n ),\r\n userSelect: 'none',\r\n transformOrigin: 'top left',\r\n transform: this.handleTransformBox(),\r\n };\r\n const boxVisible =\r\n Math.sqrt(\r\n Math.pow(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\r\n 2\r\n ) +\r\n Math.pow(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\r\n 2\r\n )\r\n ) > this.props.minSelectionSize;\r\n return (\r\n <div\r\n ref={this.containerRef}\r\n className={bookingCalendarSelectionDefaultClasses.root}\r\n style={{\r\n zIndex: this.state.selectionBox ? 99999 : undefined,\r\n gridRowEnd: `span ${this.props.dataRowsCount}`,\r\n }}\r\n onMouseDown={this.handleMouseDown}\r\n onMouseUp={this.handleMouseUp}\r\n onMouseMove={this.handleMouseMove}\r\n onMouseLeave={this.handleMouseLeave}\r\n >\r\n {boxVisible && this.state.selectionBox && (\r\n <div\r\n className={`${bookingCalendarSelectionDefaultClasses.selection} ${this.state.animation}`}\r\n style={baseStyle}\r\n >\r\n {this.props.children}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface BookingCalendarSelectionClasses {
2
+ root?: string;
3
+ selection?: string;
4
+ }
5
+ export declare const bookingCalendarSelectionDefaultClasses: BookingCalendarSelectionClasses;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.bookingCalendarSelectionDefaultClasses = void 0;
7
+ const bookingCalendarSelectionDefaultClasses = {
8
+ root: 'bookingCalendar__selection__container',
9
+ selection: 'bookingCalendar__selection'
10
+ };
11
+ exports.bookingCalendarSelectionDefaultClasses = bookingCalendarSelectionDefaultClasses;
12
+ //# sourceMappingURL=classes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classes.js","names":["bookingCalendarSelectionDefaultClasses","root","selection","exports"],"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarSelection/classes.ts"],"sourcesContent":["export interface BookingCalendarSelectionClasses {\n root?: string;\n selection?: string;\n}\n\nexport const bookingCalendarSelectionDefaultClasses: BookingCalendarSelectionClasses =\n {\n root: 'bookingCalendar__selection__container',\n selection: 'bookingCalendar__selection',\n };\n"],"mappings":";;;;;;AAKO,MAAMA,sCAAuE,GAClF;EACEC,IAAI,EAAE,uCAAuC;EAC7CC,SAAS,EAAE;AACb,CAAC;AAACC,OAAA,CAAAH,sCAAA,GAAAA,sCAAA"}
@@ -1,11 +1,11 @@
1
- /// <reference types="react" />
2
- import { BookingCalendarTimeAxisClasses } from './classes';
3
- import { GridItem } from '../utils';
4
- import { Duration } from 'moment';
5
- import { GetMomentFormatFunctionType } from '..';
6
- export interface BookingCalendarTimeAxisProps extends BookingCalendarTimeAxisClasses {
7
- items: GridItem[];
8
- bestStep: Duration;
9
- getMomentFormatFunction: GetMomentFormatFunctionType;
10
- }
11
- export declare function BookingCalendarTimeAxis(props: BookingCalendarTimeAxisProps): JSX.Element;
1
+ import * as React from 'react';
2
+ import { BookingCalendarTimeAxisClasses } from './classes';
3
+ import { GridItem } from '../utils';
4
+ import { Duration } from 'moment';
5
+ import { GetMomentFormatFunctionType } from '..';
6
+ export interface BookingCalendarTimeAxisProps extends BookingCalendarTimeAxisClasses {
7
+ items: GridItem[];
8
+ bestStep: Duration;
9
+ getMomentFormatFunction: GetMomentFormatFunctionType;
10
+ }
11
+ export declare function BookingCalendarTimeAxis(props: BookingCalendarTimeAxisProps): React.JSX.Element;
@@ -1,5 +1,5 @@
1
- export interface BookingCalendarTimeAxisClasses {
2
- className?: string;
3
- timeAxisItemClassName?: string;
4
- }
5
- export declare const bookingCalendarTimeAxisDefaultClasses: BookingCalendarTimeAxisClasses;
1
+ export interface BookingCalendarTimeAxisClasses {
2
+ className?: string;
3
+ timeAxisItemClassName?: string;
4
+ }
5
+ export declare const bookingCalendarTimeAxisDefaultClasses: BookingCalendarTimeAxisClasses;
@@ -1,11 +1,11 @@
1
- import { BookingCalendarControlsClasses } from './bookingCalendarControls/classes';
2
- export interface BookingCalendarClasses {
3
- className?: string;
4
- laneContainerClassName?: string;
5
- laneHeaderContainerClassName?: string;
6
- lanesHeaderHeaderContainerClassName?: string;
7
- lanesHeaderContainerClassName?: string;
8
- tableClassName?: string;
9
- controlsClasses?: BookingCalendarControlsClasses;
10
- }
11
- export declare const bookingCalendarDefaultClasses: BookingCalendarClasses;
1
+ import { BookingCalendarControlsClasses } from './bookingCalendarControls/classes';
2
+ export interface BookingCalendarClasses {
3
+ className?: string;
4
+ laneContainerClassName?: string;
5
+ laneHeaderContainerClassName?: string;
6
+ lanesHeaderHeaderContainerClassName?: string;
7
+ lanesHeaderContainerClassName?: string;
8
+ tableClassName?: string;
9
+ controlsClasses?: BookingCalendarControlsClasses;
10
+ }
11
+ export declare const bookingCalendarDefaultClasses: BookingCalendarClasses;
@@ -1,23 +1,24 @@
1
- /// <reference types="react" />
2
- import moment, { Moment, Duration } from 'moment';
3
- export interface BookingCalendarItemT {
4
- from: Moment;
5
- till: Moment;
6
- laneKey?: string | number;
7
- }
8
- export interface BookingCalendarItemWithOriginalIndexT {
9
- originalIndex: number;
10
- }
11
- export interface BookingCalendarDateRange {
12
- from: Moment;
13
- till: Moment;
14
- }
15
- export interface ZoomLevel {
16
- step: Duration;
17
- label: React.ReactNode;
18
- }
19
- export declare const defaultGetMomentFormatFunction: (date: Moment, bestStep: Duration) => "MMM Do" | "h:mm a";
20
- export declare type GetMomentFormatFunctionType = typeof defaultGetMomentFormatFunction;
21
- export declare const defaultGetNewMomentFunction: (date: Date) => moment.Moment;
22
- export declare type GetNewMomentFunctionType = typeof defaultGetNewMomentFunction;
23
- export declare const defaultGridAvailableSteps: Duration[];
1
+ /// <reference types="react" />
2
+ import moment, { Moment, Duration } from 'moment';
3
+ export interface BookingCalendarItemT {
4
+ from: Moment;
5
+ till: Moment;
6
+ id: string | number;
7
+ laneKey?: string | number;
8
+ }
9
+ export interface BookingCalendarItemWithOriginalIndexT {
10
+ originalIndex: number;
11
+ }
12
+ export interface BookingCalendarDateRange {
13
+ from: Moment;
14
+ till: Moment;
15
+ }
16
+ export interface ZoomLevel {
17
+ step: Duration;
18
+ label: React.ReactNode;
19
+ }
20
+ export declare const defaultGetMomentFormatFunction: (date: Moment, bestStep: Duration) => "MMM Do" | "h:mm a";
21
+ export type GetMomentFormatFunctionType = typeof defaultGetMomentFormatFunction;
22
+ export declare const defaultGetNewMomentFunction: (date: Date) => moment.Moment;
23
+ export type GetNewMomentFunctionType = typeof defaultGetNewMomentFunction;
24
+ export declare const defaultGridAvailableSteps: Duration[];
@@ -4,9 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.defaultGridAvailableSteps = exports.defaultGetNewMomentFunction = exports.defaultGetMomentFormatFunction = void 0;
7
- var _moment = _interopRequireWildcard(require("moment"));
8
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
9
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
7
+ var _moment = _interopRequireDefault(require("moment"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
9
  const defaultGetMomentFormatFunction = (date, bestStep) => {
11
10
  if (!date || !bestStep) {
12
11
  return undefined;
@@ -21,6 +20,6 @@ const defaultGetNewMomentFunction = date => {
21
20
  return (0, _moment.default)(date);
22
21
  };
23
22
  exports.defaultGetNewMomentFunction = defaultGetNewMomentFunction;
24
- const defaultGridAvailableSteps = [(0, _moment.duration)(1, 'minute'), (0, _moment.duration)(5, 'minute'), (0, _moment.duration)(10, 'minute'), (0, _moment.duration)(15, 'minute'), (0, _moment.duration)(20, 'minute'), (0, _moment.duration)(30, 'minute'), (0, _moment.duration)(1, 'hour'), (0, _moment.duration)(2, 'hour'), (0, _moment.duration)(4, 'hour'), (0, _moment.duration)(6, 'hour'), (0, _moment.duration)(8, 'hour'), (0, _moment.duration)(12, 'hour'), (0, _moment.duration)(1, 'day')];
23
+ const defaultGridAvailableSteps = [_moment.default.duration(1, 'minute'), _moment.default.duration(5, 'minute'), _moment.default.duration(10, 'minute'), _moment.default.duration(15, 'minute'), _moment.default.duration(20, 'minute'), _moment.default.duration(30, 'minute'), _moment.default.duration(1, 'hour'), _moment.default.duration(2, 'hour'), _moment.default.duration(4, 'hour'), _moment.default.duration(6, 'hour'), _moment.default.duration(8, 'hour'), _moment.default.duration(12, 'hour'), _moment.default.duration(1, 'day')];
25
24
  exports.defaultGridAvailableSteps = defaultGridAvailableSteps;
26
25
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","names":["_moment","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","defaultGetMomentFormatFunction","date","bestStep","undefined","valueOf","clone","startOf","exports","defaultGetNewMomentFunction","moment","defaultGridAvailableSteps","duration"],"sources":["../../../src/lib/components/bookingCalendar/common.ts"],"sourcesContent":["import moment, { Moment, Duration, duration } from 'moment';\r\n\r\nexport interface BookingCalendarItemT {\r\n from: Moment;\r\n till: Moment;\r\n /*\r\n Optional index that identifies the lane\r\n */\r\n laneKey?: string | number;\r\n}\r\n\r\nexport interface BookingCalendarItemWithOriginalIndexT {\r\n originalIndex: number;\r\n}\r\n\r\nexport interface BookingCalendarDateRange {\r\n from: Moment;\r\n till: Moment;\r\n}\r\n\r\nexport interface ZoomLevel {\r\n step: Duration;\r\n label: React.ReactNode;\r\n}\r\n\r\nexport const defaultGetMomentFormatFunction = (\r\n date: Moment,\r\n bestStep: Duration\r\n) => {\r\n if (!date || !bestStep) {\r\n return undefined;\r\n }\r\n if (\r\n date.valueOf() ===\r\n date\r\n .clone()\r\n .startOf('day')\r\n .valueOf()\r\n ) {\r\n return 'MMM Do';\r\n }\r\n return 'h:mm a';\r\n};\r\n\r\nexport type GetMomentFormatFunctionType = typeof defaultGetMomentFormatFunction;\r\n\r\nexport const defaultGetNewMomentFunction = (date: Date) => {\r\n return moment(date);\r\n};\r\n\r\nexport type GetNewMomentFunctionType = typeof defaultGetNewMomentFunction;\r\n\r\nexport const defaultGridAvailableSteps: Duration[] = [\r\n duration(1, 'minute'),\r\n duration(5, 'minute'),\r\n duration(10, 'minute'),\r\n duration(15, 'minute'),\r\n duration(20, 'minute'),\r\n duration(30, 'minute'),\r\n duration(1, 'hour'),\r\n duration(2, 'hour'),\r\n duration(4, 'hour'),\r\n duration(6, 'hour'),\r\n duration(8, 'hour'),\r\n duration(12, 'hour'),\r\n duration(1, 'day'),\r\n];\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"common.js","names":["_moment","_interopRequireDefault","require","obj","__esModule","default","defaultGetMomentFormatFunction","date","bestStep","undefined","valueOf","clone","startOf","exports","defaultGetNewMomentFunction","moment","defaultGridAvailableSteps","duration"],"sources":["../../../src/lib/components/bookingCalendar/common.ts"],"sourcesContent":["import moment, { Moment, Duration } from 'moment';\r\n\r\nexport interface BookingCalendarItemT {\r\n from: Moment;\r\n till: Moment;\r\n id: string | number;\r\n /*\r\n Optional index that identifies the lane\r\n */\r\n laneKey?: string | number;\r\n}\r\n\r\nexport interface BookingCalendarItemWithOriginalIndexT {\r\n originalIndex: number;\r\n}\r\n\r\nexport interface BookingCalendarDateRange {\r\n from: Moment;\r\n till: Moment;\r\n}\r\n\r\nexport interface ZoomLevel {\r\n step: Duration;\r\n label: React.ReactNode;\r\n}\r\n\r\nexport const defaultGetMomentFormatFunction = (\r\n date: Moment,\r\n bestStep: Duration\r\n) => {\r\n if (!date || !bestStep) {\r\n return undefined;\r\n }\r\n if (date.valueOf() === date.clone().startOf('day').valueOf()) {\r\n return 'MMM Do';\r\n }\r\n return 'h:mm a';\r\n};\r\n\r\nexport type GetMomentFormatFunctionType = typeof defaultGetMomentFormatFunction;\r\n\r\nexport const defaultGetNewMomentFunction = (date: Date) => {\r\n return moment(date);\r\n};\r\n\r\nexport type GetNewMomentFunctionType = typeof defaultGetNewMomentFunction;\r\n\r\nexport const defaultGridAvailableSteps: Duration[] = [\r\n moment.duration(1, 'minute'),\r\n moment.duration(5, 'minute'),\r\n moment.duration(10, 'minute'),\r\n moment.duration(15, 'minute'),\r\n moment.duration(20, 'minute'),\r\n moment.duration(30, 'minute'),\r\n moment.duration(1, 'hour'),\r\n moment.duration(2, 'hour'),\r\n moment.duration(4, 'hour'),\r\n moment.duration(6, 'hour'),\r\n moment.duration(8, 'hour'),\r\n moment.duration(12, 'hour'),\r\n moment.duration(1, 'day'),\r\n];\r\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAkD,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AA0B3C,MAAMG,8BAA8B,GAAGA,CAC5CC,IAAY,EACZC,QAAkB,KACf;EACH,IAAI,CAACD,IAAI,IAAI,CAACC,QAAQ,EAAE;IACtB,OAAOC,SAAS;EAClB;EACA,IAAIF,IAAI,CAACG,OAAO,CAAC,CAAC,KAAKH,IAAI,CAACI,KAAK,CAAC,CAAC,CAACC,OAAO,CAAC,KAAK,CAAC,CAACF,OAAO,CAAC,CAAC,EAAE;IAC5D,OAAO,QAAQ;EACjB;EACA,OAAO,QAAQ;AACjB,CAAC;AAACG,OAAA,CAAAP,8BAAA,GAAAA,8BAAA;AAIK,MAAMQ,2BAA2B,GAAIP,IAAU,IAAK;EACzD,OAAO,IAAAQ,eAAM,EAACR,IAAI,CAAC;AACrB,CAAC;AAACM,OAAA,CAAAC,2BAAA,GAAAA,2BAAA;AAIK,MAAME,yBAAqC,GAAG,CACnDD,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAC5BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAC5BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC7BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC7BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC7BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC7BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1BF,eAAM,CAACE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAC3BF,eAAM,CAACE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAC1B;AAACJ,OAAA,CAAAG,yBAAA,GAAAA,yBAAA"}
@@ -1,3 +1,3 @@
1
- export * from './BookingCalendar';
2
- export * from './common';
3
- export * from './classes';
1
+ export * from './BookingCalendar';
2
+ export * from './common';
3
+ export * from './classes';
@@ -1,50 +1,55 @@
1
- /// <reference types="react" />
2
- import moment, { Moment, Duration } from 'moment';
3
- import { BookingCalendarItemProps } from './bookingCalendarItem';
4
- import { BookingCalendarLaneProps } from './bookingCalendarLane';
5
- import { BookingCalendarLaneHeaderProps } from './bookingCalendarLaneHeader';
6
- import { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';
7
- import { BookingCalendarItemT } from './common';
8
- export declare function groupBy<T>(items: T[], iterator: (item: T) => number | string): {};
9
- export interface LaneSourceData<T extends BookingCalendarItemT, TLaneData> {
10
- laneKey: number;
11
- data?: TLaneData;
12
- rowClassName?: string;
13
- BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;
14
- BookingCalendarRenderItem?: React.ComponentType<BookingCalendarRenderItemProps<T>>;
15
- BookingCalendarLaneHeader?: React.ComponentType<BookingCalendarLaneHeaderProps<TLaneData>>;
16
- BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;
17
- }
18
- export interface LaneData<T extends BookingCalendarItemT, TLaneData> extends LaneSourceData<T, TLaneData> {
19
- items: T[];
20
- }
21
- export declare function splitBookingsToLanes<T extends BookingCalendarItemT, TLaneData>(bookings: T[], from: Moment, minLanesCount: number, lanesSource?: LaneSourceData<T, TLaneData>[], unmatchedToFront?: boolean): LaneData<T, TLaneData>[];
22
- export declare function itemsOverlap<T extends BookingCalendarItemT>(a: T, b: T): boolean;
23
- export declare const getItemPositionStyle: (marginStart: number, width: number) => import("react").CSSProperties;
24
- export declare function calculateItemsDimensions<T extends BookingCalendarItemT>(items: T[], from: Moment, till: Moment): {
25
- item: T;
26
- start: number;
27
- realStart: number;
28
- realFrom: moment.Moment;
29
- startIsCut: boolean;
30
- width: number;
31
- end: number;
32
- realEnd: number;
33
- realTill: moment.Moment;
34
- endIsCut: boolean;
35
- marginStart: number;
36
- }[];
37
- export declare const generateControlItems: (from: Moment, till: Moment, step: Duration, startOfStep: Moment) => {
38
- from: moment.Moment;
39
- till: moment.Moment;
40
- }[];
41
- export interface GridItem {
42
- left: number;
43
- date: Moment;
44
- stepProportion: number;
45
- opacity: number;
46
- }
47
- export declare const generateGridItems: (from: Moment, till: Moment, step: Duration, containerWidthPx: number, availableSteps: Duration[], goalGridWidthPx: number, startOfStep: Moment) => {
48
- items: GridItem[];
49
- bestStep: Duration;
50
- };
1
+ /// <reference types="react" />
2
+ import moment, { Moment, Duration } from 'moment';
3
+ import { BookingCalendarItemProps } from './bookingCalendarItem';
4
+ import { BookingCalendarLaneProps } from './bookingCalendarLane';
5
+ import { BookingCalendarLaneHeaderProps } from './bookingCalendarLaneHeader';
6
+ import { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';
7
+ import { BookingCalendarItemT } from './common';
8
+ export declare function groupBy<T>(items: T[], iterator: (item: T) => number | string): {
9
+ [key: string | number]: T[];
10
+ };
11
+ export interface LaneSourceData<T extends BookingCalendarItemT, TLaneData> {
12
+ laneKey: number;
13
+ data?: TLaneData;
14
+ rowClassName?: string;
15
+ BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;
16
+ BookingCalendarRenderItem?: React.ComponentType<BookingCalendarRenderItemProps<T>>;
17
+ BookingCalendarLaneHeader?: React.ComponentType<BookingCalendarLaneHeaderProps<TLaneData>>;
18
+ BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;
19
+ }
20
+ export interface LaneData<T extends BookingCalendarItemT, TLaneData> extends LaneSourceData<T, TLaneData> {
21
+ items: T[];
22
+ }
23
+ export declare function splitBookingsToLanes<T extends BookingCalendarItemT, TLaneData>(bookings: T[], from: Moment, minLanesCount: number, lanesSource?: LaneSourceData<T, TLaneData>[], unmatchedToFront?: boolean): LaneData<T, TLaneData>[];
24
+ type Picked = Pick<BookingCalendarItemT, 'from' | 'till'>;
25
+ export declare function itemsOverlap(a: Picked, b: Picked): boolean;
26
+ export declare const getItemPositionStyle: (marginStart: number, width: number) => import("react").CSSProperties;
27
+ export declare function calculateItemsDimensions<T extends BookingCalendarItemT>(items: T[], from: Moment, till: Moment): {
28
+ item: T;
29
+ start: number;
30
+ realStart: number;
31
+ realFrom: moment.Moment;
32
+ startIsCut: boolean;
33
+ width: number;
34
+ end: number;
35
+ realEnd: number;
36
+ realTill: moment.Moment;
37
+ endIsCut: boolean;
38
+ marginStart: number;
39
+ }[];
40
+ export declare const generateControlItems: (from: Moment, till: Moment, step: Duration, startOfStep: Moment) => {
41
+ from: moment.Moment;
42
+ till: moment.Moment;
43
+ id: number;
44
+ }[];
45
+ export interface GridItem {
46
+ left: number;
47
+ date: Moment;
48
+ stepProportion: number;
49
+ opacity: number;
50
+ }
51
+ export declare const generateGridItems: (from: Moment, till: Moment, step: Duration, containerWidthPx: number, availableSteps: Duration[], goalGridWidthPx: number, startOfStep: Moment) => {
52
+ items: GridItem[];
53
+ bestStep: Duration;
54
+ };
55
+ export {};
@@ -197,7 +197,8 @@ const generateControlItems = (from, till, step, startOfStep) => {
197
197
  }
198
198
  return new Array(steps).fill(0).map((_, index) => ({
199
199
  from: from.clone().add(subtract).add(step.asMilliseconds() * index),
200
- till: from.clone().add(subtract).add(step.asMilliseconds() * (index + 1))
200
+ till: from.clone().add(subtract).add(step.asMilliseconds() * (index + 1)),
201
+ id: index
201
202
  }));
202
203
  };
203
204
  exports.generateControlItems = generateControlItems;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_moment","_interopRequireDefault","require","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","groupBy","items","iterator","reduce","item","hasOwnProperty","splitBookingsToLanes","bookings","from","minLanesCount","lanesSource","unmatchedToFront","lanes","map","bookingsWithoutLaneKey","a","laneKey","bookingsWithLaneKey","grouped","booking","originalIndex","find","missingLanes","some","l","concat","remainingBookings","sort","b","valueOf","min","bookingIndex","laneIndex","lane","index","_lane$items","lastTill","till","distances","dist","diff","Math","abs","_min","indexOf","splice","data","shift","Array","fill","_","findIndex","arr","unmatchedVal","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","sortArrayByLaneKeys","referenceArray","arrayToSort","indexA","indexB","itemsOverlap","isBefore","isAfter","getItemPositionStyle","marginStart","width","marginLeft","exports","calculateItemsDimensions","lastEnd","widthMs","startMs","endMs","startIsCut","realStart","realFrom","moment","start","endIsCut","realEnd","end","realTill","generateControlItems","step","startOfStep","steps","max","ceil","asMilliseconds","subtract","clone","add","generateGridItems","containerWidthPx","availableSteps","goalGridWidthPx","bestStep","stepMs","fromMs","tillMs","timeLengthMs","approximateStepsCount","approximateStepMs","availableStepsDistancesMs","smallestDistance","bestStepIndex","utcOffset","date","stepProportion","numberOfRoots","current","currentTop","tolerance","pow","left","opacity"],"sources":["../../../src/lib/components/bookingCalendar/utils.ts"],"sourcesContent":["import moment, { Moment, Duration } from 'moment';\r\nimport { BookingCalendarItemProps } from './bookingCalendarItem';\r\nimport { BookingCalendarLaneProps } from './bookingCalendarLane';\r\nimport { BookingCalendarLaneHeaderProps } from './bookingCalendarLaneHeader';\r\nimport { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';\r\nimport {\r\n BookingCalendarItemT,\r\n BookingCalendarItemWithOriginalIndexT,\r\n} from './common';\r\n\r\nexport function groupBy<T>(items: T[], iterator: (item: T) => number | string) {\r\n return items.reduce((obj, item) => {\r\n const key = iterator(item);\r\n if (!obj.hasOwnProperty(key)) {\r\n obj[key] = [];\r\n }\r\n obj[key].push(item);\r\n return obj;\r\n }, {});\r\n}\r\n\r\nexport interface LaneSourceData<T extends BookingCalendarItemT, TLaneData> {\r\n laneKey: number;\r\n data?: TLaneData;\r\n rowClassName?: string;\r\n BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n BookingCalendarLaneHeader?: React.ComponentType<\r\n BookingCalendarLaneHeaderProps<TLaneData>\r\n >;\r\n BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;\r\n}\r\n\r\nexport interface LaneData<T extends BookingCalendarItemT, TLaneData>\r\n extends LaneSourceData<T, TLaneData> {\r\n items: T[];\r\n}\r\n\r\nexport function splitBookingsToLanes<T extends BookingCalendarItemT, TLaneData>(\r\n bookings: T[],\r\n from: Moment,\r\n minLanesCount: number,\r\n lanesSource: LaneSourceData<T, TLaneData>[] = [],\r\n unmatchedToFront = true\r\n) {\r\n if (!bookings) {\r\n return [];\r\n }\r\n let lanes: LaneData<T, TLaneData>[] = [];\r\n if (lanesSource?.length) {\r\n lanes = lanesSource.map((source) => ({\r\n ...source,\r\n items: [],\r\n }));\r\n }\r\n const bookingsWithoutLaneKey = bookings.filter(\r\n (a) => a.laneKey === undefined\r\n );\r\n const bookingsWithLaneKey = bookings.filter((a) => a.laneKey !== undefined);\r\n if (bookingsWithLaneKey.length) {\r\n const grouped = groupBy(\r\n bookingsWithLaneKey.map((booking, originalIndex) => ({\r\n ...booking,\r\n originalIndex,\r\n })),\r\n (a) => a.laneKey\r\n );\r\n lanes = Object.keys(grouped).map((key) => ({\r\n laneKey: Number(key),\r\n items: grouped[key],\r\n ...lanesSource?.find((a) => a.laneKey === Number(key)),\r\n }));\r\n const missingLanes = lanesSource?.filter(\r\n (a) => !lanes.some((l) => l.laneKey === a.laneKey)\r\n );\r\n lanes = lanes.concat(missingLanes.map((a) => ({ ...a, items: [] })));\r\n }\r\n if (bookingsWithoutLaneKey.length) {\r\n let remainingBookings: (T & BookingCalendarItemWithOriginalIndexT)[] =\r\n bookingsWithoutLaneKey\r\n .map((booking, originalIndex) => ({ ...booking, originalIndex }))\r\n .sort((a, b) => a.from.valueOf() - b.from.valueOf());\r\n while (remainingBookings.length > 0) {\r\n let min = 99999999999999;\r\n let bookingIndex = -1;\r\n let laneIndex = -1;\r\n lanes.forEach((lane, index) => {\r\n if (lanesSource?.some((l) => l.laneKey === lane.laneKey)) {\r\n return;\r\n }\r\n const lastTill = lane.items[lane.items.length - 1]?.till ?? from;\r\n const distances = remainingBookings.map((booking) => {\r\n const dist = booking.from.diff(lastTill);\r\n if (lane.items.length === 0) {\r\n return Math.abs(dist);\r\n }\r\n return dist;\r\n });\r\n const _min = Math.min(...distances.filter((a) => a >= 0));\r\n if (_min < min) {\r\n bookingIndex = distances.indexOf(_min);\r\n laneIndex = index;\r\n }\r\n });\r\n if (bookingIndex >= 0 && laneIndex >= 0) {\r\n lanes[laneIndex].items = lanes[laneIndex].items.concat({\r\n ...remainingBookings[bookingIndex],\r\n });\r\n remainingBookings.splice(bookingIndex, 1);\r\n } else {\r\n lanes = lanes.concat({\r\n items: [{ ...remainingBookings[0] }],\r\n laneKey: lanes.length,\r\n data: undefined,\r\n });\r\n remainingBookings.shift();\r\n }\r\n }\r\n // Naive solution that is much less computationally intensive but yields more lanes than necessary\r\n /*bookings.forEach((booking, originalIndex) => {\r\n let found = false;\r\n lanes.forEach((lane, index) => {\r\n if (!lane.some(i => itemsOverlap(booking, i))) {\r\n lanes[index] = lanes[index].concat({ ...booking, originalIndex });\r\n found = true;\r\n }\r\n });\r\n if (!found) {\r\n lanes = lanes.concat([[{ ...booking, originalIndex }]]);\r\n }\r\n });*/\r\n }\r\n for (let index = 0; index < lanes.length; index++) {\r\n const lane = lanes[index];\r\n lanes[index].items = lane.items.sort(\r\n (a, b) => a.from.valueOf() - b.from.valueOf()\r\n );\r\n }\r\n if (lanes.length < minLanesCount) {\r\n lanes = lanes.concat(\r\n new Array<LaneData<T, TLaneData>>(minLanesCount - lanes.length)\r\n .fill(null)\r\n .map((_, index) => ({\r\n items: [],\r\n laneKey: index + lanes.length,\r\n data: null,\r\n }))\r\n );\r\n }\r\n const findIndex = (\r\n arr: (LaneData<T, TLaneData> | LaneSourceData<T, TLaneData>)[],\r\n laneKey: string | undefined | number\r\n ): number => {\r\n const unmatchedVal = unmatchedToFront\r\n ? Number.MIN_SAFE_INTEGER\r\n : Number.MAX_SAFE_INTEGER;\r\n if (laneKey === undefined || laneKey === null) {\r\n return unmatchedVal;\r\n }\r\n const index = arr.findIndex((item) => item.laneKey === laneKey);\r\n return index === -1 ? unmatchedVal : index;\r\n };\r\n\r\n const sortArrayByLaneKeys = (\r\n referenceArray: LaneSourceData<T, TLaneData>[],\r\n arrayToSort: LaneData<T, TLaneData>[]\r\n ): LaneData<T, TLaneData>[] => {\r\n return [...arrayToSort].sort((a, b) => {\r\n const indexA = findIndex(referenceArray, a.laneKey);\r\n const indexB = findIndex(referenceArray, b.laneKey);\r\n return indexA - indexB;\r\n });\r\n };\r\n lanes = sortArrayByLaneKeys(lanesSource, lanes);\r\n return lanes;\r\n}\r\n\r\nexport function itemsOverlap<T extends BookingCalendarItemT>(a: T, b: T) {\r\n if (!a?.from || !a?.till || !b?.from || !b?.till) {\r\n return false;\r\n }\r\n if (b.till.isBefore(a.from)) {\r\n return false;\r\n }\r\n if (b.from.isAfter(a.till)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport const getItemPositionStyle = (marginStart: number, width: number) =>\r\n ({\r\n marginLeft: `${marginStart * 100}%`,\r\n width: `${width * 100}%`,\r\n } as React.CSSProperties);\r\n\r\nexport function calculateItemsDimensions<T extends BookingCalendarItemT>(\r\n items: T[],\r\n from: Moment,\r\n till: Moment\r\n) {\r\n let lastEnd = 0;\r\n const widthMs = till.valueOf() - from.valueOf();\r\n const startMs = from.valueOf();\r\n const endMs = till.valueOf();\r\n return widthMs > 0\r\n ? items?.map((item) => {\r\n const startIsCut = item.from.valueOf() < startMs;\r\n const realStart = (item.from.valueOf() - startMs) / widthMs;\r\n const realFrom = startIsCut ? moment(startMs) : moment(item.from);\r\n const start = startIsCut ? 0 : realStart;\r\n const endIsCut = item.till.valueOf() > endMs;\r\n const realEnd = (item.till.valueOf() - startMs) / widthMs;\r\n const end = endIsCut ? (endMs - startMs) / widthMs : realEnd;\r\n const realTill = endIsCut ? moment(endMs) : moment(item.till);\r\n const marginStart = start - lastEnd;\r\n lastEnd = (item.till.valueOf() - startMs) / widthMs;\r\n return {\r\n item,\r\n start,\r\n realStart,\r\n realFrom,\r\n startIsCut,\r\n width: end - start,\r\n end,\r\n realEnd,\r\n realTill,\r\n endIsCut,\r\n marginStart,\r\n };\r\n })\r\n : [];\r\n}\r\n\r\nexport const generateControlItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n startOfStep: Moment\r\n) => {\r\n if (!from || !till || !step) {\r\n return [];\r\n }\r\n let steps = Math.max(\r\n Math.ceil((till.valueOf() - from.valueOf()) / step.asMilliseconds()),\r\n 2\r\n );\r\n let subtract =\r\n (startOfStep.valueOf() - from.valueOf()) % step.asMilliseconds();\r\n if (subtract > 0) {\r\n subtract -= step.asMilliseconds();\r\n }\r\n if (till.valueOf() - from.valueOf() > step.asMilliseconds()) {\r\n steps += 1;\r\n }\r\n return new Array(steps).fill(0).map((_, index) => ({\r\n from: from\r\n .clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * index),\r\n till: from\r\n .clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * (index + 1)),\r\n }));\r\n};\r\n\r\nexport interface GridItem {\r\n left: number;\r\n date: Moment;\r\n stepProportion: number;\r\n opacity: number;\r\n}\r\n\r\nexport const generateGridItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n containerWidthPx: number,\r\n availableSteps: Duration[],\r\n goalGridWidthPx: number,\r\n startOfStep: Moment\r\n): { items: GridItem[]; bestStep: Duration } => {\r\n if (\r\n !from ||\r\n !till ||\r\n !containerWidthPx ||\r\n !availableSteps?.length ||\r\n !goalGridWidthPx ||\r\n !step ||\r\n !startOfStep\r\n ) {\r\n return { bestStep: availableSteps?.[0], items: [] };\r\n }\r\n const stepMs = step.asMilliseconds();\r\n const fromMs = from.valueOf();\r\n const tillMs = till.valueOf();\r\n const timeLengthMs = tillMs - fromMs;\r\n const approximateStepsCount = containerWidthPx / goalGridWidthPx;\r\n const approximateStepMs = timeLengthMs / approximateStepsCount;\r\n const availableStepsDistancesMs = availableSteps.map((a) =>\r\n Math.abs(a.asMilliseconds() - approximateStepMs)\r\n );\r\n const smallestDistance = Math.min(...availableStepsDistancesMs);\r\n const bestStepIndex = availableStepsDistancesMs.findIndex(\r\n (a) => a === smallestDistance\r\n );\r\n const bestStep = availableSteps[bestStepIndex];\r\n const subtract =\r\n (fromMs + from.utcOffset() * 60 * 1000) % bestStep.asMilliseconds();\r\n let startMs = fromMs - subtract;\r\n let steps: Moment[] = [];\r\n while (startMs <= tillMs) {\r\n steps = steps.concat(from.clone().add(startMs - fromMs, 'ms'));\r\n startMs += bestStep.asMilliseconds();\r\n }\r\n return {\r\n items: steps\r\n .filter((a) => a.valueOf() > fromMs && a.valueOf() < tillMs)\r\n .map((date) => {\r\n const stepProportion =\r\n ((date.valueOf() + from.utcOffset() * 60 * 1000) % stepMs) / stepMs;\r\n let numberOfRoots = 0;\r\n let current = stepProportion;\r\n let currentTop = 1;\r\n let tolerance = 0.001;\r\n while (current > tolerance && current < currentTop - tolerance) {\r\n numberOfRoots += 1;\r\n currentTop = 1 / Math.pow(2, numberOfRoots);\r\n if (current > currentTop) {\r\n current -= currentTop;\r\n }\r\n }\r\n return {\r\n left: (date.valueOf() - fromMs) / timeLengthMs,\r\n date,\r\n stepProportion,\r\n opacity: 1 / (numberOfRoots || 1),\r\n };\r\n }),\r\n bestStep,\r\n };\r\n};\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":["_moment","_interopRequireDefault","require","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","groupBy","items","iterator","reduce","item","hasOwnProperty","splitBookingsToLanes","bookings","from","minLanesCount","lanesSource","unmatchedToFront","lanes","map","bookingsWithoutLaneKey","a","laneKey","bookingsWithLaneKey","grouped","booking","originalIndex","find","missingLanes","some","l","concat","remainingBookings","sort","b","valueOf","min","bookingIndex","laneIndex","lane","index","_lane$items","lastTill","till","distances","dist","diff","Math","abs","_min","indexOf","splice","data","shift","Array","fill","_","findIndex","arr","unmatchedVal","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","sortArrayByLaneKeys","referenceArray","arrayToSort","indexA","indexB","itemsOverlap","isBefore","isAfter","getItemPositionStyle","marginStart","width","marginLeft","exports","calculateItemsDimensions","lastEnd","widthMs","startMs","endMs","startIsCut","realStart","realFrom","moment","start","endIsCut","realEnd","end","realTill","generateControlItems","step","startOfStep","steps","max","ceil","asMilliseconds","subtract","clone","add","id","generateGridItems","containerWidthPx","availableSteps","goalGridWidthPx","bestStep","stepMs","fromMs","tillMs","timeLengthMs","approximateStepsCount","approximateStepMs","availableStepsDistancesMs","smallestDistance","bestStepIndex","utcOffset","date","stepProportion","numberOfRoots","current","currentTop","tolerance","pow","left","opacity"],"sources":["../../../src/lib/components/bookingCalendar/utils.ts"],"sourcesContent":["import moment, { Moment, Duration } from 'moment';\r\nimport { BookingCalendarItemProps } from './bookingCalendarItem';\r\nimport { BookingCalendarLaneProps } from './bookingCalendarLane';\r\nimport { BookingCalendarLaneHeaderProps } from './bookingCalendarLaneHeader';\r\nimport { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';\r\nimport {\r\n BookingCalendarItemT,\r\n BookingCalendarItemWithOriginalIndexT,\r\n} from './common';\r\n\r\nexport function groupBy<T>(\r\n items: T[],\r\n iterator: (item: T) => number | string\r\n): { [key: string | number]: T[] } {\r\n return items.reduce((obj, item) => {\r\n const key = iterator(item);\r\n if (!obj.hasOwnProperty(key)) {\r\n obj[key] = [];\r\n }\r\n obj[key].push(item);\r\n return obj;\r\n }, {});\r\n}\r\n\r\nexport interface LaneSourceData<T extends BookingCalendarItemT, TLaneData> {\r\n laneKey: number;\r\n data?: TLaneData;\r\n rowClassName?: string;\r\n BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n BookingCalendarLaneHeader?: React.ComponentType<\r\n BookingCalendarLaneHeaderProps<TLaneData>\r\n >;\r\n BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;\r\n}\r\n\r\nexport interface LaneData<T extends BookingCalendarItemT, TLaneData>\r\n extends LaneSourceData<T, TLaneData> {\r\n items: T[];\r\n}\r\n\r\nexport function splitBookingsToLanes<T extends BookingCalendarItemT, TLaneData>(\r\n bookings: T[],\r\n from: Moment,\r\n minLanesCount: number,\r\n lanesSource: LaneSourceData<T, TLaneData>[] = [],\r\n unmatchedToFront = true\r\n) {\r\n if (!bookings) {\r\n return [];\r\n }\r\n let lanes: LaneData<T, TLaneData>[] = [];\r\n if (lanesSource?.length) {\r\n lanes = lanesSource.map((source) => ({\r\n ...source,\r\n items: [],\r\n }));\r\n }\r\n const bookingsWithoutLaneKey = bookings.filter(\r\n (a) => a.laneKey === undefined\r\n );\r\n const bookingsWithLaneKey = bookings.filter((a) => a.laneKey !== undefined);\r\n if (bookingsWithLaneKey.length) {\r\n const grouped = groupBy(\r\n bookingsWithLaneKey.map((booking, originalIndex) => ({\r\n ...booking,\r\n originalIndex,\r\n })),\r\n (a) => a.laneKey\r\n );\r\n lanes = Object.keys(grouped).map((key) => ({\r\n laneKey: Number(key),\r\n items: grouped[key],\r\n ...lanesSource?.find((a) => a.laneKey === Number(key)),\r\n }));\r\n const missingLanes = lanesSource?.filter(\r\n (a) => !lanes.some((l) => l.laneKey === a.laneKey)\r\n );\r\n lanes = lanes.concat(missingLanes.map((a) => ({ ...a, items: [] })));\r\n }\r\n if (bookingsWithoutLaneKey.length) {\r\n let remainingBookings: (T & BookingCalendarItemWithOriginalIndexT)[] =\r\n bookingsWithoutLaneKey\r\n .map((booking, originalIndex) => ({ ...booking, originalIndex }))\r\n .sort((a, b) => a.from.valueOf() - b.from.valueOf());\r\n while (remainingBookings.length > 0) {\r\n let min = 99999999999999;\r\n let bookingIndex = -1;\r\n let laneIndex = -1;\r\n lanes.forEach((lane, index) => {\r\n if (lanesSource?.some((l) => l.laneKey === lane.laneKey)) {\r\n return;\r\n }\r\n const lastTill = lane.items[lane.items.length - 1]?.till ?? from;\r\n const distances = remainingBookings.map((booking) => {\r\n const dist = booking.from.diff(lastTill);\r\n if (lane.items.length === 0) {\r\n return Math.abs(dist);\r\n }\r\n return dist;\r\n });\r\n const _min = Math.min(...distances.filter((a) => a >= 0));\r\n if (_min < min) {\r\n bookingIndex = distances.indexOf(_min);\r\n laneIndex = index;\r\n }\r\n });\r\n if (bookingIndex >= 0 && laneIndex >= 0) {\r\n lanes[laneIndex].items = lanes[laneIndex].items.concat({\r\n ...remainingBookings[bookingIndex],\r\n });\r\n remainingBookings.splice(bookingIndex, 1);\r\n } else {\r\n lanes = lanes.concat({\r\n items: [{ ...remainingBookings[0] }],\r\n laneKey: lanes.length,\r\n data: undefined,\r\n });\r\n remainingBookings.shift();\r\n }\r\n }\r\n // Naive solution that is much less computationally intensive but yields more lanes than necessary\r\n /*bookings.forEach((booking, originalIndex) => {\r\n let found = false;\r\n lanes.forEach((lane, index) => {\r\n if (!lane.some(i => itemsOverlap(booking, i))) {\r\n lanes[index] = lanes[index].concat({ ...booking, originalIndex });\r\n found = true;\r\n }\r\n });\r\n if (!found) {\r\n lanes = lanes.concat([[{ ...booking, originalIndex }]]);\r\n }\r\n });*/\r\n }\r\n for (let index = 0; index < lanes.length; index++) {\r\n const lane = lanes[index];\r\n lanes[index].items = lane.items.sort(\r\n (a, b) => a.from.valueOf() - b.from.valueOf()\r\n );\r\n }\r\n if (lanes.length < minLanesCount) {\r\n lanes = lanes.concat(\r\n new Array<LaneData<T, TLaneData>>(minLanesCount - lanes.length)\r\n .fill(null)\r\n .map((_, index) => ({\r\n items: [],\r\n laneKey: index + lanes.length,\r\n data: null,\r\n }))\r\n );\r\n }\r\n const findIndex = (\r\n arr: (LaneData<T, TLaneData> | LaneSourceData<T, TLaneData>)[],\r\n laneKey: string | undefined | number\r\n ): number => {\r\n const unmatchedVal = unmatchedToFront\r\n ? Number.MIN_SAFE_INTEGER\r\n : Number.MAX_SAFE_INTEGER;\r\n if (laneKey === undefined || laneKey === null) {\r\n return unmatchedVal;\r\n }\r\n const index = arr.findIndex((item) => item.laneKey === laneKey);\r\n return index === -1 ? unmatchedVal : index;\r\n };\r\n\r\n const sortArrayByLaneKeys = (\r\n referenceArray: LaneSourceData<T, TLaneData>[],\r\n arrayToSort: LaneData<T, TLaneData>[]\r\n ): LaneData<T, TLaneData>[] => {\r\n return [...arrayToSort].sort((a, b) => {\r\n const indexA = findIndex(referenceArray, a.laneKey);\r\n const indexB = findIndex(referenceArray, b.laneKey);\r\n return indexA - indexB;\r\n });\r\n };\r\n lanes = sortArrayByLaneKeys(lanesSource, lanes);\r\n return lanes;\r\n}\r\n\r\ntype Picked = Pick<BookingCalendarItemT, 'from' | 'till'>;\r\nexport function itemsOverlap(a: Picked, b: Picked) {\r\n if (!a?.from || !a?.till || !b?.from || !b?.till) {\r\n return false;\r\n }\r\n if (b.till.isBefore(a.from)) {\r\n return false;\r\n }\r\n if (b.from.isAfter(a.till)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport const getItemPositionStyle = (marginStart: number, width: number) =>\r\n ({\r\n marginLeft: `${marginStart * 100}%`,\r\n width: `${width * 100}%`,\r\n } as React.CSSProperties);\r\n\r\nexport function calculateItemsDimensions<T extends BookingCalendarItemT>(\r\n items: T[],\r\n from: Moment,\r\n till: Moment\r\n) {\r\n let lastEnd = 0;\r\n const widthMs = till.valueOf() - from.valueOf();\r\n const startMs = from.valueOf();\r\n const endMs = till.valueOf();\r\n return widthMs > 0\r\n ? items?.map((item) => {\r\n const startIsCut = item.from.valueOf() < startMs;\r\n const realStart = (item.from.valueOf() - startMs) / widthMs;\r\n const realFrom = startIsCut ? moment(startMs) : moment(item.from);\r\n const start = startIsCut ? 0 : realStart;\r\n const endIsCut = item.till.valueOf() > endMs;\r\n const realEnd = (item.till.valueOf() - startMs) / widthMs;\r\n const end = endIsCut ? (endMs - startMs) / widthMs : realEnd;\r\n const realTill = endIsCut ? moment(endMs) : moment(item.till);\r\n const marginStart = start - lastEnd;\r\n lastEnd = (item.till.valueOf() - startMs) / widthMs;\r\n return {\r\n item,\r\n start,\r\n realStart,\r\n realFrom,\r\n startIsCut,\r\n width: end - start,\r\n end,\r\n realEnd,\r\n realTill,\r\n endIsCut,\r\n marginStart,\r\n };\r\n })\r\n : [];\r\n}\r\n\r\nexport const generateControlItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n startOfStep: Moment\r\n) => {\r\n if (!from || !till || !step) {\r\n return [];\r\n }\r\n let steps = Math.max(\r\n Math.ceil((till.valueOf() - from.valueOf()) / step.asMilliseconds()),\r\n 2\r\n );\r\n let subtract =\r\n (startOfStep.valueOf() - from.valueOf()) % step.asMilliseconds();\r\n if (subtract > 0) {\r\n subtract -= step.asMilliseconds();\r\n }\r\n if (till.valueOf() - from.valueOf() > step.asMilliseconds()) {\r\n steps += 1;\r\n }\r\n return new Array(steps).fill(0).map((_, index) => ({\r\n from: from\r\n .clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * index),\r\n till: from\r\n .clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * (index + 1)),\r\n id: index\r\n }));\r\n};\r\n\r\nexport interface GridItem {\r\n left: number;\r\n date: Moment;\r\n stepProportion: number;\r\n opacity: number;\r\n}\r\n\r\nexport const generateGridItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n containerWidthPx: number,\r\n availableSteps: Duration[],\r\n goalGridWidthPx: number,\r\n startOfStep: Moment\r\n): { items: GridItem[]; bestStep: Duration } => {\r\n if (\r\n !from ||\r\n !till ||\r\n !containerWidthPx ||\r\n !availableSteps?.length ||\r\n !goalGridWidthPx ||\r\n !step ||\r\n !startOfStep\r\n ) {\r\n return { bestStep: availableSteps?.[0], items: [] };\r\n }\r\n const stepMs = step.asMilliseconds();\r\n const fromMs = from.valueOf();\r\n const tillMs = till.valueOf();\r\n const timeLengthMs = tillMs - fromMs;\r\n const approximateStepsCount = containerWidthPx / goalGridWidthPx;\r\n const approximateStepMs = timeLengthMs / approximateStepsCount;\r\n const availableStepsDistancesMs = availableSteps.map((a) =>\r\n Math.abs(a.asMilliseconds() - approximateStepMs)\r\n );\r\n const smallestDistance = Math.min(...availableStepsDistancesMs);\r\n const bestStepIndex = availableStepsDistancesMs.findIndex(\r\n (a) => a === smallestDistance\r\n );\r\n const bestStep = availableSteps[bestStepIndex];\r\n const subtract =\r\n (fromMs + from.utcOffset() * 60 * 1000) % bestStep.asMilliseconds();\r\n let startMs = fromMs - subtract;\r\n let steps: Moment[] = [];\r\n while (startMs <= tillMs) {\r\n steps = steps.concat(from.clone().add(startMs - fromMs, 'ms'));\r\n startMs += bestStep.asMilliseconds();\r\n }\r\n return {\r\n items: steps\r\n .filter((a) => a.valueOf() > fromMs && a.valueOf() < tillMs)\r\n .map((date) => {\r\n const stepProportion =\r\n ((date.valueOf() + from.utcOffset() * 60 * 1000) % stepMs) / stepMs;\r\n let numberOfRoots = 0;\r\n let current = stepProportion;\r\n let currentTop = 1;\r\n let tolerance = 0.001;\r\n while (current > tolerance && current < currentTop - tolerance) {\r\n numberOfRoots += 1;\r\n currentTop = 1 / Math.pow(2, numberOfRoots);\r\n if (current > currentTop) {\r\n current -= currentTop;\r\n }\r\n }\r\n return {\r\n left: (date.valueOf() - fromMs) / timeLengthMs,\r\n date,\r\n stepProportion,\r\n opacity: 1 / (numberOfRoots || 1),\r\n };\r\n }),\r\n bestStep,\r\n };\r\n};\r\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAkD,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,IAAAC,eAAA,CAAAP,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAkB,yBAAA,GAAAlB,MAAA,CAAAmB,gBAAA,CAAAT,MAAA,EAAAV,MAAA,CAAAkB,yBAAA,CAAAJ,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAoB,cAAA,CAAAV,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAAA,SAAAO,gBAAAxB,GAAA,EAAAuB,GAAA,EAAAK,KAAA,IAAAL,GAAA,GAAAM,cAAA,CAAAN,GAAA,OAAAA,GAAA,IAAAvB,GAAA,IAAAO,MAAA,CAAAoB,cAAA,CAAA3B,GAAA,EAAAuB,GAAA,IAAAK,KAAA,EAAAA,KAAA,EAAAf,UAAA,QAAAiB,YAAA,QAAAC,QAAA,oBAAA/B,GAAA,CAAAuB,GAAA,IAAAK,KAAA,WAAA5B,GAAA;AAAA,SAAA6B,eAAAG,GAAA,QAAAT,GAAA,GAAAU,YAAA,CAAAD,GAAA,2BAAAT,GAAA,gBAAAA,GAAA,GAAAW,MAAA,CAAAX,GAAA;AAAA,SAAAU,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAK,IAAA,CAAAP,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAE,SAAA,4DAAAP,IAAA,gBAAAF,MAAA,GAAAU,MAAA,EAAAT,KAAA;AAU3C,SAASU,OAAOA,CACrBC,KAAU,EACVC,QAAsC,EACL;EACjC,OAAOD,KAAK,CAACE,MAAM,CAAC,CAAChD,GAAG,EAAEiD,IAAI,KAAK;IACjC,MAAM1B,GAAG,GAAGwB,QAAQ,CAACE,IAAI,CAAC;IAC1B,IAAI,CAACjD,GAAG,CAACkD,cAAc,CAAC3B,GAAG,CAAC,EAAE;MAC5BvB,GAAG,CAACuB,GAAG,CAAC,GAAG,EAAE;IACf;IACAvB,GAAG,CAACuB,GAAG,CAAC,CAACT,IAAI,CAACmC,IAAI,CAAC;IACnB,OAAOjD,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAC;AACR;AAqBO,SAASmD,oBAAoBA,CAClCC,QAAa,EACbC,IAAY,EACZC,aAAqB,EAGrB;EAAA,IAFAC,WAA2C,GAAApC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAqB,SAAA,GAAArB,SAAA,MAAG,EAAE;EAAA,IAChDqC,gBAAgB,GAAArC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAqB,SAAA,GAAArB,SAAA,MAAG,IAAI;EAEvB,IAAI,CAACiC,QAAQ,EAAE;IACb,OAAO,EAAE;EACX;EACA,IAAIK,KAA+B,GAAG,EAAE;EACxC,IAAIF,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEnC,MAAM,EAAE;IACvBqC,KAAK,GAAGF,WAAW,CAACG,GAAG,CAAErC,MAAM,IAAAL,aAAA,CAAAA,aAAA,KAC1BK,MAAM;MACTyB,KAAK,EAAE;IAAE,EACT,CAAC;EACL;EACA,MAAMa,sBAAsB,GAAGP,QAAQ,CAAC1C,MAAM,CAC3CkD,CAAC,IAAKA,CAAC,CAACC,OAAO,KAAKrB,SACvB,CAAC;EACD,MAAMsB,mBAAmB,GAAGV,QAAQ,CAAC1C,MAAM,CAAEkD,CAAC,IAAKA,CAAC,CAACC,OAAO,KAAKrB,SAAS,CAAC;EAC3E,IAAIsB,mBAAmB,CAAC1C,MAAM,EAAE;IAC9B,MAAM2C,OAAO,GAAGlB,OAAO,CACrBiB,mBAAmB,CAACJ,GAAG,CAAC,CAACM,OAAO,EAAEC,aAAa,KAAAjD,aAAA,CAAAA,aAAA,KAC1CgD,OAAO;MACVC;IAAa,EACb,CAAC,EACFL,CAAC,IAAKA,CAAC,CAACC,OACX,CAAC;IACDJ,KAAK,GAAGlD,MAAM,CAACD,IAAI,CAACyD,OAAO,CAAC,CAACL,GAAG,CAAEnC,GAAG,IAAAP,aAAA;MACnC6C,OAAO,EAAEjB,MAAM,CAACrB,GAAG,CAAC;MACpBuB,KAAK,EAAEiB,OAAO,CAACxC,GAAG;IAAC,GAChBgC,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEW,IAAI,CAAEN,CAAC,IAAKA,CAAC,CAACC,OAAO,KAAKjB,MAAM,CAACrB,GAAG,CAAC,CAAC,CACtD,CAAC;IACH,MAAM4C,YAAY,GAAGZ,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAE7C,MAAM,CACrCkD,CAAC,IAAK,CAACH,KAAK,CAACW,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACR,OAAO,KAAKD,CAAC,CAACC,OAAO,CACnD,CAAC;IACDJ,KAAK,GAAGA,KAAK,CAACa,MAAM,CAACH,YAAY,CAACT,GAAG,CAAEE,CAAC,IAAA5C,aAAA,CAAAA,aAAA,KAAW4C,CAAC;MAAEd,KAAK,EAAE;IAAE,EAAG,CAAC,CAAC;EACtE;EACA,IAAIa,sBAAsB,CAACvC,MAAM,EAAE;IACjC,IAAImD,iBAAgE,GAClEZ,sBAAsB,CACnBD,GAAG,CAAC,CAACM,OAAO,EAAEC,aAAa,KAAAjD,aAAA,CAAAA,aAAA,KAAWgD,OAAO;MAAEC;IAAa,EAAG,CAAC,CAChEO,IAAI,CAAC,CAACZ,CAAC,EAAEa,CAAC,KAAKb,CAAC,CAACP,IAAI,CAACqB,OAAO,CAAC,CAAC,GAAGD,CAAC,CAACpB,IAAI,CAACqB,OAAO,CAAC,CAAC,CAAC;IACxD,OAAOH,iBAAiB,CAACnD,MAAM,GAAG,CAAC,EAAE;MACnC,IAAIuD,GAAG,GAAG,cAAc;MACxB,IAAIC,YAAY,GAAG,CAAC,CAAC;MACrB,IAAIC,SAAS,GAAG,CAAC,CAAC;MAClBpB,KAAK,CAACnC,OAAO,CAAC,CAACwD,IAAI,EAAEC,KAAK,KAAK;QAAA,IAAAC,WAAA;QAC7B,IAAIzB,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEa,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACR,OAAO,KAAKiB,IAAI,CAACjB,OAAO,CAAC,EAAE;UACxD;QACF;QACA,MAAMoB,QAAQ,GAAG,EAAAD,WAAA,GAAAF,IAAI,CAAChC,KAAK,CAACgC,IAAI,CAAChC,KAAK,CAAC1B,MAAM,GAAG,CAAC,CAAC,cAAA4D,WAAA,uBAAjCA,WAAA,CAAmCE,IAAI,KAAI7B,IAAI;QAChE,MAAM8B,SAAS,GAAGZ,iBAAiB,CAACb,GAAG,CAAEM,OAAO,IAAK;UACnD,MAAMoB,IAAI,GAAGpB,OAAO,CAACX,IAAI,CAACgC,IAAI,CAACJ,QAAQ,CAAC;UACxC,IAAIH,IAAI,CAAChC,KAAK,CAAC1B,MAAM,KAAK,CAAC,EAAE;YAC3B,OAAOkE,IAAI,CAACC,GAAG,CAACH,IAAI,CAAC;UACvB;UACA,OAAOA,IAAI;QACb,CAAC,CAAC;QACF,MAAMI,IAAI,GAAGF,IAAI,CAACX,GAAG,CAAC,GAAGQ,SAAS,CAACzE,MAAM,CAAEkD,CAAC,IAAKA,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,IAAI4B,IAAI,GAAGb,GAAG,EAAE;UACdC,YAAY,GAAGO,SAAS,CAACM,OAAO,CAACD,IAAI,CAAC;UACtCX,SAAS,GAAGE,KAAK;QACnB;MACF,CAAC,CAAC;MACF,IAAIH,YAAY,IAAI,CAAC,IAAIC,SAAS,IAAI,CAAC,EAAE;QACvCpB,KAAK,CAACoB,SAAS,CAAC,CAAC/B,KAAK,GAAGW,KAAK,CAACoB,SAAS,CAAC,CAAC/B,KAAK,CAACwB,MAAM,CAAAtD,aAAA,KACjDuD,iBAAiB,CAACK,YAAY,CAAC,CACnC,CAAC;QACFL,iBAAiB,CAACmB,MAAM,CAACd,YAAY,EAAE,CAAC,CAAC;MAC3C,CAAC,MAAM;QACLnB,KAAK,GAAGA,KAAK,CAACa,MAAM,CAAC;UACnBxB,KAAK,EAAE,CAAA9B,aAAA,KAAMuD,iBAAiB,CAAC,CAAC,CAAC,EAAG;UACpCV,OAAO,EAAEJ,KAAK,CAACrC,MAAM;UACrBuE,IAAI,EAAEnD;QACR,CAAC,CAAC;QACF+B,iBAAiB,CAACqB,KAAK,CAAC,CAAC;MAC3B;IACF;IACA;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE;;EACA,KAAK,IAAIb,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGtB,KAAK,CAACrC,MAAM,EAAE2D,KAAK,EAAE,EAAE;IACjD,MAAMD,IAAI,GAAGrB,KAAK,CAACsB,KAAK,CAAC;IACzBtB,KAAK,CAACsB,KAAK,CAAC,CAACjC,KAAK,GAAGgC,IAAI,CAAChC,KAAK,CAAC0B,IAAI,CAClC,CAACZ,CAAC,EAAEa,CAAC,KAAKb,CAAC,CAACP,IAAI,CAACqB,OAAO,CAAC,CAAC,GAAGD,CAAC,CAACpB,IAAI,CAACqB,OAAO,CAAC,CAC9C,CAAC;EACH;EACA,IAAIjB,KAAK,CAACrC,MAAM,GAAGkC,aAAa,EAAE;IAChCG,KAAK,GAAGA,KAAK,CAACa,MAAM,CAClB,IAAIuB,KAAK,CAAyBvC,aAAa,GAAGG,KAAK,CAACrC,MAAM,CAAC,CAC5D0E,IAAI,CAAC,IAAI,CAAC,CACVpC,GAAG,CAAC,CAACqC,CAAC,EAAEhB,KAAK,MAAM;MAClBjC,KAAK,EAAE,EAAE;MACTe,OAAO,EAAEkB,KAAK,GAAGtB,KAAK,CAACrC,MAAM;MAC7BuE,IAAI,EAAE;IACR,CAAC,CAAC,CACN,CAAC;EACH;EACA,MAAMK,SAAS,GAAGA,CAChBC,GAA8D,EAC9DpC,OAAoC,KACzB;IACX,MAAMqC,YAAY,GAAG1C,gBAAgB,GACjCZ,MAAM,CAACuD,gBAAgB,GACvBvD,MAAM,CAACwD,gBAAgB;IAC3B,IAAIvC,OAAO,KAAKrB,SAAS,IAAIqB,OAAO,KAAK,IAAI,EAAE;MAC7C,OAAOqC,YAAY;IACrB;IACA,MAAMnB,KAAK,GAAGkB,GAAG,CAACD,SAAS,CAAE/C,IAAI,IAAKA,IAAI,CAACY,OAAO,KAAKA,OAAO,CAAC;IAC/D,OAAOkB,KAAK,KAAK,CAAC,CAAC,GAAGmB,YAAY,GAAGnB,KAAK;EAC5C,CAAC;EAED,MAAMsB,mBAAmB,GAAGA,CAC1BC,cAA8C,EAC9CC,WAAqC,KACR;IAC7B,OAAO,CAAC,GAAGA,WAAW,CAAC,CAAC/B,IAAI,CAAC,CAACZ,CAAC,EAAEa,CAAC,KAAK;MACrC,MAAM+B,MAAM,GAAGR,SAAS,CAACM,cAAc,EAAE1C,CAAC,CAACC,OAAO,CAAC;MACnD,MAAM4C,MAAM,GAAGT,SAAS,CAACM,cAAc,EAAE7B,CAAC,CAACZ,OAAO,CAAC;MACnD,OAAO2C,MAAM,GAAGC,MAAM;IACxB,CAAC,CAAC;EACJ,CAAC;EACDhD,KAAK,GAAG4C,mBAAmB,CAAC9C,WAAW,EAAEE,KAAK,CAAC;EAC/C,OAAOA,KAAK;AACd;AAGO,SAASiD,YAAYA,CAAC9C,CAAS,EAAEa,CAAS,EAAE;EACjD,IAAI,EAACb,CAAC,aAADA,CAAC,eAADA,CAAC,CAAEP,IAAI,KAAI,EAACO,CAAC,aAADA,CAAC,eAADA,CAAC,CAAEsB,IAAI,KAAI,EAACT,CAAC,aAADA,CAAC,eAADA,CAAC,CAAEpB,IAAI,KAAI,EAACoB,CAAC,aAADA,CAAC,eAADA,CAAC,CAAES,IAAI,GAAE;IAChD,OAAO,KAAK;EACd;EACA,IAAIT,CAAC,CAACS,IAAI,CAACyB,QAAQ,CAAC/C,CAAC,CAACP,IAAI,CAAC,EAAE;IAC3B,OAAO,KAAK;EACd;EACA,IAAIoB,CAAC,CAACpB,IAAI,CAACuD,OAAO,CAAChD,CAAC,CAACsB,IAAI,CAAC,EAAE;IAC1B,OAAO,KAAK;EACd;EACA,OAAO,IAAI;AACb;AAEO,MAAM2B,oBAAoB,GAAGA,CAACC,WAAmB,EAAEC,KAAa,MACpE;EACCC,UAAU,EAAG,GAAEF,WAAW,GAAG,GAAI,GAAE;EACnCC,KAAK,EAAG,GAAEA,KAAK,GAAG,GAAI;AACxB,CAAC,CAAwB;AAACE,OAAA,CAAAJ,oBAAA,GAAAA,oBAAA;AAErB,SAASK,wBAAwBA,CACtCpE,KAAU,EACVO,IAAY,EACZ6B,IAAY,EACZ;EACA,IAAIiC,OAAO,GAAG,CAAC;EACf,MAAMC,OAAO,GAAGlC,IAAI,CAACR,OAAO,CAAC,CAAC,GAAGrB,IAAI,CAACqB,OAAO,CAAC,CAAC;EAC/C,MAAM2C,OAAO,GAAGhE,IAAI,CAACqB,OAAO,CAAC,CAAC;EAC9B,MAAM4C,KAAK,GAAGpC,IAAI,CAACR,OAAO,CAAC,CAAC;EAC5B,OAAO0C,OAAO,GAAG,CAAC,GACdtE,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEY,GAAG,CAAET,IAAI,IAAK;IACnB,MAAMsE,UAAU,GAAGtE,IAAI,CAACI,IAAI,CAACqB,OAAO,CAAC,CAAC,GAAG2C,OAAO;IAChD,MAAMG,SAAS,GAAG,CAACvE,IAAI,CAACI,IAAI,CAACqB,OAAO,CAAC,CAAC,GAAG2C,OAAO,IAAID,OAAO;IAC3D,MAAMK,QAAQ,GAAGF,UAAU,GAAG,IAAAG,eAAM,EAACL,OAAO,CAAC,GAAG,IAAAK,eAAM,EAACzE,IAAI,CAACI,IAAI,CAAC;IACjE,MAAMsE,KAAK,GAAGJ,UAAU,GAAG,CAAC,GAAGC,SAAS;IACxC,MAAMI,QAAQ,GAAG3E,IAAI,CAACiC,IAAI,CAACR,OAAO,CAAC,CAAC,GAAG4C,KAAK;IAC5C,MAAMO,OAAO,GAAG,CAAC5E,IAAI,CAACiC,IAAI,CAACR,OAAO,CAAC,CAAC,GAAG2C,OAAO,IAAID,OAAO;IACzD,MAAMU,GAAG,GAAGF,QAAQ,GAAG,CAACN,KAAK,GAAGD,OAAO,IAAID,OAAO,GAAGS,OAAO;IAC5D,MAAME,QAAQ,GAAGH,QAAQ,GAAG,IAAAF,eAAM,EAACJ,KAAK,CAAC,GAAG,IAAAI,eAAM,EAACzE,IAAI,CAACiC,IAAI,CAAC;IAC7D,MAAM4B,WAAW,GAAGa,KAAK,GAAGR,OAAO;IACnCA,OAAO,GAAG,CAAClE,IAAI,CAACiC,IAAI,CAACR,OAAO,CAAC,CAAC,GAAG2C,OAAO,IAAID,OAAO;IACnD,OAAO;MACLnE,IAAI;MACJ0E,KAAK;MACLH,SAAS;MACTC,QAAQ;MACRF,UAAU;MACVR,KAAK,EAAEe,GAAG,GAAGH,KAAK;MAClBG,GAAG;MACHD,OAAO;MACPE,QAAQ;MACRH,QAAQ;MACRd;IACF,CAAC;EACH,CAAC,CAAC,GACF,EAAE;AACR;AAEO,MAAMkB,oBAAoB,GAAGA,CAClC3E,IAAY,EACZ6B,IAAY,EACZ+C,IAAc,EACdC,WAAmB,KAChB;EACH,IAAI,CAAC7E,IAAI,IAAI,CAAC6B,IAAI,IAAI,CAAC+C,IAAI,EAAE;IAC3B,OAAO,EAAE;EACX;EACA,IAAIE,KAAK,GAAG7C,IAAI,CAAC8C,GAAG,CAClB9C,IAAI,CAAC+C,IAAI,CAAC,CAACnD,IAAI,CAACR,OAAO,CAAC,CAAC,GAAGrB,IAAI,CAACqB,OAAO,CAAC,CAAC,IAAIuD,IAAI,CAACK,cAAc,CAAC,CAAC,CAAC,EACpE,CACF,CAAC;EACD,IAAIC,QAAQ,GACV,CAACL,WAAW,CAACxD,OAAO,CAAC,CAAC,GAAGrB,IAAI,CAACqB,OAAO,CAAC,CAAC,IAAIuD,IAAI,CAACK,cAAc,CAAC,CAAC;EAClE,IAAIC,QAAQ,GAAG,CAAC,EAAE;IAChBA,QAAQ,IAAIN,IAAI,CAACK,cAAc,CAAC,CAAC;EACnC;EACA,IAAIpD,IAAI,CAACR,OAAO,CAAC,CAAC,GAAGrB,IAAI,CAACqB,OAAO,CAAC,CAAC,GAAGuD,IAAI,CAACK,cAAc,CAAC,CAAC,EAAE;IAC3DH,KAAK,IAAI,CAAC;EACZ;EACA,OAAO,IAAItC,KAAK,CAACsC,KAAK,CAAC,CAACrC,IAAI,CAAC,CAAC,CAAC,CAACpC,GAAG,CAAC,CAACqC,CAAC,EAAEhB,KAAK,MAAM;IACjD1B,IAAI,EAAEA,IAAI,CACPmF,KAAK,CAAC,CAAC,CACPC,GAAG,CAACF,QAAQ,CAAC,CACbE,GAAG,CAACR,IAAI,CAACK,cAAc,CAAC,CAAC,GAAGvD,KAAK,CAAC;IACrCG,IAAI,EAAE7B,IAAI,CACPmF,KAAK,CAAC,CAAC,CACPC,GAAG,CAACF,QAAQ,CAAC,CACbE,GAAG,CAACR,IAAI,CAACK,cAAc,CAAC,CAAC,IAAIvD,KAAK,GAAG,CAAC,CAAC,CAAC;IAC3C2D,EAAE,EAAE3D;EACN,CAAC,CAAC,CAAC;AACL,CAAC;AAACkC,OAAA,CAAAe,oBAAA,GAAAA,oBAAA;AASK,MAAMW,iBAAiB,GAAGA,CAC/BtF,IAAY,EACZ6B,IAAY,EACZ+C,IAAc,EACdW,gBAAwB,EACxBC,cAA0B,EAC1BC,eAAuB,EACvBZ,WAAmB,KAC2B;EAC9C,IACE,CAAC7E,IAAI,IACL,CAAC6B,IAAI,IACL,CAAC0D,gBAAgB,IACjB,EAACC,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAEzH,MAAM,KACvB,CAAC0H,eAAe,IAChB,CAACb,IAAI,IACL,CAACC,WAAW,EACZ;IACA,OAAO;MAAEa,QAAQ,EAAEF,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAG,CAAC,CAAC;MAAE/F,KAAK,EAAE;IAAG,CAAC;EACrD;EACA,MAAMkG,MAAM,GAAGf,IAAI,CAACK,cAAc,CAAC,CAAC;EACpC,MAAMW,MAAM,GAAG5F,IAAI,CAACqB,OAAO,CAAC,CAAC;EAC7B,MAAMwE,MAAM,GAAGhE,IAAI,CAACR,OAAO,CAAC,CAAC;EAC7B,MAAMyE,YAAY,GAAGD,MAAM,GAAGD,MAAM;EACpC,MAAMG,qBAAqB,GAAGR,gBAAgB,GAAGE,eAAe;EAChE,MAAMO,iBAAiB,GAAGF,YAAY,GAAGC,qBAAqB;EAC9D,MAAME,yBAAyB,GAAGT,cAAc,CAACnF,GAAG,CAAEE,CAAC,IACrD0B,IAAI,CAACC,GAAG,CAAC3B,CAAC,CAAC0E,cAAc,CAAC,CAAC,GAAGe,iBAAiB,CACjD,CAAC;EACD,MAAME,gBAAgB,GAAGjE,IAAI,CAACX,GAAG,CAAC,GAAG2E,yBAAyB,CAAC;EAC/D,MAAME,aAAa,GAAGF,yBAAyB,CAACtD,SAAS,CACtDpC,CAAC,IAAKA,CAAC,KAAK2F,gBACf,CAAC;EACD,MAAMR,QAAQ,GAAGF,cAAc,CAACW,aAAa,CAAC;EAC9C,MAAMjB,QAAQ,GACZ,CAACU,MAAM,GAAG5F,IAAI,CAACoG,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,IAAIV,QAAQ,CAACT,cAAc,CAAC,CAAC;EACrE,IAAIjB,OAAO,GAAG4B,MAAM,GAAGV,QAAQ;EAC/B,IAAIJ,KAAe,GAAG,EAAE;EACxB,OAAOd,OAAO,IAAI6B,MAAM,EAAE;IACxBf,KAAK,GAAGA,KAAK,CAAC7D,MAAM,CAACjB,IAAI,CAACmF,KAAK,CAAC,CAAC,CAACC,GAAG,CAACpB,OAAO,GAAG4B,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9D5B,OAAO,IAAI0B,QAAQ,CAACT,cAAc,CAAC,CAAC;EACtC;EACA,OAAO;IACLxF,KAAK,EAAEqF,KAAK,CACTzH,MAAM,CAAEkD,CAAC,IAAKA,CAAC,CAACc,OAAO,CAAC,CAAC,GAAGuE,MAAM,IAAIrF,CAAC,CAACc,OAAO,CAAC,CAAC,GAAGwE,MAAM,CAAC,CAC3DxF,GAAG,CAAEgG,IAAI,IAAK;MACb,MAAMC,cAAc,GACjB,CAACD,IAAI,CAAChF,OAAO,CAAC,CAAC,GAAGrB,IAAI,CAACoG,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,IAAIT,MAAM,GAAIA,MAAM;MACrE,IAAIY,aAAa,GAAG,CAAC;MACrB,IAAIC,OAAO,GAAGF,cAAc;MAC5B,IAAIG,UAAU,GAAG,CAAC;MAClB,IAAIC,SAAS,GAAG,KAAK;MACrB,OAAOF,OAAO,GAAGE,SAAS,IAAIF,OAAO,GAAGC,UAAU,GAAGC,SAAS,EAAE;QAC9DH,aAAa,IAAI,CAAC;QAClBE,UAAU,GAAG,CAAC,GAAGxE,IAAI,CAAC0E,GAAG,CAAC,CAAC,EAAEJ,aAAa,CAAC;QAC3C,IAAIC,OAAO,GAAGC,UAAU,EAAE;UACxBD,OAAO,IAAIC,UAAU;QACvB;MACF;MACA,OAAO;QACLG,IAAI,EAAE,CAACP,IAAI,CAAChF,OAAO,CAAC,CAAC,GAAGuE,MAAM,IAAIE,YAAY;QAC9CO,IAAI;QACJC,cAAc;QACdO,OAAO,EAAE,CAAC,IAAIN,aAAa,IAAI,CAAC;MAClC,CAAC;IACH,CAAC,CAAC;IACJb;EACF,CAAC;AACH,CAAC;AAAC9B,OAAA,CAAA0B,iBAAA,GAAAA,iBAAA"}