guestbell-forms 2.0.298 → 2.0.299

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/build/components/InputHeader/InputHeader.js +258 -323
  2. package/build/components/InputHeader/InputHeader.js.map +1 -1
  3. package/build/components/InputHeader/InputHeaderContext.js +6 -8
  4. package/build/components/InputHeader/InputHeaderContext.js.map +1 -1
  5. package/build/components/InputHeader/index.js +4 -6
  6. package/build/components/InputHeader/index.js.map +1 -1
  7. package/build/components/InputHeader/withInputHeaderContext.js +9 -13
  8. package/build/components/InputHeader/withInputHeaderContext.js.map +1 -1
  9. package/build/components/base/input/BaseInput.js +334 -418
  10. package/build/components/base/input/BaseInput.js.map +1 -1
  11. package/build/components/base/input/index.js +1 -1
  12. package/build/components/base/input/index.js.map +1 -1
  13. package/build/components/bookingCalendar/BookingCalendar.js +68 -85
  14. package/build/components/bookingCalendar/BookingCalendar.js.map +1 -1
  15. package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js +40 -71
  16. package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js.map +1 -1
  17. package/build/components/bookingCalendar/bookingCalendarControls/classes.js +1 -1
  18. package/build/components/bookingCalendar/bookingCalendarControls/classes.js.map +1 -1
  19. package/build/components/bookingCalendar/bookingCalendarControls/index.js +2 -2
  20. package/build/components/bookingCalendar/bookingCalendarControls/index.js.map +1 -1
  21. package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js +22 -41
  22. package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js.map +1 -1
  23. package/build/components/bookingCalendar/bookingCalendarDatePicker/classes.js +1 -1
  24. package/build/components/bookingCalendar/bookingCalendarDatePicker/classes.js.map +1 -1
  25. package/build/components/bookingCalendar/bookingCalendarDatePicker/index.js +2 -2
  26. package/build/components/bookingCalendar/bookingCalendarDatePicker/index.js.map +1 -1
  27. package/build/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.js +20 -24
  28. package/build/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.js.map +1 -1
  29. package/build/components/bookingCalendar/bookingCalendarGrid/classes.js +1 -1
  30. package/build/components/bookingCalendar/bookingCalendarGrid/classes.js.map +1 -1
  31. package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js +9 -12
  32. package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js.map +1 -1
  33. package/build/components/bookingCalendar/bookingCalendarItem/classes.js +1 -1
  34. package/build/components/bookingCalendar/bookingCalendarItem/classes.js.map +1 -1
  35. package/build/components/bookingCalendar/bookingCalendarItem/index.js +2 -2
  36. package/build/components/bookingCalendar/bookingCalendarItem/index.js.map +1 -1
  37. package/build/components/bookingCalendar/bookingCalendarLane/BookingCalendarLane.js +23 -28
  38. package/build/components/bookingCalendar/bookingCalendarLane/BookingCalendarLane.js.map +1 -1
  39. package/build/components/bookingCalendar/bookingCalendarLane/classes.js +1 -1
  40. package/build/components/bookingCalendar/bookingCalendarLane/classes.js.map +1 -1
  41. package/build/components/bookingCalendar/bookingCalendarLane/index.js +2 -2
  42. package/build/components/bookingCalendar/bookingCalendarLane/index.js.map +1 -1
  43. package/build/components/bookingCalendar/bookingCalendarLaneHeader/BookingCalendarLaneHeader.js +6 -6
  44. package/build/components/bookingCalendar/bookingCalendarLaneHeader/BookingCalendarLaneHeader.js.map +1 -1
  45. package/build/components/bookingCalendar/bookingCalendarLaneHeader/classes.js +1 -1
  46. package/build/components/bookingCalendar/bookingCalendarLaneHeader/classes.js.map +1 -1
  47. package/build/components/bookingCalendar/bookingCalendarLaneHeader/index.js +1 -1
  48. package/build/components/bookingCalendar/bookingCalendarLaneHeader/index.js.map +1 -1
  49. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.js +12 -16
  50. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.js.map +1 -1
  51. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.js +27 -31
  52. package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.js.map +1 -1
  53. package/build/components/bookingCalendar/bookingCalendarLanesHeader/classes.js +1 -1
  54. package/build/components/bookingCalendar/bookingCalendarLanesHeader/classes.js.map +1 -1
  55. package/build/components/bookingCalendar/bookingCalendarLanesHeader/index.js +2 -2
  56. package/build/components/bookingCalendar/bookingCalendarLanesHeader/index.js.map +1 -1
  57. package/build/components/bookingCalendar/bookingCalendarRenderItem/BookingCalendarRenderItem.js +19 -19
  58. package/build/components/bookingCalendar/bookingCalendarRenderItem/BookingCalendarRenderItem.js.map +1 -1
  59. package/build/components/bookingCalendar/bookingCalendarRenderItem/classes.js +1 -1
  60. package/build/components/bookingCalendar/bookingCalendarRenderItem/classes.js.map +1 -1
  61. package/build/components/bookingCalendar/bookingCalendarRenderItem/index.js +1 -1
  62. package/build/components/bookingCalendar/bookingCalendarRenderItem/index.js.map +1 -1
  63. package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js +133 -175
  64. package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js.map +1 -1
  65. package/build/components/bookingCalendar/bookingCalendarTimeAxis/BookingCalendarTimeAxis.js +17 -19
  66. package/build/components/bookingCalendar/bookingCalendarTimeAxis/BookingCalendarTimeAxis.js.map +1 -1
  67. package/build/components/bookingCalendar/bookingCalendarTimeAxis/classes.js +1 -1
  68. package/build/components/bookingCalendar/bookingCalendarTimeAxis/classes.js.map +1 -1
  69. package/build/components/bookingCalendar/classes.js +1 -1
  70. package/build/components/bookingCalendar/classes.js.map +1 -1
  71. package/build/components/bookingCalendar/common.js +5 -7
  72. package/build/components/bookingCalendar/common.js.map +1 -1
  73. package/build/components/bookingCalendar/index.js +3 -3
  74. package/build/components/bookingCalendar/index.js.map +1 -1
  75. package/build/components/bookingCalendar/utils.js +143 -205
  76. package/build/components/bookingCalendar/utils.js.map +1 -1
  77. package/build/components/button/Button.js +101 -123
  78. package/build/components/button/Button.js.map +1 -1
  79. package/build/components/button/index.js +4 -6
  80. package/build/components/button/index.js.map +1 -1
  81. package/build/components/checkbox/Checkbox.js +102 -145
  82. package/build/components/checkbox/Checkbox.js.map +1 -1
  83. package/build/components/checkbox/index.js +4 -6
  84. package/build/components/checkbox/index.js.map +1 -1
  85. package/build/components/dropdown/Dropdown.js +41 -57
  86. package/build/components/dropdown/Dropdown.js.map +1 -1
  87. package/build/components/dropdown/index.js +4 -6
  88. package/build/components/dropdown/index.js.map +1 -1
  89. package/build/components/dynamicSubmit/DynamicSubmit.js +81 -123
  90. package/build/components/dynamicSubmit/DynamicSubmit.js.map +1 -1
  91. package/build/components/dynamicSubmit/index.js +4 -6
  92. package/build/components/dynamicSubmit/index.js.map +1 -1
  93. package/build/components/form/Form.js +139 -193
  94. package/build/components/form/Form.js.map +1 -1
  95. package/build/components/form/FormContext.js +6 -8
  96. package/build/components/form/FormContext.js.map +1 -1
  97. package/build/components/form/FormValidationSummary.js +57 -105
  98. package/build/components/form/FormValidationSummary.js.map +1 -1
  99. package/build/components/form/index.js +5 -7
  100. package/build/components/form/index.js.map +1 -1
  101. package/build/components/form/withFormContext.js +9 -13
  102. package/build/components/form/withFormContext.js.map +1 -1
  103. package/build/components/inputGroup/InputGroup.js +16 -48
  104. package/build/components/inputGroup/InputGroup.js.map +1 -1
  105. package/build/components/inputGroup/index.js +4 -6
  106. package/build/components/inputGroup/index.js.map +1 -1
  107. package/build/components/money/Money.js +137 -211
  108. package/build/components/money/Money.js.map +1 -1
  109. package/build/components/money/index.js +4 -6
  110. package/build/components/money/index.js.map +1 -1
  111. package/build/components/numberInput/NumberInput.js +106 -144
  112. package/build/components/numberInput/NumberInput.js.map +1 -1
  113. package/build/components/numberInput/index.js +4 -6
  114. package/build/components/numberInput/index.js.map +1 -1
  115. package/build/components/openingHours/openingHoursDay/OpeningHoursDay.js +162 -220
  116. package/build/components/openingHours/openingHoursDay/OpeningHoursDay.js.map +1 -1
  117. package/build/components/openingHours/openingHoursDay/index.js +4 -6
  118. package/build/components/openingHours/openingHoursDay/index.js.map +1 -1
  119. package/build/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.js +114 -191
  120. package/build/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.js.map +1 -1
  121. package/build/components/openingHours/openingHoursSpecial/index.js +4 -6
  122. package/build/components/openingHours/openingHoursSpecial/index.js.map +1 -1
  123. package/build/components/openingHours/openingHoursWeek/OpeningHoursWeek.js +150 -209
  124. package/build/components/openingHours/openingHoursWeek/OpeningHoursWeek.js.map +1 -1
  125. package/build/components/openingHours/openingHoursWeek/index.js +4 -6
  126. package/build/components/openingHours/openingHoursWeek/index.js.map +1 -1
  127. package/build/components/openingHours/utils/OpeningHoursUtil.js +51 -76
  128. package/build/components/openingHours/utils/OpeningHoursUtil.js.map +1 -1
  129. package/build/components/radio/Radio.js +38 -75
  130. package/build/components/radio/Radio.js.map +1 -1
  131. package/build/components/radio/index.js +4 -6
  132. package/build/components/radio/index.js.map +1 -1
  133. package/build/components/radioContainer/RadioContainer.js +19 -49
  134. package/build/components/radioContainer/RadioContainer.js.map +1 -1
  135. package/build/components/radioContainer/index.js +4 -6
  136. package/build/components/radioContainer/index.js.map +1 -1
  137. package/build/components/select/Select.js +186 -264
  138. package/build/components/select/Select.js.map +1 -1
  139. package/build/components/select/index.js +4 -6
  140. package/build/components/select/index.js.map +1 -1
  141. package/build/components/submit/Submit.js +50 -87
  142. package/build/components/submit/Submit.js.map +1 -1
  143. package/build/components/submit/index.js +4 -6
  144. package/build/components/submit/index.js.map +1 -1
  145. package/build/components/submit/subComponents/SubmitValidationSummary.js +5 -7
  146. package/build/components/submit/subComponents/SubmitValidationSummary.js.map +1 -1
  147. package/build/components/tags/Tags.js +365 -565
  148. package/build/components/tags/Tags.js.map +1 -1
  149. package/build/components/tags/index.js +4 -6
  150. package/build/components/tags/index.js.map +1 -1
  151. package/build/components/tags/subComponents/TagsSuggestions.js +29 -30
  152. package/build/components/tags/subComponents/TagsSuggestions.js.map +1 -1
  153. package/build/components/text/Text.js +95 -138
  154. package/build/components/text/Text.js.map +1 -1
  155. package/build/components/text/index.js +4 -6
  156. package/build/components/text/index.js.map +1 -1
  157. package/build/components/textArea/TextArea.js +52 -91
  158. package/build/components/textArea/TextArea.js.map +1 -1
  159. package/build/components/textArea/index.js +4 -6
  160. package/build/components/textArea/index.js.map +1 -1
  161. package/build/components/themeProvider/ThemeContext.js +6 -8
  162. package/build/components/themeProvider/ThemeContext.js.map +1 -1
  163. package/build/components/themeProvider/ThemeProvider.js +3 -5
  164. package/build/components/themeProvider/ThemeProvider.js.map +1 -1
  165. package/build/components/themeProvider/index.js +4 -6
  166. package/build/components/themeProvider/index.js.map +1 -1
  167. package/build/components/themeProvider/withThemeContext.js +10 -14
  168. package/build/components/themeProvider/withThemeContext.js.map +1 -1
  169. package/build/components/time/Time.js +184 -228
  170. package/build/components/time/Time.js.map +1 -1
  171. package/build/components/time/index.js +4 -6
  172. package/build/components/time/index.js.map +1 -1
  173. package/build/components/timeSpan/TimeSpan.js +226 -280
  174. package/build/components/timeSpan/TimeSpan.js.map +1 -1
  175. package/build/components/timeSpan/index.js +4 -6
  176. package/build/components/timeSpan/index.js.map +1 -1
  177. package/build/components/utils/Guid.js +3 -5
  178. package/build/components/utils/Guid.js.map +1 -1
  179. package/build/components/utils/ShallowEqual.js +5 -11
  180. package/build/components/utils/ShallowEqual.js.map +1 -1
  181. package/build/components/utils/TimeUtil.js +8 -22
  182. package/build/components/utils/TimeUtil.js.map +1 -1
  183. package/build/components/utils/Typescript.js.map +1 -1
  184. package/build/dist/guestbell-forms.css +0 -6
  185. package/build/dist/guestbell-forms.css.map +1 -1
  186. package/build/dist/guestbell-forms.min.css +1 -1
  187. package/build/dist/guestbell-forms.min.js +1 -1
  188. package/build/dist/guestbell-forms.min.js.map +1 -1
  189. package/build/dist/report.html +2 -2
  190. package/build/index.js +23 -23
  191. package/build/index.js.map +1 -1
  192. package/build/types/ElementOverrideProp.js.map +1 -1
  193. package/build/types/Theme.js.map +1 -1
  194. package/build/types/ThemeOverrides.js.map +1 -1
  195. package/build/validators/EmailValidator.js +8 -22
  196. package/build/validators/EmailValidator.js.map +1 -1
  197. package/build/validators/LatitudeValidator.js +13 -27
  198. package/build/validators/LatitudeValidator.js.map +1 -1
  199. package/build/validators/LongitudeValidator.js +13 -27
  200. package/build/validators/LongitudeValidator.js.map +1 -1
  201. package/build/validators/NumberValidator.js +27 -39
  202. package/build/validators/NumberValidator.js.map +1 -1
  203. package/build/validators/UrlValidator.js +9 -23
  204. package/build/validators/UrlValidator.js.map +1 -1
  205. package/build/validators/base.js.map +1 -1
  206. package/build/validators/index.js +6 -6
  207. package/build/validators/index.js.map +1 -1
  208. package/package.json +8 -5
  209. package/tsconfig.json +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/components/bookingCalendar/common.ts"],"names":["defaultGetMomentFormatFunction","date","bestStep","undefined","valueOf","clone","startOf","defaultGetNewMomentFunction","defaultGridAvailableSteps"],"mappings":";;;;;;;;;AAAA;;;;;;AAyBO,IAAMA,8BAA8B,GAAG,SAAjCA,8BAAiC,CAC5CC,IAD4C,EAE5CC,QAF4C,EAGzC;AACH,MAAI,CAACD,IAAD,IAAS,CAACC,QAAd,EAAwB;AACtB,WAAOC,SAAP;AACD;;AACD,MACEF,IAAI,CAACG,OAAL,OACAH,IAAI,CACDI,KADH,GAEGC,OAFH,CAEW,KAFX,EAGGF,OAHH,EAFF,EAME;AACA,WAAO,QAAP;AACD;;AACD,SAAO,QAAP;AACD,CAjBM;;;;AAqBA,IAAMG,2BAA2B,GAAG,SAA9BA,2BAA8B,CAACN,IAAD,EAAgB;AACzD,SAAO,qBAAOA,IAAP,CAAP;AACD,CAFM;;;AAMA,IAAMO,yBAAqC,GAAG,CACnD,sBAAS,CAAT,EAAY,QAAZ,CADmD,EAEnD,sBAAS,CAAT,EAAY,QAAZ,CAFmD,EAGnD,sBAAS,EAAT,EAAa,QAAb,CAHmD,EAInD,sBAAS,EAAT,EAAa,QAAb,CAJmD,EAKnD,sBAAS,EAAT,EAAa,QAAb,CALmD,EAMnD,sBAAS,EAAT,EAAa,QAAb,CANmD,EAOnD,sBAAS,CAAT,EAAY,MAAZ,CAPmD,EAQnD,sBAAS,CAAT,EAAY,MAAZ,CARmD,EASnD,sBAAS,CAAT,EAAY,MAAZ,CATmD,EAUnD,sBAAS,CAAT,EAAY,MAAZ,CAVmD,EAWnD,sBAAS,CAAT,EAAY,MAAZ,CAXmD,EAYnD,sBAAS,EAAT,EAAa,MAAb,CAZmD,EAanD,sBAAS,CAAT,EAAY,KAAZ,CAbmD,CAA9C","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"],"file":"common.js"}
1
+ {"version":3,"file":"common.js","names":["defaultGetMomentFormatFunction","date","bestStep","undefined","valueOf","clone","startOf","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":";;;;;;;AAAA;;;;;;AAyBO,MAAMA,8BAA8B,GAAG,CAC5CC,IAD4C,EAE5CC,QAF4C,KAGzC;EACH,IAAI,CAACD,IAAD,IAAS,CAACC,QAAd,EAAwB;IACtB,OAAOC,SAAP;EACD;;EACD,IACEF,IAAI,CAACG,OAAL,OACAH,IAAI,CACDI,KADH,GAEGC,OAFH,CAEW,KAFX,EAGGF,OAHH,EAFF,EAME;IACA,OAAO,QAAP;EACD;;EACD,OAAO,QAAP;AACD,CAjBM;;;;AAqBA,MAAMG,2BAA2B,GAAIN,IAAD,IAAgB;EACzD,OAAO,IAAAO,eAAA,EAAOP,IAAP,CAAP;AACD,CAFM;;;AAMA,MAAMQ,yBAAqC,GAAG,CACnD,IAAAC,gBAAA,EAAS,CAAT,EAAY,QAAZ,CADmD,EAEnD,IAAAA,gBAAA,EAAS,CAAT,EAAY,QAAZ,CAFmD,EAGnD,IAAAA,gBAAA,EAAS,EAAT,EAAa,QAAb,CAHmD,EAInD,IAAAA,gBAAA,EAAS,EAAT,EAAa,QAAb,CAJmD,EAKnD,IAAAA,gBAAA,EAAS,EAAT,EAAa,QAAb,CALmD,EAMnD,IAAAA,gBAAA,EAAS,EAAT,EAAa,QAAb,CANmD,EAOnD,IAAAA,gBAAA,EAAS,CAAT,EAAY,MAAZ,CAPmD,EAQnD,IAAAA,gBAAA,EAAS,CAAT,EAAY,MAAZ,CARmD,EASnD,IAAAA,gBAAA,EAAS,CAAT,EAAY,MAAZ,CATmD,EAUnD,IAAAA,gBAAA,EAAS,CAAT,EAAY,MAAZ,CAVmD,EAWnD,IAAAA,gBAAA,EAAS,CAAT,EAAY,MAAZ,CAXmD,EAYnD,IAAAA,gBAAA,EAAS,EAAT,EAAa,MAAb,CAZmD,EAanD,IAAAA,gBAAA,EAAS,CAAT,EAAY,KAAZ,CAbmD,CAA9C"}
@@ -11,7 +11,7 @@ Object.keys(_BookingCalendar).forEach(function (key) {
11
11
  if (key in exports && exports[key] === _BookingCalendar[key]) return;
12
12
  Object.defineProperty(exports, key, {
13
13
  enumerable: true,
14
- get: function get() {
14
+ get: function () {
15
15
  return _BookingCalendar[key];
16
16
  }
17
17
  });
@@ -24,7 +24,7 @@ Object.keys(_common).forEach(function (key) {
24
24
  if (key in exports && exports[key] === _common[key]) return;
25
25
  Object.defineProperty(exports, key, {
26
26
  enumerable: true,
27
- get: function get() {
27
+ get: function () {
28
28
  return _common[key];
29
29
  }
30
30
  });
@@ -37,7 +37,7 @@ Object.keys(_classes).forEach(function (key) {
37
37
  if (key in exports && exports[key] === _classes[key]) return;
38
38
  Object.defineProperty(exports, key, {
39
39
  enumerable: true,
40
- get: function get() {
40
+ get: function () {
41
41
  return _classes[key];
42
42
  }
43
43
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/components/bookingCalendar/index.ts"],"names":[],"mappings":";;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './BookingCalendar';\r\nexport * from './common';\r\nexport * from './classes';\r\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/lib/components/bookingCalendar/index.ts"],"sourcesContent":["export * from './BookingCalendar';\r\nexport * from './common';\r\nexport * from './classes';\r\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -3,37 +3,25 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.calculateItemsDimensions = calculateItemsDimensions;
7
+ exports.getItemPositionStyle = exports.generateGridItems = exports.generateControlItems = void 0;
6
8
  exports.groupBy = groupBy;
7
- exports.splitBookingsToLanes = splitBookingsToLanes;
8
9
  exports.itemsOverlap = itemsOverlap;
9
- exports.calculateItemsDimensions = calculateItemsDimensions;
10
- exports.generateGridItems = exports.generateControlItems = exports.getItemPositionStyle = void 0;
10
+ exports.splitBookingsToLanes = splitBookingsToLanes;
11
11
 
12
12
  var _moment = _interopRequireDefault(require("moment"));
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
16
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
17
-
18
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
19
-
20
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
16
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
17
 
22
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
23
-
24
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
25
-
26
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
27
-
28
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
29
-
30
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
18
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
31
19
 
32
20
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
33
21
 
34
22
  function groupBy(items, iterator) {
35
- return items.reduce(function (obj, item) {
36
- var key = iterator(item);
23
+ return items.reduce((obj, item) => {
24
+ const key = iterator(item);
37
25
 
38
26
  if (!obj.hasOwnProperty(key)) {
39
27
  obj[key] = [];
@@ -45,154 +33,114 @@ function groupBy(items, iterator) {
45
33
  }
46
34
 
47
35
  function splitBookingsToLanes(bookings, from, minLanesCount) {
48
- var lanesSource = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
36
+ let lanesSource = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
49
37
 
50
38
  if (!bookings) {
51
39
  return [];
52
40
  }
53
41
 
54
- var lanes = [];
42
+ let lanes = [];
55
43
 
56
44
  if (lanesSource !== null && lanesSource !== void 0 && lanesSource.length) {
57
- lanes = lanesSource.map(function (source) {
58
- return _objectSpread(_objectSpread({}, source), {}, {
59
- items: []
60
- });
61
- });
45
+ lanes = lanesSource.map(source => _objectSpread(_objectSpread({}, source), {}, {
46
+ items: []
47
+ }));
62
48
  }
63
49
 
64
- var bookingsWithoutLaneKey = bookings.filter(function (a) {
65
- return a.laneKey === undefined;
66
- });
67
- var bookingsWithLaneKey = bookings.filter(function (a) {
68
- return a.laneKey !== undefined;
69
- });
50
+ const bookingsWithoutLaneKey = bookings.filter(a => a.laneKey === undefined);
51
+ const bookingsWithLaneKey = bookings.filter(a => a.laneKey !== undefined);
70
52
 
71
53
  if (bookingsWithLaneKey.length) {
72
- var grouped = groupBy(bookingsWithLaneKey.map(function (booking, originalIndex) {
73
- return _objectSpread(_objectSpread({}, booking), {}, {
74
- originalIndex: originalIndex
75
- });
76
- }), function (a) {
77
- return a.laneKey;
78
- });
79
- lanes = Object.keys(grouped).map(function (key) {
80
- return _objectSpread({
81
- laneKey: Number(key),
82
- items: grouped[key]
83
- }, lanesSource === null || lanesSource === void 0 ? void 0 : lanesSource.find(function (a) {
84
- return a.laneKey === Number(key);
85
- }));
86
- });
87
- var missingLanes = lanesSource === null || lanesSource === void 0 ? void 0 : lanesSource.filter(function (a) {
88
- return !lanes.some(function (l) {
89
- return l.laneKey === a.laneKey;
90
- });
91
- });
92
- lanes = lanes.concat(missingLanes.map(function (a) {
93
- return _objectSpread(_objectSpread({}, a), {}, {
94
- items: []
95
- });
96
- }));
54
+ const grouped = groupBy(bookingsWithLaneKey.map((booking, originalIndex) => _objectSpread(_objectSpread({}, booking), {}, {
55
+ originalIndex
56
+ })), a => a.laneKey);
57
+ lanes = Object.keys(grouped).map(key => _objectSpread({
58
+ laneKey: Number(key),
59
+ items: grouped[key]
60
+ }, lanesSource === null || lanesSource === void 0 ? void 0 : lanesSource.find(a => a.laneKey === Number(key))));
61
+ const missingLanes = lanesSource === null || lanesSource === void 0 ? void 0 : lanesSource.filter(a => !lanes.some(l => l.laneKey === a.laneKey));
62
+ lanes = lanes.concat(missingLanes.map(a => _objectSpread(_objectSpread({}, a), {}, {
63
+ items: []
64
+ })));
97
65
  }
98
66
 
99
67
  if (bookingsWithoutLaneKey.length) {
100
- (function () {
101
- var remainingBookings = bookingsWithoutLaneKey.map(function (booking, originalIndex) {
102
- return _objectSpread(_objectSpread({}, booking), {}, {
103
- originalIndex: originalIndex
104
- });
105
- }).sort(function (a, b) {
106
- return a.from.valueOf() - b.from.valueOf();
107
- });
108
-
109
- var _loop = function _loop() {
110
- var min = 99999999999999;
111
- var bookingIndex = -1;
112
- var laneIndex = -1;
113
- lanes.forEach(function (lane, index) {
114
- var _lane$items$till, _lane$items;
115
-
116
- if (lanesSource !== null && lanesSource !== void 0 && lanesSource.some(function (l) {
117
- return l.laneKey === lane.laneKey;
118
- })) {
119
- return;
120
- }
121
-
122
- var lastTill = (_lane$items$till = (_lane$items = lane.items[lane.items.length - 1]) === null || _lane$items === void 0 ? void 0 : _lane$items.till) !== null && _lane$items$till !== void 0 ? _lane$items$till : from;
123
- var distances = remainingBookings.map(function (booking) {
124
- var dist = booking.from.diff(lastTill);
125
-
126
- if (lane.items.length === 0) {
127
- return Math.abs(dist);
128
- }
129
-
130
- return dist;
131
- });
68
+ let remainingBookings = bookingsWithoutLaneKey.map((booking, originalIndex) => _objectSpread(_objectSpread({}, booking), {}, {
69
+ originalIndex
70
+ })).sort((a, b) => a.from.valueOf() - b.from.valueOf());
71
+
72
+ while (remainingBookings.length > 0) {
73
+ let min = 99999999999999;
74
+ let bookingIndex = -1;
75
+ let laneIndex = -1;
76
+ lanes.forEach((lane, index) => {
77
+ var _lane$items;
78
+
79
+ if (lanesSource !== null && lanesSource !== void 0 && lanesSource.some(l => l.laneKey === lane.laneKey)) {
80
+ return;
81
+ }
132
82
 
133
- var _min = Math.min.apply(Math, _toConsumableArray(distances.filter(function (a) {
134
- return a >= 0;
135
- })));
83
+ const lastTill = ((_lane$items = lane.items[lane.items.length - 1]) === null || _lane$items === void 0 ? void 0 : _lane$items.till) ?? from;
84
+ const distances = remainingBookings.map(booking => {
85
+ const dist = booking.from.diff(lastTill);
136
86
 
137
- if (_min < min) {
138
- bookingIndex = distances.indexOf(_min);
139
- laneIndex = index;
87
+ if (lane.items.length === 0) {
88
+ return Math.abs(dist);
140
89
  }
90
+
91
+ return dist;
141
92
  });
142
93
 
143
- if (bookingIndex >= 0 && laneIndex >= 0) {
144
- lanes[laneIndex].items = lanes[laneIndex].items.concat(_objectSpread({}, remainingBookings[bookingIndex]));
145
- remainingBookings.splice(bookingIndex, 1);
146
- } else {
147
- lanes = lanes.concat({
148
- items: [_objectSpread({}, remainingBookings[0])],
149
- laneKey: lanes.length,
150
- data: undefined
151
- });
152
- remainingBookings.shift();
94
+ const _min = Math.min(...distances.filter(a => a >= 0));
95
+
96
+ if (_min < min) {
97
+ bookingIndex = distances.indexOf(_min);
98
+ laneIndex = index;
153
99
  }
154
- };
100
+ });
155
101
 
156
- while (remainingBookings.length > 0) {
157
- _loop();
158
- } // Naive solution that is much less computationally intensive but yields more lanes than necessary
159
-
160
- /*bookings.forEach((booking, originalIndex) => {
161
- let found = false;
162
- lanes.forEach((lane, index) => {
163
- if (!lane.some(i => itemsOverlap(booking, i))) {
164
- lanes[index] = lanes[index].concat({ ...booking, originalIndex });
165
- found = true;
166
- }
167
- });
168
- if (!found) {
169
- lanes = lanes.concat([[{ ...booking, originalIndex }]]);
102
+ if (bookingIndex >= 0 && laneIndex >= 0) {
103
+ lanes[laneIndex].items = lanes[laneIndex].items.concat(_objectSpread({}, remainingBookings[bookingIndex]));
104
+ remainingBookings.splice(bookingIndex, 1);
105
+ } else {
106
+ lanes = lanes.concat({
107
+ items: [_objectSpread({}, remainingBookings[0])],
108
+ laneKey: lanes.length,
109
+ data: undefined
110
+ });
111
+ remainingBookings.shift();
112
+ }
113
+ } // Naive solution that is much less computationally intensive but yields more lanes than necessary
114
+
115
+ /*bookings.forEach((booking, originalIndex) => {
116
+ let found = false;
117
+ lanes.forEach((lane, index) => {
118
+ if (!lane.some(i => itemsOverlap(booking, i))) {
119
+ lanes[index] = lanes[index].concat({ ...booking, originalIndex });
120
+ found = true;
170
121
  }
171
- });*/
122
+ });
123
+ if (!found) {
124
+ lanes = lanes.concat([[{ ...booking, originalIndex }]]);
125
+ }
126
+ });*/
172
127
 
173
- })();
174
128
  }
175
129
 
176
- for (var index = 0; index < lanes.length; index++) {
177
- var lane = lanes[index];
178
- lanes[index].items = lane.items.sort(function (a, b) {
179
- return a.from.valueOf() - b.from.valueOf();
180
- });
130
+ for (let index = 0; index < lanes.length; index++) {
131
+ const lane = lanes[index];
132
+ lanes[index].items = lane.items.sort((a, b) => a.from.valueOf() - b.from.valueOf());
181
133
  }
182
134
 
183
135
  if (lanes.length < minLanesCount) {
184
- lanes = lanes.concat(new Array(minLanesCount - lanes.length).fill(null).map(function (_, index) {
185
- return {
186
- items: [],
187
- laneKey: index + lanes.length,
188
- data: null
189
- };
190
- }));
136
+ lanes = lanes.concat(new Array(minLanesCount - lanes.length).fill(null).map((_, index) => ({
137
+ items: [],
138
+ laneKey: index + lanes.length,
139
+ data: null
140
+ })));
191
141
  }
192
142
 
193
- lanes = lanes.sort(function (a, b) {
194
- return a.laneKey - b.laneKey;
195
- });
143
+ lanes = lanes.sort((a, b) => a.laneKey - b.laneKey);
196
144
  return lanes;
197
145
  }
198
146
 
@@ -212,54 +160,52 @@ function itemsOverlap(a, b) {
212
160
  return true;
213
161
  }
214
162
 
215
- var getItemPositionStyle = function getItemPositionStyle(marginStart, width) {
216
- return {
217
- marginLeft: "".concat(marginStart * 100, "%"),
218
- width: "".concat(width * 100, "%")
219
- };
220
- };
163
+ const getItemPositionStyle = (marginStart, width) => ({
164
+ marginLeft: `${marginStart * 100}%`,
165
+ width: `${width * 100}%`
166
+ });
221
167
 
222
168
  exports.getItemPositionStyle = getItemPositionStyle;
223
169
 
224
170
  function calculateItemsDimensions(items, from, till) {
225
- var lastEnd = 0;
226
- var widthMs = till.valueOf() - from.valueOf();
227
- var startMs = from.valueOf();
228
- var endMs = till.valueOf();
229
- return widthMs > 0 ? items === null || items === void 0 ? void 0 : items.map(function (item) {
230
- var startIsCut = item.from.valueOf() < startMs;
231
- var realStart = (item.from.valueOf() - startMs) / widthMs;
232
- var realFrom = startIsCut ? (0, _moment.default)(startMs) : (0, _moment.default)(item.from);
233
- var start = startIsCut ? 0 : realStart;
234
- var endIsCut = item.till.valueOf() > endMs;
235
- var realEnd = (item.till.valueOf() - startMs) / widthMs;
236
- var end = endIsCut ? (endMs - startMs) / widthMs : realEnd;
237
- var realTill = endIsCut ? (0, _moment.default)(endMs) : (0, _moment.default)(item.till);
238
- var marginStart = start - lastEnd;
171
+ let lastEnd = 0;
172
+ const widthMs = till.valueOf() - from.valueOf();
173
+ const startMs = from.valueOf();
174
+ const endMs = till.valueOf();
175
+ return widthMs > 0 ? items === null || items === void 0 ? void 0 : items.map(item => {
176
+ const startIsCut = item.from.valueOf() < startMs;
177
+ const realStart = (item.from.valueOf() - startMs) / widthMs;
178
+ const realFrom = startIsCut ? (0, _moment.default)(startMs) : (0, _moment.default)(item.from);
179
+ const start = startIsCut ? 0 : realStart;
180
+ const endIsCut = item.till.valueOf() > endMs;
181
+ const realEnd = (item.till.valueOf() - startMs) / widthMs;
182
+ const end = endIsCut ? (endMs - startMs) / widthMs : realEnd;
183
+ const realTill = endIsCut ? (0, _moment.default)(endMs) : (0, _moment.default)(item.till);
184
+ const marginStart = start - lastEnd;
239
185
  lastEnd = (item.till.valueOf() - startMs) / widthMs;
240
186
  return {
241
- item: item,
242
- start: start,
243
- realStart: realStart,
244
- realFrom: realFrom,
245
- startIsCut: startIsCut,
187
+ item,
188
+ start,
189
+ realStart,
190
+ realFrom,
191
+ startIsCut,
246
192
  width: end - start,
247
- end: end,
248
- realEnd: realEnd,
249
- realTill: realTill,
250
- endIsCut: endIsCut,
251
- marginStart: marginStart
193
+ end,
194
+ realEnd,
195
+ realTill,
196
+ endIsCut,
197
+ marginStart
252
198
  };
253
199
  }) : [];
254
200
  }
255
201
 
256
- var generateControlItems = function generateControlItems(from, till, step, startOfStep) {
202
+ const generateControlItems = (from, till, step, startOfStep) => {
257
203
  if (!from || !till || !step) {
258
204
  return [];
259
205
  }
260
206
 
261
- var steps = Math.max(Math.ceil((till.valueOf() - from.valueOf()) / step.asMilliseconds()), 2);
262
- var subtract = (startOfStep.valueOf() - from.valueOf()) % step.asMilliseconds();
207
+ let steps = Math.max(Math.ceil((till.valueOf() - from.valueOf()) / step.asMilliseconds()), 2);
208
+ let subtract = (startOfStep.valueOf() - from.valueOf()) % step.asMilliseconds();
263
209
 
264
210
  if (subtract > 0) {
265
211
  subtract -= step.asMilliseconds();
@@ -269,17 +215,15 @@ var generateControlItems = function generateControlItems(from, till, step, start
269
215
  steps += 1;
270
216
  }
271
217
 
272
- return new Array(steps).fill(0).map(function (_, index) {
273
- return {
274
- from: from.clone().add(subtract).add(step.asMilliseconds() * index),
275
- till: from.clone().add(subtract).add(step.asMilliseconds() * (index + 1))
276
- };
277
- });
218
+ return new Array(steps).fill(0).map((_, index) => ({
219
+ from: from.clone().add(subtract).add(step.asMilliseconds() * index),
220
+ till: from.clone().add(subtract).add(step.asMilliseconds() * (index + 1))
221
+ }));
278
222
  };
279
223
 
280
224
  exports.generateControlItems = generateControlItems;
281
225
 
282
- var generateGridItems = function generateGridItems(from, till, step, containerWidthPx, availableSteps, goalGridWidthPx, startOfStep) {
226
+ const generateGridItems = (from, till, step, containerWidthPx, availableSteps, goalGridWidthPx, startOfStep) => {
283
227
  if (!from || !till || !containerWidthPx || !(availableSteps !== null && availableSteps !== void 0 && availableSteps.length) || !goalGridWidthPx || !step || !startOfStep) {
284
228
  return {
285
229
  bestStep: availableSteps === null || availableSteps === void 0 ? void 0 : availableSteps[0],
@@ -287,23 +231,19 @@ var generateGridItems = function generateGridItems(from, till, step, containerWi
287
231
  };
288
232
  }
289
233
 
290
- var stepMs = step.asMilliseconds();
291
- var fromMs = from.valueOf();
292
- var tillMs = till.valueOf();
293
- var timeLengthMs = tillMs - fromMs;
294
- var approximateStepsCount = containerWidthPx / goalGridWidthPx;
295
- var approximateStepMs = timeLengthMs / approximateStepsCount;
296
- var availableStepsDistancesMs = availableSteps.map(function (a) {
297
- return Math.abs(a.asMilliseconds() - approximateStepMs);
298
- });
299
- var smallestDistance = Math.min.apply(Math, _toConsumableArray(availableStepsDistancesMs));
300
- var bestStepIndex = availableStepsDistancesMs.findIndex(function (a) {
301
- return a === smallestDistance;
302
- });
303
- var bestStep = availableSteps[bestStepIndex];
304
- var subtract = (fromMs + from.utcOffset() * 60 * 1000) % bestStep.asMilliseconds();
305
- var startMs = fromMs - subtract;
306
- var steps = [];
234
+ const stepMs = step.asMilliseconds();
235
+ const fromMs = from.valueOf();
236
+ const tillMs = till.valueOf();
237
+ const timeLengthMs = tillMs - fromMs;
238
+ const approximateStepsCount = containerWidthPx / goalGridWidthPx;
239
+ const approximateStepMs = timeLengthMs / approximateStepsCount;
240
+ const availableStepsDistancesMs = availableSteps.map(a => Math.abs(a.asMilliseconds() - approximateStepMs));
241
+ const smallestDistance = Math.min(...availableStepsDistancesMs);
242
+ const bestStepIndex = availableStepsDistancesMs.findIndex(a => a === smallestDistance);
243
+ const bestStep = availableSteps[bestStepIndex];
244
+ const subtract = (fromMs + from.utcOffset() * 60 * 1000) % bestStep.asMilliseconds();
245
+ let startMs = fromMs - subtract;
246
+ let steps = [];
307
247
 
308
248
  while (startMs <= tillMs) {
309
249
  steps = steps.concat(from.clone().add(startMs - fromMs, 'ms'));
@@ -311,14 +251,12 @@ var generateGridItems = function generateGridItems(from, till, step, containerWi
311
251
  }
312
252
 
313
253
  return {
314
- items: steps.filter(function (a) {
315
- return a.valueOf() > fromMs && a.valueOf() < tillMs;
316
- }).map(function (date) {
317
- var stepProportion = (date.valueOf() + from.utcOffset() * 60 * 1000) % stepMs / stepMs;
318
- var numberOfRoots = 0;
319
- var current = stepProportion;
320
- var currentTop = 1;
321
- var tolerance = 0.001;
254
+ items: steps.filter(a => a.valueOf() > fromMs && a.valueOf() < tillMs).map(date => {
255
+ const stepProportion = (date.valueOf() + from.utcOffset() * 60 * 1000) % stepMs / stepMs;
256
+ let numberOfRoots = 0;
257
+ let current = stepProportion;
258
+ let currentTop = 1;
259
+ let tolerance = 0.001;
322
260
 
323
261
  while (current > tolerance && current < currentTop - tolerance) {
324
262
  numberOfRoots += 1;
@@ -331,12 +269,12 @@ var generateGridItems = function generateGridItems(from, till, step, containerWi
331
269
 
332
270
  return {
333
271
  left: (date.valueOf() - fromMs) / timeLengthMs,
334
- date: date,
335
- stepProportion: stepProportion,
272
+ date,
273
+ stepProportion,
336
274
  opacity: 1 / (numberOfRoots || 1)
337
275
  };
338
276
  }),
339
- bestStep: bestStep
277
+ bestStep
340
278
  };
341
279
  };
342
280
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/components/bookingCalendar/utils.ts"],"names":["groupBy","items","iterator","reduce","obj","item","key","hasOwnProperty","push","splitBookingsToLanes","bookings","from","minLanesCount","lanesSource","lanes","length","map","source","bookingsWithoutLaneKey","filter","a","laneKey","undefined","bookingsWithLaneKey","grouped","booking","originalIndex","Object","keys","Number","find","missingLanes","some","l","concat","remainingBookings","sort","b","valueOf","min","bookingIndex","laneIndex","forEach","lane","index","lastTill","till","distances","dist","diff","Math","abs","_min","indexOf","splice","data","shift","Array","fill","_","itemsOverlap","isBefore","isAfter","getItemPositionStyle","marginStart","width","marginLeft","calculateItemsDimensions","lastEnd","widthMs","startMs","endMs","startIsCut","realStart","realFrom","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","findIndex","utcOffset","date","stepProportion","numberOfRoots","current","currentTop","tolerance","pow","left","opacity"],"mappings":"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","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) {\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(a => a.laneKey === undefined);\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 &\r\n BookingCalendarItemWithOriginalIndexT)[] = 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 lanes = lanes.sort((a, b) => a.laneKey - b.laneKey);\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.clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * index),\r\n till: from.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"],"file":"utils.js"}
1
+ {"version":3,"file":"utils.js","names":["groupBy","items","iterator","reduce","obj","item","key","hasOwnProperty","push","splitBookingsToLanes","bookings","from","minLanesCount","lanesSource","lanes","length","map","source","bookingsWithoutLaneKey","filter","a","laneKey","undefined","bookingsWithLaneKey","grouped","booking","originalIndex","Object","keys","Number","find","missingLanes","some","l","concat","remainingBookings","sort","b","valueOf","min","bookingIndex","laneIndex","forEach","lane","index","lastTill","till","distances","dist","diff","Math","abs","_min","indexOf","splice","data","shift","Array","fill","_","itemsOverlap","isBefore","isAfter","getItemPositionStyle","marginStart","width","marginLeft","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","findIndex","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) {\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(a => a.laneKey === undefined);\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 &\r\n BookingCalendarItemWithOriginalIndexT)[] = 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 lanes = lanes.sort((a, b) => a.laneKey - b.laneKey);\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.clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * index),\r\n till: from.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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"}