ics-ui-kit 0.1.0-alpha.8 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1001) hide show
  1. package/README.md +36 -0
  2. package/dist/AlertContext-CxjW1LVL.js +13 -0
  3. package/dist/AlertContext-CxjW1LVL.js.map +1 -0
  4. package/dist/AlertIcon-5B6AgZpe.js +96 -0
  5. package/dist/AlertIcon-5B6AgZpe.js.map +1 -0
  6. package/dist/Button-Dg89xRSi.js +36 -0
  7. package/dist/Button-Dg89xRSi.js.map +1 -0
  8. package/dist/ButtonBase-e6qyv6mD.js +158 -0
  9. package/dist/ButtonBase-e6qyv6mD.js.map +1 -0
  10. package/dist/CheckboxField-B6ojieD7.js +347 -0
  11. package/dist/CheckboxField-B6ojieD7.js.map +1 -0
  12. package/dist/Command-BhbfL5wm.js +554 -0
  13. package/dist/Command-BhbfL5wm.js.map +1 -0
  14. package/dist/ComponentVariantProvider-B0SFUaXB.js +8 -0
  15. package/dist/ComponentVariantProvider-B0SFUaXB.js.map +1 -0
  16. package/dist/DayPicker-4hE1QEvO.js +2452 -0
  17. package/dist/DayPicker-4hE1QEvO.js.map +1 -0
  18. package/dist/Description-BTPMlTT-.js +19 -0
  19. package/dist/Description-BTPMlTT-.js.map +1 -0
  20. package/dist/Dialog-ByiJIDhl.js +99 -0
  21. package/dist/Dialog-ByiJIDhl.js.map +1 -0
  22. package/dist/Divider-DPW5ZhZ8.js +24 -0
  23. package/dist/Divider-DPW5ZhZ8.js.map +1 -0
  24. package/dist/EmptyState-DRKjscH-.js +12 -0
  25. package/dist/EmptyState-DRKjscH-.js.map +1 -0
  26. package/dist/ErrorState-B26k67-z.js +11 -0
  27. package/dist/ErrorState-B26k67-z.js.map +1 -0
  28. package/dist/FeatureIcon-BGE0Orkc.js +23 -0
  29. package/dist/FeatureIcon-BGE0Orkc.js.map +1 -0
  30. package/dist/Field-CSvS9f_a.js +86 -0
  31. package/dist/Field-CSvS9f_a.js.map +1 -0
  32. package/dist/FieldLabel-BA0y5lhr.js +70 -0
  33. package/dist/FieldLabel-BA0y5lhr.js.map +1 -0
  34. package/dist/FolderSvg-cw0DxNVy.js +742 -0
  35. package/dist/FolderSvg-cw0DxNVy.js.map +1 -0
  36. package/dist/FormFooterTemplate-BPspyDbr.js +88 -0
  37. package/dist/FormFooterTemplate-BPspyDbr.js.map +1 -0
  38. package/dist/FormHeader--F6b2aRk.js +49 -0
  39. package/dist/FormHeader--F6b2aRk.js.map +1 -0
  40. package/dist/FormStack-DvlFQQiP.js +127 -0
  41. package/dist/FormStack-DvlFQQiP.js.map +1 -0
  42. package/dist/HintState-BxrCAWqq.js +12 -0
  43. package/dist/HintState-BxrCAWqq.js.map +1 -0
  44. package/dist/Icon-DH3ev9GK.js +22 -0
  45. package/dist/Icon-DH3ev9GK.js.map +1 -0
  46. package/dist/IconButton-DwkpNgn3.js +33 -0
  47. package/dist/IconButton-DwkpNgn3.js.map +1 -0
  48. package/dist/IconTooltip-DhkXc8Uy.js +11 -0
  49. package/dist/IconTooltip-DhkXc8Uy.js.map +1 -0
  50. package/dist/Indicator-AqxHWPA9.js +29 -0
  51. package/dist/Indicator-AqxHWPA9.js.map +1 -0
  52. package/dist/InputGroup-BvD9Igmt.js +137 -0
  53. package/dist/InputGroup-BvD9Igmt.js.map +1 -0
  54. package/dist/InputOTP-B2e1nfSO.js +259 -0
  55. package/dist/InputOTP-B2e1nfSO.js.map +1 -0
  56. package/dist/Loader-BpHiL6W-.js +58 -0
  57. package/dist/Loader-BpHiL6W-.js.map +1 -0
  58. package/dist/MenuItem-pvsONHlh.js +32 -0
  59. package/dist/MenuItem-pvsONHlh.js.map +1 -0
  60. package/dist/MenuItemShortcut-DgPol9Nz.js +21 -0
  61. package/dist/MenuItemShortcut-DgPol9Nz.js.map +1 -0
  62. package/dist/MenuItemText-7uPl9P3z.js +20 -0
  63. package/dist/MenuItemText-7uPl9P3z.js.map +1 -0
  64. package/dist/Overlay-2XMlxApi.js +28 -0
  65. package/dist/Overlay-2XMlxApi.js.map +1 -0
  66. package/dist/Popover-Dvr7y0YY.js +258 -0
  67. package/dist/Popover-Dvr7y0YY.js.map +1 -0
  68. package/dist/RichButton-DuPTenmS.js +49 -0
  69. package/dist/RichButton-DuPTenmS.js.map +1 -0
  70. package/dist/ScrollArea-CuuTeDn3.js +576 -0
  71. package/dist/ScrollArea-CuuTeDn3.js.map +1 -0
  72. package/dist/ScrollShadowContainer-DdrnF8qU.js +36 -0
  73. package/dist/ScrollShadowContainer-DdrnF8qU.js.map +1 -0
  74. package/dist/SearchSelectTag-DFCX9zT1.js +56 -0
  75. package/dist/SearchSelectTag-DFCX9zT1.js.map +1 -0
  76. package/dist/Select-DRwv6-eZ.js +980 -0
  77. package/dist/Select-DRwv6-eZ.js.map +1 -0
  78. package/dist/Sheet-rtwmzm2-.js +83 -0
  79. package/dist/Sheet-rtwmzm2-.js.map +1 -0
  80. package/dist/Shortcut-D8L15_ed.js +22 -0
  81. package/dist/Shortcut-D8L15_ed.js.map +1 -0
  82. package/dist/Skeleton-y6I-i9q5.js +21 -0
  83. package/dist/Skeleton-y6I-i9q5.js.map +1 -0
  84. package/dist/Tag-DdHXTyKF.js +199 -0
  85. package/dist/Tag-DdHXTyKF.js.map +1 -0
  86. package/dist/Text-DeBE8AKl.js +22 -0
  87. package/dist/Text-DeBE8AKl.js.map +1 -0
  88. package/dist/TextInput-Cj50ImXi.js +205 -0
  89. package/dist/TextInput-Cj50ImXi.js.map +1 -0
  90. package/dist/TextOverflowTooltip-DlUgic5y.js +36 -0
  91. package/dist/TextOverflowTooltip-DlUgic5y.js.map +1 -0
  92. package/dist/Toggle-v_HT3Gm2.js +40 -0
  93. package/dist/Toggle-v_HT3Gm2.js.map +1 -0
  94. package/dist/Tooltip-C4rVuWr4.js +473 -0
  95. package/dist/Tooltip-C4rVuWr4.js.map +1 -0
  96. package/dist/TriggerButton-CfDObWP9.js +33 -0
  97. package/dist/TriggerButton-CfDObWP9.js.map +1 -0
  98. package/dist/blocks/auth/otp-form/OTPForm.d.ts +47 -0
  99. package/dist/blocks/auth/otp-form/OTPForm.stories.d.ts +40 -0
  100. package/dist/blocks/auth/otp-form/components/EmailForm.d.ts +25 -0
  101. package/dist/blocks/auth/otp-form/components/OTPInputForm.d.ts +27 -0
  102. package/dist/blocks/auth/otp-form/components/ResendButton.d.ts +14 -0
  103. package/dist/blocks/auth/otp-form/index.d.ts +3 -0
  104. package/dist/blocks/auth/otp-form/utils/OTPError.d.ts +8 -0
  105. package/dist/blocks/auth/otp-form.d.ts +2 -0
  106. package/dist/blocks/auth/otp-form.js +309 -0
  107. package/dist/blocks/auth/otp-form.js.map +1 -0
  108. package/dist/buildMatchPatternFn-d7GTeGl_.js +68 -0
  109. package/dist/buildMatchPatternFn-d7GTeGl_.js.map +1 -0
  110. package/dist/{bundle-mjs-D6wdQkGI.js → bundle-mjs-CQ0w4GOB.js} +347 -338
  111. package/dist/{bundle-mjs-D6wdQkGI.js.map → bundle-mjs-CQ0w4GOB.js.map} +1 -1
  112. package/dist/{check-C-TqZgvb.js → check-CeyaOoZv.js} +2 -2
  113. package/dist/{check-C-TqZgvb.js.map → check-CeyaOoZv.js.map} +1 -1
  114. package/dist/chevron-down-CAOItu8X.js +14 -0
  115. package/dist/chevron-down-CAOItu8X.js.map +1 -0
  116. package/dist/chevron-left-D6FtXcdU.js +14 -0
  117. package/dist/chevron-left-D6FtXcdU.js.map +1 -0
  118. package/dist/chevron-right-D3juAhA-.js +14 -0
  119. package/dist/chevron-right-D3juAhA-.js.map +1 -0
  120. package/dist/chevron-up-UDiVTHo0.js +12 -0
  121. package/dist/chevron-up-UDiVTHo0.js.map +1 -0
  122. package/dist/circle-alert-CVIokIC7.js +16 -0
  123. package/dist/circle-alert-CVIokIC7.js.map +1 -0
  124. package/dist/circle-x-u75Rx3Tj.js +16 -0
  125. package/dist/circle-x-u75Rx3Tj.js.map +1 -0
  126. package/dist/{utils-2yE78m5l.js → cn-dsXlqdJg.js} +2 -2
  127. package/dist/cn-dsXlqdJg.js.map +1 -0
  128. package/dist/components/alert/Alert.d.ts +12 -0
  129. package/dist/components/alert/Alert.stories.d.ts +38 -0
  130. package/dist/components/alert/AlertContext.d.ts +16 -0
  131. package/dist/components/alert/components/AlertButton.d.ts +8 -0
  132. package/dist/components/alert/components/AlertDescription.d.ts +7 -0
  133. package/dist/components/alert/components/AlertIcon.d.ts +14 -0
  134. package/dist/components/alert/components/AlertTitle.d.ts +11 -0
  135. package/dist/components/alert/index.d.ts +6 -0
  136. package/dist/components/alert-dialog/AlertDialog.d.ts +69 -0
  137. package/dist/components/alert-dialog/AlertDialog.stories.d.ts +32 -0
  138. package/dist/components/alert-dialog/index.d.ts +1 -0
  139. package/dist/components/alert-dialog.d.ts +2 -0
  140. package/dist/components/alert-dialog.js +313 -0
  141. package/dist/components/alert-dialog.js.map +1 -0
  142. package/dist/components/alert.d.ts +2 -0
  143. package/dist/components/alert.js +50 -0
  144. package/dist/components/alert.js.map +1 -0
  145. package/dist/components/avatar/Avatar.d.ts +7 -0
  146. package/dist/components/avatar/Avatar.stories.d.ts +10 -0
  147. package/dist/components/avatar/avatar-fallback/AvatarFallback.d.ts +6 -0
  148. package/dist/components/avatar/avatar-icon/AvatarIcon.d.ts +6 -0
  149. package/dist/components/avatar/avatar-image/AvatarImage.d.ts +3 -0
  150. package/dist/components/avatar/avatar-indicator/AvatarIndicator.d.ts +5 -0
  151. package/dist/components/avatar/avatar-label/AvatarLabel.d.ts +5 -0
  152. package/dist/components/avatar/avatar-label/AvatarLabel.stories.d.ts +10 -0
  153. package/dist/components/avatar/avatar-label/AvatarLabelContext.d.ts +9 -0
  154. package/dist/components/avatar/avatar-label/components/avatar-label-avatar/AvatarLabelAvatar.d.ts +6 -0
  155. package/dist/components/avatar/avatar-label/components/avatar-label-description/AvatarLabelDescription.d.ts +10 -0
  156. package/dist/components/avatar/avatar-label/components/avatar-label-indicator/AvatarLabelIndicator.d.ts +6 -0
  157. package/dist/components/avatar/avatar-label/components/avatar-label-title/AvatarLabelTitle.d.ts +6 -0
  158. package/dist/components/avatar/index.d.ts +13 -0
  159. package/dist/components/avatar.d.ts +2 -0
  160. package/dist/components/avatar.js +432 -0
  161. package/dist/components/avatar.js.map +1 -0
  162. package/dist/components/badge/Badge.d.ts +7 -382
  163. package/dist/components/badge.js +24 -46
  164. package/dist/components/badge.js.map +1 -1
  165. package/dist/components/banner/Banner.d.ts +5 -0
  166. package/dist/components/banner/Banner.stories.d.ts +8 -0
  167. package/dist/components/banner/components/banner-description/BannerDescription.d.ts +5 -0
  168. package/dist/components/banner/components/banner-title/BannerTitle.d.ts +5 -0
  169. package/dist/components/banner/components/banner-title/BannerTitle.stories.d.ts +14 -0
  170. package/dist/components/banner/index.d.ts +3 -0
  171. package/dist/components/banner.d.ts +2 -0
  172. package/dist/components/banner.js +27 -0
  173. package/dist/components/banner.js.map +1 -0
  174. package/dist/components/breadcrumb/Breadcrumb.d.ts +19 -0
  175. package/dist/components/breadcrumb/Breadcrumb.stories.d.ts +10 -0
  176. package/dist/components/breadcrumb/index.d.ts +1 -0
  177. package/dist/components/breadcrumb.d.ts +2 -0
  178. package/dist/components/breadcrumb.js +78 -0
  179. package/dist/components/breadcrumb.js.map +1 -0
  180. package/dist/components/button/button/Button.d.ts +6 -167
  181. package/dist/components/button/button/Button.stories.d.ts +4 -164
  182. package/dist/components/button/button-base/ButtonBase.d.ts +7 -328
  183. package/dist/components/button/icon-button/IconButton.d.ts +5 -466
  184. package/dist/components/button/icon-button/IconButton.stories.d.ts +21 -2
  185. package/dist/components/button/index.d.ts +9 -0
  186. package/dist/components/button/rich-button/RichButton.d.ts +79 -0
  187. package/dist/components/button/rich-button/RichButton.stories.d.ts +46 -0
  188. package/dist/components/button/templates/loading-button/LoadingButtonTemplate.d.ts +12 -0
  189. package/dist/components/button/templates/loading-button/LoadingButtonTemplate.stories.d.ts +21 -0
  190. package/dist/components/button/trigger-button/TriggerButton.d.ts +13 -0
  191. package/dist/components/button/trigger-button/TriggerButton.stories.d.ts +7 -0
  192. package/dist/components/button.js +26 -6
  193. package/dist/components/button.js.map +1 -1
  194. package/dist/components/calendar/Calendar.d.ts +14 -0
  195. package/dist/components/calendar/Calendar.stories.d.ts +45 -0
  196. package/dist/components/calendar/components/calendar-chevron/CalendarChevron.d.ts +12 -0
  197. package/dist/components/calendar/components/calendar-day-button/CalendarDayButton.d.ts +26 -0
  198. package/dist/components/calendar/components/calendar-day-button/CalendarDayButton.stories.d.ts +18 -0
  199. package/dist/components/calendar/components/calendar-next-month-button/CalendarNextMonthButton.d.ts +11 -0
  200. package/dist/components/calendar/components/calendar-previous-month-button/CalendarPreviousMonthButton.d.ts +11 -0
  201. package/dist/components/calendar/components/calendar-root/CalendarRoot.d.ts +11 -0
  202. package/dist/components/calendar/components/calendar-week-day/CalendarWeekDay.d.ts +11 -0
  203. package/dist/components/calendar/components/calendar-week-day/CalendarWeekDay.stories.d.ts +7 -0
  204. package/dist/components/calendar/index.d.ts +3 -0
  205. package/dist/components/calendar.d.ts +2 -0
  206. package/dist/components/calendar.js +186 -0
  207. package/dist/components/calendar.js.map +1 -0
  208. package/dist/components/card/Card.d.ts +7 -0
  209. package/dist/components/card/Card.stories.d.ts +17 -0
  210. package/dist/components/card/components/ActionCard.d.ts +7 -0
  211. package/dist/components/card/components/CardFeature.d.ts +7 -0
  212. package/dist/components/card/components/CardFolder.d.ts +9 -0
  213. package/dist/components/card/components/CardFooter.d.ts +7 -0
  214. package/dist/components/card/components/CardMenuTrigger.d.ts +8 -0
  215. package/dist/components/card/components/CardSubTitle.d.ts +7 -0
  216. package/dist/components/card/components/CardTitle.d.ts +7 -0
  217. package/dist/components/card/components/CardVisualBadge.d.ts +7 -0
  218. package/dist/components/card/components/FolderSvg.d.ts +3 -0
  219. package/dist/components/card/index.d.ts +19 -0
  220. package/dist/components/card/styles.d.ts +2 -0
  221. package/dist/components/card.d.ts +2 -0
  222. package/dist/components/card.js +159 -0
  223. package/dist/components/card.js.map +1 -0
  224. package/dist/components/carousel/Carousel.d.ts +17 -0
  225. package/dist/components/carousel/Carousel.stories.d.ts +8 -0
  226. package/dist/components/carousel/components/carousel-buttons/CarouselButtons.d.ts +27 -0
  227. package/dist/components/carousel/components/carousel-item/CarouselItem.d.ts +3 -0
  228. package/dist/components/carousel/index.d.ts +4 -0
  229. package/dist/components/carousel/utils/CarouselContext.d.ts +13 -0
  230. package/dist/components/carousel/utils/useCarousel.d.ts +10 -0
  231. package/dist/components/carousel.d.ts +2 -0
  232. package/dist/components/carousel.js +1700 -0
  233. package/dist/components/carousel.js.map +1 -0
  234. package/dist/components/checkbox/Checkbox.d.ts +49 -2
  235. package/dist/components/checkbox/Checkbox.test.d.ts +1 -0
  236. package/dist/components/checkbox/checkbox-field/CheckboxField.d.ts +10 -456
  237. package/dist/components/checkbox/checkbox-field/CheckboxField.stories.d.ts +3 -228
  238. package/dist/components/checkbox/index.d.ts +2 -2
  239. package/dist/components/checkbox.js +4 -3
  240. package/dist/components/collapsible/Collapsible.d.ts +6 -0
  241. package/dist/components/collapsible/Collapsible.stories.d.ts +6 -0
  242. package/dist/components/collapsible/index.d.ts +1 -0
  243. package/dist/components/collapsible.d.ts +2 -0
  244. package/dist/components/collapsible.js +133 -0
  245. package/dist/components/collapsible.js.map +1 -0
  246. package/dist/components/color-tile/ColorTile.d.ts +9 -0
  247. package/dist/components/color-tile/ColorTile.stories.d.ts +6 -0
  248. package/dist/components/color-tile/index.d.ts +1 -0
  249. package/dist/components/color-tile.d.ts +2 -0
  250. package/dist/components/color-tile.js +26 -0
  251. package/dist/components/color-tile.js.map +1 -0
  252. package/dist/components/command/Command.d.ts +108 -0
  253. package/dist/components/command/Command.stories.d.ts +34 -0
  254. package/dist/components/command/index.d.ts +1 -0
  255. package/dist/components/command.d.ts +2 -0
  256. package/dist/components/command.js +15 -0
  257. package/dist/components/command.js.map +1 -0
  258. package/dist/components/container/Container.d.ts +29 -0
  259. package/dist/components/container/Container.stories.d.ts +6 -0
  260. package/dist/components/container/index.d.ts +1 -0
  261. package/dist/components/container.d.ts +2 -0
  262. package/dist/components/container.js +23 -0
  263. package/dist/components/container.js.map +1 -0
  264. package/dist/components/counter/Counter.d.ts +14 -0
  265. package/dist/components/counter/Counter.stories.d.ts +9 -0
  266. package/dist/components/counter/index.d.ts +1 -0
  267. package/dist/components/counter.d.ts +2 -0
  268. package/dist/components/counter.js +142 -0
  269. package/dist/components/counter.js.map +1 -0
  270. package/dist/components/data-table/DataTable.stories.d.ts +8 -0
  271. package/dist/components/description/Description.d.ts +8 -0
  272. package/dist/components/description/Description.stories.d.ts +24 -0
  273. package/dist/components/description/index.d.ts +1 -0
  274. package/dist/components/description.d.ts +2 -0
  275. package/dist/components/description.js +5 -0
  276. package/dist/components/description.js.map +1 -0
  277. package/dist/components/dialog/Dialog.d.ts +51 -12
  278. package/dist/components/dialog/Dialog.stories.d.ts +26 -0
  279. package/dist/components/dialog/DialogTemplates.d.ts +24 -0
  280. package/dist/components/dialog/index.d.ts +4 -0
  281. package/dist/components/dialog.d.ts +2 -0
  282. package/dist/components/dialog.js +47 -0
  283. package/dist/components/dialog.js.map +1 -0
  284. package/dist/components/divider/Divider.d.ts +6 -118
  285. package/dist/components/divider/content-divider/ContentDivider.d.ts +15 -0
  286. package/dist/components/divider/content-divider/ContentDivider.stories.d.ts +7 -0
  287. package/dist/components/divider/index.d.ts +2 -0
  288. package/dist/components/divider.d.ts +2 -0
  289. package/dist/components/divider.js +36 -0
  290. package/dist/components/divider.js.map +1 -0
  291. package/dist/components/drawer/Drawer.d.ts +13 -0
  292. package/dist/components/drawer/Drawer.stories.d.ts +25 -0
  293. package/dist/components/drawer/components/drawer-body/DrawerBody.d.ts +3 -0
  294. package/dist/components/drawer/components/drawer-content/DrawerContent.d.ts +19 -0
  295. package/dist/components/drawer/components/drawer-footer/DrawerFooter.d.ts +3 -0
  296. package/dist/components/drawer/components/drawer-handler/DrawerHandler.d.ts +2 -0
  297. package/dist/components/drawer/components/drawer-handler/DrawerHandlerSvg.d.ts +1 -0
  298. package/dist/components/drawer/components/drawer-header/DrawerHeader.d.ts +3 -0
  299. package/dist/components/drawer/components/drawer-overlay/DrawerOverlay.d.ts +7 -0
  300. package/dist/components/drawer/index.d.ts +9 -0
  301. package/dist/components/{modal/templates/footer-template/ModalFooterTemplate.d.ts → drawer/templates/drawer-footer-template/DrawerFooterTemplate.d.ts} +6 -6
  302. package/dist/components/drawer/templates/drawer-header-template/DrawerHeaderTemplate.d.ts +10 -0
  303. package/dist/components/drawer.d.ts +2 -0
  304. package/dist/components/drawer.js +1232 -0
  305. package/dist/components/drawer.js.map +1 -0
  306. package/dist/components/dropdown/Dropdown.d.ts +80 -0
  307. package/dist/components/dropdown/Dropdown.stories.d.ts +22 -0
  308. package/dist/components/dropdown/index.d.ts +3 -0
  309. package/dist/components/dropdown/useHoverDropdown.d.ts +68 -0
  310. package/dist/components/dropdown.d.ts +2 -0
  311. package/dist/components/dropdown.js +1152 -0
  312. package/dist/components/dropdown.js.map +1 -0
  313. package/dist/components/empty-state/EmptyState.d.ts +5 -0
  314. package/dist/components/empty-state/EmptyState.stories.d.ts +6 -0
  315. package/dist/components/empty-state/index.d.ts +1 -0
  316. package/dist/components/empty-state.d.ts +2 -0
  317. package/dist/components/empty-state.js +5 -0
  318. package/dist/components/empty-state.js.map +1 -0
  319. package/dist/components/error-state/ErrorState.d.ts +3 -0
  320. package/dist/components/error-state/ErrorState.stories.d.ts +6 -0
  321. package/dist/components/error-state/Retry.d.ts +10 -0
  322. package/dist/components/error-state/Retry.stories.d.ts +7 -0
  323. package/dist/components/error-state/index.d.ts +2 -0
  324. package/dist/components/error-state.d.ts +2 -0
  325. package/dist/components/error-state.js +16 -0
  326. package/dist/components/error-state.js.map +1 -0
  327. package/dist/components/field/Field.d.ts +38 -106
  328. package/dist/components/field/Field.stories.d.ts +1 -1
  329. package/dist/components/field/index.d.ts +1 -0
  330. package/dist/components/field.d.ts +2 -0
  331. package/dist/components/field.js +5 -0
  332. package/dist/components/field.js.map +1 -0
  333. package/dist/components/file-upload/FileUpload.d.ts +24 -0
  334. package/dist/components/file-upload/FileUpload.stories.d.ts +19 -0
  335. package/dist/components/file-upload/components/file-upload-clear-button/FileUploadClearButton.d.ts +9 -0
  336. package/dist/components/file-upload/components/file-upload-compact-input-zone/FileUploadCompactInputZone.d.ts +9 -0
  337. package/dist/components/file-upload/components/file-upload-drop-area/FileUploadDropArea.d.ts +12 -0
  338. package/dist/components/file-upload/components/file-upload-drop-area/FileUploadDropArea.stories.d.ts +18 -0
  339. package/dist/components/file-upload/components/file-upload-drop-area-icon/FileUploadDropAreaIcon.d.ts +3 -0
  340. package/dist/components/file-upload/components/file-upload-drop-area-icon/FileUploadDropAreaIcon.stories.d.ts +14 -0
  341. package/dist/components/file-upload/components/file-upload-error/FileUploadError.d.ts +7 -0
  342. package/dist/components/file-upload/components/file-upload-error/FileUploadError.stories.d.ts +15 -0
  343. package/dist/components/file-upload/components/file-upload-icon/FileUploadIcon.d.ts +5 -0
  344. package/dist/components/file-upload/components/file-upload-icon/FileUploadIcon.stories.d.ts +13 -0
  345. package/dist/components/file-upload/components/file-upload-inline-drop-area/FileUploadInlineDropArea.d.ts +12 -0
  346. package/dist/components/file-upload/components/file-upload-inline-drop-area/FileUploadInlineDropArea.stories.d.ts +18 -0
  347. package/dist/components/file-upload/components/file-upload-input-zone/FileUploadInputZone.d.ts +9 -0
  348. package/dist/components/file-upload/components/file-upload-item/FileUploadItem.d.ts +12 -0
  349. package/dist/components/file-upload/components/file-upload-item/FileUploadItem.stories.d.ts +19 -0
  350. package/dist/components/file-upload/components/file-upload-item-compact/FileUploadItemCompact.d.ts +14 -0
  351. package/dist/components/file-upload/components/file-upload-item-compact/FileUploadItemCompact.stories.d.ts +19 -0
  352. package/dist/components/file-upload/file-upload-compact/FileUploadCompact.d.ts +19 -0
  353. package/dist/components/file-upload/file-upload-compact/FileUploadCompact.stories.d.ts +20 -0
  354. package/dist/components/file-upload/index.d.ts +11 -0
  355. package/dist/components/file-upload.d.ts +2 -0
  356. package/dist/components/file-upload.js +484 -0
  357. package/dist/components/file-upload.js.map +1 -0
  358. package/dist/components/form/Form.d.ts +27 -4
  359. package/dist/components/form/Form.stories.d.ts +22 -7
  360. package/dist/components/form/components/form-body/FormBody.d.ts +5 -0
  361. package/dist/components/form/components/form-divider/FormDivider.d.ts +6 -0
  362. package/dist/components/form/components/form-field/FormField.d.ts +21 -62
  363. package/dist/components/form/components/form-field/FormField.stories.d.ts +10 -0
  364. package/dist/components/form/components/form-field-set/FormFieldSet.d.ts +3 -0
  365. package/dist/components/form/components/form-footer/FormFooter.d.ts +5 -0
  366. package/dist/components/form/components/form-header/FormHeader.d.ts +16 -0
  367. package/dist/components/form/components/form-section-header-button/FormSectionHeaderButton.d.ts +17 -0
  368. package/dist/components/form/components/form-section-title/FormSectionTitle.d.ts +3 -1
  369. package/dist/components/form/components/form-stack/FormStack.d.ts +3 -0
  370. package/dist/components/form/index.d.ts +10 -1
  371. package/dist/components/form/templates/footer-template/FormFooterTemplate.d.ts +24 -0
  372. package/dist/components/form/templates/header-template/FormHeaderTemplate.d.ts +43 -0
  373. package/dist/components/form.js +59 -409
  374. package/dist/components/form.js.map +1 -1
  375. package/dist/components/hint-state/HintState.d.ts +3 -0
  376. package/dist/components/hint-state/HintState.stories.d.ts +6 -0
  377. package/dist/components/hint-state/index.d.ts +1 -0
  378. package/dist/components/hint-state.d.ts +2 -0
  379. package/dist/components/hint-state.js +5 -0
  380. package/dist/components/hint-state.js.map +1 -0
  381. package/dist/components/icon/Icon.d.ts +9 -48
  382. package/dist/components/icon/Icon.stories.d.ts +7 -4
  383. package/dist/components/icon/feature-icon/FeatureIcon.d.ts +4 -75
  384. package/dist/components/icon/feature-icon/FeatureIcon.stories.d.ts +16 -6
  385. package/dist/components/icon/index.d.ts +2 -0
  386. package/dist/components/icon-tooltip/IconTooltip.d.ts +5 -4
  387. package/dist/components/icon-tooltip/index.d.ts +2 -0
  388. package/dist/components/icon-tooltip.d.ts +2 -0
  389. package/dist/components/icon-tooltip.js +5 -0
  390. package/dist/components/icon-tooltip.js.map +1 -0
  391. package/dist/components/icon.d.ts +2 -0
  392. package/dist/components/icon.js +7 -0
  393. package/dist/components/icon.js.map +1 -0
  394. package/dist/components/image-placeholder/ImagePlaceholder.d.ts +6 -0
  395. package/dist/components/image-placeholder/ImagePlaceholder.stories.d.ts +6 -0
  396. package/dist/components/image-placeholder/index.d.ts +1 -0
  397. package/dist/components/image-placeholder.d.ts +2 -0
  398. package/dist/components/image-placeholder.js +22 -0
  399. package/dist/components/image-placeholder.js.map +1 -0
  400. package/dist/components/image-preview/ImagePreview.d.ts +23 -0
  401. package/dist/components/image-preview/ImagePreview.stories.d.ts +6 -0
  402. package/dist/components/image-preview/index.d.ts +1 -0
  403. package/dist/components/image-preview/utils.d.ts +1 -0
  404. package/dist/components/image-preview.d.ts +2 -0
  405. package/dist/components/image-preview.js +124 -0
  406. package/dist/components/image-preview.js.map +1 -0
  407. package/dist/components/image-uploader/ImageUploader.d.ts +27 -0
  408. package/dist/components/image-uploader/ImageUploader.stories.d.ts +6 -0
  409. package/dist/components/image-uploader/components/ImageCameraAddSvg.d.ts +5 -0
  410. package/dist/components/image-uploader/components/ImageUploaderButton.d.ts +8 -0
  411. package/dist/components/image-uploader/index.d.ts +1 -0
  412. package/dist/components/image-uploader.d.ts +2 -0
  413. package/dist/components/image-uploader.js +88 -0
  414. package/dist/components/image-uploader.js.map +1 -0
  415. package/dist/components/images/BoxSvg.d.ts +5 -0
  416. package/dist/components/images/BoxSvg.stories.d.ts +13 -0
  417. package/dist/components/images/FolderSvg.d.ts +5 -0
  418. package/dist/components/images/FolderSvg.stories.d.ts +13 -0
  419. package/dist/components/images/index.d.ts +2 -0
  420. package/dist/components/images.d.ts +2 -0
  421. package/dist/components/images.js +6 -0
  422. package/dist/components/images.js.map +1 -0
  423. package/dist/components/indicator/Indicator.d.ts +7 -0
  424. package/dist/components/indicator/Indicator.stories.d.ts +6 -0
  425. package/dist/components/indicator/index.d.ts +1 -0
  426. package/dist/components/indicator.d.ts +2 -0
  427. package/dist/components/indicator.js +5 -0
  428. package/dist/components/indicator.js.map +1 -0
  429. package/dist/components/input/components/clear-button/ClearButton.d.ts +3 -3
  430. package/dist/components/input/file-input/FileInput.d.ts +34 -0
  431. package/dist/components/input/file-input/FileInput.stories.d.ts +12 -0
  432. package/dist/components/input/index.d.ts +3 -0
  433. package/dist/components/input/input/Input.d.ts +5 -2
  434. package/dist/components/input/input/Input.stories.d.ts +3 -0
  435. package/dist/components/input/input-group/InputGroup.d.ts +37 -0
  436. package/dist/components/input/input-group/InputGroup.stories.d.ts +7 -0
  437. package/dist/components/input/secret-input/SecretInput.d.ts +14 -5
  438. package/dist/components/input/secret-input/SecretInput.stories.d.ts +4 -0
  439. package/dist/components/input/styles/inputBaseStyles.d.ts +3 -0
  440. package/dist/components/input/text-input/TextInput.d.ts +2 -2
  441. package/dist/components/input/text-input/TextInput.stories.d.ts +2 -2
  442. package/dist/components/input/web-input/WebInput.d.ts +15 -0
  443. package/dist/components/input/web-input/WebInput.stories.d.ts +14 -0
  444. package/dist/components/input-otp/InputOTP.d.ts +29 -0
  445. package/dist/components/input-otp/InputOTP.stories.d.ts +9 -0
  446. package/dist/components/input-otp/components/input-otp-group/InputOTPGroup.d.ts +2 -0
  447. package/dist/components/input-otp/components/input-otp-separator/InputOTPSeparator.d.ts +2 -0
  448. package/dist/components/input-otp/components/input-otp-slot/InputOTPSlot.d.ts +4 -0
  449. package/dist/components/input-otp/index.d.ts +4 -0
  450. package/dist/components/input-otp.d.ts +2 -0
  451. package/dist/components/input-otp.js +8 -0
  452. package/dist/components/input-otp.js.map +1 -0
  453. package/dist/components/input.js +223 -202
  454. package/dist/components/input.js.map +1 -1
  455. package/dist/components/label/Label.d.ts +1 -3
  456. package/dist/components/label/Label.stories.d.ts +1 -5
  457. package/dist/components/label/field-label/FieldLabel.d.ts +4 -47
  458. package/dist/components/label/field-label/FieldLabel.stories.d.ts +1 -0
  459. package/dist/components/label/field-label/components/RequiredIcon.d.ts +5 -0
  460. package/dist/components/label.js +1 -1
  461. package/dist/components/loader/Loader.d.ts +6 -0
  462. package/dist/components/loader/Loader.stories.d.ts +6 -0
  463. package/dist/components/loader/index.d.ts +1 -0
  464. package/dist/components/loader.d.ts +2 -0
  465. package/dist/components/loader.js +5 -0
  466. package/dist/components/loader.js.map +1 -0
  467. package/dist/components/menu-item/MenuItem.d.ts +31 -0
  468. package/dist/components/menu-item/MenuItem.stories.d.ts +6 -0
  469. package/dist/components/menu-item/MenuItemAction.d.ts +6 -0
  470. package/dist/components/menu-item/components/menu-item-button/MenuItemButton.d.ts +37 -0
  471. package/dist/components/menu-item/components/menu-item-button/MenuItemButton.stories.d.ts +7 -0
  472. package/dist/components/menu-item/components/menu-item-icon/MenuItemIcon.d.ts +7 -0
  473. package/dist/components/menu-item/components/menu-item-icon/MenuItemIcon.stories.d.ts +6 -0
  474. package/dist/components/menu-item/components/menu-item-icon-button/MenuItemIconButton.d.ts +5 -0
  475. package/dist/components/menu-item/components/menu-item-icon-button/MenuItemIconButton.stories.d.ts +7 -0
  476. package/dist/components/menu-item/components/menu-item-secondary-text/MenuItemSecondaryText.d.ts +21 -0
  477. package/dist/components/menu-item/components/menu-item-secondary-text/MenuItemSecondaryText.stories.d.ts +6 -0
  478. package/dist/components/menu-item/components/menu-item-shortcut/MenuItemShortcut.d.ts +21 -0
  479. package/dist/components/menu-item/components/menu-item-shortcut/MenuItemShortcut.stories.d.ts +6 -0
  480. package/dist/components/menu-item/components/menu-item-text/MenuItemText.d.ts +21 -0
  481. package/dist/components/menu-item/components/menu-item-text/MenuItemText.stories.d.ts +6 -0
  482. package/dist/components/menu-item/index.d.ts +13 -0
  483. package/dist/components/menu-item/templates/menu-item-action-template/MenuItemActionTemplate.d.ts +12 -0
  484. package/dist/components/menu-item/templates/menu-item-action-template/MenuItemActionTemplate.stories.d.ts +6 -0
  485. package/dist/components/menu-item/templates/menu-item-common-template/MenuItemCommonTemplate.d.ts +16 -0
  486. package/dist/components/menu-item/templates/menu-item-common-template/MenuItemCommonTemplate.stories.d.ts +6 -0
  487. package/dist/components/menu-item/templates/menu-item-info-template/MenuItemInfoTemplate.d.ts +13 -0
  488. package/dist/components/menu-item/templates/menu-item-info-template/MenuItemInfoTemplate.stories.d.ts +6 -0
  489. package/dist/components/menu-item/templates/menu-item-interactive-template/MenuItemInteractiveTemplate.d.ts +16 -0
  490. package/dist/components/menu-item/templates/menu-item-interactive-template/MenuItemInteractiveTemplate.stories.d.ts +6 -0
  491. package/dist/components/menu-item/templates/menu-item-rich-template/MenuItemRichTemplate.d.ts +11 -0
  492. package/dist/components/menu-item/templates/menu-item-rich-template/MenuItemRichTemplate.stories.d.ts +6 -0
  493. package/dist/components/menu-item.d.ts +2 -0
  494. package/dist/components/menu-item.js +243 -0
  495. package/dist/components/menu-item.js.map +1 -0
  496. package/dist/components/overflow-tooltip/OverflowTooltip.d.ts +29 -0
  497. package/dist/components/overflow-tooltip/OverflowTooltip.stories.d.ts +9 -0
  498. package/dist/components/overflow-tooltip/TextOverflowTooltip.d.ts +11 -0
  499. package/dist/components/overflow-tooltip/TextOverflowTooltip.stories.d.ts +6 -0
  500. package/dist/components/overflow-tooltip/index.d.ts +3 -0
  501. package/dist/components/overflow-tooltip/useOverflowTooltip.d.ts +6 -0
  502. package/dist/components/overflow-tooltip.d.ts +2 -0
  503. package/dist/components/overflow-tooltip.js +7 -0
  504. package/dist/components/overflow-tooltip.js.map +1 -0
  505. package/dist/components/overlay/Overlay.d.ts +45 -0
  506. package/dist/components/overlay/Overlay.stories.d.ts +6 -0
  507. package/dist/components/overlay/index.d.ts +1 -0
  508. package/dist/components/overlay.d.ts +2 -0
  509. package/dist/components/overlay.js +5 -0
  510. package/dist/components/overlay.js.map +1 -0
  511. package/dist/components/page-state/PageState.d.ts +8 -0
  512. package/dist/components/page-state/PageState.stories.d.ts +9 -0
  513. package/dist/components/page-state/components/PageStateAction.d.ts +14 -0
  514. package/dist/components/page-state/components/PageStateBoxSvg.d.ts +6 -0
  515. package/dist/components/page-state/components/PageStateButtonGroup.d.ts +3 -0
  516. package/dist/components/page-state/components/PageStateCancel.d.ts +14 -0
  517. package/dist/components/page-state/components/PageStateDescription.d.ts +8 -0
  518. package/dist/components/page-state/components/PageStateFeatureIcon.d.ts +7 -0
  519. package/dist/components/page-state/components/PageStateFolderSvg.d.ts +7 -0
  520. package/dist/components/page-state/components/PageStateTitle.d.ts +8 -0
  521. package/dist/components/page-state/context/PageStateContext.d.ts +12 -0
  522. package/dist/components/page-state/hooks/usePageStateButtonSize.d.ts +3 -0
  523. package/dist/components/page-state/index.d.ts +10 -0
  524. package/dist/components/page-state.d.ts +2 -0
  525. package/dist/components/page-state.js +173 -0
  526. package/dist/components/page-state.js.map +1 -0
  527. package/dist/components/popover/Popover.d.ts +31 -0
  528. package/dist/components/popover/Popover.stories.d.ts +24 -0
  529. package/dist/components/popover/index.d.ts +1 -0
  530. package/dist/components/popover.d.ts +2 -0
  531. package/dist/components/popover.js +9 -0
  532. package/dist/components/popover.js.map +1 -0
  533. package/dist/components/portal-container/PortalContainer.d.ts +10 -0
  534. package/dist/components/portal-container/index.d.ts +2 -0
  535. package/dist/components/portal-container/portalContainerEvents.d.ts +12 -0
  536. package/dist/components/portal-container/usePortalContainer.d.ts +10 -0
  537. package/dist/components/portal-container.d.ts +2 -0
  538. package/dist/components/portal-container.js +14 -0
  539. package/dist/components/portal-container.js.map +1 -0
  540. package/dist/components/progress/Progress.d.ts +15 -0
  541. package/dist/components/progress/Progress.stories.d.ts +9 -0
  542. package/dist/components/progress/ProgressBarStyles.d.ts +70 -0
  543. package/dist/components/progress/components/progress-icon/ProgressIcon.d.ts +5 -0
  544. package/dist/components/progress/components/progress-icon/ProgressIcon.stories.d.ts +6 -0
  545. package/dist/components/progress/components/progress-icon-button/ProgressIconButton.d.ts +5 -0
  546. package/dist/components/progress/components/progress-icon-button/ProgressIconButton.stories.d.ts +6 -0
  547. package/dist/components/progress/components/progress-text/ProgressText.d.ts +6 -0
  548. package/dist/components/progress/components/progress-text/ProgressText.stories.d.ts +6 -0
  549. package/dist/components/progress/index.d.ts +10 -0
  550. package/dist/components/progress/templates/ProgressBlockTemplate.d.ts +16 -0
  551. package/dist/components/progress/templates/ProgressBlockTemplate.stories.d.ts +7 -0
  552. package/dist/components/progress-circle/ProgressCircle.d.ts +186 -0
  553. package/dist/components/progress-circle/ProgressCircle.stories.d.ts +9 -0
  554. package/dist/components/progress-circle/components/progress-circle-description/ProgressCircleDescription.d.ts +5 -0
  555. package/dist/components/progress-circle/components/progress-circle-description/ProgressCircleDescription.stories.d.ts +6 -0
  556. package/dist/components/progress-circle/components/progress-circle-icon-button/ProgressCircleIconButton.d.ts +70 -0
  557. package/dist/components/progress-circle/components/progress-circle-icon-button/ProgressCircleIconButton.stories.d.ts +6 -0
  558. package/dist/components/progress-circle/components/progress-circle-text/ProgressCircleTitle.d.ts +56 -0
  559. package/dist/components/progress-circle/components/progress-circle-text/ProgressCircleTitle.stories.d.ts +6 -0
  560. package/dist/components/progress-circle/index.d.ts +5 -0
  561. package/dist/components/progress-circle/templates/ProgressCircleTemplate.d.ts +13 -0
  562. package/dist/components/progress-circle/templates/ProgressCircleTemplate.stories.d.ts +8 -0
  563. package/dist/components/progress-circle.d.ts +2 -0
  564. package/dist/components/progress-circle.js +187 -0
  565. package/dist/components/progress-circle.js.map +1 -0
  566. package/dist/components/progress.d.ts +2 -0
  567. package/dist/components/progress.js +262 -0
  568. package/dist/components/progress.js.map +1 -0
  569. package/dist/components/prose/Prose.d.ts +9 -0
  570. package/dist/components/prose/Prose.stories.d.ts +6 -0
  571. package/dist/components/prose/index.d.ts +1 -0
  572. package/dist/components/prose.d.ts +2 -0
  573. package/dist/components/prose.js +12 -0
  574. package/dist/components/prose.js.map +1 -0
  575. package/dist/components/radio-group/RadioGroup.d.ts +4 -0
  576. package/dist/components/radio-group/RadioGroup.stories.d.ts +11 -0
  577. package/dist/components/radio-group/components/RadioGroupItem.d.ts +43 -0
  578. package/dist/components/radio-group/index.d.ts +2 -0
  579. package/dist/components/radio-group.d.ts +2 -0
  580. package/dist/components/radio-group.js +271 -0
  581. package/dist/components/radio-group.js.map +1 -0
  582. package/dist/components/resizable/Resizable.d.ts +23 -0
  583. package/dist/components/resizable/Resizable.stories.d.ts +8 -0
  584. package/dist/components/resizable/index.d.ts +1 -0
  585. package/dist/components/resizable.d.ts +2 -0
  586. package/dist/components/resizable.js +1552 -0
  587. package/dist/components/resizable.js.map +1 -0
  588. package/dist/components/scheduler/components/day/Day.d.ts +4 -61
  589. package/dist/components/scheduler.js +1249 -1244
  590. package/dist/components/scheduler.js.map +1 -1
  591. package/dist/components/scroll-area/ScrollArea.d.ts +19 -2
  592. package/dist/components/scroll-area/ScrollArea.stories.d.ts +5 -2
  593. package/dist/components/scroll-area/index.d.ts +2 -0
  594. package/dist/components/scroll-area.d.ts +2 -0
  595. package/dist/components/scroll-area.js +6 -0
  596. package/dist/components/scroll-area.js.map +1 -0
  597. package/dist/components/scroll-shadow-container/ScrollShadowContainer.d.ts +2 -49
  598. package/dist/components/scroll-shadow-container/ScrollShadowContainer.stories.d.ts +1 -0
  599. package/dist/components/scroll-shadow-container/index.d.ts +1 -0
  600. package/dist/components/scroll-shadow-container.js +1 -1
  601. package/dist/components/search-select/async-search-select/AsyncSearchSelect.d.ts +2 -0
  602. package/dist/components/search-select/async-search-select/AsyncSearchSelect.stories.d.ts +20 -0
  603. package/dist/components/search-select/async-search-select/components/AsyncSearchSelectContent.d.ts +42 -0
  604. package/dist/components/search-select/async-search-select/components/AsyncSearchSelectPopoverContent.d.ts +7 -0
  605. package/dist/components/search-select/async-search-select/hooks/useAsyncDataLoader.d.ts +48 -0
  606. package/dist/components/search-select/async-search-select/types.d.ts +99 -0
  607. package/dist/components/search-select/components/SearchSelectPlaceholder.d.ts +7 -0
  608. package/dist/components/search-select/components/SearchSelectTag.d.ts +13 -0
  609. package/dist/components/search-select/components/SearchSelectTextValue.d.ts +7 -0
  610. package/dist/components/search-select/components/SearchSelectTrigger.d.ts +23 -0
  611. package/dist/components/search-select/index.d.ts +22 -0
  612. package/dist/components/search-select/multi-select/MultiSelect.d.ts +87 -0
  613. package/dist/components/search-select/multi-select/MultiSelect.stories.d.ts +18 -0
  614. package/dist/components/search-select/search-select/LazySearchSelect.d.ts +16 -0
  615. package/dist/components/search-select/search-select/LazySearchSelect.stories.d.ts +21 -0
  616. package/dist/components/search-select/search-select/SearchSelect.d.ts +80 -0
  617. package/dist/components/search-select/search-select/SearchSelect.stories.d.ts +16 -0
  618. package/dist/components/search-select/search-select/components/LoadMoreTrigger.d.ts +17 -0
  619. package/dist/components/search-select/search-select/components/SearchSelectContent.d.ts +10 -0
  620. package/dist/components/search-select/search-select/components/SearchSelectGroup.d.ts +12 -0
  621. package/dist/components/search-select/search-select/components/SearchSelectInput.d.ts +9 -0
  622. package/dist/components/search-select/search-select/components/SearchSelectSeparator.d.ts +12 -0
  623. package/dist/components/search-select/search-select/utils/fuzzyFilter.d.ts +9 -0
  624. package/dist/components/search-select.d.ts +2 -0
  625. package/dist/components/search-select.js +596 -0
  626. package/dist/components/search-select.js.map +1 -0
  627. package/dist/components/select/Select.d.ts +39 -27
  628. package/dist/components/select/Select.stories.d.ts +2 -0
  629. package/dist/components/select/components/SelectTriggerClearButton.d.ts +6 -0
  630. package/dist/components/select/index.d.ts +1 -1
  631. package/dist/components/select.js +14 -1032
  632. package/dist/components/select.js.map +1 -1
  633. package/dist/components/sheet/Sheet.d.ts +35 -0
  634. package/dist/components/sheet/Sheet.stories.d.ts +20 -0
  635. package/dist/components/sheet/index.d.ts +1 -0
  636. package/dist/components/sheet.d.ts +2 -0
  637. package/dist/components/sheet.js +14 -0
  638. package/dist/components/sheet.js.map +1 -0
  639. package/dist/components/shortcut/Shortcut.d.ts +8 -0
  640. package/dist/components/shortcut/Shortcut.stories.d.ts +22 -0
  641. package/dist/components/shortcut/index.d.ts +1 -0
  642. package/dist/components/shortcut.d.ts +2 -0
  643. package/dist/components/shortcut.js +5 -0
  644. package/dist/components/shortcut.js.map +1 -0
  645. package/dist/components/sidebar/Sidebar.d.ts +73 -0
  646. package/dist/components/sidebar/Sidebar.stories.d.ts +18 -0
  647. package/dist/components/sidebar/SidebarContext.d.ts +12 -0
  648. package/dist/components/sidebar/index.d.ts +3 -0
  649. package/dist/components/sidebar.d.ts +2 -0
  650. package/dist/components/sidebar.js +505 -0
  651. package/dist/components/sidebar.js.map +1 -0
  652. package/dist/components/skeleton/Skeleton.d.ts +6 -0
  653. package/dist/components/skeleton/Skeleton.stories.d.ts +9 -0
  654. package/dist/components/skeleton/index.d.ts +1 -0
  655. package/dist/components/skeleton.d.ts +2 -0
  656. package/dist/components/skeleton.js +5 -0
  657. package/dist/components/skeleton.js.map +1 -0
  658. package/dist/components/slider/Slider.d.ts +4 -0
  659. package/dist/components/slider/Slider.stories.d.ts +12 -0
  660. package/dist/components/slider/components/SliderRange.d.ts +4 -0
  661. package/dist/components/slider/components/SliderThumb.d.ts +4 -0
  662. package/dist/components/slider/components/SliderTrack.d.ts +4 -0
  663. package/dist/components/slider/index.d.ts +4 -0
  664. package/dist/components/slider.d.ts +2 -0
  665. package/dist/components/slider.js +458 -0
  666. package/dist/components/slider.js.map +1 -0
  667. package/dist/components/stepper/Stepper.d.ts +8 -0
  668. package/dist/components/stepper/Stepper.stories.d.ts +8 -0
  669. package/dist/components/stepper/StepperContext.d.ts +9 -0
  670. package/dist/components/stepper/components/stepper-description/StepperDescription.d.ts +1 -0
  671. package/dist/components/stepper/components/stepper-indicator/StepperIndicator.d.ts +4 -0
  672. package/dist/components/stepper/components/stepper-item/StepperItem.d.ts +7 -0
  673. package/dist/components/stepper/components/stepper-item/StepperItemContext.d.ts +11 -0
  674. package/dist/components/stepper/components/stepper-title/StepperTitle.d.ts +1 -0
  675. package/dist/components/stepper/components/stepper-trigger/StepperTrigger.d.ts +4 -0
  676. package/dist/components/stepper/index.d.ts +9 -0
  677. package/dist/components/stepper/stepper-separator/StepperSeparator.d.ts +1 -0
  678. package/dist/components/stepper.d.ts +2 -0
  679. package/dist/components/stepper.js +145 -0
  680. package/dist/components/stepper.js.map +1 -0
  681. package/dist/components/switch/Switch.d.ts +5 -180
  682. package/dist/components/switch/Switch.stories.d.ts +2 -90
  683. package/dist/components/switch/switch-field/SwitchField.d.ts +9 -315
  684. package/dist/components/switch/switch-field/SwitchField.stories.d.ts +4 -315
  685. package/dist/components/switch.js +139 -152
  686. package/dist/components/switch.js.map +1 -1
  687. package/dist/components/system-state/SystemState.d.ts +3 -0
  688. package/dist/components/system-state/SystemState.stories.d.ts +19 -0
  689. package/dist/components/system-state/components/SystemStateActions.d.ts +10 -0
  690. package/dist/components/system-state/components/SystemStateCode.d.ts +3 -0
  691. package/dist/components/system-state/components/SystemStateDescription.d.ts +3 -0
  692. package/dist/components/system-state/components/SystemStateTitle.d.ts +3 -0
  693. package/dist/components/system-state/index.d.ts +10 -0
  694. package/dist/components/system-state.d.ts +2 -0
  695. package/dist/components/system-state.js +51 -0
  696. package/dist/components/system-state.js.map +1 -0
  697. package/dist/components/table/Table.d.ts +18 -0
  698. package/dist/components/table/Table.stories.d.ts +15 -0
  699. package/dist/components/table/index.d.ts +1 -0
  700. package/dist/components/table.d.ts +2 -0
  701. package/dist/components/table.js +83 -0
  702. package/dist/components/table.js.map +1 -0
  703. package/dist/components/tabs/Tabs.d.ts +7 -0
  704. package/dist/components/tabs/Tabs.stories.d.ts +8 -0
  705. package/dist/components/tabs/index.d.ts +1 -0
  706. package/dist/components/tabs.d.ts +2 -0
  707. package/dist/components/tabs.js +178 -0
  708. package/dist/components/tabs.js.map +1 -0
  709. package/dist/components/tag/Tag.d.ts +59 -1103
  710. package/dist/components/tag/Tag.stories.d.ts +1 -0
  711. package/dist/components/tag/index.d.ts +1 -1
  712. package/dist/components/tag-input/TagInput.d.ts +42 -0
  713. package/dist/components/tag-input/TagInput.stories.d.ts +9 -0
  714. package/dist/components/tag-input/index.d.ts +2 -0
  715. package/dist/components/tag-input.d.ts +2 -0
  716. package/dist/components/tag-input.js +162 -0
  717. package/dist/components/tag-input.js.map +1 -0
  718. package/dist/components/tag.js +7 -188
  719. package/dist/components/tag.js.map +1 -1
  720. package/dist/components/text/Text.d.ts +9 -0
  721. package/dist/components/text/Text.stories.d.ts +24 -0
  722. package/dist/components/text/index.d.ts +1 -0
  723. package/dist/components/text.d.ts +2 -0
  724. package/dist/components/text.js +5 -0
  725. package/dist/components/text.js.map +1 -0
  726. package/dist/components/textarea/autogrow-textarea/AutogrowTextarea.d.ts +12 -0
  727. package/dist/components/textarea/autogrow-textarea/AutogrowTextarea.stories.d.ts +10 -0
  728. package/dist/components/textarea/index.d.ts +2 -0
  729. package/dist/components/textarea/textarea/Textarea.d.ts +14 -0
  730. package/dist/components/textarea/textarea/Textarea.stories.d.ts +7 -0
  731. package/dist/components/textarea.d.ts +2 -0
  732. package/dist/components/textarea.js +217 -0
  733. package/dist/components/textarea.js.map +1 -0
  734. package/dist/components/timer/Timer.d.ts +5 -0
  735. package/dist/components/timer/Timer.stories.d.ts +15 -0
  736. package/dist/components/timer/components/TimerUnit.d.ts +5 -0
  737. package/dist/components/timer/components/TimerValue.d.ts +5 -0
  738. package/dist/components/timer/index.d.ts +3 -0
  739. package/dist/components/timer.d.ts +2 -0
  740. package/dist/components/timer.js +23 -0
  741. package/dist/components/timer.js.map +1 -0
  742. package/dist/components/toast/Toast.d.ts +11 -3
  743. package/dist/components/toast/Toast.stories.d.ts +3 -0
  744. package/dist/components/toast/ToastView.d.ts +20 -401
  745. package/dist/components/toast/components/toast-action/ToastAction.d.ts +1 -0
  746. package/dist/components/toast/hooks/useToastContext.d.ts +1 -1
  747. package/dist/components/toast/index.d.ts +4 -1
  748. package/dist/components/toast.js +460 -470
  749. package/dist/components/toast.js.map +1 -1
  750. package/dist/components/toggle/Toggle.d.ts +52 -0
  751. package/dist/components/toggle/Toggle.stories.d.ts +8 -0
  752. package/dist/components/toggle/index.d.ts +1 -0
  753. package/dist/components/toggle-group/ToggleGroup.d.ts +6 -0
  754. package/dist/components/toggle-group/ToggleGroup.stories.d.ts +13 -0
  755. package/dist/components/toggle-group/index.d.ts +1 -0
  756. package/dist/components/toggle-group.d.ts +2 -0
  757. package/dist/components/toggle-group.js +37 -0
  758. package/dist/components/toggle-group.js.map +1 -0
  759. package/dist/components/toggle.d.ts +2 -0
  760. package/dist/components/toggle.js +5 -0
  761. package/dist/components/toggle.js.map +1 -0
  762. package/dist/components/toolbar/Toolbar.d.ts +52 -0
  763. package/dist/components/toolbar/Toolbar.stories.d.ts +22 -0
  764. package/dist/components/toolbar/ToolbarContext.d.ts +11 -0
  765. package/dist/components/toolbar/index.d.ts +2 -0
  766. package/dist/components/toolbar.d.ts +2 -0
  767. package/dist/components/toolbar.js +304 -0
  768. package/dist/components/toolbar.js.map +1 -0
  769. package/dist/components/tooltip/Tooltip.d.ts +34 -0
  770. package/dist/components/tooltip/Tooltip.stories.d.ts +20 -0
  771. package/dist/components/tooltip/index.d.ts +3 -0
  772. package/dist/components/tooltip/useTooltipContext.d.ts +6 -0
  773. package/dist/components/tooltip.d.ts +2 -0
  774. package/dist/components/tooltip.js +16 -0
  775. package/dist/components/tooltip.js.map +1 -0
  776. package/dist/createLucideIcon-DwBrHnj9.js +80 -0
  777. package/dist/{createLucideIcon-DgrNxRV5.js.map → createLucideIcon-DwBrHnj9.js.map} +1 -1
  778. package/dist/design-tokens.source.json +1 -1
  779. package/dist/download-BHsj218e.js +16 -0
  780. package/dist/download-BHsj218e.js.map +1 -0
  781. package/dist/examples/gramax/CloneRepository.stories.d.ts +5 -0
  782. package/dist/examples/gramax/NewStorage.stories.d.ts +5 -0
  783. package/dist/examples/quiz/QuizPage.stories.d.ts +6 -0
  784. package/dist/hooks/index.d.ts +2 -0
  785. package/dist/hooks/use-file-upload/errorMessages.d.ts +39 -0
  786. package/dist/hooks/use-file-upload/index.d.ts +3 -0
  787. package/dist/hooks/use-file-upload/useFileUpload.d.ts +81 -0
  788. package/dist/hooks/use-file-upload.d.ts +2 -0
  789. package/dist/hooks/use-file-upload.js +7 -0
  790. package/dist/hooks/use-file-upload.js.map +1 -0
  791. package/dist/hooks/useAutofill.d.ts +8 -0
  792. package/dist/hooks/useBreakpoints.d.ts +23 -0
  793. package/dist/hooks/useControllableState.d.ts +13 -0
  794. package/dist/hooks/useControlledValue.d.ts +10 -0
  795. package/dist/hooks/useCopyAction.d.ts +7 -0
  796. package/dist/hooks/useCustomValidity.d.ts +9 -0
  797. package/dist/hooks/useDataCache.d.ts +77 -0
  798. package/dist/hooks/useDebounce.d.ts +7 -0
  799. package/dist/hooks/useFileType.d.ts +4 -0
  800. package/dist/hooks/useInputWithActions.d.ts +32 -0
  801. package/dist/hooks/useItemsKeyboardNavigation.d.ts +56 -0
  802. package/dist/hooks/useSearchCache.test.d.ts +1 -0
  803. package/dist/hooks/useSearchSelect.d.ts +31 -0
  804. package/dist/hooks.d.ts +2 -0
  805. package/dist/hooks.js +14 -0
  806. package/dist/hooks.js.map +1 -0
  807. package/dist/image-BqL5JP90.js +16 -0
  808. package/dist/image-BqL5JP90.js.map +1 -0
  809. package/dist/index-0ioNhtNM.js +11 -0
  810. package/dist/index-0ioNhtNM.js.map +1 -0
  811. package/dist/index-437EL2iq.js +53 -0
  812. package/dist/index-437EL2iq.js.map +1 -0
  813. package/dist/index-BGQepRFJ.js +28 -0
  814. package/dist/index-BGQepRFJ.js.map +1 -0
  815. package/dist/index-BVqs-uqP.js +234 -0
  816. package/dist/index-BVqs-uqP.js.map +1 -0
  817. package/dist/index-BZPx6jYI.js.map +1 -1
  818. package/dist/index-Bb23HztA.js +33 -0
  819. package/dist/index-Bb23HztA.js.map +1 -0
  820. package/dist/index-BpWB3aFK.js +71 -0
  821. package/dist/index-BpWB3aFK.js.map +1 -0
  822. package/dist/index-BtQfgaSF.js +61 -0
  823. package/dist/index-BtQfgaSF.js.map +1 -0
  824. package/dist/index-ByaXH_ih.js +11 -0
  825. package/dist/index-ByaXH_ih.js.map +1 -0
  826. package/dist/index-BzCriPiK.js +671 -0
  827. package/dist/index-BzCriPiK.js.map +1 -0
  828. package/dist/index-CCKe-Mpx.js +7 -0
  829. package/dist/index-CCKe-Mpx.js.map +1 -0
  830. package/dist/index-CFaU3UXv.js +94 -0
  831. package/dist/index-CFaU3UXv.js.map +1 -0
  832. package/dist/index-CLuiUUQ8.js +137 -0
  833. package/dist/index-CLuiUUQ8.js.map +1 -0
  834. package/dist/index-CQD-Njgt.js +245 -0
  835. package/dist/index-CQD-Njgt.js.map +1 -0
  836. package/dist/index-CmBeyp2d.js +56 -0
  837. package/dist/index-CmBeyp2d.js.map +1 -0
  838. package/dist/index-DFZozV_h.js +69 -0
  839. package/dist/index-DFZozV_h.js.map +1 -0
  840. package/dist/index-DHsfW5Rj.js +49 -0
  841. package/dist/index-DHsfW5Rj.js.map +1 -0
  842. package/dist/index-DHyZ_0Ut.js +181 -0
  843. package/dist/index-DHyZ_0Ut.js.map +1 -0
  844. package/dist/index-DLcqcWxM.js +30 -0
  845. package/dist/index-DLcqcWxM.js.map +1 -0
  846. package/dist/index-DRo26PBK.js +1525 -0
  847. package/dist/index-DRo26PBK.js.map +1 -0
  848. package/dist/index-DnnQs07z.js +33 -0
  849. package/dist/index-DnnQs07z.js.map +1 -0
  850. package/dist/index-Uiy0Xwy2.js +32 -0
  851. package/dist/index-Uiy0Xwy2.js.map +1 -0
  852. package/dist/index-_ITz1IyW.js +144 -0
  853. package/dist/index-_ITz1IyW.js.map +1 -0
  854. package/dist/index-rKs9bXHr.js +7 -0
  855. package/dist/index-rKs9bXHr.js.map +1 -0
  856. package/dist/index-xqkGMOJ8.js +14 -0
  857. package/dist/index-xqkGMOJ8.js.map +1 -0
  858. package/dist/index.d.ts +2 -1
  859. package/dist/index.esm-CXA6i4d7.js +1282 -0
  860. package/dist/index.esm-CXA6i4d7.js.map +1 -0
  861. package/dist/index.js +53 -1
  862. package/dist/index.js.map +1 -1
  863. package/dist/inputBaseStyles-DbzD_jvq.js +34 -0
  864. package/dist/inputBaseStyles-DbzD_jvq.js.map +1 -0
  865. package/dist/lib/utils/cn.d.ts +2 -0
  866. package/dist/lib/utils/dom.d.ts +6 -0
  867. package/dist/lib/utils/file/downloadFile.d.ts +2 -0
  868. package/dist/lib/utils/file/formatBytes.d.ts +1 -0
  869. package/dist/lib/utils/formatCounterValue.d.ts +21 -0
  870. package/dist/lib/utils/image/imageConverter.d.ts +23 -0
  871. package/dist/lib/utils/index.d.ts +2 -0
  872. package/dist/lib/utils/storybook.d.ts +13 -2
  873. package/dist/lib/utils/styles.d.ts +9 -0
  874. package/dist/lib/utils/variants.d.ts +35 -0
  875. package/dist/lib/utils.d.ts +2 -2
  876. package/dist/lib/utils.js +25 -0
  877. package/dist/lib/utils.js.map +1 -0
  878. package/dist/loader-circle-D1YXTEGq.js +14 -0
  879. package/dist/loader-circle-D1YXTEGq.js.map +1 -0
  880. package/dist/minus-BltQa7Q2.js +12 -0
  881. package/dist/minus-BltQa7Q2.js.map +1 -0
  882. package/dist/normalizeDates-9A3c9WYM.js +32 -0
  883. package/dist/normalizeDates-9A3c9WYM.js.map +1 -0
  884. package/dist/providers/component-variant-context/ComponentVariantProvider.d.ts +30 -0
  885. package/dist/providers/component-variant-context/index.d.ts +1 -0
  886. package/dist/providers/component-variant-context.d.ts +2 -0
  887. package/dist/providers/component-variant-context.js +6 -0
  888. package/dist/providers/component-variant-context.js.map +1 -0
  889. package/dist/rotate-cw-tYRlcg0g.js +15 -0
  890. package/dist/rotate-cw-tYRlcg0g.js.map +1 -0
  891. package/dist/search-CDdgqSGg.js +15 -0
  892. package/dist/search-CDdgqSGg.js.map +1 -0
  893. package/dist/src/index.d.ts +2 -0
  894. package/dist/src/index.ts.js +7 -0
  895. package/dist/src/index.ts.js.map +1 -0
  896. package/dist/styles-scoped.css +4318 -420
  897. package/dist/styles.css +4313 -417
  898. package/dist/theme.css +329 -0
  899. package/dist/theme.d.ts +1 -0
  900. package/dist/useBreakpoints-D8wKOvil.js +103 -0
  901. package/dist/useBreakpoints-D8wKOvil.js.map +1 -0
  902. package/dist/useDebounce-BRah78CF.js +16 -0
  903. package/dist/useDebounce-BRah78CF.js.map +1 -0
  904. package/dist/useFileUpload-iDag0iqM.js +197 -0
  905. package/dist/useFileUpload-iDag0iqM.js.map +1 -0
  906. package/dist/useItemsKeyboardNavigation-CmeOR30y.js +62 -0
  907. package/dist/useItemsKeyboardNavigation-CmeOR30y.js.map +1 -0
  908. package/dist/useMergeRefs-qoKniYqT.js +19 -0
  909. package/dist/useMergeRefs-qoKniYqT.js.map +1 -0
  910. package/dist/usePortalContainer-ae6EzS08.js +39 -0
  911. package/dist/usePortalContainer-ae6EzS08.js.map +1 -0
  912. package/dist/vendors/date-fns/index.d.ts +19 -0
  913. package/dist/vendors/date-fns/locale/en-US/index.d.ts +1 -0
  914. package/dist/vendors/date-fns/locale/en-US.d.ts +2 -0
  915. package/dist/vendors/date-fns/locale/en-US.js +372 -0
  916. package/dist/vendors/date-fns/locale/en-US.js.map +1 -0
  917. package/dist/vendors/date-fns/locale/ru/index.d.ts +1 -0
  918. package/dist/vendors/date-fns/locale/ru.d.ts +2 -0
  919. package/dist/vendors/date-fns/locale/ru.js +569 -0
  920. package/dist/vendors/date-fns/locale/ru.js.map +1 -0
  921. package/dist/vendors/date-fns.d.ts +2 -0
  922. package/dist/vendors/date-fns.js +2 -0
  923. package/dist/vendors/date-fns.js.map +1 -0
  924. package/dist/vendors/react-day-picker/index.d.ts +22 -0
  925. package/dist/vendors/react-day-picker.d.ts +2 -0
  926. package/dist/vendors/react-day-picker.js +87 -0
  927. package/dist/vendors/react-day-picker.js.map +1 -0
  928. package/dist/vendors/react-hook-form/index.d.ts +21 -0
  929. package/dist/vendors/react-hook-form.d.ts +2 -0
  930. package/dist/vendors/react-hook-form.js +19 -0
  931. package/dist/vendors/react-hook-form.js.map +1 -0
  932. package/dist/vendors/tanstack/react-table/index.d.ts +1 -0
  933. package/dist/vendors/tanstack/react-table.d.ts +2 -0
  934. package/dist/vendors/tanstack/react-table.js +2090 -0
  935. package/dist/vendors/tanstack/react-table.js.map +1 -0
  936. package/dist/vendors/zod/index.d.ts +14 -0
  937. package/dist/vendors/zod.d.ts +2 -0
  938. package/dist/vendors/zod.js +3080 -0
  939. package/dist/vendors/zod.js.map +1 -0
  940. package/dist/x-tDTt7hTQ.js +15 -0
  941. package/dist/x-tDTt7hTQ.js.map +1 -0
  942. package/dist/zod-BMNoK3aM.js +75 -0
  943. package/dist/zod-BMNoK3aM.js.map +1 -0
  944. package/package.json +89 -23
  945. package/tailwind.preset.js +440 -0
  946. package/dist/Button-Cfe4WIYW.js +0 -57
  947. package/dist/Button-Cfe4WIYW.js.map +0 -1
  948. package/dist/ButtonBase-C8kakRHQ.js +0 -184
  949. package/dist/ButtonBase-C8kakRHQ.js.map +0 -1
  950. package/dist/CheckboxField-xt0Z5jab.js +0 -251
  951. package/dist/CheckboxField-xt0Z5jab.js.map +0 -1
  952. package/dist/Divider-6mgvOWE1.js +0 -57
  953. package/dist/Divider-6mgvOWE1.js.map +0 -1
  954. package/dist/FieldDescription-DCE2z2nv.js +0 -37
  955. package/dist/FieldDescription-DCE2z2nv.js.map +0 -1
  956. package/dist/FieldLabel--NVcQQhJ.js +0 -64
  957. package/dist/FieldLabel--NVcQQhJ.js.map +0 -1
  958. package/dist/Icon-CSPBHL_x.js +0 -19
  959. package/dist/Icon-CSPBHL_x.js.map +0 -1
  960. package/dist/IconButton-CTxOql_1.js +0 -55
  961. package/dist/IconButton-CTxOql_1.js.map +0 -1
  962. package/dist/ScrollShadowContainer-C4qXz8gc.js +0 -849
  963. package/dist/ScrollShadowContainer-C4qXz8gc.js.map +0 -1
  964. package/dist/components/background/Background.d.ts +0 -138
  965. package/dist/components/background/Background.stories.d.ts +0 -6
  966. package/dist/components/field-description/FieldDescription.d.ts +0 -4
  967. package/dist/components/input/secret-input/components/ShowValueToggler.d.ts +0 -7
  968. package/dist/components/modal/Modal.d.ts +0 -14
  969. package/dist/components/modal/Modal.stories.d.ts +0 -25
  970. package/dist/components/modal/components/body/ModalBody.d.ts +0 -2
  971. package/dist/components/modal/components/footer/ModalFooter.d.ts +0 -2
  972. package/dist/components/modal/components/header/ModalHeader.d.ts +0 -6
  973. package/dist/components/modal/index.d.ts +0 -6
  974. package/dist/components/modal/templates/header-template/ModalHeaderTemplate.d.ts +0 -210
  975. package/dist/components/modal.d.ts +0 -2
  976. package/dist/components/modal.js +0 -506
  977. package/dist/components/modal.js.map +0 -1
  978. package/dist/components/ui/tooltip.d.ts +0 -7
  979. package/dist/createLucideIcon-DgrNxRV5.js +0 -112
  980. package/dist/fonts/inter/InterVariable-Italic.ttf +0 -0
  981. package/dist/fonts/inter/InterVariable.ttf +0 -0
  982. package/dist/index-BA36kN2b.js +0 -76
  983. package/dist/index-BA36kN2b.js.map +0 -1
  984. package/dist/index-CImD85pK.js +0 -179
  985. package/dist/index-CImD85pK.js.map +0 -1
  986. package/dist/index-CR-odn5-.js +0 -2446
  987. package/dist/index-CR-odn5-.js.map +0 -1
  988. package/dist/index-CaGtfIqw.js +0 -163
  989. package/dist/index-CaGtfIqw.js.map +0 -1
  990. package/dist/index-CfJKNBxG.js +0 -698
  991. package/dist/index-CfJKNBxG.js.map +0 -1
  992. package/dist/index-DPws5oAn.js +0 -90
  993. package/dist/index-DPws5oAn.js.map +0 -1
  994. package/dist/index-DsEh1WRc.js +0 -1586
  995. package/dist/index-DsEh1WRc.js.map +0 -1
  996. package/dist/index-pysSAa5G.js +0 -57
  997. package/dist/index-pysSAa5G.js.map +0 -1
  998. package/dist/tooltip-CYQMPCEj.js +0 -365
  999. package/dist/tooltip-CYQMPCEj.js.map +0 -1
  1000. package/dist/utils-2yE78m5l.js.map +0 -1
  1001. /package/dist/components/{field-description/FieldDescription.stories.d.ts → banner/components/banner-description/BannerDescription.stories.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sources":["../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@18.3.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.js","../../node_modules/.pnpm/@dnd-kit+accessibility@3.1.1_react@18.3.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js","../../node_modules/.pnpm/@dnd-kit+core@6.3.1_react-dom@18.3.1_react@18.3.1/node_modules/@dnd-kit/core/dist/core.esm.js","../../src/components/scheduler/context/SchedulerContext.tsx","../../src/lib/utils/date/roundDateTime.ts","../../src/components/scheduler/utils/SchedulerUtils.ts","../../node_modules/.pnpm/re-resizable@6.11.2_react-dom@18.3.1_react@18.3.1/node_modules/re-resizable/lib/resizer.js","../../node_modules/.pnpm/re-resizable@6.11.2_react-dom@18.3.1_react@18.3.1/node_modules/re-resizable/lib/index.js","../../src/components/scheduler/components/scheduled-event/ScheduledEventResizeHandler.tsx","../../src/components/scheduler/components/scheduled-event/ScheduledEvent.tsx","../../src/lib/utils/date/date.ts","../../src/components/scheduler/components/time-ruler/CurrentTimeMarker.tsx","../../src/components/scheduler/components/day-column/DayColumn.tsx","../../src/components/scheduler/components/day-columns/DayColumns.tsx","../../src/components/scheduler/components/hour-rows/HourRows.tsx","../../src/components/scheduler/components/time-ruler/TimeRuler.tsx","../../src/components/scheduler/components/day/Day.tsx","../../src/components/scheduler/components/week-days/WeekDays.tsx","../../src/components/scheduler/Scheduler.tsx"],"sourcesContent":["import { useMemo, useLayoutEffect, useEffect, useRef, useCallback } from 'react';\n\nfunction useCombinedRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n\n return useMemo(() => node => {\n refs.forEach(ref => ref(node));\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n refs);\n}\n\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nconst canUseDOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\nfunction isWindow(element) {\n const elementString = Object.prototype.toString.call(element);\n return elementString === '[object Window]' || // In Electron context the Window object serializes to [object global]\n elementString === '[object global]';\n}\n\nfunction isNode(node) {\n return 'nodeType' in node;\n}\n\nfunction getWindow(target) {\n var _target$ownerDocument, _target$ownerDocument2;\n\n if (!target) {\n return window;\n }\n\n if (isWindow(target)) {\n return target;\n }\n\n if (!isNode(target)) {\n return window;\n }\n\n return (_target$ownerDocument = (_target$ownerDocument2 = target.ownerDocument) == null ? void 0 : _target$ownerDocument2.defaultView) != null ? _target$ownerDocument : window;\n}\n\nfunction isDocument(node) {\n const {\n Document\n } = getWindow(node);\n return node instanceof Document;\n}\n\nfunction isHTMLElement(node) {\n if (isWindow(node)) {\n return false;\n }\n\n return node instanceof getWindow(node).HTMLElement;\n}\n\nfunction isSVGElement(node) {\n return node instanceof getWindow(node).SVGElement;\n}\n\nfunction getOwnerDocument(target) {\n if (!target) {\n return document;\n }\n\n if (isWindow(target)) {\n return target.document;\n }\n\n if (!isNode(target)) {\n return document;\n }\n\n if (isDocument(target)) {\n return target;\n }\n\n if (isHTMLElement(target) || isSVGElement(target)) {\n return target.ownerDocument;\n }\n\n return document;\n}\n\n/**\r\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\r\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\r\n */\n\nconst useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;\n\nfunction useEvent(handler) {\n const handlerRef = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n handlerRef.current = handler;\n });\n return useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return handlerRef.current == null ? void 0 : handlerRef.current(...args);\n }, []);\n}\n\nfunction useInterval() {\n const intervalRef = useRef(null);\n const set = useCallback((listener, duration) => {\n intervalRef.current = setInterval(listener, duration);\n }, []);\n const clear = useCallback(() => {\n if (intervalRef.current !== null) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n return [set, clear];\n}\n\nfunction useLatestValue(value, dependencies) {\n if (dependencies === void 0) {\n dependencies = [value];\n }\n\n const valueRef = useRef(value);\n useIsomorphicLayoutEffect(() => {\n if (valueRef.current !== value) {\n valueRef.current = value;\n }\n }, dependencies);\n return valueRef;\n}\n\nfunction useLazyMemo(callback, dependencies) {\n const valueRef = useRef();\n return useMemo(() => {\n const newValue = callback(valueRef.current);\n valueRef.current = newValue;\n return newValue;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [...dependencies]);\n}\n\nfunction useNodeRef(onChange) {\n const onChangeHandler = useEvent(onChange);\n const node = useRef(null);\n const setNodeRef = useCallback(element => {\n if (element !== node.current) {\n onChangeHandler == null ? void 0 : onChangeHandler(element, node.current);\n }\n\n node.current = element;\n }, //eslint-disable-next-line\n []);\n return [node, setNodeRef];\n}\n\nfunction usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nlet ids = {};\nfunction useUniqueId(prefix, value) {\n return useMemo(() => {\n if (value) {\n return value;\n }\n\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n return prefix + \"-\" + id;\n }, [prefix, value]);\n}\n\nfunction createAdjustmentFn(modifier) {\n return function (object) {\n for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n adjustments[_key - 1] = arguments[_key];\n }\n\n return adjustments.reduce((accumulator, adjustment) => {\n const entries = Object.entries(adjustment);\n\n for (const [key, valueAdjustment] of entries) {\n const value = accumulator[key];\n\n if (value != null) {\n accumulator[key] = value + modifier * valueAdjustment;\n }\n }\n\n return accumulator;\n }, { ...object\n });\n };\n}\n\nconst add = /*#__PURE__*/createAdjustmentFn(1);\nconst subtract = /*#__PURE__*/createAdjustmentFn(-1);\n\nfunction hasViewportRelativeCoordinates(event) {\n return 'clientX' in event && 'clientY' in event;\n}\n\nfunction isKeyboardEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n KeyboardEvent\n } = getWindow(event.target);\n return KeyboardEvent && event instanceof KeyboardEvent;\n}\n\nfunction isTouchEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n TouchEvent\n } = getWindow(event.target);\n return TouchEvent && event instanceof TouchEvent;\n}\n\n/**\r\n * Returns the normalized x and y coordinates for mouse and touch events.\r\n */\n\nfunction getEventCoordinates(event) {\n if (isTouchEvent(event)) {\n if (event.touches && event.touches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.touches[0];\n return {\n x,\n y\n };\n } else if (event.changedTouches && event.changedTouches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.changedTouches[0];\n return {\n x,\n y\n };\n }\n }\n\n if (hasViewportRelativeCoordinates(event)) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n }\n\n return null;\n}\n\nconst CSS = /*#__PURE__*/Object.freeze({\n Translate: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n x,\n y\n } = transform;\n return \"translate3d(\" + (x ? Math.round(x) : 0) + \"px, \" + (y ? Math.round(y) : 0) + \"px, 0)\";\n }\n\n },\n Scale: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n scaleX,\n scaleY\n } = transform;\n return \"scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\";\n }\n\n },\n Transform: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n return [CSS.Translate.toString(transform), CSS.Scale.toString(transform)].join(' ');\n }\n\n },\n Transition: {\n toString(_ref) {\n let {\n property,\n duration,\n easing\n } = _ref;\n return property + \" \" + duration + \"ms \" + easing;\n }\n\n }\n});\n\nconst SELECTOR = 'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';\nfunction findFirstFocusableNode(element) {\n if (element.matches(SELECTOR)) {\n return element;\n }\n\n return element.querySelector(SELECTOR);\n}\n\nexport { CSS, add, canUseDOM, findFirstFocusableNode, getEventCoordinates, getOwnerDocument, getWindow, hasViewportRelativeCoordinates, isDocument, isHTMLElement, isKeyboardEvent, isNode, isSVGElement, isTouchEvent, isWindow, subtract, useCombinedRefs, useEvent, useInterval, useIsomorphicLayoutEffect, useLatestValue, useLazyMemo, useNodeRef, usePrevious, useUniqueId };\n//# sourceMappingURL=utilities.esm.js.map\n","import React, { useState, useCallback } from 'react';\n\nconst hiddenStyles = {\n display: 'none'\n};\nfunction HiddenText(_ref) {\n let {\n id,\n value\n } = _ref;\n return React.createElement(\"div\", {\n id: id,\n style: hiddenStyles\n }, value);\n}\n\nfunction LiveRegion(_ref) {\n let {\n id,\n announcement,\n ariaLiveType = \"assertive\"\n } = _ref;\n // Hide element visually but keep it readable by screen readers\n const visuallyHidden = {\n position: 'fixed',\n top: 0,\n left: 0,\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(100%)',\n whiteSpace: 'nowrap'\n };\n return React.createElement(\"div\", {\n id: id,\n style: visuallyHidden,\n role: \"status\",\n \"aria-live\": ariaLiveType,\n \"aria-atomic\": true\n }, announcement);\n}\n\nfunction useAnnouncement() {\n const [announcement, setAnnouncement] = useState('');\n const announce = useCallback(value => {\n if (value != null) {\n setAnnouncement(value);\n }\n }, []);\n return {\n announce,\n announcement\n };\n}\n\nexport { HiddenText, LiveRegion, useAnnouncement };\n//# sourceMappingURL=accessibility.esm.js.map\n","import React, { createContext, useContext, useEffect, useState, useCallback, useMemo, useRef, memo, useReducer, cloneElement, forwardRef } from 'react';\nimport { createPortal, unstable_batchedUpdates } from 'react-dom';\nimport { useUniqueId, getEventCoordinates, getWindow, isDocument, isHTMLElement, isSVGElement, canUseDOM, isWindow, isNode, getOwnerDocument, add, isKeyboardEvent, subtract, useLazyMemo, useInterval, usePrevious, useLatestValue, useEvent, useIsomorphicLayoutEffect, useNodeRef, findFirstFocusableNode, CSS } from '@dnd-kit/utilities';\nimport { useAnnouncement, HiddenText, LiveRegion } from '@dnd-kit/accessibility';\n\nconst DndMonitorContext = /*#__PURE__*/createContext(null);\n\nfunction useDndMonitor(listener) {\n const registerListener = useContext(DndMonitorContext);\n useEffect(() => {\n if (!registerListener) {\n throw new Error('useDndMonitor must be used within a children of <DndContext>');\n }\n\n const unsubscribe = registerListener(listener);\n return unsubscribe;\n }, [listener, registerListener]);\n}\n\nfunction useDndMonitorProvider() {\n const [listeners] = useState(() => new Set());\n const registerListener = useCallback(listener => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }, [listeners]);\n const dispatch = useCallback(_ref => {\n let {\n type,\n event\n } = _ref;\n listeners.forEach(listener => {\n var _listener$type;\n\n return (_listener$type = listener[type]) == null ? void 0 : _listener$type.call(listener, event);\n });\n }, [listeners]);\n return [dispatch, registerListener];\n}\n\nconst defaultScreenReaderInstructions = {\n draggable: \"\\n To pick up a draggable item, press the space bar.\\n While dragging, use the arrow keys to move the item.\\n Press space again to drop the item in its new position, or press escape to cancel.\\n \"\n};\nconst defaultAnnouncements = {\n onDragStart(_ref) {\n let {\n active\n } = _ref;\n return \"Picked up draggable item \" + active.id + \".\";\n },\n\n onDragOver(_ref2) {\n let {\n active,\n over\n } = _ref2;\n\n if (over) {\n return \"Draggable item \" + active.id + \" was moved over droppable area \" + over.id + \".\";\n }\n\n return \"Draggable item \" + active.id + \" is no longer over a droppable area.\";\n },\n\n onDragEnd(_ref3) {\n let {\n active,\n over\n } = _ref3;\n\n if (over) {\n return \"Draggable item \" + active.id + \" was dropped over droppable area \" + over.id;\n }\n\n return \"Draggable item \" + active.id + \" was dropped.\";\n },\n\n onDragCancel(_ref4) {\n let {\n active\n } = _ref4;\n return \"Dragging was cancelled. Draggable item \" + active.id + \" was dropped.\";\n }\n\n};\n\nfunction Accessibility(_ref) {\n let {\n announcements = defaultAnnouncements,\n container,\n hiddenTextDescribedById,\n screenReaderInstructions = defaultScreenReaderInstructions\n } = _ref;\n const {\n announce,\n announcement\n } = useAnnouncement();\n const liveRegionId = useUniqueId(\"DndLiveRegion\");\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n setMounted(true);\n }, []);\n useDndMonitor(useMemo(() => ({\n onDragStart(_ref2) {\n let {\n active\n } = _ref2;\n announce(announcements.onDragStart({\n active\n }));\n },\n\n onDragMove(_ref3) {\n let {\n active,\n over\n } = _ref3;\n\n if (announcements.onDragMove) {\n announce(announcements.onDragMove({\n active,\n over\n }));\n }\n },\n\n onDragOver(_ref4) {\n let {\n active,\n over\n } = _ref4;\n announce(announcements.onDragOver({\n active,\n over\n }));\n },\n\n onDragEnd(_ref5) {\n let {\n active,\n over\n } = _ref5;\n announce(announcements.onDragEnd({\n active,\n over\n }));\n },\n\n onDragCancel(_ref6) {\n let {\n active,\n over\n } = _ref6;\n announce(announcements.onDragCancel({\n active,\n over\n }));\n }\n\n }), [announce, announcements]));\n\n if (!mounted) {\n return null;\n }\n\n const markup = React.createElement(React.Fragment, null, React.createElement(HiddenText, {\n id: hiddenTextDescribedById,\n value: screenReaderInstructions.draggable\n }), React.createElement(LiveRegion, {\n id: liveRegionId,\n announcement: announcement\n }));\n return container ? createPortal(markup, container) : markup;\n}\n\nvar Action;\n\n(function (Action) {\n Action[\"DragStart\"] = \"dragStart\";\n Action[\"DragMove\"] = \"dragMove\";\n Action[\"DragEnd\"] = \"dragEnd\";\n Action[\"DragCancel\"] = \"dragCancel\";\n Action[\"DragOver\"] = \"dragOver\";\n Action[\"RegisterDroppable\"] = \"registerDroppable\";\n Action[\"SetDroppableDisabled\"] = \"setDroppableDisabled\";\n Action[\"UnregisterDroppable\"] = \"unregisterDroppable\";\n})(Action || (Action = {}));\n\nfunction noop() {}\n\nfunction useSensor(sensor, options) {\n return useMemo(() => ({\n sensor,\n options: options != null ? options : {}\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [sensor, options]);\n}\n\nfunction useSensors() {\n for (var _len = arguments.length, sensors = new Array(_len), _key = 0; _key < _len; _key++) {\n sensors[_key] = arguments[_key];\n }\n\n return useMemo(() => [...sensors].filter(sensor => sensor != null), // eslint-disable-next-line react-hooks/exhaustive-deps\n [...sensors]);\n}\n\nconst defaultCoordinates = /*#__PURE__*/Object.freeze({\n x: 0,\n y: 0\n});\n\n/**\r\n * Returns the distance between two points\r\n */\nfunction distanceBetween(p1, p2) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n}\n\nfunction getRelativeTransformOrigin(event, rect) {\n const eventCoordinates = getEventCoordinates(event);\n\n if (!eventCoordinates) {\n return '0 0';\n }\n\n const transformOrigin = {\n x: (eventCoordinates.x - rect.left) / rect.width * 100,\n y: (eventCoordinates.y - rect.top) / rect.height * 100\n };\n return transformOrigin.x + \"% \" + transformOrigin.y + \"%\";\n}\n\n/**\r\n * Sort collisions from smallest to greatest value\r\n */\nfunction sortCollisionsAsc(_ref, _ref2) {\n let {\n data: {\n value: a\n }\n } = _ref;\n let {\n data: {\n value: b\n }\n } = _ref2;\n return a - b;\n}\n/**\r\n * Sort collisions from greatest to smallest value\r\n */\n\nfunction sortCollisionsDesc(_ref3, _ref4) {\n let {\n data: {\n value: a\n }\n } = _ref3;\n let {\n data: {\n value: b\n }\n } = _ref4;\n return b - a;\n}\n/**\r\n * Returns the coordinates of the corners of a given rectangle:\r\n * [TopLeft {x, y}, TopRight {x, y}, BottomLeft {x, y}, BottomRight {x, y}]\r\n */\n\nfunction cornersOfRectangle(_ref5) {\n let {\n left,\n top,\n height,\n width\n } = _ref5;\n return [{\n x: left,\n y: top\n }, {\n x: left + width,\n y: top\n }, {\n x: left,\n y: top + height\n }, {\n x: left + width,\n y: top + height\n }];\n}\nfunction getFirstCollision(collisions, property) {\n if (!collisions || collisions.length === 0) {\n return null;\n }\n\n const [firstCollision] = collisions;\n return property ? firstCollision[property] : firstCollision;\n}\n\n/**\r\n * Returns the coordinates of the center of a given ClientRect\r\n */\n\nfunction centerOfRectangle(rect, left, top) {\n if (left === void 0) {\n left = rect.left;\n }\n\n if (top === void 0) {\n top = rect.top;\n }\n\n return {\n x: left + rect.width * 0.5,\n y: top + rect.height * 0.5\n };\n}\n/**\r\n * Returns the closest rectangles from an array of rectangles to the center of a given\r\n * rectangle.\r\n */\n\n\nconst closestCenter = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const centerRect = centerOfRectangle(collisionRect, collisionRect.left, collisionRect.top);\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const distBetween = distanceBetween(centerOfRectangle(rect), centerRect);\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: distBetween\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\n/**\r\n * Returns the closest rectangles from an array of rectangles to the corners of\r\n * another rectangle.\r\n */\n\nconst closestCorners = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const corners = cornersOfRectangle(collisionRect);\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const rectCorners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner, index) => {\n return accumulator + distanceBetween(rectCorners[index], corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: effectiveDistance\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\n/**\r\n * Returns the intersecting rectangle area between two rectangles\r\n */\n\nfunction getIntersectionRatio(entry, target) {\n const top = Math.max(target.top, entry.top);\n const left = Math.max(target.left, entry.left);\n const right = Math.min(target.left + target.width, entry.left + entry.width);\n const bottom = Math.min(target.top + target.height, entry.top + entry.height);\n const width = right - left;\n const height = bottom - top;\n\n if (left < right && top < bottom) {\n const targetArea = target.width * target.height;\n const entryArea = entry.width * entry.height;\n const intersectionArea = width * height;\n const intersectionRatio = intersectionArea / (targetArea + entryArea - intersectionArea);\n return Number(intersectionRatio.toFixed(4));\n } // Rectangles do not overlap, or overlap has an area of zero (edge/corner overlap)\n\n\n return 0;\n}\n/**\r\n * Returns the rectangles that has the greatest intersection area with a given\r\n * rectangle in an array of rectangles.\r\n */\n\nconst rectIntersection = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const intersectionRatio = getIntersectionRatio(rect, collisionRect);\n\n if (intersectionRatio > 0) {\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: intersectionRatio\n }\n });\n }\n }\n }\n\n return collisions.sort(sortCollisionsDesc);\n};\n\n/**\r\n * Check if a given point is contained within a bounding rectangle\r\n */\n\nfunction isPointWithinRect(point, rect) {\n const {\n top,\n left,\n bottom,\n right\n } = rect;\n return top <= point.y && point.y <= bottom && left <= point.x && point.x <= right;\n}\n/**\r\n * Returns the rectangles that the pointer is hovering over\r\n */\n\n\nconst pointerWithin = _ref => {\n let {\n droppableContainers,\n droppableRects,\n pointerCoordinates\n } = _ref;\n\n if (!pointerCoordinates) {\n return [];\n }\n\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect && isPointWithinRect(pointerCoordinates, rect)) {\n /* There may be more than a single rectangle intersecting\r\n * with the pointer coordinates. In order to sort the\r\n * colliding rectangles, we measure the distance between\r\n * the pointer and the corners of the intersecting rectangle\r\n */\n const corners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner) => {\n return accumulator + distanceBetween(pointerCoordinates, corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: effectiveDistance\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\nfunction adjustScale(transform, rect1, rect2) {\n return { ...transform,\n scaleX: rect1 && rect2 ? rect1.width / rect2.width : 1,\n scaleY: rect1 && rect2 ? rect1.height / rect2.height : 1\n };\n}\n\nfunction getRectDelta(rect1, rect2) {\n return rect1 && rect2 ? {\n x: rect1.left - rect2.left,\n y: rect1.top - rect2.top\n } : defaultCoordinates;\n}\n\nfunction createRectAdjustmentFn(modifier) {\n return function adjustClientRect(rect) {\n for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n adjustments[_key - 1] = arguments[_key];\n }\n\n return adjustments.reduce((acc, adjustment) => ({ ...acc,\n top: acc.top + modifier * adjustment.y,\n bottom: acc.bottom + modifier * adjustment.y,\n left: acc.left + modifier * adjustment.x,\n right: acc.right + modifier * adjustment.x\n }), { ...rect\n });\n };\n}\nconst getAdjustedRect = /*#__PURE__*/createRectAdjustmentFn(1);\n\nfunction parseTransform(transform) {\n if (transform.startsWith('matrix3d(')) {\n const transformArray = transform.slice(9, -1).split(/, /);\n return {\n x: +transformArray[12],\n y: +transformArray[13],\n scaleX: +transformArray[0],\n scaleY: +transformArray[5]\n };\n } else if (transform.startsWith('matrix(')) {\n const transformArray = transform.slice(7, -1).split(/, /);\n return {\n x: +transformArray[4],\n y: +transformArray[5],\n scaleX: +transformArray[0],\n scaleY: +transformArray[3]\n };\n }\n\n return null;\n}\n\nfunction inverseTransform(rect, transform, transformOrigin) {\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return rect;\n }\n\n const {\n scaleX,\n scaleY,\n x: translateX,\n y: translateY\n } = parsedTransform;\n const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n const y = rect.top - translateY - (1 - scaleY) * parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width / scaleX : rect.width;\n const h = scaleY ? rect.height / scaleY : rect.height;\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x\n };\n}\n\nconst defaultOptions = {\n ignoreTransform: false\n};\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n */\n\nfunction getClientRect(element, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n let rect = element.getBoundingClientRect();\n\n if (options.ignoreTransform) {\n const {\n transform,\n transformOrigin\n } = getWindow(element).getComputedStyle(element);\n\n if (transform) {\n rect = inverseTransform(rect, transform, transformOrigin);\n }\n }\n\n const {\n top,\n left,\n width,\n height,\n bottom,\n right\n } = rect;\n return {\n top,\n left,\n width,\n height,\n bottom,\n right\n };\n}\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n *\r\n * @remarks\r\n * The ClientRect returned by this method does not take into account transforms\r\n * applied to the element it measures.\r\n *\r\n */\n\nfunction getTransformAgnosticClientRect(element) {\n return getClientRect(element, {\n ignoreTransform: true\n });\n}\n\nfunction getWindowClientRect(element) {\n const width = element.innerWidth;\n const height = element.innerHeight;\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height\n };\n}\n\nfunction isFixed(node, computedStyle) {\n if (computedStyle === void 0) {\n computedStyle = getWindow(node).getComputedStyle(node);\n }\n\n return computedStyle.position === 'fixed';\n}\n\nfunction isScrollable(element, computedStyle) {\n if (computedStyle === void 0) {\n computedStyle = getWindow(element).getComputedStyle(element);\n }\n\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n return properties.some(property => {\n const value = computedStyle[property];\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n });\n}\n\nfunction getScrollableAncestors(element, limit) {\n const scrollParents = [];\n\n function findScrollableAncestors(node) {\n if (limit != null && scrollParents.length >= limit) {\n return scrollParents;\n }\n\n if (!node) {\n return scrollParents;\n }\n\n if (isDocument(node) && node.scrollingElement != null && !scrollParents.includes(node.scrollingElement)) {\n scrollParents.push(node.scrollingElement);\n return scrollParents;\n }\n\n if (!isHTMLElement(node) || isSVGElement(node)) {\n return scrollParents;\n }\n\n if (scrollParents.includes(node)) {\n return scrollParents;\n }\n\n const computedStyle = getWindow(element).getComputedStyle(node);\n\n if (node !== element) {\n if (isScrollable(node, computedStyle)) {\n scrollParents.push(node);\n }\n }\n\n if (isFixed(node, computedStyle)) {\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\nfunction getFirstScrollableAncestor(node) {\n const [firstScrollableAncestor] = getScrollableAncestors(node, 1);\n return firstScrollableAncestor != null ? firstScrollableAncestor : null;\n}\n\nfunction getScrollableElement(element) {\n if (!canUseDOM || !element) {\n return null;\n }\n\n if (isWindow(element)) {\n return element;\n }\n\n if (!isNode(element)) {\n return null;\n }\n\n if (isDocument(element) || element === getOwnerDocument(element).scrollingElement) {\n return window;\n }\n\n if (isHTMLElement(element)) {\n return element;\n }\n\n return null;\n}\n\nfunction getScrollXCoordinate(element) {\n if (isWindow(element)) {\n return element.scrollX;\n }\n\n return element.scrollLeft;\n}\nfunction getScrollYCoordinate(element) {\n if (isWindow(element)) {\n return element.scrollY;\n }\n\n return element.scrollTop;\n}\nfunction getScrollCoordinates(element) {\n return {\n x: getScrollXCoordinate(element),\n y: getScrollYCoordinate(element)\n };\n}\n\nvar Direction;\n\n(function (Direction) {\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n\nfunction isDocumentScrollingElement(element) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === document.scrollingElement;\n}\n\nfunction getScrollPosition(scrollingContainer) {\n const minScroll = {\n x: 0,\n y: 0\n };\n const dimensions = isDocumentScrollingElement(scrollingContainer) ? {\n height: window.innerHeight,\n width: window.innerWidth\n } : {\n height: scrollingContainer.clientHeight,\n width: scrollingContainer.clientWidth\n };\n const maxScroll = {\n x: scrollingContainer.scrollWidth - dimensions.width,\n y: scrollingContainer.scrollHeight - dimensions.height\n };\n const isTop = scrollingContainer.scrollTop <= minScroll.y;\n const isLeft = scrollingContainer.scrollLeft <= minScroll.x;\n const isBottom = scrollingContainer.scrollTop >= maxScroll.y;\n const isRight = scrollingContainer.scrollLeft >= maxScroll.x;\n return {\n isTop,\n isLeft,\n isBottom,\n isRight,\n maxScroll,\n minScroll\n };\n}\n\nconst defaultThreshold = {\n x: 0.2,\n y: 0.2\n};\nfunction getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, _ref, acceleration, thresholdPercentage) {\n let {\n top,\n left,\n right,\n bottom\n } = _ref;\n\n if (acceleration === void 0) {\n acceleration = 10;\n }\n\n if (thresholdPercentage === void 0) {\n thresholdPercentage = defaultThreshold;\n }\n\n const {\n isTop,\n isBottom,\n isLeft,\n isRight\n } = getScrollPosition(scrollContainer);\n const direction = {\n x: 0,\n y: 0\n };\n const speed = {\n x: 0,\n y: 0\n };\n const threshold = {\n height: scrollContainerRect.height * thresholdPercentage.y,\n width: scrollContainerRect.width * thresholdPercentage.x\n };\n\n if (!isTop && top <= scrollContainerRect.top + threshold.height) {\n // Scroll Up\n direction.y = Direction.Backward;\n speed.y = acceleration * Math.abs((scrollContainerRect.top + threshold.height - top) / threshold.height);\n } else if (!isBottom && bottom >= scrollContainerRect.bottom - threshold.height) {\n // Scroll Down\n direction.y = Direction.Forward;\n speed.y = acceleration * Math.abs((scrollContainerRect.bottom - threshold.height - bottom) / threshold.height);\n }\n\n if (!isRight && right >= scrollContainerRect.right - threshold.width) {\n // Scroll Right\n direction.x = Direction.Forward;\n speed.x = acceleration * Math.abs((scrollContainerRect.right - threshold.width - right) / threshold.width);\n } else if (!isLeft && left <= scrollContainerRect.left + threshold.width) {\n // Scroll Left\n direction.x = Direction.Backward;\n speed.x = acceleration * Math.abs((scrollContainerRect.left + threshold.width - left) / threshold.width);\n }\n\n return {\n direction,\n speed\n };\n}\n\nfunction getScrollElementRect(element) {\n if (element === document.scrollingElement) {\n const {\n innerWidth,\n innerHeight\n } = window;\n return {\n top: 0,\n left: 0,\n right: innerWidth,\n bottom: innerHeight,\n width: innerWidth,\n height: innerHeight\n };\n }\n\n const {\n top,\n left,\n right,\n bottom\n } = element.getBoundingClientRect();\n return {\n top,\n left,\n right,\n bottom,\n width: element.clientWidth,\n height: element.clientHeight\n };\n}\n\nfunction getScrollOffsets(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return add(acc, getScrollCoordinates(node));\n }, defaultCoordinates);\n}\nfunction getScrollXOffset(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return acc + getScrollXCoordinate(node);\n }, 0);\n}\nfunction getScrollYOffset(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return acc + getScrollYCoordinate(node);\n }, 0);\n}\n\nfunction scrollIntoViewIfNeeded(element, measure) {\n if (measure === void 0) {\n measure = getClientRect;\n }\n\n if (!element) {\n return;\n }\n\n const {\n top,\n left,\n bottom,\n right\n } = measure(element);\n const firstScrollableAncestor = getFirstScrollableAncestor(element);\n\n if (!firstScrollableAncestor) {\n return;\n }\n\n if (bottom <= 0 || right <= 0 || top >= window.innerHeight || left >= window.innerWidth) {\n element.scrollIntoView({\n block: 'center',\n inline: 'center'\n });\n }\n}\n\nconst properties = [['x', ['left', 'right'], getScrollXOffset], ['y', ['top', 'bottom'], getScrollYOffset]];\nclass Rect {\n constructor(rect, element) {\n this.rect = void 0;\n this.width = void 0;\n this.height = void 0;\n this.top = void 0;\n this.bottom = void 0;\n this.right = void 0;\n this.left = void 0;\n const scrollableAncestors = getScrollableAncestors(element);\n const scrollOffsets = getScrollOffsets(scrollableAncestors);\n this.rect = { ...rect\n };\n this.width = rect.width;\n this.height = rect.height;\n\n for (const [axis, keys, getScrollOffset] of properties) {\n for (const key of keys) {\n Object.defineProperty(this, key, {\n get: () => {\n const currentOffsets = getScrollOffset(scrollableAncestors);\n const scrollOffsetsDeltla = scrollOffsets[axis] - currentOffsets;\n return this.rect[key] + scrollOffsetsDeltla;\n },\n enumerable: true\n });\n }\n }\n\n Object.defineProperty(this, 'rect', {\n enumerable: false\n });\n }\n\n}\n\nclass Listeners {\n constructor(target) {\n this.target = void 0;\n this.listeners = [];\n\n this.removeAll = () => {\n this.listeners.forEach(listener => {\n var _this$target;\n\n return (_this$target = this.target) == null ? void 0 : _this$target.removeEventListener(...listener);\n });\n };\n\n this.target = target;\n }\n\n add(eventName, handler, options) {\n var _this$target2;\n\n (_this$target2 = this.target) == null ? void 0 : _this$target2.addEventListener(eventName, handler, options);\n this.listeners.push([eventName, handler, options]);\n }\n\n}\n\nfunction getEventListenerTarget(target) {\n // If the `event.target` element is removed from the document events will still be targeted\n // at it, and hence won't always bubble up to the window or document anymore.\n // If there is any risk of an element being removed while it is being dragged,\n // the best practice is to attach the event listeners directly to the target.\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget\n const {\n EventTarget\n } = getWindow(target);\n return target instanceof EventTarget ? target : getOwnerDocument(target);\n}\n\nfunction hasExceededDistance(delta, measurement) {\n const dx = Math.abs(delta.x);\n const dy = Math.abs(delta.y);\n\n if (typeof measurement === 'number') {\n return Math.sqrt(dx ** 2 + dy ** 2) > measurement;\n }\n\n if ('x' in measurement && 'y' in measurement) {\n return dx > measurement.x && dy > measurement.y;\n }\n\n if ('x' in measurement) {\n return dx > measurement.x;\n }\n\n if ('y' in measurement) {\n return dy > measurement.y;\n }\n\n return false;\n}\n\nvar EventName;\n\n(function (EventName) {\n EventName[\"Click\"] = \"click\";\n EventName[\"DragStart\"] = \"dragstart\";\n EventName[\"Keydown\"] = \"keydown\";\n EventName[\"ContextMenu\"] = \"contextmenu\";\n EventName[\"Resize\"] = \"resize\";\n EventName[\"SelectionChange\"] = \"selectionchange\";\n EventName[\"VisibilityChange\"] = \"visibilitychange\";\n})(EventName || (EventName = {}));\n\nfunction preventDefault(event) {\n event.preventDefault();\n}\nfunction stopPropagation(event) {\n event.stopPropagation();\n}\n\nvar KeyboardCode;\n\n(function (KeyboardCode) {\n KeyboardCode[\"Space\"] = \"Space\";\n KeyboardCode[\"Down\"] = \"ArrowDown\";\n KeyboardCode[\"Right\"] = \"ArrowRight\";\n KeyboardCode[\"Left\"] = \"ArrowLeft\";\n KeyboardCode[\"Up\"] = \"ArrowUp\";\n KeyboardCode[\"Esc\"] = \"Escape\";\n KeyboardCode[\"Enter\"] = \"Enter\";\n KeyboardCode[\"Tab\"] = \"Tab\";\n})(KeyboardCode || (KeyboardCode = {}));\n\nconst defaultKeyboardCodes = {\n start: [KeyboardCode.Space, KeyboardCode.Enter],\n cancel: [KeyboardCode.Esc],\n end: [KeyboardCode.Space, KeyboardCode.Enter, KeyboardCode.Tab]\n};\nconst defaultKeyboardCoordinateGetter = (event, _ref) => {\n let {\n currentCoordinates\n } = _ref;\n\n switch (event.code) {\n case KeyboardCode.Right:\n return { ...currentCoordinates,\n x: currentCoordinates.x + 25\n };\n\n case KeyboardCode.Left:\n return { ...currentCoordinates,\n x: currentCoordinates.x - 25\n };\n\n case KeyboardCode.Down:\n return { ...currentCoordinates,\n y: currentCoordinates.y + 25\n };\n\n case KeyboardCode.Up:\n return { ...currentCoordinates,\n y: currentCoordinates.y - 25\n };\n }\n\n return undefined;\n};\n\nclass KeyboardSensor {\n constructor(props) {\n this.props = void 0;\n this.autoScrollEnabled = false;\n this.referenceCoordinates = void 0;\n this.listeners = void 0;\n this.windowListeners = void 0;\n this.props = props;\n const {\n event: {\n target\n }\n } = props;\n this.props = props;\n this.listeners = new Listeners(getOwnerDocument(target));\n this.windowListeners = new Listeners(getWindow(target));\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.attach();\n }\n\n attach() {\n this.handleStart();\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));\n }\n\n handleStart() {\n const {\n activeNode,\n onStart\n } = this.props;\n const node = activeNode.node.current;\n\n if (node) {\n scrollIntoViewIfNeeded(node);\n }\n\n onStart(defaultCoordinates);\n }\n\n handleKeyDown(event) {\n if (isKeyboardEvent(event)) {\n const {\n active,\n context,\n options\n } = this.props;\n const {\n keyboardCodes = defaultKeyboardCodes,\n coordinateGetter = defaultKeyboardCoordinateGetter,\n scrollBehavior = 'smooth'\n } = options;\n const {\n code\n } = event;\n\n if (keyboardCodes.end.includes(code)) {\n this.handleEnd(event);\n return;\n }\n\n if (keyboardCodes.cancel.includes(code)) {\n this.handleCancel(event);\n return;\n }\n\n const {\n collisionRect\n } = context.current;\n const currentCoordinates = collisionRect ? {\n x: collisionRect.left,\n y: collisionRect.top\n } : defaultCoordinates;\n\n if (!this.referenceCoordinates) {\n this.referenceCoordinates = currentCoordinates;\n }\n\n const newCoordinates = coordinateGetter(event, {\n active,\n context: context.current,\n currentCoordinates\n });\n\n if (newCoordinates) {\n const coordinatesDelta = subtract(newCoordinates, currentCoordinates);\n const scrollDelta = {\n x: 0,\n y: 0\n };\n const {\n scrollableAncestors\n } = context.current;\n\n for (const scrollContainer of scrollableAncestors) {\n const direction = event.code;\n const {\n isTop,\n isRight,\n isLeft,\n isBottom,\n maxScroll,\n minScroll\n } = getScrollPosition(scrollContainer);\n const scrollElementRect = getScrollElementRect(scrollContainer);\n const clampedCoordinates = {\n x: Math.min(direction === KeyboardCode.Right ? scrollElementRect.right - scrollElementRect.width / 2 : scrollElementRect.right, Math.max(direction === KeyboardCode.Right ? scrollElementRect.left : scrollElementRect.left + scrollElementRect.width / 2, newCoordinates.x)),\n y: Math.min(direction === KeyboardCode.Down ? scrollElementRect.bottom - scrollElementRect.height / 2 : scrollElementRect.bottom, Math.max(direction === KeyboardCode.Down ? scrollElementRect.top : scrollElementRect.top + scrollElementRect.height / 2, newCoordinates.y))\n };\n const canScrollX = direction === KeyboardCode.Right && !isRight || direction === KeyboardCode.Left && !isLeft;\n const canScrollY = direction === KeyboardCode.Down && !isBottom || direction === KeyboardCode.Up && !isTop;\n\n if (canScrollX && clampedCoordinates.x !== newCoordinates.x) {\n const newScrollCoordinates = scrollContainer.scrollLeft + coordinatesDelta.x;\n const canScrollToNewCoordinates = direction === KeyboardCode.Right && newScrollCoordinates <= maxScroll.x || direction === KeyboardCode.Left && newScrollCoordinates >= minScroll.x;\n\n if (canScrollToNewCoordinates && !coordinatesDelta.y) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n left: newScrollCoordinates,\n behavior: scrollBehavior\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.x = scrollContainer.scrollLeft - newScrollCoordinates;\n } else {\n scrollDelta.x = direction === KeyboardCode.Right ? scrollContainer.scrollLeft - maxScroll.x : scrollContainer.scrollLeft - minScroll.x;\n }\n\n if (scrollDelta.x) {\n scrollContainer.scrollBy({\n left: -scrollDelta.x,\n behavior: scrollBehavior\n });\n }\n\n break;\n } else if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {\n const newScrollCoordinates = scrollContainer.scrollTop + coordinatesDelta.y;\n const canScrollToNewCoordinates = direction === KeyboardCode.Down && newScrollCoordinates <= maxScroll.y || direction === KeyboardCode.Up && newScrollCoordinates >= minScroll.y;\n\n if (canScrollToNewCoordinates && !coordinatesDelta.x) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n top: newScrollCoordinates,\n behavior: scrollBehavior\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.y = scrollContainer.scrollTop - newScrollCoordinates;\n } else {\n scrollDelta.y = direction === KeyboardCode.Down ? scrollContainer.scrollTop - maxScroll.y : scrollContainer.scrollTop - minScroll.y;\n }\n\n if (scrollDelta.y) {\n scrollContainer.scrollBy({\n top: -scrollDelta.y,\n behavior: scrollBehavior\n });\n }\n\n break;\n }\n }\n\n this.handleMove(event, add(subtract(newCoordinates, this.referenceCoordinates), scrollDelta));\n }\n }\n }\n\n handleMove(event, coordinates) {\n const {\n onMove\n } = this.props;\n event.preventDefault();\n onMove(coordinates);\n }\n\n handleEnd(event) {\n const {\n onEnd\n } = this.props;\n event.preventDefault();\n this.detach();\n onEnd();\n }\n\n handleCancel(event) {\n const {\n onCancel\n } = this.props;\n event.preventDefault();\n this.detach();\n onCancel();\n }\n\n detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll();\n }\n\n}\nKeyboardSensor.activators = [{\n eventName: 'onKeyDown',\n handler: (event, _ref, _ref2) => {\n let {\n keyboardCodes = defaultKeyboardCodes,\n onActivation\n } = _ref;\n let {\n active\n } = _ref2;\n const {\n code\n } = event.nativeEvent;\n\n if (keyboardCodes.start.includes(code)) {\n const activator = active.activatorNode.current;\n\n if (activator && event.target !== activator) {\n return false;\n }\n\n event.preventDefault();\n onActivation == null ? void 0 : onActivation({\n event: event.nativeEvent\n });\n return true;\n }\n\n return false;\n }\n}];\n\nfunction isDistanceConstraint(constraint) {\n return Boolean(constraint && 'distance' in constraint);\n}\n\nfunction isDelayConstraint(constraint) {\n return Boolean(constraint && 'delay' in constraint);\n}\n\nclass AbstractPointerSensor {\n constructor(props, events, listenerTarget) {\n var _getEventCoordinates;\n\n if (listenerTarget === void 0) {\n listenerTarget = getEventListenerTarget(props.event.target);\n }\n\n this.props = void 0;\n this.events = void 0;\n this.autoScrollEnabled = true;\n this.document = void 0;\n this.activated = false;\n this.initialCoordinates = void 0;\n this.timeoutId = null;\n this.listeners = void 0;\n this.documentListeners = void 0;\n this.windowListeners = void 0;\n this.props = props;\n this.events = events;\n const {\n event\n } = props;\n const {\n target\n } = event;\n this.props = props;\n this.events = events;\n this.document = getOwnerDocument(target);\n this.documentListeners = new Listeners(this.document);\n this.listeners = new Listeners(listenerTarget);\n this.windowListeners = new Listeners(getWindow(target));\n this.initialCoordinates = (_getEventCoordinates = getEventCoordinates(event)) != null ? _getEventCoordinates : defaultCoordinates;\n this.handleStart = this.handleStart.bind(this);\n this.handleMove = this.handleMove.bind(this);\n this.handleEnd = this.handleEnd.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleKeydown = this.handleKeydown.bind(this);\n this.removeTextSelection = this.removeTextSelection.bind(this);\n this.attach();\n }\n\n attach() {\n const {\n events,\n props: {\n options: {\n activationConstraint,\n bypassActivationConstraint\n }\n }\n } = this;\n this.listeners.add(events.move.name, this.handleMove, {\n passive: false\n });\n this.listeners.add(events.end.name, this.handleEnd);\n\n if (events.cancel) {\n this.listeners.add(events.cancel.name, this.handleCancel);\n }\n\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.DragStart, preventDefault);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n this.windowListeners.add(EventName.ContextMenu, preventDefault);\n this.documentListeners.add(EventName.Keydown, this.handleKeydown);\n\n if (activationConstraint) {\n if (bypassActivationConstraint != null && bypassActivationConstraint({\n event: this.props.event,\n activeNode: this.props.activeNode,\n options: this.props.options\n })) {\n return this.handleStart();\n }\n\n if (isDelayConstraint(activationConstraint)) {\n this.timeoutId = setTimeout(this.handleStart, activationConstraint.delay);\n this.handlePending(activationConstraint);\n return;\n }\n\n if (isDistanceConstraint(activationConstraint)) {\n this.handlePending(activationConstraint);\n return;\n }\n }\n\n this.handleStart();\n }\n\n detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll(); // Wait until the next event loop before removing document listeners\n // This is necessary because we listen for `click` and `selection` events on the document\n\n setTimeout(this.documentListeners.removeAll, 50);\n\n if (this.timeoutId !== null) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n\n handlePending(constraint, offset) {\n const {\n active,\n onPending\n } = this.props;\n onPending(active, constraint, this.initialCoordinates, offset);\n }\n\n handleStart() {\n const {\n initialCoordinates\n } = this;\n const {\n onStart\n } = this.props;\n\n if (initialCoordinates) {\n this.activated = true; // Stop propagation of click events once activation constraints are met\n\n this.documentListeners.add(EventName.Click, stopPropagation, {\n capture: true\n }); // Remove any text selection from the document\n\n this.removeTextSelection(); // Prevent further text selection while dragging\n\n this.documentListeners.add(EventName.SelectionChange, this.removeTextSelection);\n onStart(initialCoordinates);\n }\n }\n\n handleMove(event) {\n var _getEventCoordinates2;\n\n const {\n activated,\n initialCoordinates,\n props\n } = this;\n const {\n onMove,\n options: {\n activationConstraint\n }\n } = props;\n\n if (!initialCoordinates) {\n return;\n }\n\n const coordinates = (_getEventCoordinates2 = getEventCoordinates(event)) != null ? _getEventCoordinates2 : defaultCoordinates;\n const delta = subtract(initialCoordinates, coordinates); // Constraint validation\n\n if (!activated && activationConstraint) {\n if (isDistanceConstraint(activationConstraint)) {\n if (activationConstraint.tolerance != null && hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n\n if (hasExceededDistance(delta, activationConstraint.distance)) {\n return this.handleStart();\n }\n }\n\n if (isDelayConstraint(activationConstraint)) {\n if (hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n }\n\n this.handlePending(activationConstraint, delta);\n return;\n }\n\n if (event.cancelable) {\n event.preventDefault();\n }\n\n onMove(coordinates);\n }\n\n handleEnd() {\n const {\n onAbort,\n onEnd\n } = this.props;\n this.detach();\n\n if (!this.activated) {\n onAbort(this.props.active);\n }\n\n onEnd();\n }\n\n handleCancel() {\n const {\n onAbort,\n onCancel\n } = this.props;\n this.detach();\n\n if (!this.activated) {\n onAbort(this.props.active);\n }\n\n onCancel();\n }\n\n handleKeydown(event) {\n if (event.code === KeyboardCode.Esc) {\n this.handleCancel();\n }\n }\n\n removeTextSelection() {\n var _this$document$getSel;\n\n (_this$document$getSel = this.document.getSelection()) == null ? void 0 : _this$document$getSel.removeAllRanges();\n }\n\n}\n\nconst events = {\n cancel: {\n name: 'pointercancel'\n },\n move: {\n name: 'pointermove'\n },\n end: {\n name: 'pointerup'\n }\n};\nclass PointerSensor extends AbstractPointerSensor {\n constructor(props) {\n const {\n event\n } = props; // Pointer events stop firing if the target is unmounted while dragging\n // Therefore we attach listeners to the owner document instead\n\n const listenerTarget = getOwnerDocument(event.target);\n super(props, events, listenerTarget);\n }\n\n}\nPointerSensor.activators = [{\n eventName: 'onPointerDown',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n\n if (!event.isPrimary || event.button !== 0) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nconst events$1 = {\n move: {\n name: 'mousemove'\n },\n end: {\n name: 'mouseup'\n }\n};\nvar MouseButton;\n\n(function (MouseButton) {\n MouseButton[MouseButton[\"RightClick\"] = 2] = \"RightClick\";\n})(MouseButton || (MouseButton = {}));\n\nclass MouseSensor extends AbstractPointerSensor {\n constructor(props) {\n super(props, events$1, getOwnerDocument(props.event.target));\n }\n\n}\nMouseSensor.activators = [{\n eventName: 'onMouseDown',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n\n if (event.button === MouseButton.RightClick) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nconst events$2 = {\n cancel: {\n name: 'touchcancel'\n },\n move: {\n name: 'touchmove'\n },\n end: {\n name: 'touchend'\n }\n};\nclass TouchSensor extends AbstractPointerSensor {\n constructor(props) {\n super(props, events$2);\n }\n\n static setup() {\n // Adding a non-capture and non-passive `touchmove` listener in order\n // to force `event.preventDefault()` calls to work in dynamically added\n // touchmove event handlers. This is required for iOS Safari.\n window.addEventListener(events$2.move.name, noop, {\n capture: false,\n passive: false\n });\n return function teardown() {\n window.removeEventListener(events$2.move.name, noop);\n }; // We create a new handler because the teardown function of another sensor\n // could remove our event listener if we use a referentially equal listener.\n\n function noop() {}\n }\n\n}\nTouchSensor.activators = [{\n eventName: 'onTouchStart',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n const {\n touches\n } = event;\n\n if (touches.length > 1) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nvar AutoScrollActivator;\n\n(function (AutoScrollActivator) {\n AutoScrollActivator[AutoScrollActivator[\"Pointer\"] = 0] = \"Pointer\";\n AutoScrollActivator[AutoScrollActivator[\"DraggableRect\"] = 1] = \"DraggableRect\";\n})(AutoScrollActivator || (AutoScrollActivator = {}));\n\nvar TraversalOrder;\n\n(function (TraversalOrder) {\n TraversalOrder[TraversalOrder[\"TreeOrder\"] = 0] = \"TreeOrder\";\n TraversalOrder[TraversalOrder[\"ReversedTreeOrder\"] = 1] = \"ReversedTreeOrder\";\n})(TraversalOrder || (TraversalOrder = {}));\n\nfunction useAutoScroller(_ref) {\n let {\n acceleration,\n activator = AutoScrollActivator.Pointer,\n canScroll,\n draggingRect,\n enabled,\n interval = 5,\n order = TraversalOrder.TreeOrder,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects,\n delta,\n threshold\n } = _ref;\n const scrollIntent = useScrollIntent({\n delta,\n disabled: !enabled\n });\n const [setAutoScrollInterval, clearAutoScrollInterval] = useInterval();\n const scrollSpeed = useRef({\n x: 0,\n y: 0\n });\n const scrollDirection = useRef({\n x: 0,\n y: 0\n });\n const rect = useMemo(() => {\n switch (activator) {\n case AutoScrollActivator.Pointer:\n return pointerCoordinates ? {\n top: pointerCoordinates.y,\n bottom: pointerCoordinates.y,\n left: pointerCoordinates.x,\n right: pointerCoordinates.x\n } : null;\n\n case AutoScrollActivator.DraggableRect:\n return draggingRect;\n }\n }, [activator, draggingRect, pointerCoordinates]);\n const scrollContainerRef = useRef(null);\n const autoScroll = useCallback(() => {\n const scrollContainer = scrollContainerRef.current;\n\n if (!scrollContainer) {\n return;\n }\n\n const scrollLeft = scrollSpeed.current.x * scrollDirection.current.x;\n const scrollTop = scrollSpeed.current.y * scrollDirection.current.y;\n scrollContainer.scrollBy(scrollLeft, scrollTop);\n }, []);\n const sortedScrollableAncestors = useMemo(() => order === TraversalOrder.TreeOrder ? [...scrollableAncestors].reverse() : scrollableAncestors, [order, scrollableAncestors]);\n useEffect(() => {\n if (!enabled || !scrollableAncestors.length || !rect) {\n clearAutoScrollInterval();\n return;\n }\n\n for (const scrollContainer of sortedScrollableAncestors) {\n if ((canScroll == null ? void 0 : canScroll(scrollContainer)) === false) {\n continue;\n }\n\n const index = scrollableAncestors.indexOf(scrollContainer);\n const scrollContainerRect = scrollableAncestorRects[index];\n\n if (!scrollContainerRect) {\n continue;\n }\n\n const {\n direction,\n speed\n } = getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, rect, acceleration, threshold);\n\n for (const axis of ['x', 'y']) {\n if (!scrollIntent[axis][direction[axis]]) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n\n if (speed.x > 0 || speed.y > 0) {\n clearAutoScrollInterval();\n scrollContainerRef.current = scrollContainer;\n setAutoScrollInterval(autoScroll, interval);\n scrollSpeed.current = speed;\n scrollDirection.current = direction;\n return;\n }\n }\n\n scrollSpeed.current = {\n x: 0,\n y: 0\n };\n scrollDirection.current = {\n x: 0,\n y: 0\n };\n clearAutoScrollInterval();\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [acceleration, autoScroll, canScroll, clearAutoScrollInterval, enabled, interval, // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(rect), // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(scrollIntent), setAutoScrollInterval, scrollableAncestors, sortedScrollableAncestors, scrollableAncestorRects, // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold)]);\n}\nconst defaultScrollIntent = {\n x: {\n [Direction.Backward]: false,\n [Direction.Forward]: false\n },\n y: {\n [Direction.Backward]: false,\n [Direction.Forward]: false\n }\n};\n\nfunction useScrollIntent(_ref2) {\n let {\n delta,\n disabled\n } = _ref2;\n const previousDelta = usePrevious(delta);\n return useLazyMemo(previousIntent => {\n if (disabled || !previousDelta || !previousIntent) {\n // Reset scroll intent tracking when auto-scrolling is disabled\n return defaultScrollIntent;\n }\n\n const direction = {\n x: Math.sign(delta.x - previousDelta.x),\n y: Math.sign(delta.y - previousDelta.y)\n }; // Keep track of the user intent to scroll in each direction for both axis\n\n return {\n x: {\n [Direction.Backward]: previousIntent.x[Direction.Backward] || direction.x === -1,\n [Direction.Forward]: previousIntent.x[Direction.Forward] || direction.x === 1\n },\n y: {\n [Direction.Backward]: previousIntent.y[Direction.Backward] || direction.y === -1,\n [Direction.Forward]: previousIntent.y[Direction.Forward] || direction.y === 1\n }\n };\n }, [disabled, delta, previousDelta]);\n}\n\nfunction useCachedNode(draggableNodes, id) {\n const draggableNode = id != null ? draggableNodes.get(id) : undefined;\n const node = draggableNode ? draggableNode.node.current : null;\n return useLazyMemo(cachedNode => {\n var _ref;\n\n if (id == null) {\n return null;\n } // In some cases, the draggable node can unmount while dragging\n // This is the case for virtualized lists. In those situations,\n // we fall back to the last known value for that node.\n\n\n return (_ref = node != null ? node : cachedNode) != null ? _ref : null;\n }, [node, id]);\n}\n\nfunction useCombineActivators(sensors, getSyntheticHandler) {\n return useMemo(() => sensors.reduce((accumulator, sensor) => {\n const {\n sensor: Sensor\n } = sensor;\n const sensorActivators = Sensor.activators.map(activator => ({\n eventName: activator.eventName,\n handler: getSyntheticHandler(activator.handler, sensor)\n }));\n return [...accumulator, ...sensorActivators];\n }, []), [sensors, getSyntheticHandler]);\n}\n\nvar MeasuringStrategy;\n\n(function (MeasuringStrategy) {\n MeasuringStrategy[MeasuringStrategy[\"Always\"] = 0] = \"Always\";\n MeasuringStrategy[MeasuringStrategy[\"BeforeDragging\"] = 1] = \"BeforeDragging\";\n MeasuringStrategy[MeasuringStrategy[\"WhileDragging\"] = 2] = \"WhileDragging\";\n})(MeasuringStrategy || (MeasuringStrategy = {}));\n\nvar MeasuringFrequency;\n\n(function (MeasuringFrequency) {\n MeasuringFrequency[\"Optimized\"] = \"optimized\";\n})(MeasuringFrequency || (MeasuringFrequency = {}));\n\nconst defaultValue = /*#__PURE__*/new Map();\nfunction useDroppableMeasuring(containers, _ref) {\n let {\n dragging,\n dependencies,\n config\n } = _ref;\n const [queue, setQueue] = useState(null);\n const {\n frequency,\n measure,\n strategy\n } = config;\n const containersRef = useRef(containers);\n const disabled = isDisabled();\n const disabledRef = useLatestValue(disabled);\n const measureDroppableContainers = useCallback(function (ids) {\n if (ids === void 0) {\n ids = [];\n }\n\n if (disabledRef.current) {\n return;\n }\n\n setQueue(value => {\n if (value === null) {\n return ids;\n }\n\n return value.concat(ids.filter(id => !value.includes(id)));\n });\n }, [disabledRef]);\n const timeoutId = useRef(null);\n const droppableRects = useLazyMemo(previousValue => {\n if (disabled && !dragging) {\n return defaultValue;\n }\n\n if (!previousValue || previousValue === defaultValue || containersRef.current !== containers || queue != null) {\n const map = new Map();\n\n for (let container of containers) {\n if (!container) {\n continue;\n }\n\n if (queue && queue.length > 0 && !queue.includes(container.id) && container.rect.current) {\n // This container does not need to be re-measured\n map.set(container.id, container.rect.current);\n continue;\n }\n\n const node = container.node.current;\n const rect = node ? new Rect(measure(node), node) : null;\n container.rect.current = rect;\n\n if (rect) {\n map.set(container.id, rect);\n }\n }\n\n return map;\n }\n\n return previousValue;\n }, [containers, queue, dragging, disabled, measure]);\n useEffect(() => {\n containersRef.current = containers;\n }, [containers]);\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n measureDroppableContainers();\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [dragging, disabled]);\n useEffect(() => {\n if (queue && queue.length > 0) {\n setQueue(null);\n }\n }, //eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(queue)]);\n useEffect(() => {\n if (disabled || typeof frequency !== 'number' || timeoutId.current !== null) {\n return;\n }\n\n timeoutId.current = setTimeout(() => {\n measureDroppableContainers();\n timeoutId.current = null;\n }, frequency);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [frequency, disabled, measureDroppableContainers, ...dependencies]);\n return {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled: queue != null\n };\n\n function isDisabled() {\n switch (strategy) {\n case MeasuringStrategy.Always:\n return false;\n\n case MeasuringStrategy.BeforeDragging:\n return dragging;\n\n default:\n return !dragging;\n }\n }\n}\n\nfunction useInitialValue(value, computeFn) {\n return useLazyMemo(previousValue => {\n if (!value) {\n return null;\n }\n\n if (previousValue) {\n return previousValue;\n }\n\n return typeof computeFn === 'function' ? computeFn(value) : value;\n }, [computeFn, value]);\n}\n\nfunction useInitialRect(node, measure) {\n return useInitialValue(node, measure);\n}\n\n/**\r\n * Returns a new MutationObserver instance.\r\n * If `MutationObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\nfunction useMutationObserver(_ref) {\n let {\n callback,\n disabled\n } = _ref;\n const handleMutations = useEvent(callback);\n const mutationObserver = useMemo(() => {\n if (disabled || typeof window === 'undefined' || typeof window.MutationObserver === 'undefined') {\n return undefined;\n }\n\n const {\n MutationObserver\n } = window;\n return new MutationObserver(handleMutations);\n }, [handleMutations, disabled]);\n useEffect(() => {\n return () => mutationObserver == null ? void 0 : mutationObserver.disconnect();\n }, [mutationObserver]);\n return mutationObserver;\n}\n\n/**\r\n * Returns a new ResizeObserver instance bound to the `onResize` callback.\r\n * If `ResizeObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\nfunction useResizeObserver(_ref) {\n let {\n callback,\n disabled\n } = _ref;\n const handleResize = useEvent(callback);\n const resizeObserver = useMemo(() => {\n if (disabled || typeof window === 'undefined' || typeof window.ResizeObserver === 'undefined') {\n return undefined;\n }\n\n const {\n ResizeObserver\n } = window;\n return new ResizeObserver(handleResize);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [disabled]);\n useEffect(() => {\n return () => resizeObserver == null ? void 0 : resizeObserver.disconnect();\n }, [resizeObserver]);\n return resizeObserver;\n}\n\nfunction defaultMeasure(element) {\n return new Rect(getClientRect(element), element);\n}\n\nfunction useRect(element, measure, fallbackRect) {\n if (measure === void 0) {\n measure = defaultMeasure;\n }\n\n const [rect, setRect] = useState(null);\n\n function measureRect() {\n setRect(currentRect => {\n if (!element) {\n return null;\n }\n\n if (element.isConnected === false) {\n var _ref;\n\n // Fall back to last rect we measured if the element is\n // no longer connected to the DOM.\n return (_ref = currentRect != null ? currentRect : fallbackRect) != null ? _ref : null;\n }\n\n const newRect = measure(element);\n\n if (JSON.stringify(currentRect) === JSON.stringify(newRect)) {\n return currentRect;\n }\n\n return newRect;\n });\n }\n\n const mutationObserver = useMutationObserver({\n callback(records) {\n if (!element) {\n return;\n }\n\n for (const record of records) {\n const {\n type,\n target\n } = record;\n\n if (type === 'childList' && target instanceof HTMLElement && target.contains(element)) {\n measureRect();\n break;\n }\n }\n }\n\n });\n const resizeObserver = useResizeObserver({\n callback: measureRect\n });\n useIsomorphicLayoutEffect(() => {\n measureRect();\n\n if (element) {\n resizeObserver == null ? void 0 : resizeObserver.observe(element);\n mutationObserver == null ? void 0 : mutationObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n } else {\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n }\n }, [element]);\n return rect;\n}\n\nfunction useRectDelta(rect) {\n const initialRect = useInitialValue(rect);\n return getRectDelta(rect, initialRect);\n}\n\nconst defaultValue$1 = [];\nfunction useScrollableAncestors(node) {\n const previousNode = useRef(node);\n const ancestors = useLazyMemo(previousValue => {\n if (!node) {\n return defaultValue$1;\n }\n\n if (previousValue && previousValue !== defaultValue$1 && node && previousNode.current && node.parentNode === previousNode.current.parentNode) {\n return previousValue;\n }\n\n return getScrollableAncestors(node);\n }, [node]);\n useEffect(() => {\n previousNode.current = node;\n }, [node]);\n return ancestors;\n}\n\nfunction useScrollOffsets(elements) {\n const [scrollCoordinates, setScrollCoordinates] = useState(null);\n const prevElements = useRef(elements); // To-do: Throttle the handleScroll callback\n\n const handleScroll = useCallback(event => {\n const scrollingElement = getScrollableElement(event.target);\n\n if (!scrollingElement) {\n return;\n }\n\n setScrollCoordinates(scrollCoordinates => {\n if (!scrollCoordinates) {\n return null;\n }\n\n scrollCoordinates.set(scrollingElement, getScrollCoordinates(scrollingElement));\n return new Map(scrollCoordinates);\n });\n }, []);\n useEffect(() => {\n const previousElements = prevElements.current;\n\n if (elements !== previousElements) {\n cleanup(previousElements);\n const entries = elements.map(element => {\n const scrollableElement = getScrollableElement(element);\n\n if (scrollableElement) {\n scrollableElement.addEventListener('scroll', handleScroll, {\n passive: true\n });\n return [scrollableElement, getScrollCoordinates(scrollableElement)];\n }\n\n return null;\n }).filter(entry => entry != null);\n setScrollCoordinates(entries.length ? new Map(entries) : null);\n prevElements.current = elements;\n }\n\n return () => {\n cleanup(elements);\n cleanup(previousElements);\n };\n\n function cleanup(elements) {\n elements.forEach(element => {\n const scrollableElement = getScrollableElement(element);\n scrollableElement == null ? void 0 : scrollableElement.removeEventListener('scroll', handleScroll);\n });\n }\n }, [handleScroll, elements]);\n return useMemo(() => {\n if (elements.length) {\n return scrollCoordinates ? Array.from(scrollCoordinates.values()).reduce((acc, coordinates) => add(acc, coordinates), defaultCoordinates) : getScrollOffsets(elements);\n }\n\n return defaultCoordinates;\n }, [elements, scrollCoordinates]);\n}\n\nfunction useScrollOffsetsDelta(scrollOffsets, dependencies) {\n if (dependencies === void 0) {\n dependencies = [];\n }\n\n const initialScrollOffsets = useRef(null);\n useEffect(() => {\n initialScrollOffsets.current = null;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n dependencies);\n useEffect(() => {\n const hasScrollOffsets = scrollOffsets !== defaultCoordinates;\n\n if (hasScrollOffsets && !initialScrollOffsets.current) {\n initialScrollOffsets.current = scrollOffsets;\n }\n\n if (!hasScrollOffsets && initialScrollOffsets.current) {\n initialScrollOffsets.current = null;\n }\n }, [scrollOffsets]);\n return initialScrollOffsets.current ? subtract(scrollOffsets, initialScrollOffsets.current) : defaultCoordinates;\n}\n\nfunction useSensorSetup(sensors) {\n useEffect(() => {\n if (!canUseDOM) {\n return;\n }\n\n const teardownFns = sensors.map(_ref => {\n let {\n sensor\n } = _ref;\n return sensor.setup == null ? void 0 : sensor.setup();\n });\n return () => {\n for (const teardown of teardownFns) {\n teardown == null ? void 0 : teardown();\n }\n };\n }, // TO-DO: Sensors length could theoretically change which would not be a valid dependency\n // eslint-disable-next-line react-hooks/exhaustive-deps\n sensors.map(_ref2 => {\n let {\n sensor\n } = _ref2;\n return sensor;\n }));\n}\n\nfunction useSyntheticListeners(listeners, id) {\n return useMemo(() => {\n return listeners.reduce((acc, _ref) => {\n let {\n eventName,\n handler\n } = _ref;\n\n acc[eventName] = event => {\n handler(event, id);\n };\n\n return acc;\n }, {});\n }, [listeners, id]);\n}\n\nfunction useWindowRect(element) {\n return useMemo(() => element ? getWindowClientRect(element) : null, [element]);\n}\n\nconst defaultValue$2 = [];\nfunction useRects(elements, measure) {\n if (measure === void 0) {\n measure = getClientRect;\n }\n\n const [firstElement] = elements;\n const windowRect = useWindowRect(firstElement ? getWindow(firstElement) : null);\n const [rects, setRects] = useState(defaultValue$2);\n\n function measureRects() {\n setRects(() => {\n if (!elements.length) {\n return defaultValue$2;\n }\n\n return elements.map(element => isDocumentScrollingElement(element) ? windowRect : new Rect(measure(element), element));\n });\n }\n\n const resizeObserver = useResizeObserver({\n callback: measureRects\n });\n useIsomorphicLayoutEffect(() => {\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n measureRects();\n elements.forEach(element => resizeObserver == null ? void 0 : resizeObserver.observe(element));\n }, [elements]);\n return rects;\n}\n\nfunction getMeasurableNode(node) {\n if (!node) {\n return null;\n }\n\n if (node.children.length > 1) {\n return node;\n }\n\n const firstChild = node.children[0];\n return isHTMLElement(firstChild) ? firstChild : node;\n}\n\nfunction useDragOverlayMeasuring(_ref) {\n let {\n measure\n } = _ref;\n const [rect, setRect] = useState(null);\n const handleResize = useCallback(entries => {\n for (const {\n target\n } of entries) {\n if (isHTMLElement(target)) {\n setRect(rect => {\n const newRect = measure(target);\n return rect ? { ...rect,\n width: newRect.width,\n height: newRect.height\n } : newRect;\n });\n break;\n }\n }\n }, [measure]);\n const resizeObserver = useResizeObserver({\n callback: handleResize\n });\n const handleNodeChange = useCallback(element => {\n const node = getMeasurableNode(element);\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n\n if (node) {\n resizeObserver == null ? void 0 : resizeObserver.observe(node);\n }\n\n setRect(node ? measure(node) : null);\n }, [measure, resizeObserver]);\n const [nodeRef, setRef] = useNodeRef(handleNodeChange);\n return useMemo(() => ({\n nodeRef,\n rect,\n setRef\n }), [rect, nodeRef, setRef]);\n}\n\nconst defaultSensors = [{\n sensor: PointerSensor,\n options: {}\n}, {\n sensor: KeyboardSensor,\n options: {}\n}];\nconst defaultData = {\n current: {}\n};\nconst defaultMeasuringConfiguration = {\n draggable: {\n measure: getTransformAgnosticClientRect\n },\n droppable: {\n measure: getTransformAgnosticClientRect,\n strategy: MeasuringStrategy.WhileDragging,\n frequency: MeasuringFrequency.Optimized\n },\n dragOverlay: {\n measure: getClientRect\n }\n};\n\nclass DroppableContainersMap extends Map {\n get(id) {\n var _super$get;\n\n return id != null ? (_super$get = super.get(id)) != null ? _super$get : undefined : undefined;\n }\n\n toArray() {\n return Array.from(this.values());\n }\n\n getEnabled() {\n return this.toArray().filter(_ref => {\n let {\n disabled\n } = _ref;\n return !disabled;\n });\n }\n\n getNodeFor(id) {\n var _this$get$node$curren, _this$get;\n\n return (_this$get$node$curren = (_this$get = this.get(id)) == null ? void 0 : _this$get.node.current) != null ? _this$get$node$curren : undefined;\n }\n\n}\n\nconst defaultPublicContext = {\n activatorEvent: null,\n active: null,\n activeNode: null,\n activeNodeRect: null,\n collisions: null,\n containerNodeRect: null,\n draggableNodes: /*#__PURE__*/new Map(),\n droppableRects: /*#__PURE__*/new Map(),\n droppableContainers: /*#__PURE__*/new DroppableContainersMap(),\n over: null,\n dragOverlay: {\n nodeRef: {\n current: null\n },\n rect: null,\n setRef: noop\n },\n scrollableAncestors: [],\n scrollableAncestorRects: [],\n measuringConfiguration: defaultMeasuringConfiguration,\n measureDroppableContainers: noop,\n windowRect: null,\n measuringScheduled: false\n};\nconst defaultInternalContext = {\n activatorEvent: null,\n activators: [],\n active: null,\n activeNodeRect: null,\n ariaDescribedById: {\n draggable: ''\n },\n dispatch: noop,\n draggableNodes: /*#__PURE__*/new Map(),\n over: null,\n measureDroppableContainers: noop\n};\nconst InternalContext = /*#__PURE__*/createContext(defaultInternalContext);\nconst PublicContext = /*#__PURE__*/createContext(defaultPublicContext);\n\nfunction getInitialState() {\n return {\n draggable: {\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n nodes: new Map(),\n translate: {\n x: 0,\n y: 0\n }\n },\n droppable: {\n containers: new DroppableContainersMap()\n }\n };\n}\nfunction reducer(state, action) {\n switch (action.type) {\n case Action.DragStart:\n return { ...state,\n draggable: { ...state.draggable,\n initialCoordinates: action.initialCoordinates,\n active: action.active\n }\n };\n\n case Action.DragMove:\n if (state.draggable.active == null) {\n return state;\n }\n\n return { ...state,\n draggable: { ...state.draggable,\n translate: {\n x: action.coordinates.x - state.draggable.initialCoordinates.x,\n y: action.coordinates.y - state.draggable.initialCoordinates.y\n }\n }\n };\n\n case Action.DragEnd:\n case Action.DragCancel:\n return { ...state,\n draggable: { ...state.draggable,\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n translate: {\n x: 0,\n y: 0\n }\n }\n };\n\n case Action.RegisterDroppable:\n {\n const {\n element\n } = action;\n const {\n id\n } = element;\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, element);\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n case Action.SetDroppableDisabled:\n {\n const {\n id,\n key,\n disabled\n } = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, { ...element,\n disabled\n });\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n case Action.UnregisterDroppable:\n {\n const {\n id,\n key\n } = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.delete(id);\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n default:\n {\n return state;\n }\n }\n}\n\nfunction RestoreFocus(_ref) {\n let {\n disabled\n } = _ref;\n const {\n active,\n activatorEvent,\n draggableNodes\n } = useContext(InternalContext);\n const previousActivatorEvent = usePrevious(activatorEvent);\n const previousActiveId = usePrevious(active == null ? void 0 : active.id); // Restore keyboard focus on the activator node\n\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n if (!activatorEvent && previousActivatorEvent && previousActiveId != null) {\n if (!isKeyboardEvent(previousActivatorEvent)) {\n return;\n }\n\n if (document.activeElement === previousActivatorEvent.target) {\n // No need to restore focus\n return;\n }\n\n const draggableNode = draggableNodes.get(previousActiveId);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n activatorNode,\n node\n } = draggableNode;\n\n if (!activatorNode.current && !node.current) {\n return;\n }\n\n requestAnimationFrame(() => {\n for (const element of [activatorNode.current, node.current]) {\n if (!element) {\n continue;\n }\n\n const focusableNode = findFirstFocusableNode(element);\n\n if (focusableNode) {\n focusableNode.focus();\n break;\n }\n }\n });\n }\n }, [activatorEvent, disabled, draggableNodes, previousActiveId, previousActivatorEvent]);\n return null;\n}\n\nfunction applyModifiers(modifiers, _ref) {\n let {\n transform,\n ...args\n } = _ref;\n return modifiers != null && modifiers.length ? modifiers.reduce((accumulator, modifier) => {\n return modifier({\n transform: accumulator,\n ...args\n });\n }, transform) : transform;\n}\n\nfunction useMeasuringConfiguration(config) {\n return useMemo(() => ({\n draggable: { ...defaultMeasuringConfiguration.draggable,\n ...(config == null ? void 0 : config.draggable)\n },\n droppable: { ...defaultMeasuringConfiguration.droppable,\n ...(config == null ? void 0 : config.droppable)\n },\n dragOverlay: { ...defaultMeasuringConfiguration.dragOverlay,\n ...(config == null ? void 0 : config.dragOverlay)\n }\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [config == null ? void 0 : config.draggable, config == null ? void 0 : config.droppable, config == null ? void 0 : config.dragOverlay]);\n}\n\nfunction useLayoutShiftScrollCompensation(_ref) {\n let {\n activeNode,\n measure,\n initialRect,\n config = true\n } = _ref;\n const initialized = useRef(false);\n const {\n x,\n y\n } = typeof config === 'boolean' ? {\n x: config,\n y: config\n } : config;\n useIsomorphicLayoutEffect(() => {\n const disabled = !x && !y;\n\n if (disabled || !activeNode) {\n initialized.current = false;\n return;\n }\n\n if (initialized.current || !initialRect) {\n // Return early if layout shift scroll compensation was already attempted\n // or if there is no initialRect to compare to.\n return;\n } // Get the most up to date node ref for the active draggable\n\n\n const node = activeNode == null ? void 0 : activeNode.node.current;\n\n if (!node || node.isConnected === false) {\n // Return early if there is no attached node ref or if the node is\n // disconnected from the document.\n return;\n }\n\n const rect = measure(node);\n const rectDelta = getRectDelta(rect, initialRect);\n\n if (!x) {\n rectDelta.x = 0;\n }\n\n if (!y) {\n rectDelta.y = 0;\n } // Only perform layout shift scroll compensation once\n\n\n initialized.current = true;\n\n if (Math.abs(rectDelta.x) > 0 || Math.abs(rectDelta.y) > 0) {\n const firstScrollableAncestor = getFirstScrollableAncestor(node);\n\n if (firstScrollableAncestor) {\n firstScrollableAncestor.scrollBy({\n top: rectDelta.y,\n left: rectDelta.x\n });\n }\n }\n }, [activeNode, x, y, initialRect, measure]);\n}\n\nconst ActiveDraggableContext = /*#__PURE__*/createContext({ ...defaultCoordinates,\n scaleX: 1,\n scaleY: 1\n});\nvar Status;\n\n(function (Status) {\n Status[Status[\"Uninitialized\"] = 0] = \"Uninitialized\";\n Status[Status[\"Initializing\"] = 1] = \"Initializing\";\n Status[Status[\"Initialized\"] = 2] = \"Initialized\";\n})(Status || (Status = {}));\n\nconst DndContext = /*#__PURE__*/memo(function DndContext(_ref) {\n var _sensorContext$curren, _dragOverlay$nodeRef$, _dragOverlay$rect, _over$rect;\n\n let {\n id,\n accessibility,\n autoScroll = true,\n children,\n sensors = defaultSensors,\n collisionDetection = rectIntersection,\n measuring,\n modifiers,\n ...props\n } = _ref;\n const store = useReducer(reducer, undefined, getInitialState);\n const [state, dispatch] = store;\n const [dispatchMonitorEvent, registerMonitorListener] = useDndMonitorProvider();\n const [status, setStatus] = useState(Status.Uninitialized);\n const isInitialized = status === Status.Initialized;\n const {\n draggable: {\n active: activeId,\n nodes: draggableNodes,\n translate\n },\n droppable: {\n containers: droppableContainers\n }\n } = state;\n const node = activeId != null ? draggableNodes.get(activeId) : null;\n const activeRects = useRef({\n initial: null,\n translated: null\n });\n const active = useMemo(() => {\n var _node$data;\n\n return activeId != null ? {\n id: activeId,\n // It's possible for the active node to unmount while dragging\n data: (_node$data = node == null ? void 0 : node.data) != null ? _node$data : defaultData,\n rect: activeRects\n } : null;\n }, [activeId, node]);\n const activeRef = useRef(null);\n const [activeSensor, setActiveSensor] = useState(null);\n const [activatorEvent, setActivatorEvent] = useState(null);\n const latestProps = useLatestValue(props, Object.values(props));\n const draggableDescribedById = useUniqueId(\"DndDescribedBy\", id);\n const enabledDroppableContainers = useMemo(() => droppableContainers.getEnabled(), [droppableContainers]);\n const measuringConfiguration = useMeasuringConfiguration(measuring);\n const {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled\n } = useDroppableMeasuring(enabledDroppableContainers, {\n dragging: isInitialized,\n dependencies: [translate.x, translate.y],\n config: measuringConfiguration.droppable\n });\n const activeNode = useCachedNode(draggableNodes, activeId);\n const activationCoordinates = useMemo(() => activatorEvent ? getEventCoordinates(activatorEvent) : null, [activatorEvent]);\n const autoScrollOptions = getAutoScrollerOptions();\n const initialActiveNodeRect = useInitialRect(activeNode, measuringConfiguration.draggable.measure);\n useLayoutShiftScrollCompensation({\n activeNode: activeId != null ? draggableNodes.get(activeId) : null,\n config: autoScrollOptions.layoutShiftCompensation,\n initialRect: initialActiveNodeRect,\n measure: measuringConfiguration.draggable.measure\n });\n const activeNodeRect = useRect(activeNode, measuringConfiguration.draggable.measure, initialActiveNodeRect);\n const containerNodeRect = useRect(activeNode ? activeNode.parentElement : null);\n const sensorContext = useRef({\n activatorEvent: null,\n active: null,\n activeNode,\n collisionRect: null,\n collisions: null,\n droppableRects,\n draggableNodes,\n draggingNode: null,\n draggingNodeRect: null,\n droppableContainers,\n over: null,\n scrollableAncestors: [],\n scrollAdjustedTranslate: null\n });\n const overNode = droppableContainers.getNodeFor((_sensorContext$curren = sensorContext.current.over) == null ? void 0 : _sensorContext$curren.id);\n const dragOverlay = useDragOverlayMeasuring({\n measure: measuringConfiguration.dragOverlay.measure\n }); // Use the rect of the drag overlay if it is mounted\n\n const draggingNode = (_dragOverlay$nodeRef$ = dragOverlay.nodeRef.current) != null ? _dragOverlay$nodeRef$ : activeNode;\n const draggingNodeRect = isInitialized ? (_dragOverlay$rect = dragOverlay.rect) != null ? _dragOverlay$rect : activeNodeRect : null;\n const usesDragOverlay = Boolean(dragOverlay.nodeRef.current && dragOverlay.rect); // The delta between the previous and new position of the draggable node\n // is only relevant when there is no drag overlay\n\n const nodeRectDelta = useRectDelta(usesDragOverlay ? null : activeNodeRect); // Get the window rect of the dragging node\n\n const windowRect = useWindowRect(draggingNode ? getWindow(draggingNode) : null); // Get scrollable ancestors of the dragging node\n\n const scrollableAncestors = useScrollableAncestors(isInitialized ? overNode != null ? overNode : activeNode : null);\n const scrollableAncestorRects = useRects(scrollableAncestors); // Apply modifiers\n\n const modifiedTranslate = applyModifiers(modifiers, {\n transform: {\n x: translate.x - nodeRectDelta.x,\n y: translate.y - nodeRectDelta.y,\n scaleX: 1,\n scaleY: 1\n },\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect,\n over: sensorContext.current.over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect\n });\n const pointerCoordinates = activationCoordinates ? add(activationCoordinates, translate) : null;\n const scrollOffsets = useScrollOffsets(scrollableAncestors); // Represents the scroll delta since dragging was initiated\n\n const scrollAdjustment = useScrollOffsetsDelta(scrollOffsets); // Represents the scroll delta since the last time the active node rect was measured\n\n const activeNodeScrollDelta = useScrollOffsetsDelta(scrollOffsets, [activeNodeRect]);\n const scrollAdjustedTranslate = add(modifiedTranslate, scrollAdjustment);\n const collisionRect = draggingNodeRect ? getAdjustedRect(draggingNodeRect, modifiedTranslate) : null;\n const collisions = active && collisionRect ? collisionDetection({\n active,\n collisionRect,\n droppableRects,\n droppableContainers: enabledDroppableContainers,\n pointerCoordinates\n }) : null;\n const overId = getFirstCollision(collisions, 'id');\n const [over, setOver] = useState(null); // When there is no drag overlay used, we need to account for the\n // window scroll delta\n\n const appliedTranslate = usesDragOverlay ? modifiedTranslate : add(modifiedTranslate, activeNodeScrollDelta);\n const transform = adjustScale(appliedTranslate, (_over$rect = over == null ? void 0 : over.rect) != null ? _over$rect : null, activeNodeRect);\n const activeSensorRef = useRef(null);\n const instantiateSensor = useCallback((event, _ref2) => {\n let {\n sensor: Sensor,\n options\n } = _ref2;\n\n if (activeRef.current == null) {\n return;\n }\n\n const activeNode = draggableNodes.get(activeRef.current);\n\n if (!activeNode) {\n return;\n }\n\n const activatorEvent = event.nativeEvent;\n const sensorInstance = new Sensor({\n active: activeRef.current,\n activeNode,\n event: activatorEvent,\n options,\n // Sensors need to be instantiated with refs for arguments that change over time\n // otherwise they are frozen in time with the stale arguments\n context: sensorContext,\n\n onAbort(id) {\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n onDragAbort\n } = latestProps.current;\n const event = {\n id\n };\n onDragAbort == null ? void 0 : onDragAbort(event);\n dispatchMonitorEvent({\n type: 'onDragAbort',\n event\n });\n },\n\n onPending(id, constraint, initialCoordinates, offset) {\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n onDragPending\n } = latestProps.current;\n const event = {\n id,\n constraint,\n initialCoordinates,\n offset\n };\n onDragPending == null ? void 0 : onDragPending(event);\n dispatchMonitorEvent({\n type: 'onDragPending',\n event\n });\n },\n\n onStart(initialCoordinates) {\n const id = activeRef.current;\n\n if (id == null) {\n return;\n }\n\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n onDragStart\n } = latestProps.current;\n const event = {\n activatorEvent,\n active: {\n id,\n data: draggableNode.data,\n rect: activeRects\n }\n };\n unstable_batchedUpdates(() => {\n onDragStart == null ? void 0 : onDragStart(event);\n setStatus(Status.Initializing);\n dispatch({\n type: Action.DragStart,\n initialCoordinates,\n active: id\n });\n dispatchMonitorEvent({\n type: 'onDragStart',\n event\n });\n setActiveSensor(activeSensorRef.current);\n setActivatorEvent(activatorEvent);\n });\n },\n\n onMove(coordinates) {\n dispatch({\n type: Action.DragMove,\n coordinates\n });\n },\n\n onEnd: createHandler(Action.DragEnd),\n onCancel: createHandler(Action.DragCancel)\n });\n activeSensorRef.current = sensorInstance;\n\n function createHandler(type) {\n return async function handler() {\n const {\n active,\n collisions,\n over,\n scrollAdjustedTranslate\n } = sensorContext.current;\n let event = null;\n\n if (active && scrollAdjustedTranslate) {\n const {\n cancelDrop\n } = latestProps.current;\n event = {\n activatorEvent,\n active: active,\n collisions,\n delta: scrollAdjustedTranslate,\n over\n };\n\n if (type === Action.DragEnd && typeof cancelDrop === 'function') {\n const shouldCancel = await Promise.resolve(cancelDrop(event));\n\n if (shouldCancel) {\n type = Action.DragCancel;\n }\n }\n }\n\n activeRef.current = null;\n unstable_batchedUpdates(() => {\n dispatch({\n type\n });\n setStatus(Status.Uninitialized);\n setOver(null);\n setActiveSensor(null);\n setActivatorEvent(null);\n activeSensorRef.current = null;\n const eventName = type === Action.DragEnd ? 'onDragEnd' : 'onDragCancel';\n\n if (event) {\n const handler = latestProps.current[eventName];\n handler == null ? void 0 : handler(event);\n dispatchMonitorEvent({\n type: eventName,\n event\n });\n }\n });\n };\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes]);\n const bindActivatorToSensorInstantiator = useCallback((handler, sensor) => {\n return (event, active) => {\n const nativeEvent = event.nativeEvent;\n const activeDraggableNode = draggableNodes.get(active);\n\n if ( // Another sensor is already instantiating\n activeRef.current !== null || // No active draggable\n !activeDraggableNode || // Event has already been captured\n nativeEvent.dndKit || nativeEvent.defaultPrevented) {\n return;\n }\n\n const activationContext = {\n active: activeDraggableNode\n };\n const shouldActivate = handler(event, sensor.options, activationContext);\n\n if (shouldActivate === true) {\n nativeEvent.dndKit = {\n capturedBy: sensor.sensor\n };\n activeRef.current = active;\n instantiateSensor(event, sensor);\n }\n };\n }, [draggableNodes, instantiateSensor]);\n const activators = useCombineActivators(sensors, bindActivatorToSensorInstantiator);\n useSensorSetup(sensors);\n useIsomorphicLayoutEffect(() => {\n if (activeNodeRect && status === Status.Initializing) {\n setStatus(Status.Initialized);\n }\n }, [activeNodeRect, status]);\n useEffect(() => {\n const {\n onDragMove\n } = latestProps.current;\n const {\n active,\n activatorEvent,\n collisions,\n over\n } = sensorContext.current;\n\n if (!active || !activatorEvent) {\n return;\n }\n\n const event = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y\n },\n over\n };\n unstable_batchedUpdates(() => {\n onDragMove == null ? void 0 : onDragMove(event);\n dispatchMonitorEvent({\n type: 'onDragMove',\n event\n });\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollAdjustedTranslate.x, scrollAdjustedTranslate.y]);\n useEffect(() => {\n const {\n active,\n activatorEvent,\n collisions,\n droppableContainers,\n scrollAdjustedTranslate\n } = sensorContext.current;\n\n if (!active || activeRef.current == null || !activatorEvent || !scrollAdjustedTranslate) {\n return;\n }\n\n const {\n onDragOver\n } = latestProps.current;\n const overContainer = droppableContainers.get(overId);\n const over = overContainer && overContainer.rect.current ? {\n id: overContainer.id,\n rect: overContainer.rect.current,\n data: overContainer.data,\n disabled: overContainer.disabled\n } : null;\n const event = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y\n },\n over\n };\n unstable_batchedUpdates(() => {\n setOver(over);\n onDragOver == null ? void 0 : onDragOver(event);\n dispatchMonitorEvent({\n type: 'onDragOver',\n event\n });\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [overId]);\n useIsomorphicLayoutEffect(() => {\n sensorContext.current = {\n activatorEvent,\n active,\n activeNode,\n collisionRect,\n collisions,\n droppableRects,\n draggableNodes,\n draggingNode,\n draggingNodeRect,\n droppableContainers,\n over,\n scrollableAncestors,\n scrollAdjustedTranslate\n };\n activeRects.current = {\n initial: draggingNodeRect,\n translated: collisionRect\n };\n }, [active, activeNode, collisions, collisionRect, draggableNodes, draggingNode, draggingNodeRect, droppableRects, droppableContainers, over, scrollableAncestors, scrollAdjustedTranslate]);\n useAutoScroller({ ...autoScrollOptions,\n delta: translate,\n draggingRect: collisionRect,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects\n });\n const publicContext = useMemo(() => {\n const context = {\n active,\n activeNode,\n activeNodeRect,\n activatorEvent,\n collisions,\n containerNodeRect,\n dragOverlay,\n draggableNodes,\n droppableContainers,\n droppableRects,\n over,\n measureDroppableContainers,\n scrollableAncestors,\n scrollableAncestorRects,\n measuringConfiguration,\n measuringScheduled,\n windowRect\n };\n return context;\n }, [active, activeNode, activeNodeRect, activatorEvent, collisions, containerNodeRect, dragOverlay, draggableNodes, droppableContainers, droppableRects, over, measureDroppableContainers, scrollableAncestors, scrollableAncestorRects, measuringConfiguration, measuringScheduled, windowRect]);\n const internalContext = useMemo(() => {\n const context = {\n activatorEvent,\n activators,\n active,\n activeNodeRect,\n ariaDescribedById: {\n draggable: draggableDescribedById\n },\n dispatch,\n draggableNodes,\n over,\n measureDroppableContainers\n };\n return context;\n }, [activatorEvent, activators, active, activeNodeRect, dispatch, draggableDescribedById, draggableNodes, over, measureDroppableContainers]);\n return React.createElement(DndMonitorContext.Provider, {\n value: registerMonitorListener\n }, React.createElement(InternalContext.Provider, {\n value: internalContext\n }, React.createElement(PublicContext.Provider, {\n value: publicContext\n }, React.createElement(ActiveDraggableContext.Provider, {\n value: transform\n }, children)), React.createElement(RestoreFocus, {\n disabled: (accessibility == null ? void 0 : accessibility.restoreFocus) === false\n })), React.createElement(Accessibility, { ...accessibility,\n hiddenTextDescribedById: draggableDescribedById\n }));\n\n function getAutoScrollerOptions() {\n const activeSensorDisablesAutoscroll = (activeSensor == null ? void 0 : activeSensor.autoScrollEnabled) === false;\n const autoScrollGloballyDisabled = typeof autoScroll === 'object' ? autoScroll.enabled === false : autoScroll === false;\n const enabled = isInitialized && !activeSensorDisablesAutoscroll && !autoScrollGloballyDisabled;\n\n if (typeof autoScroll === 'object') {\n return { ...autoScroll,\n enabled\n };\n }\n\n return {\n enabled\n };\n }\n});\n\nconst NullContext = /*#__PURE__*/createContext(null);\nconst defaultRole = 'button';\nconst ID_PREFIX = 'Draggable';\nfunction useDraggable(_ref) {\n let {\n id,\n data,\n disabled = false,\n attributes\n } = _ref;\n const key = useUniqueId(ID_PREFIX);\n const {\n activators,\n activatorEvent,\n active,\n activeNodeRect,\n ariaDescribedById,\n draggableNodes,\n over\n } = useContext(InternalContext);\n const {\n role = defaultRole,\n roleDescription = 'draggable',\n tabIndex = 0\n } = attributes != null ? attributes : {};\n const isDragging = (active == null ? void 0 : active.id) === id;\n const transform = useContext(isDragging ? ActiveDraggableContext : NullContext);\n const [node, setNodeRef] = useNodeRef();\n const [activatorNode, setActivatorNodeRef] = useNodeRef();\n const listeners = useSyntheticListeners(activators, id);\n const dataRef = useLatestValue(data);\n useIsomorphicLayoutEffect(() => {\n draggableNodes.set(id, {\n id,\n key,\n node,\n activatorNode,\n data: dataRef\n });\n return () => {\n const node = draggableNodes.get(id);\n\n if (node && node.key === key) {\n draggableNodes.delete(id);\n }\n };\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes, id]);\n const memoizedAttributes = useMemo(() => ({\n role,\n tabIndex,\n 'aria-disabled': disabled,\n 'aria-pressed': isDragging && role === defaultRole ? true : undefined,\n 'aria-roledescription': roleDescription,\n 'aria-describedby': ariaDescribedById.draggable\n }), [disabled, role, tabIndex, isDragging, roleDescription, ariaDescribedById.draggable]);\n return {\n active,\n activatorEvent,\n activeNodeRect,\n attributes: memoizedAttributes,\n isDragging,\n listeners: disabled ? undefined : listeners,\n node,\n over,\n setNodeRef,\n setActivatorNodeRef,\n transform\n };\n}\n\nfunction useDndContext() {\n return useContext(PublicContext);\n}\n\nconst ID_PREFIX$1 = 'Droppable';\nconst defaultResizeObserverConfig = {\n timeout: 25\n};\nfunction useDroppable(_ref) {\n let {\n data,\n disabled = false,\n id,\n resizeObserverConfig\n } = _ref;\n const key = useUniqueId(ID_PREFIX$1);\n const {\n active,\n dispatch,\n over,\n measureDroppableContainers\n } = useContext(InternalContext);\n const previous = useRef({\n disabled\n });\n const resizeObserverConnected = useRef(false);\n const rect = useRef(null);\n const callbackId = useRef(null);\n const {\n disabled: resizeObserverDisabled,\n updateMeasurementsFor,\n timeout: resizeObserverTimeout\n } = { ...defaultResizeObserverConfig,\n ...resizeObserverConfig\n };\n const ids = useLatestValue(updateMeasurementsFor != null ? updateMeasurementsFor : id);\n const handleResize = useCallback(() => {\n if (!resizeObserverConnected.current) {\n // ResizeObserver invokes the `handleResize` callback as soon as `observe` is called,\n // assuming the element is rendered and displayed.\n resizeObserverConnected.current = true;\n return;\n }\n\n if (callbackId.current != null) {\n clearTimeout(callbackId.current);\n }\n\n callbackId.current = setTimeout(() => {\n measureDroppableContainers(Array.isArray(ids.current) ? ids.current : [ids.current]);\n callbackId.current = null;\n }, resizeObserverTimeout);\n }, //eslint-disable-next-line react-hooks/exhaustive-deps\n [resizeObserverTimeout]);\n const resizeObserver = useResizeObserver({\n callback: handleResize,\n disabled: resizeObserverDisabled || !active\n });\n const handleNodeChange = useCallback((newElement, previousElement) => {\n if (!resizeObserver) {\n return;\n }\n\n if (previousElement) {\n resizeObserver.unobserve(previousElement);\n resizeObserverConnected.current = false;\n }\n\n if (newElement) {\n resizeObserver.observe(newElement);\n }\n }, [resizeObserver]);\n const [nodeRef, setNodeRef] = useNodeRef(handleNodeChange);\n const dataRef = useLatestValue(data);\n useEffect(() => {\n if (!resizeObserver || !nodeRef.current) {\n return;\n }\n\n resizeObserver.disconnect();\n resizeObserverConnected.current = false;\n resizeObserver.observe(nodeRef.current);\n }, [nodeRef, resizeObserver]);\n useEffect(() => {\n dispatch({\n type: Action.RegisterDroppable,\n element: {\n id,\n key,\n disabled,\n node: nodeRef,\n rect,\n data: dataRef\n }\n });\n return () => dispatch({\n type: Action.UnregisterDroppable,\n key,\n id\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [id]);\n useEffect(() => {\n if (disabled !== previous.current.disabled) {\n dispatch({\n type: Action.SetDroppableDisabled,\n id,\n key,\n disabled\n });\n previous.current.disabled = disabled;\n }\n }, [id, key, disabled, dispatch]);\n return {\n active,\n rect,\n isOver: (over == null ? void 0 : over.id) === id,\n node: nodeRef,\n over,\n setNodeRef\n };\n}\n\nfunction AnimationManager(_ref) {\n let {\n animation,\n children\n } = _ref;\n const [clonedChildren, setClonedChildren] = useState(null);\n const [element, setElement] = useState(null);\n const previousChildren = usePrevious(children);\n\n if (!children && !clonedChildren && previousChildren) {\n setClonedChildren(previousChildren);\n }\n\n useIsomorphicLayoutEffect(() => {\n if (!element) {\n return;\n }\n\n const key = clonedChildren == null ? void 0 : clonedChildren.key;\n const id = clonedChildren == null ? void 0 : clonedChildren.props.id;\n\n if (key == null || id == null) {\n setClonedChildren(null);\n return;\n }\n\n Promise.resolve(animation(id, element)).then(() => {\n setClonedChildren(null);\n });\n }, [animation, clonedChildren, element]);\n return React.createElement(React.Fragment, null, children, clonedChildren ? cloneElement(clonedChildren, {\n ref: setElement\n }) : null);\n}\n\nconst defaultTransform = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1\n};\nfunction NullifiedContextProvider(_ref) {\n let {\n children\n } = _ref;\n return React.createElement(InternalContext.Provider, {\n value: defaultInternalContext\n }, React.createElement(ActiveDraggableContext.Provider, {\n value: defaultTransform\n }, children));\n}\n\nconst baseStyles = {\n position: 'fixed',\n touchAction: 'none'\n};\n\nconst defaultTransition = activatorEvent => {\n const isKeyboardActivator = isKeyboardEvent(activatorEvent);\n return isKeyboardActivator ? 'transform 250ms ease' : undefined;\n};\n\nconst PositionedOverlay = /*#__PURE__*/forwardRef((_ref, ref) => {\n let {\n as,\n activatorEvent,\n adjustScale,\n children,\n className,\n rect,\n style,\n transform,\n transition = defaultTransition\n } = _ref;\n\n if (!rect) {\n return null;\n }\n\n const scaleAdjustedTransform = adjustScale ? transform : { ...transform,\n scaleX: 1,\n scaleY: 1\n };\n const styles = { ...baseStyles,\n width: rect.width,\n height: rect.height,\n top: rect.top,\n left: rect.left,\n transform: CSS.Transform.toString(scaleAdjustedTransform),\n transformOrigin: adjustScale && activatorEvent ? getRelativeTransformOrigin(activatorEvent, rect) : undefined,\n transition: typeof transition === 'function' ? transition(activatorEvent) : transition,\n ...style\n };\n return React.createElement(as, {\n className,\n style: styles,\n ref\n }, children);\n});\n\nconst defaultDropAnimationSideEffects = options => _ref => {\n let {\n active,\n dragOverlay\n } = _ref;\n const originalStyles = {};\n const {\n styles,\n className\n } = options;\n\n if (styles != null && styles.active) {\n for (const [key, value] of Object.entries(styles.active)) {\n if (value === undefined) {\n continue;\n }\n\n originalStyles[key] = active.node.style.getPropertyValue(key);\n active.node.style.setProperty(key, value);\n }\n }\n\n if (styles != null && styles.dragOverlay) {\n for (const [key, value] of Object.entries(styles.dragOverlay)) {\n if (value === undefined) {\n continue;\n }\n\n dragOverlay.node.style.setProperty(key, value);\n }\n }\n\n if (className != null && className.active) {\n active.node.classList.add(className.active);\n }\n\n if (className != null && className.dragOverlay) {\n dragOverlay.node.classList.add(className.dragOverlay);\n }\n\n return function cleanup() {\n for (const [key, value] of Object.entries(originalStyles)) {\n active.node.style.setProperty(key, value);\n }\n\n if (className != null && className.active) {\n active.node.classList.remove(className.active);\n }\n };\n};\n\nconst defaultKeyframeResolver = _ref2 => {\n let {\n transform: {\n initial,\n final\n }\n } = _ref2;\n return [{\n transform: CSS.Transform.toString(initial)\n }, {\n transform: CSS.Transform.toString(final)\n }];\n};\n\nconst defaultDropAnimationConfiguration = {\n duration: 250,\n easing: 'ease',\n keyframes: defaultKeyframeResolver,\n sideEffects: /*#__PURE__*/defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0'\n }\n }\n })\n};\nfunction useDropAnimation(_ref3) {\n let {\n config,\n draggableNodes,\n droppableContainers,\n measuringConfiguration\n } = _ref3;\n return useEvent((id, node) => {\n if (config === null) {\n return;\n }\n\n const activeDraggable = draggableNodes.get(id);\n\n if (!activeDraggable) {\n return;\n }\n\n const activeNode = activeDraggable.node.current;\n\n if (!activeNode) {\n return;\n }\n\n const measurableNode = getMeasurableNode(node);\n\n if (!measurableNode) {\n return;\n }\n\n const {\n transform\n } = getWindow(node).getComputedStyle(node);\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return;\n }\n\n const animation = typeof config === 'function' ? config : createDefaultDropAnimation(config);\n scrollIntoViewIfNeeded(activeNode, measuringConfiguration.draggable.measure);\n return animation({\n active: {\n id,\n data: activeDraggable.data,\n node: activeNode,\n rect: measuringConfiguration.draggable.measure(activeNode)\n },\n draggableNodes,\n dragOverlay: {\n node,\n rect: measuringConfiguration.dragOverlay.measure(measurableNode)\n },\n droppableContainers,\n measuringConfiguration,\n transform: parsedTransform\n });\n });\n}\n\nfunction createDefaultDropAnimation(options) {\n const {\n duration,\n easing,\n sideEffects,\n keyframes\n } = { ...defaultDropAnimationConfiguration,\n ...options\n };\n return _ref4 => {\n let {\n active,\n dragOverlay,\n transform,\n ...rest\n } = _ref4;\n\n if (!duration) {\n // Do not animate if animation duration is zero.\n return;\n }\n\n const delta = {\n x: dragOverlay.rect.left - active.rect.left,\n y: dragOverlay.rect.top - active.rect.top\n };\n const scale = {\n scaleX: transform.scaleX !== 1 ? active.rect.width * transform.scaleX / dragOverlay.rect.width : 1,\n scaleY: transform.scaleY !== 1 ? active.rect.height * transform.scaleY / dragOverlay.rect.height : 1\n };\n const finalTransform = {\n x: transform.x - delta.x,\n y: transform.y - delta.y,\n ...scale\n };\n const animationKeyframes = keyframes({ ...rest,\n active,\n dragOverlay,\n transform: {\n initial: transform,\n final: finalTransform\n }\n });\n const [firstKeyframe] = animationKeyframes;\n const lastKeyframe = animationKeyframes[animationKeyframes.length - 1];\n\n if (JSON.stringify(firstKeyframe) === JSON.stringify(lastKeyframe)) {\n // The start and end keyframes are the same, infer that there is no animation needed.\n return;\n }\n\n const cleanup = sideEffects == null ? void 0 : sideEffects({\n active,\n dragOverlay,\n ...rest\n });\n const animation = dragOverlay.node.animate(animationKeyframes, {\n duration,\n easing,\n fill: 'forwards'\n });\n return new Promise(resolve => {\n animation.onfinish = () => {\n cleanup == null ? void 0 : cleanup();\n resolve();\n };\n });\n };\n}\n\nlet key = 0;\nfunction useKey(id) {\n return useMemo(() => {\n if (id == null) {\n return;\n }\n\n key++;\n return key;\n }, [id]);\n}\n\nconst DragOverlay = /*#__PURE__*/React.memo(_ref => {\n let {\n adjustScale = false,\n children,\n dropAnimation: dropAnimationConfig,\n style,\n transition,\n modifiers,\n wrapperElement = 'div',\n className,\n zIndex = 999\n } = _ref;\n const {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggableNodes,\n droppableContainers,\n dragOverlay,\n over,\n measuringConfiguration,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect\n } = useDndContext();\n const transform = useContext(ActiveDraggableContext);\n const key = useKey(active == null ? void 0 : active.id);\n const modifiedTransform = applyModifiers(modifiers, {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect: dragOverlay.rect,\n over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n transform,\n windowRect\n });\n const initialRect = useInitialValue(activeNodeRect);\n const dropAnimation = useDropAnimation({\n config: dropAnimationConfig,\n draggableNodes,\n droppableContainers,\n measuringConfiguration\n }); // We need to wait for the active node to be measured before connecting the drag overlay ref\n // otherwise collisions can be computed against a mispositioned drag overlay\n\n const ref = initialRect ? dragOverlay.setRef : undefined;\n return React.createElement(NullifiedContextProvider, null, React.createElement(AnimationManager, {\n animation: dropAnimation\n }, active && key ? React.createElement(PositionedOverlay, {\n key: key,\n id: active.id,\n ref: ref,\n as: wrapperElement,\n activatorEvent: activatorEvent,\n adjustScale: adjustScale,\n className: className,\n transition: transition,\n rect: initialRect,\n style: {\n zIndex,\n ...style\n },\n transform: modifiedTransform\n }, children) : null));\n});\n\nexport { AutoScrollActivator, DndContext, DragOverlay, KeyboardCode, KeyboardSensor, MeasuringFrequency, MeasuringStrategy, MouseSensor, PointerSensor, TouchSensor, TraversalOrder, applyModifiers, closestCenter, closestCorners, defaultAnnouncements, defaultCoordinates, defaultDropAnimationConfiguration as defaultDropAnimation, defaultDropAnimationSideEffects, defaultKeyboardCoordinateGetter, defaultScreenReaderInstructions, getClientRect, getFirstCollision, getScrollableAncestors, pointerWithin, rectIntersection, useDndContext, useDndMonitor, useDraggable, useDroppable, useSensor, useSensors };\n//# sourceMappingURL=core.esm.js.map\n","import { createContext, useContext, useMemo } from \"react\";\r\nimport { SchedulerBaseSettings } from \"../Scheduler\";\r\n\r\ninterface SchedulerContextType extends SchedulerBaseSettings {\r\n\tdates: Date[];\r\n\thourHeight: number;\r\n\ttimeSnap: number;\r\n}\r\n\r\nconst SchedulerContext = createContext<SchedulerContextType | undefined>(undefined);\r\n\r\nexport const SchedulerProvider = ({ children, value }: { children: React.ReactNode; value: SchedulerContextType }) => {\r\n\treturn <SchedulerContext.Provider value={value}>{children}</SchedulerContext.Provider>;\r\n};\r\n\r\ninterface UseSchedulerProps {\r\n\t/**\r\n\t * Размер сетки для перетаскивания и ресайза события.\r\n\t * Вычисляется из hourHeight и timeSnap.\r\n\t */\r\n\tgridSize: number;\r\n\t/**\r\n\t * Преобразование пикселей в минуты.\r\n\t * Используется для вычисления времени при перетаскивании и ресайзе события.\r\n\t */\r\n\tpxToMinutes: (px: number) => number;\r\n\t/**\r\n\t * Округление времени до ближайшего времени с учетом timeSnap.\r\n\t */\r\n\tsnapToTime: (time: Date) => Date;\r\n\t/**\r\n\t * Преобразование минут в пиксели.\r\n\t */\r\n\tminInPx: (min: number) => number;\r\n}\r\n\r\nexport const useScheduler = (): UseSchedulerProps & SchedulerContextType => {\r\n\tconst context = useContext(SchedulerContext);\r\n\tif (context === undefined) {\r\n\t\tthrow new Error(\"useScheduler must be used within a SchedulerProvider\");\r\n\t}\r\n\r\n\tconst { hourHeight, timeSnap } = context;\r\n\tconst props = useMemo(() => {\r\n\t\treturn {\r\n\t\t\tgridSize: (hourHeight / 60) * timeSnap,\r\n\t\t\tpxToMinutes: (px: number) => {\r\n\t\t\t\treturn Math.round((px / hourHeight) * 60);\r\n\t\t\t},\r\n\t\t\tsnapToTime: (time: Date) => {\r\n\t\t\t\tconst minutes = time.getMinutes();\r\n\t\t\t\treturn new Date(\r\n\t\t\t\t\ttime.getFullYear(),\r\n\t\t\t\t\ttime.getMonth(),\r\n\t\t\t\t\ttime.getDate(),\r\n\t\t\t\t\ttime.getHours(),\r\n\t\t\t\t\tMath.round(minutes / timeSnap) * timeSnap\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t\tminInPx: (min: number) => {\r\n\t\t\t\treturn min * (hourHeight / 60);\r\n\t\t\t}\r\n\t\t};\r\n\t}, [hourHeight, timeSnap]);\r\n\r\n\treturn {\r\n\t\t...context,\r\n\t\t...props\r\n\t};\r\n};\r\n","type RoundDirection = \"up\" | \"down\";\r\n\r\n/**\r\n * Округляет дату до ближайшего интервала snap\r\n * @param date - Дата для округления\r\n * @param snap - Интервал округления в минутах\r\n * @param round - Направление округления. По умолчанию ближайшее.\r\n * @returns Округленная дата\r\n */\r\nexport const roundDateTime = (date: Date, snap: number, round?: RoundDirection) => {\r\n\tconst newDate = new Date(date);\r\n\tconst minutes = newDate.getMinutes();\r\n\tlet roundedMinutes: number;\r\n\r\n\tswitch (round) {\r\n\t\tcase \"up\":\r\n\t\t\troundedMinutes = Math.ceil(minutes / snap) * snap;\r\n\t\t\tbreak;\r\n\t\tcase \"down\":\r\n\t\t\troundedMinutes = Math.floor(minutes / snap) * snap;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\troundedMinutes = Math.round(minutes / snap) * snap;\r\n\t}\r\n\tnewDate.setMinutes(roundedMinutes, 0, 0);\r\n\treturn newDate;\r\n};\r\n","import { roundDateTime } from \"@/lib/utils/date/roundDateTime\";\r\nimport { ClientRect } from \"@dnd-kit/core\";\r\nimport { IScheduledEvent } from \"../types\";\r\n\r\nexport const DAY_COLUMN_DATA_ATTRIBUTE = \"data-day-column\";\r\n\r\nexport function getDateFromClick(event: React.MouseEvent<HTMLDivElement>, day: Date, timeSnap: number) {\r\n\tconst target = event.target as HTMLDivElement;\r\n\tif (!target) throw new Error(\"Target not found\");\r\n\tconst dayColumnDiv = target.closest(`[${DAY_COLUMN_DATA_ATTRIBUTE}]`);\r\n\tif (!dayColumnDiv) throw new Error(\"Day column not found\");\r\n\r\n\tconst rect = dayColumnDiv.getBoundingClientRect();\r\n\r\n\treturn getDateFromY(event.clientY, rect, day, timeSnap);\r\n}\r\n\r\nexport function getDateFromY(positionY: number, targetRect: ClientRect, day: Date, timeSnap: number) {\r\n\tconst clickY = positionY - targetRect.top;\r\n\tconst percentageOfDay = clickY / targetRect.height;\r\n\treturn percentageToDate(percentageOfDay, day, timeSnap);\r\n}\r\n\r\n/**\r\n * Возвращает дату со временем, соответствующим проценту дня\r\n */\r\nfunction percentageToDate(percentageOfDay: number, day: Date, timeSnap: number) {\r\n\t// Преобразуем процент дня в минуты (24 часа * 60 минут = 1440 минут)\r\n\tconst minutesFromMidnight = Math.floor(percentageOfDay * 1440);\r\n\tconst hours = Math.floor(minutesFromMidnight / 60);\r\n\tconst minutes = minutesFromMidnight % 60;\r\n\r\n\t// Создаем новую дату с выбранным временем\r\n\tconst selectedDate = new Date(day);\r\n\tselectedDate.setHours(hours, minutes, 0, 0);\r\n\r\n\treturn roundDateTime(selectedDate, timeSnap);\r\n}\r\n\r\n/**\r\n * Возвращает процент времени от начала дня до текущего момента\r\n */\r\nexport function getCurrentTimePercentage() {\r\n\tconst now = new Date();\r\n\tconst minutes = now.getHours() * 60 + now.getMinutes();\r\n\treturn `${(minutes / 1440) * 100}%`;\r\n}\r\n\r\n/**\r\n * Группирует события, которые пересекаются по времени\r\n */\r\nexport function groupCrossingEvents(events: IScheduledEvent[]): IScheduledEvent[][] {\r\n\tconst groups: IScheduledEvent[][] = [];\r\n\r\n\tevents.sort((a, b) => {\r\n\t\treturn a.startDate.getTime() - b.startDate.getTime();\r\n\t});\r\n\r\n\tfor (const event of events) {\r\n\t\tconst group = groups.find((group) => group.some((e) => isEventCrossing(e, event)));\r\n\t\tif (group) {\r\n\t\t\tgroup.push(event);\r\n\t\t} else {\r\n\t\t\tgroups.push([event]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn groups;\r\n}\r\n\r\nfunction isEventCrossing(event1: IScheduledEvent, event2: IScheduledEvent) {\r\n\treturn event1.startDate < event2.endDate && event1.endDate > event2.startDate;\r\n}\r\n\r\n/**\r\n * Позиция элемента\r\n */\r\ninterface EventPosition {\r\n\ttop: string;\r\n\tleft: string;\r\n\twidth: string;\r\n}\r\n\r\n/**\r\n * Возвращает данные для позиционирования событий на день\r\n */\r\nexport function getEventPositions(events: IScheduledEvent[], hourHeight: number): Map<string | number, EventPosition> {\r\n\tconst positions = new Map<string | number, EventPosition>();\r\n\tconst groupedEvents = groupCrossingEvents(events);\r\n\tfor (const group of groupedEvents) {\r\n\t\tfor (const [index, event] of group.entries()) {\r\n\t\t\tpositions.set(event.id, {\r\n\t\t\t\ttop: getEventTop(event, hourHeight) + \"px\",\r\n\t\t\t\tleft: `${(100 / group.length) * index}%`,\r\n\t\t\t\twidth: `${(100 / group.length) * (index + 1) - (100 / group.length) * index}%`\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\treturn positions;\r\n}\r\n\r\nfunction getEventLengthInMin(event: IScheduledEvent) {\r\n\treturn (event.endDate.getTime() - event.startDate.getTime()) / 1000 / 60;\r\n}\r\n\r\nfunction oneMinInPx(hourHeight: number) {\r\n\treturn hourHeight / 60;\r\n}\r\n\r\n/**\r\n * Возвращает высоту события в пикселях\r\n */\r\nexport function getEventHeight(event: IScheduledEvent, hourHeight: number) {\r\n\treturn getEventLengthInMin(event) * oneMinInPx(hourHeight);\r\n}\r\n\r\n/**\r\n * Возвращает верхний отступ события в пикселях\r\n */\r\nfunction getEventTop(event: IScheduledEvent, hourHeight: number) {\r\n\treturn getMinutesFromStartOfDay(event.startDate) * oneMinInPx(hourHeight);\r\n}\r\n\r\n/**\r\n * Возвращает количество минут, прошедших с начала дня\r\n */\r\nexport function getMinutesFromStartOfDay(date: Date): number {\r\n\treturn date.getHours() * 60 + date.getMinutes();\r\n}\r\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { memo, useCallback, useMemo } from 'react';\nvar rowSizeBase = {\n width: '100%',\n height: '10px',\n top: '0px',\n left: '0px',\n cursor: 'row-resize',\n};\nvar colSizeBase = {\n width: '10px',\n height: '100%',\n top: '0px',\n left: '0px',\n cursor: 'col-resize',\n};\nvar edgeBase = {\n width: '20px',\n height: '20px',\n position: 'absolute',\n zIndex: 1,\n};\nvar styles = {\n top: __assign(__assign({}, rowSizeBase), { top: '-5px' }),\n right: __assign(__assign({}, colSizeBase), { left: undefined, right: '-5px' }),\n bottom: __assign(__assign({}, rowSizeBase), { top: undefined, bottom: '-5px' }),\n left: __assign(__assign({}, colSizeBase), { left: '-5px' }),\n topRight: __assign(__assign({}, edgeBase), { right: '-10px', top: '-10px', cursor: 'ne-resize' }),\n bottomRight: __assign(__assign({}, edgeBase), { right: '-10px', bottom: '-10px', cursor: 'se-resize' }),\n bottomLeft: __assign(__assign({}, edgeBase), { left: '-10px', bottom: '-10px', cursor: 'sw-resize' }),\n topLeft: __assign(__assign({}, edgeBase), { left: '-10px', top: '-10px', cursor: 'nw-resize' }),\n};\nexport var Resizer = memo(function (props) {\n var onResizeStart = props.onResizeStart, direction = props.direction, children = props.children, replaceStyles = props.replaceStyles, className = props.className;\n var onMouseDown = useCallback(function (e) {\n onResizeStart(e, direction);\n }, [onResizeStart, direction]);\n var onTouchStart = useCallback(function (e) {\n onResizeStart(e, direction);\n }, [onResizeStart, direction]);\n var style = useMemo(function () {\n return __assign(__assign({ position: 'absolute', userSelect: 'none' }, styles[direction]), (replaceStyles !== null && replaceStyles !== void 0 ? replaceStyles : {}));\n }, [replaceStyles, direction]);\n return (_jsx(\"div\", { className: className || undefined, style: style, onMouseDown: onMouseDown, onTouchStart: onTouchStart, children: children }));\n});\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { PureComponent } from 'react';\nimport { flushSync } from 'react-dom';\nimport { Resizer } from './resizer';\nvar DEFAULT_SIZE = {\n width: 'auto',\n height: 'auto',\n};\nvar clamp = function (n, min, max) { return Math.max(Math.min(n, max), min); };\nvar snap = function (n, size, gridGap) {\n var v = Math.round(n / size);\n return v * size + gridGap * (v - 1);\n};\nvar hasDirection = function (dir, target) {\n return new RegExp(dir, 'i').test(target);\n};\n// INFO: In case of window is a Proxy and does not porxy Events correctly, use isTouchEvent & isMouseEvent to distinguish event type instead of `instanceof`.\nvar isTouchEvent = function (event) {\n return Boolean(event.touches && event.touches.length);\n};\nvar isMouseEvent = function (event) {\n return Boolean((event.clientX || event.clientX === 0) &&\n (event.clientY || event.clientY === 0));\n};\nvar findClosestSnap = function (n, snapArray, snapGap) {\n if (snapGap === void 0) { snapGap = 0; }\n var closestGapIndex = snapArray.reduce(function (prev, curr, index) { return (Math.abs(curr - n) < Math.abs(snapArray[prev] - n) ? index : prev); }, 0);\n var gap = Math.abs(snapArray[closestGapIndex] - n);\n return snapGap === 0 || gap < snapGap ? snapArray[closestGapIndex] : n;\n};\nvar getStringSize = function (n) {\n n = n.toString();\n if (n === 'auto') {\n return n;\n }\n if (n.endsWith('px')) {\n return n;\n }\n if (n.endsWith('%')) {\n return n;\n }\n if (n.endsWith('vh')) {\n return n;\n }\n if (n.endsWith('vw')) {\n return n;\n }\n if (n.endsWith('vmax')) {\n return n;\n }\n if (n.endsWith('vmin')) {\n return n;\n }\n return \"\".concat(n, \"px\");\n};\nvar getPixelSize = function (size, parentSize, innerWidth, innerHeight) {\n if (size && typeof size === 'string') {\n if (size.endsWith('px')) {\n return Number(size.replace('px', ''));\n }\n if (size.endsWith('%')) {\n var ratio = Number(size.replace('%', '')) / 100;\n return parentSize * ratio;\n }\n if (size.endsWith('vw')) {\n var ratio = Number(size.replace('vw', '')) / 100;\n return innerWidth * ratio;\n }\n if (size.endsWith('vh')) {\n var ratio = Number(size.replace('vh', '')) / 100;\n return innerHeight * ratio;\n }\n }\n return size;\n};\nvar calculateNewMax = function (parentSize, innerWidth, innerHeight, maxWidth, maxHeight, minWidth, minHeight) {\n maxWidth = getPixelSize(maxWidth, parentSize.width, innerWidth, innerHeight);\n maxHeight = getPixelSize(maxHeight, parentSize.height, innerWidth, innerHeight);\n minWidth = getPixelSize(minWidth, parentSize.width, innerWidth, innerHeight);\n minHeight = getPixelSize(minHeight, parentSize.height, innerWidth, innerHeight);\n return {\n maxWidth: typeof maxWidth === 'undefined' ? undefined : Number(maxWidth),\n maxHeight: typeof maxHeight === 'undefined' ? undefined : Number(maxHeight),\n minWidth: typeof minWidth === 'undefined' ? undefined : Number(minWidth),\n minHeight: typeof minHeight === 'undefined' ? undefined : Number(minHeight),\n };\n};\n/**\n * transform T | [T, T] to [T, T]\n * @param val\n * @returns\n */\n// tslint:disable-next-line\nvar normalizeToPair = function (val) { return (Array.isArray(val) ? val : [val, val]); };\nvar definedProps = [\n 'as',\n 'ref',\n 'style',\n 'className',\n 'grid',\n 'gridGap',\n 'snap',\n 'bounds',\n 'boundsByDirection',\n 'size',\n 'defaultSize',\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight',\n 'lockAspectRatio',\n 'lockAspectRatioExtraWidth',\n 'lockAspectRatioExtraHeight',\n 'enable',\n 'handleStyles',\n 'handleClasses',\n 'handleWrapperStyle',\n 'handleWrapperClass',\n 'children',\n 'onResizeStart',\n 'onResize',\n 'onResizeStop',\n 'handleComponent',\n 'scale',\n 'resizeRatio',\n 'snapGap',\n];\n// HACK: This class is used to calculate % size.\nvar baseClassName = '__resizable_base__';\nvar Resizable = /** @class */ (function (_super) {\n __extends(Resizable, _super);\n function Resizable(props) {\n var _a, _b, _c, _d;\n var _this = _super.call(this, props) || this;\n _this.ratio = 1;\n _this.resizable = null;\n // For parent boundary\n _this.parentLeft = 0;\n _this.parentTop = 0;\n // For boundary\n _this.resizableLeft = 0;\n _this.resizableRight = 0;\n _this.resizableTop = 0;\n _this.resizableBottom = 0;\n // For target boundary\n _this.targetLeft = 0;\n _this.targetTop = 0;\n _this.delta = {\n width: 0,\n height: 0,\n };\n _this.appendBase = function () {\n if (!_this.resizable || !_this.window) {\n return null;\n }\n var parent = _this.parentNode;\n if (!parent) {\n return null;\n }\n var element = _this.window.document.createElement('div');\n element.style.width = '100%';\n element.style.height = '100%';\n element.style.position = 'absolute';\n element.style.transform = 'scale(0, 0)';\n element.style.left = '0';\n element.style.flex = '0 0 100%';\n if (element.classList) {\n element.classList.add(baseClassName);\n }\n else {\n element.className += baseClassName;\n }\n parent.appendChild(element);\n return element;\n };\n _this.removeBase = function (base) {\n var parent = _this.parentNode;\n if (!parent) {\n return;\n }\n parent.removeChild(base);\n };\n _this.state = {\n isResizing: false,\n width: (_b = (_a = _this.propsSize) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : 'auto',\n height: (_d = (_c = _this.propsSize) === null || _c === void 0 ? void 0 : _c.height) !== null && _d !== void 0 ? _d : 'auto',\n direction: 'right',\n original: {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n },\n backgroundStyle: {\n height: '100%',\n width: '100%',\n backgroundColor: 'rgba(0,0,0,0)',\n cursor: 'auto',\n opacity: 0,\n position: 'fixed',\n zIndex: 9999,\n top: '0',\n left: '0',\n bottom: '0',\n right: '0',\n },\n flexBasis: undefined,\n };\n _this.onResizeStart = _this.onResizeStart.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.onMouseUp = _this.onMouseUp.bind(_this);\n return _this;\n }\n Object.defineProperty(Resizable.prototype, \"parentNode\", {\n get: function () {\n if (!this.resizable) {\n return null;\n }\n return this.resizable.parentNode;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"window\", {\n get: function () {\n if (!this.resizable) {\n return null;\n }\n if (!this.resizable.ownerDocument) {\n return null;\n }\n return this.resizable.ownerDocument.defaultView;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"propsSize\", {\n get: function () {\n return this.props.size || this.props.defaultSize || DEFAULT_SIZE;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"size\", {\n get: function () {\n var width = 0;\n var height = 0;\n if (this.resizable && this.window) {\n var orgWidth = this.resizable.offsetWidth;\n var orgHeight = this.resizable.offsetHeight;\n // HACK: Set position `relative` to get parent size.\n // This is because when re-resizable set `absolute`, I can not get base width correctly.\n var orgPosition = this.resizable.style.position;\n if (orgPosition !== 'relative') {\n this.resizable.style.position = 'relative';\n }\n // INFO: Use original width or height if set auto.\n width = this.resizable.style.width !== 'auto' ? this.resizable.offsetWidth : orgWidth;\n height = this.resizable.style.height !== 'auto' ? this.resizable.offsetHeight : orgHeight;\n // Restore original position\n this.resizable.style.position = orgPosition;\n }\n return { width: width, height: height };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"sizeStyle\", {\n get: function () {\n var _this = this;\n var size = this.props.size;\n var getSize = function (key) {\n var _a;\n if (typeof _this.state[key] === 'undefined' || _this.state[key] === 'auto') {\n return 'auto';\n }\n if (_this.propsSize && _this.propsSize[key] && ((_a = _this.propsSize[key]) === null || _a === void 0 ? void 0 : _a.toString().endsWith('%'))) {\n if (_this.state[key].toString().endsWith('%')) {\n return _this.state[key].toString();\n }\n var parentSize = _this.getParentSize();\n var value = Number(_this.state[key].toString().replace('px', ''));\n var percent = (value / parentSize[key]) * 100;\n return \"\".concat(percent, \"%\");\n }\n return getStringSize(_this.state[key]);\n };\n var width = size && typeof size.width !== 'undefined' && !this.state.isResizing\n ? getStringSize(size.width)\n : getSize('width');\n var height = size && typeof size.height !== 'undefined' && !this.state.isResizing\n ? getStringSize(size.height)\n : getSize('height');\n return { width: width, height: height };\n },\n enumerable: false,\n configurable: true\n });\n Resizable.prototype.getParentSize = function () {\n if (!this.parentNode) {\n if (!this.window) {\n return { width: 0, height: 0 };\n }\n return { width: this.window.innerWidth, height: this.window.innerHeight };\n }\n var base = this.appendBase();\n if (!base) {\n return { width: 0, height: 0 };\n }\n // INFO: To calculate parent width with flex layout\n var wrapChanged = false;\n var wrap = this.parentNode.style.flexWrap;\n if (wrap !== 'wrap') {\n wrapChanged = true;\n this.parentNode.style.flexWrap = 'wrap';\n // HACK: Use relative to get parent padding size\n }\n base.style.position = 'relative';\n base.style.minWidth = '100%';\n base.style.minHeight = '100%';\n var size = {\n width: base.offsetWidth,\n height: base.offsetHeight,\n };\n if (wrapChanged) {\n this.parentNode.style.flexWrap = wrap;\n }\n this.removeBase(base);\n return size;\n };\n Resizable.prototype.bindEvents = function () {\n if (this.window) {\n this.window.addEventListener('mouseup', this.onMouseUp);\n this.window.addEventListener('mousemove', this.onMouseMove);\n this.window.addEventListener('mouseleave', this.onMouseUp);\n this.window.addEventListener('touchmove', this.onMouseMove, {\n capture: true,\n passive: false,\n });\n this.window.addEventListener('touchend', this.onMouseUp);\n }\n };\n Resizable.prototype.unbindEvents = function () {\n if (this.window) {\n this.window.removeEventListener('mouseup', this.onMouseUp);\n this.window.removeEventListener('mousemove', this.onMouseMove);\n this.window.removeEventListener('mouseleave', this.onMouseUp);\n this.window.removeEventListener('touchmove', this.onMouseMove, true);\n this.window.removeEventListener('touchend', this.onMouseUp);\n }\n };\n Resizable.prototype.componentDidMount = function () {\n if (!this.resizable || !this.window) {\n return;\n }\n var computedStyle = this.window.getComputedStyle(this.resizable);\n this.setState({\n width: this.state.width || this.size.width,\n height: this.state.height || this.size.height,\n flexBasis: computedStyle.flexBasis !== 'auto' ? computedStyle.flexBasis : undefined,\n });\n };\n Resizable.prototype.componentWillUnmount = function () {\n if (this.window) {\n this.unbindEvents();\n }\n };\n Resizable.prototype.createSizeForCssProperty = function (newSize, kind) {\n var propsSize = this.propsSize && this.propsSize[kind];\n return this.state[kind] === 'auto' &&\n this.state.original[kind] === newSize &&\n (typeof propsSize === 'undefined' || propsSize === 'auto')\n ? 'auto'\n : newSize;\n };\n Resizable.prototype.calculateNewMaxFromBoundary = function (maxWidth, maxHeight) {\n var boundsByDirection = this.props.boundsByDirection;\n var direction = this.state.direction;\n var widthByDirection = boundsByDirection && hasDirection('left', direction);\n var heightByDirection = boundsByDirection && hasDirection('top', direction);\n var boundWidth;\n var boundHeight;\n if (this.props.bounds === 'parent') {\n var parent_1 = this.parentNode;\n if (parent_1) {\n boundWidth = widthByDirection\n ? this.resizableRight - this.parentLeft\n : parent_1.offsetWidth + (this.parentLeft - this.resizableLeft);\n boundHeight = heightByDirection\n ? this.resizableBottom - this.parentTop\n : parent_1.offsetHeight + (this.parentTop - this.resizableTop);\n }\n }\n else if (this.props.bounds === 'window') {\n if (this.window) {\n boundWidth = widthByDirection ? this.resizableRight : this.window.innerWidth - this.resizableLeft;\n boundHeight = heightByDirection ? this.resizableBottom : this.window.innerHeight - this.resizableTop;\n }\n }\n else if (this.props.bounds) {\n boundWidth = widthByDirection\n ? this.resizableRight - this.targetLeft\n : this.props.bounds.offsetWidth + (this.targetLeft - this.resizableLeft);\n boundHeight = heightByDirection\n ? this.resizableBottom - this.targetTop\n : this.props.bounds.offsetHeight + (this.targetTop - this.resizableTop);\n }\n if (boundWidth && Number.isFinite(boundWidth)) {\n maxWidth = maxWidth && maxWidth < boundWidth ? maxWidth : boundWidth;\n }\n if (boundHeight && Number.isFinite(boundHeight)) {\n maxHeight = maxHeight && maxHeight < boundHeight ? maxHeight : boundHeight;\n }\n return { maxWidth: maxWidth, maxHeight: maxHeight };\n };\n Resizable.prototype.calculateNewSizeFromDirection = function (clientX, clientY) {\n var scale = this.props.scale || 1;\n var _a = normalizeToPair(this.props.resizeRatio || 1), resizeRatioX = _a[0], resizeRatioY = _a[1];\n var _b = this.state, direction = _b.direction, original = _b.original;\n var _c = this.props, lockAspectRatio = _c.lockAspectRatio, lockAspectRatioExtraHeight = _c.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _c.lockAspectRatioExtraWidth;\n var newWidth = original.width;\n var newHeight = original.height;\n var extraHeight = lockAspectRatioExtraHeight || 0;\n var extraWidth = lockAspectRatioExtraWidth || 0;\n if (hasDirection('right', direction)) {\n newWidth = original.width + ((clientX - original.x) * resizeRatioX) / scale;\n if (lockAspectRatio) {\n newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n }\n }\n if (hasDirection('left', direction)) {\n newWidth = original.width - ((clientX - original.x) * resizeRatioX) / scale;\n if (lockAspectRatio) {\n newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n }\n }\n if (hasDirection('bottom', direction)) {\n newHeight = original.height + ((clientY - original.y) * resizeRatioY) / scale;\n if (lockAspectRatio) {\n newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n }\n }\n if (hasDirection('top', direction)) {\n newHeight = original.height - ((clientY - original.y) * resizeRatioY) / scale;\n if (lockAspectRatio) {\n newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n }\n }\n return { newWidth: newWidth, newHeight: newHeight };\n };\n Resizable.prototype.calculateNewSizeFromAspectRatio = function (newWidth, newHeight, max, min) {\n var _a = this.props, lockAspectRatio = _a.lockAspectRatio, lockAspectRatioExtraHeight = _a.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _a.lockAspectRatioExtraWidth;\n var computedMinWidth = typeof min.width === 'undefined' ? 10 : min.width;\n var computedMaxWidth = typeof max.width === 'undefined' || max.width < 0 ? newWidth : max.width;\n var computedMinHeight = typeof min.height === 'undefined' ? 10 : min.height;\n var computedMaxHeight = typeof max.height === 'undefined' || max.height < 0 ? newHeight : max.height;\n var extraHeight = lockAspectRatioExtraHeight || 0;\n var extraWidth = lockAspectRatioExtraWidth || 0;\n if (lockAspectRatio) {\n var extraMinWidth = (computedMinHeight - extraHeight) * this.ratio + extraWidth;\n var extraMaxWidth = (computedMaxHeight - extraHeight) * this.ratio + extraWidth;\n var extraMinHeight = (computedMinWidth - extraWidth) / this.ratio + extraHeight;\n var extraMaxHeight = (computedMaxWidth - extraWidth) / this.ratio + extraHeight;\n var lockedMinWidth = Math.max(computedMinWidth, extraMinWidth);\n var lockedMaxWidth = Math.min(computedMaxWidth, extraMaxWidth);\n var lockedMinHeight = Math.max(computedMinHeight, extraMinHeight);\n var lockedMaxHeight = Math.min(computedMaxHeight, extraMaxHeight);\n newWidth = clamp(newWidth, lockedMinWidth, lockedMaxWidth);\n newHeight = clamp(newHeight, lockedMinHeight, lockedMaxHeight);\n }\n else {\n newWidth = clamp(newWidth, computedMinWidth, computedMaxWidth);\n newHeight = clamp(newHeight, computedMinHeight, computedMaxHeight);\n }\n return { newWidth: newWidth, newHeight: newHeight };\n };\n Resizable.prototype.setBoundingClientRect = function () {\n var adjustedScale = 1 / (this.props.scale || 1);\n // For parent boundary\n if (this.props.bounds === 'parent') {\n var parent_2 = this.parentNode;\n if (parent_2) {\n var parentRect = parent_2.getBoundingClientRect();\n this.parentLeft = parentRect.left * adjustedScale;\n this.parentTop = parentRect.top * adjustedScale;\n }\n }\n // For target(html element) boundary\n if (this.props.bounds && typeof this.props.bounds !== 'string') {\n var targetRect = this.props.bounds.getBoundingClientRect();\n this.targetLeft = targetRect.left * adjustedScale;\n this.targetTop = targetRect.top * adjustedScale;\n }\n // For boundary\n if (this.resizable) {\n var _a = this.resizable.getBoundingClientRect(), left = _a.left, top_1 = _a.top, right = _a.right, bottom = _a.bottom;\n this.resizableLeft = left * adjustedScale;\n this.resizableRight = right * adjustedScale;\n this.resizableTop = top_1 * adjustedScale;\n this.resizableBottom = bottom * adjustedScale;\n }\n };\n Resizable.prototype.onResizeStart = function (event, direction) {\n if (!this.resizable || !this.window) {\n return;\n }\n var clientX = 0;\n var clientY = 0;\n if (event.nativeEvent && isMouseEvent(event.nativeEvent)) {\n clientX = event.nativeEvent.clientX;\n clientY = event.nativeEvent.clientY;\n }\n else if (event.nativeEvent && isTouchEvent(event.nativeEvent)) {\n clientX = event.nativeEvent.touches[0].clientX;\n clientY = event.nativeEvent.touches[0].clientY;\n }\n if (this.props.onResizeStart) {\n if (this.resizable) {\n var startResize = this.props.onResizeStart(event, direction, this.resizable);\n if (startResize === false) {\n return;\n }\n }\n }\n // Fix #168\n if (this.props.size) {\n if (typeof this.props.size.height !== 'undefined' && this.props.size.height !== this.state.height) {\n this.setState({ height: this.props.size.height });\n }\n if (typeof this.props.size.width !== 'undefined' && this.props.size.width !== this.state.width) {\n this.setState({ width: this.props.size.width });\n }\n }\n // For lockAspectRatio case\n this.ratio =\n typeof this.props.lockAspectRatio === 'number' ? this.props.lockAspectRatio : this.size.width / this.size.height;\n var flexBasis;\n var computedStyle = this.window.getComputedStyle(this.resizable);\n if (computedStyle.flexBasis !== 'auto') {\n var parent_3 = this.parentNode;\n if (parent_3) {\n var dir = this.window.getComputedStyle(parent_3).flexDirection;\n this.flexDir = dir.startsWith('row') ? 'row' : 'column';\n flexBasis = computedStyle.flexBasis;\n }\n }\n // For boundary\n this.setBoundingClientRect();\n this.bindEvents();\n var state = {\n original: {\n x: clientX,\n y: clientY,\n width: this.size.width,\n height: this.size.height,\n },\n isResizing: true,\n backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: this.window.getComputedStyle(event.target).cursor || 'auto' }),\n direction: direction,\n flexBasis: flexBasis,\n };\n this.setState(state);\n };\n Resizable.prototype.onMouseMove = function (event) {\n var _this = this;\n if (!this.state.isResizing || !this.resizable || !this.window) {\n return;\n }\n if (this.window.TouchEvent && isTouchEvent(event)) {\n try {\n event.preventDefault();\n event.stopPropagation();\n }\n catch (e) {\n // Ignore on fail\n }\n }\n var _a = this.props, maxWidth = _a.maxWidth, maxHeight = _a.maxHeight, minWidth = _a.minWidth, minHeight = _a.minHeight;\n var clientX = isTouchEvent(event) ? event.touches[0].clientX : event.clientX;\n var clientY = isTouchEvent(event) ? event.touches[0].clientY : event.clientY;\n var _b = this.state, direction = _b.direction, original = _b.original, width = _b.width, height = _b.height;\n var parentSize = this.getParentSize();\n var max = calculateNewMax(parentSize, this.window.innerWidth, this.window.innerHeight, maxWidth, maxHeight, minWidth, minHeight);\n maxWidth = max.maxWidth;\n maxHeight = max.maxHeight;\n minWidth = max.minWidth;\n minHeight = max.minHeight;\n // Calculate new size\n var _c = this.calculateNewSizeFromDirection(clientX, clientY), newHeight = _c.newHeight, newWidth = _c.newWidth;\n // Calculate max size from boundary settings\n var boundaryMax = this.calculateNewMaxFromBoundary(maxWidth, maxHeight);\n if (this.props.snap && this.props.snap.x) {\n newWidth = findClosestSnap(newWidth, this.props.snap.x, this.props.snapGap);\n }\n if (this.props.snap && this.props.snap.y) {\n newHeight = findClosestSnap(newHeight, this.props.snap.y, this.props.snapGap);\n }\n // Calculate new size from aspect ratio\n var newSize = this.calculateNewSizeFromAspectRatio(newWidth, newHeight, { width: boundaryMax.maxWidth, height: boundaryMax.maxHeight }, { width: minWidth, height: minHeight });\n newWidth = newSize.newWidth;\n newHeight = newSize.newHeight;\n if (this.props.grid) {\n var newGridWidth = snap(newWidth, this.props.grid[0], this.props.gridGap ? this.props.gridGap[0] : 0);\n var newGridHeight = snap(newHeight, this.props.grid[1], this.props.gridGap ? this.props.gridGap[1] : 0);\n var gap = this.props.snapGap || 0;\n var w = gap === 0 || Math.abs(newGridWidth - newWidth) <= gap ? newGridWidth : newWidth;\n var h = gap === 0 || Math.abs(newGridHeight - newHeight) <= gap ? newGridHeight : newHeight;\n newWidth = w;\n newHeight = h;\n }\n var delta = {\n width: newWidth - original.width,\n height: newHeight - original.height,\n };\n this.delta = delta;\n if (width && typeof width === 'string') {\n if (width.endsWith('%')) {\n var percent = (newWidth / parentSize.width) * 100;\n newWidth = \"\".concat(percent, \"%\");\n }\n else if (width.endsWith('vw')) {\n var vw = (newWidth / this.window.innerWidth) * 100;\n newWidth = \"\".concat(vw, \"vw\");\n }\n else if (width.endsWith('vh')) {\n var vh = (newWidth / this.window.innerHeight) * 100;\n newWidth = \"\".concat(vh, \"vh\");\n }\n }\n if (height && typeof height === 'string') {\n if (height.endsWith('%')) {\n var percent = (newHeight / parentSize.height) * 100;\n newHeight = \"\".concat(percent, \"%\");\n }\n else if (height.endsWith('vw')) {\n var vw = (newHeight / this.window.innerWidth) * 100;\n newHeight = \"\".concat(vw, \"vw\");\n }\n else if (height.endsWith('vh')) {\n var vh = (newHeight / this.window.innerHeight) * 100;\n newHeight = \"\".concat(vh, \"vh\");\n }\n }\n var newState = {\n width: this.createSizeForCssProperty(newWidth, 'width'),\n height: this.createSizeForCssProperty(newHeight, 'height'),\n };\n if (this.flexDir === 'row') {\n newState.flexBasis = newState.width;\n }\n else if (this.flexDir === 'column') {\n newState.flexBasis = newState.height;\n }\n var widthChanged = this.state.width !== newState.width;\n var heightChanged = this.state.height !== newState.height;\n var flexBaseChanged = this.state.flexBasis !== newState.flexBasis;\n var changed = widthChanged || heightChanged || flexBaseChanged;\n if (changed) {\n // For v18, update state sync\n flushSync(function () {\n _this.setState(newState);\n });\n }\n if (this.props.onResize) {\n if (changed) {\n this.props.onResize(event, direction, this.resizable, delta);\n }\n }\n };\n Resizable.prototype.onMouseUp = function (event) {\n var _a, _b;\n var _c = this.state, isResizing = _c.isResizing, direction = _c.direction, original = _c.original;\n if (!isResizing || !this.resizable) {\n return;\n }\n if (this.props.onResizeStop) {\n this.props.onResizeStop(event, direction, this.resizable, this.delta);\n }\n if (this.props.size) {\n this.setState({ width: (_a = this.props.size.width) !== null && _a !== void 0 ? _a : 'auto', height: (_b = this.props.size.height) !== null && _b !== void 0 ? _b : 'auto' });\n }\n this.unbindEvents();\n this.setState({\n isResizing: false,\n backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: 'auto' }),\n });\n };\n Resizable.prototype.updateSize = function (size) {\n var _a, _b;\n this.setState({ width: (_a = size.width) !== null && _a !== void 0 ? _a : 'auto', height: (_b = size.height) !== null && _b !== void 0 ? _b : 'auto' });\n };\n Resizable.prototype.renderResizer = function () {\n var _this = this;\n var _a = this.props, enable = _a.enable, handleStyles = _a.handleStyles, handleClasses = _a.handleClasses, handleWrapperStyle = _a.handleWrapperStyle, handleWrapperClass = _a.handleWrapperClass, handleComponent = _a.handleComponent;\n if (!enable) {\n return null;\n }\n var resizers = Object.keys(enable).map(function (dir) {\n if (enable[dir] !== false) {\n return (_jsx(Resizer, { direction: dir, onResizeStart: _this.onResizeStart, replaceStyles: handleStyles && handleStyles[dir], className: handleClasses && handleClasses[dir], children: handleComponent && handleComponent[dir] ? handleComponent[dir] : null }, dir));\n }\n return null;\n });\n // #93 Wrap the resize box in span (will not break 100% width/height)\n return (_jsx(\"div\", { className: handleWrapperClass, style: handleWrapperStyle, children: resizers }));\n };\n Resizable.prototype.render = function () {\n var _this = this;\n var extendsProps = Object.keys(this.props).reduce(function (acc, key) {\n if (definedProps.indexOf(key) !== -1) {\n return acc;\n }\n acc[key] = _this.props[key];\n return acc;\n }, {});\n var style = __assign(__assign(__assign({ position: 'relative', userSelect: this.state.isResizing ? 'none' : 'auto' }, this.props.style), this.sizeStyle), { maxWidth: this.props.maxWidth, maxHeight: this.props.maxHeight, minWidth: this.props.minWidth, minHeight: this.props.minHeight, boxSizing: 'border-box', flexShrink: 0 });\n if (this.state.flexBasis) {\n style.flexBasis = this.state.flexBasis;\n }\n var Wrapper = this.props.as || 'div';\n return (_jsxs(Wrapper, __assign({ style: style, className: this.props.className }, extendsProps, { \n // `ref` is after `extendsProps` to ensure this one wins over a version\n // passed in\n ref: function (c) {\n if (c) {\n _this.resizable = c;\n }\n }, children: [this.state.isResizing && _jsx(\"div\", { style: this.state.backgroundStyle }), this.props.children, this.renderResizer()] })));\n };\n Resizable.defaultProps = {\n as: 'div',\n onResizeStart: function () { },\n onResize: function () { },\n onResizeStop: function () { },\n enable: {\n top: true,\n right: true,\n bottom: true,\n left: true,\n topRight: true,\n bottomRight: true,\n bottomLeft: true,\n topLeft: true,\n },\n style: {},\n grid: [1, 1],\n gridGap: [0, 0],\n lockAspectRatio: false,\n lockAspectRatioExtraWidth: 0,\n lockAspectRatioExtraHeight: 0,\n scale: 1,\n resizeRatio: 1,\n snapGap: 0,\n };\n return Resizable;\n}(PureComponent));\nexport { Resizable };\n","import React, { useCallback } from \"react\";\r\n\r\nexport const ScheduledEventResizeHandler: React.FC = () => {\r\n\t// Перехватываем событие, чтобы не вызывался onClick и не вызывался drag-and-drop\r\n\tconst onPointerDown = useCallback((e: React.PointerEvent) => {\r\n\t\te.stopPropagation();\r\n\t}, []);\r\n\treturn <div className=\"h-full w-full\" onPointerDown={onPointerDown} />;\r\n};\r\n","import { useDraggable } from \"@dnd-kit/core\";\r\nimport { Resizable, ResizeCallback } from \"re-resizable\";\r\nimport { useCallback, useMemo } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { useScheduler } from \"../../context/SchedulerContext\";\r\nimport { IScheduledEvent } from \"../../types\";\r\nimport { getEventHeight } from \"../../utils/SchedulerUtils\";\r\nimport { ScheduledEventResizeHandler } from \"./ScheduledEventResizeHandler\";\r\n\r\nconst eventStyles = tv({\r\n\tbase: \"absolute left-0 right-0 select-none\",\r\n\tslots: {\r\n\t\twrapper: \"h-full w-full cursor-pointer rounded border border-primary/20 bg-primary/10 px-2 py-1\",\r\n\t\ttitle: \"truncate text-xs font-medium\",\r\n\t\tresizeTop: \"absolute left-0 right-0 top-0 h-1 cursor-ns-resize\",\r\n\t\tresizeBottom: \"absolute bottom-0 left-0 right-0 h-1 cursor-ns-resize\"\r\n\t},\r\n\tvariants: {\r\n\t\tdragging: {\r\n\t\t\ttrue: \"opacity-50\"\r\n\t\t}\r\n\t}\r\n});\r\n\r\nexport interface ScheduledEventProps<T = unknown> {\r\n\tevent: IScheduledEvent<T>;\r\n\ttop?: string;\r\n\tleft?: string;\r\n\twidth?: string;\r\n\tonEventClick?: (event: IScheduledEvent<T>) => void;\r\n}\r\n\r\nexport const ScheduledEvent: React.FC<ScheduledEventProps> = ({ event, onEventClick, width, left, top }) => {\r\n\tconst {\r\n\t\teventComponent,\r\n\t\tisDraggable,\r\n\t\tisResizable,\r\n\t\tonEventResize,\r\n\t\tonEventDrop,\r\n\t\thourHeight,\r\n\t\tgridSize,\r\n\t\tpxToMinutes,\r\n\t\tsnapToTime\r\n\t} = useScheduler();\r\n\r\n\tconst canDrag = isDraggable ? isDraggable(event) : onEventDrop !== undefined;\r\n\tconst canResize = isResizable ? isResizable(event) : onEventResize !== undefined;\r\n\r\n\tconst { attributes, listeners, setNodeRef, transform } = useDraggable({\r\n\t\tid: event.id,\r\n\t\tdata: { event },\r\n\t\tdisabled: !canDrag\r\n\t});\r\n\tconst isDragging = !!transform;\r\n\r\n\tconst height = useMemo(() => getEventHeight(event, hourHeight), [event, hourHeight]);\r\n\tconst style = {\r\n\t\ttop,\r\n\t\theight,\r\n\t\tleft,\r\n\t\twidth\r\n\t\t// transform: CSS.Transform.toString(transform)\r\n\t};\r\n\r\n\tconst onEventClickHandler = useCallback(\r\n\t\t(e: React.MouseEvent) => {\r\n\t\t\tif (!onEventClick) return;\r\n\t\t\tonEventClick(event);\r\n\t\t\te.stopPropagation();\r\n\t\t},\r\n\t\t[onEventClick, event]\r\n\t);\r\n\r\n\tconst onResize = useCallback<ResizeCallback>((_, direction, elementRef, delta) => {\r\n\t\tif (direction === \"top\") {\r\n\t\t\t// При растягивании вверх двигаем элемент\r\n\t\t\telementRef.style.transform = `translateY(${-delta.height}px)`;\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst onStopResize: ResizeCallback = useCallback(\r\n\t\t(_, direction, elementRef, delta) => {\r\n\t\t\tif (direction === \"bottom\") {\r\n\t\t\t\tconst minutes = pxToMinutes(delta.height);\r\n\t\t\t\tconst newEndDate = new Date(event.endDate.getTime() + minutes * 60 * 1000);\r\n\t\t\t\tonEventResize?.(event, {\r\n\t\t\t\t\tstartDate: event.startDate,\r\n\t\t\t\t\tendDate: snapToTime(newEndDate)\r\n\t\t\t\t});\r\n\t\t\t} else if (direction === \"top\") {\r\n\t\t\t\telementRef.style.transform = \"none\";\r\n\t\t\t\tconst minutes = pxToMinutes(delta.height);\r\n\t\t\t\tconst newStartDate = new Date(event.startDate.getTime() - minutes * 60 * 1000);\r\n\t\t\t\tonEventResize?.(event, {\r\n\t\t\t\t\tstartDate: snapToTime(newStartDate),\r\n\t\t\t\t\tendDate: event.endDate\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\t[event, onEventResize, pxToMinutes, snapToTime]\r\n\t);\r\n\r\n\tconst eventContent = useMemo(() => {\r\n\t\tconst { wrapper, title } = eventStyles();\r\n\t\tconst base = (\r\n\t\t\t<div className={wrapper()}>\r\n\t\t\t\t<div className={title()}>{event.title}</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t\tif (eventComponent) {\r\n\t\t\tconst EventComponent = eventComponent;\r\n\t\t\treturn <EventComponent event={event} baseEventComponent={base} />;\r\n\t\t}\r\n\t\treturn base;\r\n\t}, [eventComponent, event]);\r\n\r\n\tconst { base } = eventStyles();\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={base({ dragging: isDragging })}\r\n\t\t\tref={setNodeRef}\r\n\t\t\tstyle={style}\r\n\t\t\t{...(canDrag ? attributes : {})}\r\n\t\t\t{...(canDrag ? listeners : {})}\r\n\t\t\tonClick={onEventClickHandler}\r\n\t\t>\r\n\t\t\t<Resizable\r\n\t\t\t\tsize={{ height: height }}\r\n\t\t\t\tenable={canResize ? ResizeEnable : false}\r\n\t\t\t\tgrid={[0, gridSize]}\r\n\t\t\t\tonResize={onResize}\r\n\t\t\t\tonResizeStop={onStopResize}\r\n\t\t\t\thandleComponent={{\r\n\t\t\t\t\tbottom: <ScheduledEventResizeHandler />,\r\n\t\t\t\t\ttop: <ScheduledEventResizeHandler />\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t{eventContent}\r\n\t\t\t</Resizable>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nconst ResizeEnable = {\r\n\ttop: true,\r\n\tbottom: true\r\n};\r\n","export function getFormattedTime(date: Date): string {\r\n\treturn date.toLocaleTimeString(undefined, { hour: \"2-digit\", minute: \"2-digit\" });\r\n}\r\n","import { getFormattedTime } from \"@/lib/utils/date/date\";\r\nimport { useEffect, useState, useRef } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { getCurrentTimePercentage } from \"../../utils/SchedulerUtils\";\r\n\r\nconst currentTimeMarker = tv({\r\n\tslots: {\r\n\t\tcurrentTime: \"absolute left-0 right-0 border-t border-primary/50\",\r\n\t\tcurrentTimeLabel: \"absolute left-1 -translate-y-1/2 rounded-sm bg-primary px-1 text-xs text-primary-foreground\"\r\n\t}\r\n});\r\n\r\ntype CurrentTimeMarkerProps = {\r\n\tshowValue?: boolean;\r\n};\r\n\r\nexport const CurrentTimeMarker: React.FC<CurrentTimeMarkerProps> = ({ showValue = false }) => {\r\n\tconst [position, setPosition] = useState(() => getCurrentTimePercentage());\r\n\r\n\tconst [value, setValue] = useState<string | null>(() => {\r\n\t\tif (!showValue) return null;\r\n\t\treturn getFormattedTime(new Date());\r\n\t});\r\n\r\n\tconst markerRef = useRef<HTMLDivElement | null>(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tmarkerRef.current?.scrollIntoView({ behavior: \"instant\", block: \"center\" });\r\n\r\n\t\tconst interval = setInterval(() => {\r\n\t\t\tsetPosition(getCurrentTimePercentage());\r\n\t\t\tif (showValue) setValue(getFormattedTime(new Date()));\r\n\t\t}, 60000); // обновление каждую минуту\r\n\r\n\t\treturn () => clearInterval(interval);\r\n\t}, [showValue]);\r\n\r\n\tconst { currentTime, currentTimeLabel } = currentTimeMarker();\r\n\treturn (\r\n\t\t<div ref={markerRef} className={currentTime()} style={{ top: position }}>\r\n\t\t\t{showValue && <span className={currentTimeLabel()}>{value}</span>}\r\n\t\t</div>\r\n\t);\r\n};\r\n","import { useDroppable } from \"@dnd-kit/core\";\r\nimport { useCallback, useMemo } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { useScheduler } from \"../../context/SchedulerContext\";\r\nimport { IScheduledEvent } from \"../../types\";\r\nimport { DAY_COLUMN_DATA_ATTRIBUTE, getDateFromClick, getEventPositions } from \"../../utils/SchedulerUtils\";\r\nimport { ScheduledEvent } from \"../scheduled-event/ScheduledEvent\";\r\nimport { CurrentTimeMarker } from \"../time-ruler/CurrentTimeMarker\";\r\n\r\nconst dayColumn = tv({\r\n\tslots: { wrapper: \"relative h-full w-full overflow-visible border-l border-border first:border-l-0\" }\r\n});\r\n\r\nexport interface DayColumnProps {\r\n\tday: Date;\r\n\tevents: IScheduledEvent[];\r\n}\r\n\r\nexport const DayColumn: React.FC<DayColumnProps> = ({ day, events }) => {\r\n\tconst { timeSnap, onDayClick, onEventClick, hourHeight } = useScheduler();\r\n\tconst { setNodeRef } = useDroppable({ id: `day-column-${day.toISOString()}`, data: { day } });\r\n\r\n\tconst filteredEvents = useMemo(() => {\r\n\t\tconst dayStart = new Date(day.setHours(0, 0, 0, 0));\r\n\t\tconst dayEnd = new Date(day.setHours(23, 59, 59, 999));\r\n\r\n\t\treturn events.filter((event) => {\r\n\t\t\treturn event.startDate <= dayEnd && event.endDate >= dayStart;\r\n\t\t});\r\n\t}, [day, events]);\r\n\r\n\tconst onDayClickHandler = useCallback(\r\n\t\t(event: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tonDayClick?.({ date: getDateFromClick(event, day, timeSnap ?? 0) });\r\n\t\t},\r\n\t\t[onDayClick, day, timeSnap]\r\n\t);\r\n\r\n\tconst eventsPositions = useMemo(() => getEventPositions(filteredEvents, hourHeight), [filteredEvents, hourHeight]);\r\n\r\n\tconst { wrapper } = dayColumn();\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={wrapper()}\r\n\t\t\tstyle={{ height: `${hourHeight * 24}px` }}\r\n\t\t\tref={setNodeRef}\r\n\t\t\tonClick={onDayClickHandler}\r\n\t\t\t{...{ [DAY_COLUMN_DATA_ATTRIBUTE]: \"\" }}\r\n\t\t>\r\n\t\t\t{filteredEvents.map((event) => {\r\n\t\t\t\tconst position = eventsPositions.get(event.id);\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<ScheduledEvent\r\n\t\t\t\t\t\tkey={event.id}\r\n\t\t\t\t\t\tevent={event}\r\n\t\t\t\t\t\tonEventClick={onEventClick}\r\n\t\t\t\t\t\ttop={position?.top}\r\n\t\t\t\t\t\twidth={position?.width}\r\n\t\t\t\t\t\tleft={position?.left}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t})}\r\n\r\n\t\t\t<CurrentTimeMarker />\r\n\t\t</div>\r\n\t);\r\n};\r\n","import {\r\n\tDndContext,\r\n\tDragEndEvent,\r\n\tDragOverlay,\r\n\tDragStartEvent,\r\n\tKeyboardSensor,\r\n\tModifier,\r\n\tPointerSensor,\r\n\tUniqueIdentifier,\r\n\tuseSensor,\r\n\tuseSensors\r\n} from \"@dnd-kit/core\";\r\nimport { useCallback, useMemo, useState } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { useScheduler } from \"../../context/SchedulerContext\";\r\nimport { IScheduledEvent } from \"../../types\";\r\nimport { DayColumn } from \"../day-column/DayColumn\";\r\nimport { ScheduledEvent } from \"../scheduled-event/ScheduledEvent\";\r\n\r\nconst dayColumns = tv({\r\n\tbase: \"flex h-full w-full\"\r\n});\r\n\r\nexport interface DayColumnsProps {\r\n\tevents: IScheduledEvent[];\r\n}\r\n\r\nexport const DayColumns: React.FC<DayColumnsProps> = ({ events }) => {\r\n\tconst { onEventDrop, dates, gridSize, pxToMinutes, snapToTime } = useScheduler();\r\n\r\n\tconst [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\r\n\r\n\t// Настройка Drag'n'Drop\r\n\tconst pointerSensor = useSensor(PointerSensor, { activationConstraint: { distance: 10 } });\r\n\tconst keyboardSensor = useSensor(KeyboardSensor);\r\n\tconst sensors = useSensors(pointerSensor, keyboardSensor);\r\n\r\n\tconst handleDragEnd = useCallback(\r\n\t\t(event: DragEndEvent) => {\r\n\t\t\tsetActiveId(null);\r\n\t\t\tconst deltaY = event.delta.y;\r\n\t\t\tconst eventData = event.active.data.current?.event;\r\n\t\t\tconst dayData = event.over?.data.current?.day;\r\n\t\t\tconst minutes = pxToMinutes(deltaY);\r\n\t\t\tconst newStartDate = new Date(eventData.startDate.getTime() + minutes * 60 * 1000);\r\n\t\t\tnewStartDate.setDate(dayData.getDate());\r\n\t\t\tconst newEndDate = new Date(eventData.endDate.getTime() + minutes * 60 * 1000);\r\n\t\t\tnewEndDate.setDate(dayData.getDate());\r\n\t\t\tonEventDrop?.(eventData, { startDate: snapToTime(newStartDate), endDate: snapToTime(newEndDate) });\r\n\t\t},\r\n\t\t[onEventDrop, pxToMinutes, snapToTime]\r\n\t);\r\n\r\n\tconst modifier = useMemo(() => createModifier(gridSize), [gridSize]);\r\n\r\n\treturn (\r\n\t\t<DndContext onDragStart={handleDragStart} onDragEnd={handleDragEnd} sensors={sensors}>\r\n\t\t\t<div className={dayColumns()}>\r\n\t\t\t\t{dates.map((day, index) => (\r\n\t\t\t\t\t<DayColumn key={index} day={day} events={events} />\r\n\t\t\t\t))}\r\n\t\t\t</div>\r\n\t\t\t<DragOverlay dropAnimation={null} modifiers={[modifier]}>\r\n\t\t\t\t{activeId ? <ScheduledEvent event={events.find((e) => e.id === activeId) as IScheduledEvent} /> : null}\r\n\t\t\t</DragOverlay>\r\n\t\t</DndContext>\r\n\t);\r\n\r\n\tfunction handleDragStart(event: DragStartEvent) {\r\n\t\tsetActiveId(event.active.id);\r\n\t}\r\n};\r\n\r\nconst createModifier = (gridSize: number) => {\r\n\tconst modifier: Modifier = (args) => {\r\n\t\tconst { transform, draggingNodeRect, over, containerNodeRect } = args;\r\n\t\tif (!draggingNodeRect || !over?.rect || !containerNodeRect) return transform;\r\n\r\n\t\t// Перетаскиваемое событие выравнивается по левому краю колонки дня\r\n\t\tconst x = over.rect.left - draggingNodeRect.left;\r\n\r\n\t\t// Определяется изначальное смещение события от сетки\r\n\t\tconst topDelta = (containerNodeRect.top - draggingNodeRect.top) % gridSize;\r\n\t\t// Текущая позиция перетаскиваемого события подгоняется под сетку и сдвигается на изначальное смещение, чтобы событие попало в сетку\r\n\t\tconst y = Math.floor(transform.y / gridSize) * gridSize + topDelta;\r\n\r\n\t\treturn {\r\n\t\t\t...transform,\r\n\t\t\tx,\r\n\t\t\ty\r\n\t\t};\r\n\t};\r\n\r\n\treturn modifier;\r\n};\r\n","import { tv } from \"tailwind-variants\";\r\nimport { useScheduler } from \"../../context/SchedulerContext\";\r\n\r\nconst hourRows = tv({\r\n\tslots: {\r\n\t\twrapper: \"pointer-events-none absolute inset-0 flex h-full flex-col justify-between\",\r\n\t\thourRow: \"h-full border-t border-border\"\r\n\t}\r\n});\r\n\r\nexport const HourRows = () => {\r\n\tconst { hourHeight } = useScheduler();\r\n\tconst { wrapper, hourRow } = hourRows();\r\n\treturn (\r\n\t\t<div className={wrapper()} style={{ height: `${hourHeight * 24}px` }}>\r\n\t\t\t{Array.from({ length: 24 }).map((_, index) => (\r\n\t\t\t\t<div key={index} className={hourRow()} style={{ height: `${hourHeight}px` }} />\r\n\t\t\t))}\r\n\t\t</div>\r\n\t);\r\n};\r\n","import { useMemo } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { CurrentTimeMarker } from \"./CurrentTimeMarker\";\r\nimport { getFormattedTime } from \"@/lib/utils/date/date\";\r\nimport { useScheduler } from \"../../context/SchedulerContext\";\r\n\r\nconst timeRuler = tv({\r\n\tslots: {\r\n\t\twrapper: \"relative h-full\",\r\n\t\thourMark: \"h-full pl-2 pr-2\",\r\n\t\thourLabel: \"-translate-y-1/2 text-xs text-muted-foreground\"\r\n\t}\r\n});\r\n\r\ntype TimeRulerProps = {\r\n\tshowCurrentTime?: boolean;\r\n};\r\n\r\nexport const TimeRuler: React.FC<TimeRulerProps> = ({ showCurrentTime = false }) => {\r\n\tconst { hourHeight } = useScheduler();\r\n\tconst { wrapper, hourMark, hourLabel } = timeRuler();\r\n\r\n\tconst hours = useMemo(() => {\r\n\t\tconst now = new Date();\r\n\t\treturn Array.from({ length: 24 }, (_, i) => {\r\n\t\t\tnow.setHours(i);\r\n\t\t\tnow.setMinutes(0);\r\n\t\t\tnow.setSeconds(0);\r\n\t\t\tnow.setMilliseconds(0);\r\n\t\t\treturn getFormattedTime(now);\r\n\t\t});\r\n\t}, []);\r\n\treturn (\r\n\t\t<div className={wrapper()} style={{ height: `${hourHeight * 24}px` }}>\r\n\t\t\t{hours.map((hour, index) => (\r\n\t\t\t\t<div key={hour} className={hourMark()} style={{ height: `${hourHeight}px` }}>\r\n\t\t\t\t\t{index !== 0 && <div className={hourLabel()}>{hour}</div>}\r\n\t\t\t\t</div>\r\n\t\t\t))}\r\n\r\n\t\t\t{showCurrentTime && <CurrentTimeMarker showValue />}\r\n\t\t</div>\r\n\t);\r\n};\r\n","import { useMemo } from \"react\";\r\nimport { tv, VariantProps } from \"tailwind-variants\";\r\n\r\nconst day = tv({\r\n\tslots: {\r\n\t\twrapper: \"flex w-full flex-col items-center\",\r\n\t\tdate: \"text-3xl font-bold leading-none text-secondary-foreground\",\r\n\t\tdayOfWeek: \"px-1 text-sm leading-none text-muted-foreground\",\r\n\t\tmonthName: \"px-1 text-sm leading-none text-muted-foreground\"\r\n\t},\r\n\tvariants: {\r\n\t\tholyday: {\r\n\t\t\ttrue: {\r\n\t\t\t\tdayOfWeek: \"text-muted-foreground\"\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\ntype DayProps = VariantProps<typeof day> & {\r\n\tdate: Date;\r\n};\r\n\r\nexport const Day: React.FC<DayProps> = ({ date, holyday = false }) => {\r\n\tconst dayOfWeek = useMemo(() => date.toLocaleDateString(undefined, { weekday: \"short\" }), [date]);\r\n\tconst monthName = useMemo(() => date.toLocaleDateString(undefined, { month: \"long\" }), [date]);\r\n\r\n\tconst { wrapper, date: dateStyle, dayOfWeek: dayOfWeekStyle, monthName: monthNameStyle } = day({ holyday });\r\n\r\n\treturn (\r\n\t\t<div className={wrapper()}>\r\n\t\t\t<div className={dayOfWeekStyle()}>{dayOfWeek}</div>\r\n\t\t\t<div className={dateStyle()}>{date.getDate()}</div>\r\n\t\t\t<div className={monthNameStyle()}>{monthName}</div>\r\n\t\t</div>\r\n\t);\r\n};\r\n","import { tv } from \"tailwind-variants\";\r\nimport { useScheduler } from \"../../context/SchedulerContext\";\r\nimport { Day } from \"../day/Day\";\r\n\r\nconst weekDays = tv({ base: \"flex w-full justify-between\" });\r\n\r\nexport const WeekDays: React.FC = () => {\r\n\tconst { dates } = useScheduler();\r\n\treturn (\r\n\t\t<div className={weekDays()}>\r\n\t\t\t{dates.map((day, index) => (\r\n\t\t\t\t<Day key={index} date={day} />\r\n\t\t\t))}\r\n\t\t</div>\r\n\t);\r\n};\r\n","import { TooltipProvider } from \"@/components/ui/tooltip\";\r\nimport { useMemo } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { DayColumns } from \"./components/day-columns/DayColumns\";\r\nimport { HourRows } from \"./components/hour-rows/HourRows\";\r\nimport { TimeRuler } from \"./components/time-ruler/TimeRuler\";\r\nimport { WeekDays } from \"./components/week-days/WeekDays\";\r\nimport { SchedulerProvider } from \"./context/SchedulerContext\";\r\nimport { IScheduledEvent } from \"./types\";\r\n\r\nconst schedulerStyles = tv({\r\n\tbase: \"flex h-full flex-col\",\r\n\tslots: {\r\n\t\tcontent: \"relative flex flex-1 overflow-auto\",\r\n\t\tdays: \"relative flex-1\"\r\n\t}\r\n});\r\n\r\ninterface EventComponentProps {\r\n\tevent: IScheduledEvent;\r\n\tbaseEventComponent: React.ReactNode;\r\n}\r\n\r\nexport interface EventDateChange {\r\n\tstartDate: Date;\r\n\tendDate: Date;\r\n}\r\n\r\nexport interface SchedulerBaseSettings {\r\n\t/**\r\n\t * Высота строки часа, в px\r\n\t * @default 40\r\n\t */\r\n\thourHeight?: number;\r\n\t/**\r\n\t * Интервал округления времени в минутах\r\n\t * @default 15\r\n\t */\r\n\ttimeSnap?: number;\r\n\t/**\r\n\t * Событие, которое срабатывает при клике на день.\r\n\t * Время задается в зависимости от позиции клика.\r\n\t */\r\n\tonDayClick?: (data: { date: Date }) => void;\r\n\t/**\r\n\t * Событие, которое срабатывает при клике на событие\r\n\t */\r\n\tonEventClick?: (event: IScheduledEvent) => void;\r\n\t/**\r\n\t * Событие, которое срабатывает при перетаскивании события\r\n\t */\r\n\tonEventDrop?: (event: IScheduledEvent, change: EventDateChange) => void;\r\n\t/**\r\n\t * Событие, которое срабатывает при изменении времени события с помощью ресайзера\r\n\t */\r\n\tonEventResize?: (event: IScheduledEvent, change: EventDateChange) => void;\r\n\t/**\r\n\t * Компонент, который будет использоваться для отображения события\r\n\t */\r\n\teventComponent?: React.ComponentType<EventComponentProps>;\r\n\t/**\r\n\t * Функция, определяющая, можно ли перетаскивать событие\r\n\t */\r\n\tisDraggable?: (event: IScheduledEvent) => boolean;\r\n\t/**\r\n\t * Функция, определяющая, можно ли изменять размер события\r\n\t */\r\n\tisResizable?: (event: IScheduledEvent) => boolean;\r\n}\r\n\r\nexport interface SchedulerProps extends SchedulerBaseSettings {\r\n\t/**\r\n\t * Список отображаемых событий\r\n\t */\r\n\tevents: IScheduledEvent[];\r\n\t/**\r\n\t * Дата с которой начинается отображение\r\n\t */\r\n\tstartDate?: Date;\r\n\t/**\r\n\t * Дата с которой заканчивается отображение\r\n\t */\r\n\tendDate?: Date;\r\n\t/**\r\n\t * Показывать дни в заголовке. По умолчанию оторажаются.\r\n\t * @default true\r\n\t */\r\n\tshowDates?: boolean;\r\n}\r\n\r\nexport const Scheduler: React.FC<SchedulerProps> = ({\r\n\tevents,\r\n\tstartDate,\r\n\tendDate,\r\n\ttimeSnap = 15,\r\n\tonDayClick,\r\n\tonEventClick,\r\n\tonEventDrop,\r\n\tonEventResize,\r\n\teventComponent,\r\n\tshowDates = true,\r\n\thourHeight = 40,\r\n\tisDraggable,\r\n\tisResizable\r\n}) => {\r\n\tconst dates = useMemo(() => {\r\n\t\tconst date = startDate ? new Date(startDate) : new Date();\r\n\t\tdate.setHours(0, 0, 0, 0);\r\n\r\n\t\tconst days: Date[] = [];\r\n\r\n\t\tif (!endDate) {\r\n\t\t\tdays.push(date);\r\n\t\t} else {\r\n\t\t\tconst currentDate = new Date(date);\r\n\t\t\twhile (currentDate <= endDate) {\r\n\t\t\t\tdays.push(new Date(currentDate));\r\n\t\t\t\tcurrentDate.setDate(currentDate.getDate() + 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn days;\r\n\t}, [startDate, endDate]);\r\n\r\n\tconst { content, days, base } = schedulerStyles();\r\n\r\n\tconst weekDays = showDates ? (\r\n\t\t<div>\r\n\t\t\t<WeekDays />\r\n\t\t</div>\r\n\t) : null;\r\n\r\n\treturn (\r\n\t\t<SchedulerProvider\r\n\t\t\tvalue={{\r\n\t\t\t\tdates,\r\n\t\t\t\ttimeSnap,\r\n\t\t\t\tonDayClick,\r\n\t\t\t\tonEventClick,\r\n\t\t\t\tonEventDrop,\r\n\t\t\t\tonEventResize,\r\n\t\t\t\thourHeight,\r\n\t\t\t\teventComponent,\r\n\t\t\t\tisDraggable,\r\n\t\t\t\tisResizable\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t<TooltipProvider>\r\n\t\t\t\t<div className={base()}>\r\n\t\t\t\t\t{weekDays}\r\n\t\t\t\t\t<div className={content()}>\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t<TimeRuler showCurrentTime />\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div className={days()}>\r\n\t\t\t\t\t\t\t<HourRows />\r\n\t\t\t\t\t\t\t<DayColumns events={events} />\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</TooltipProvider>\r\n\t\t</SchedulerProvider>\r\n\t);\r\n};\r\n"],"names":["canUseDOM","isWindow","element","elementString","isNode","node","getWindow","target","_target$ownerDocument","_target$ownerDocument2","isDocument","Document","isHTMLElement","isSVGElement","getOwnerDocument","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","useEvent","handler","handlerRef","useRef","useCallback","_len","args","_key","useInterval","intervalRef","set","listener","duration","clear","useLatestValue","value","dependencies","valueRef","useLazyMemo","callback","useMemo","newValue","useNodeRef","onChange","onChangeHandler","setNodeRef","usePrevious","ref","ids","useUniqueId","prefix","id","createAdjustmentFn","modifier","object","adjustments","accumulator","adjustment","entries","key","valueAdjustment","__spreadValues","add","subtract","hasViewportRelativeCoordinates","event","isKeyboardEvent","KeyboardEvent","isTouchEvent","TouchEvent","getEventCoordinates","x","y","CSS","transform","scaleX","scaleY","_ref","property","easing","SELECTOR","findFirstFocusableNode","hiddenStyles","HiddenText","React","LiveRegion","announcement","ariaLiveType","visuallyHidden","useAnnouncement","setAnnouncement","useState","DndMonitorContext","createContext","useDndMonitor","registerListener","useContext","useDndMonitorProvider","listeners","type","_listener$type","defaultScreenReaderInstructions","defaultAnnouncements","active","_ref2","over","_ref3","_ref4","Accessibility","announcements","container","hiddenTextDescribedById","screenReaderInstructions","announce","liveRegionId","mounted","setMounted","_ref5","_ref6","markup","createPortal","Action","noop","useSensor","sensor","options","useSensors","sensors","defaultCoordinates","getRelativeTransformOrigin","rect","eventCoordinates","transformOrigin","sortCollisionsDesc","a","b","getFirstCollision","collisions","firstCollision","getIntersectionRatio","entry","top","left","right","bottom","width","height","targetArea","entryArea","intersectionArea","intersectionRatio","rectIntersection","collisionRect","droppableRects","droppableContainers","droppableContainer","adjustScale","rect1","rect2","__spreadProps","getRectDelta","createRectAdjustmentFn","acc","getAdjustedRect","parseTransform","transformArray","inverseTransform","parsedTransform","translateX","translateY","w","h","defaultOptions","getClientRect","getTransformAgnosticClientRect","getWindowClientRect","isFixed","computedStyle","isScrollable","overflowRegex","getScrollableAncestors","limit","scrollParents","findScrollableAncestors","getFirstScrollableAncestor","firstScrollableAncestor","getScrollableElement","getScrollXCoordinate","getScrollYCoordinate","getScrollCoordinates","Direction","isDocumentScrollingElement","getScrollPosition","scrollingContainer","minScroll","dimensions","maxScroll","isTop","isLeft","isBottom","isRight","defaultThreshold","getScrollDirectionAndSpeed","scrollContainer","scrollContainerRect","acceleration","thresholdPercentage","direction","speed","threshold","getScrollElementRect","innerWidth","innerHeight","getScrollOffsets","scrollableAncestors","getScrollXOffset","getScrollYOffset","scrollIntoViewIfNeeded","measure","properties","Rect","scrollOffsets","axis","keys","getScrollOffset","currentOffsets","scrollOffsetsDeltla","Listeners","_this$target","eventName","_this$target2","getEventListenerTarget","EventTarget","hasExceededDistance","delta","measurement","dx","dy","__pow","EventName","preventDefault","stopPropagation","KeyboardCode","defaultKeyboardCodes","defaultKeyboardCoordinateGetter","currentCoordinates","KeyboardSensor","props","activeNode","onStart","context","keyboardCodes","coordinateGetter","scrollBehavior","code","newCoordinates","coordinatesDelta","scrollDelta","scrollElementRect","clampedCoordinates","canScrollX","canScrollY","newScrollCoordinates","canScrollToNewCoordinates","coordinates","onMove","onEnd","onCancel","onActivation","activator","isDistanceConstraint","constraint","isDelayConstraint","AbstractPointerSensor","events","listenerTarget","_getEventCoordinates","activationConstraint","bypassActivationConstraint","offset","onPending","initialCoordinates","_getEventCoordinates2","activated","onAbort","_this$document$getSel","PointerSensor","events$1","MouseButton","MouseSensor","events$2","TouchSensor","touches","AutoScrollActivator","TraversalOrder","useAutoScroller","canScroll","draggingRect","enabled","interval","order","pointerCoordinates","scrollableAncestorRects","scrollIntent","useScrollIntent","setAutoScrollInterval","clearAutoScrollInterval","scrollSpeed","scrollDirection","scrollContainerRef","autoScroll","scrollLeft","scrollTop","sortedScrollableAncestors","index","defaultScrollIntent","disabled","previousDelta","previousIntent","useCachedNode","draggableNodes","draggableNode","cachedNode","useCombineActivators","getSyntheticHandler","Sensor","sensorActivators","MeasuringStrategy","MeasuringFrequency","defaultValue","useDroppableMeasuring","containers","dragging","config","queue","setQueue","frequency","strategy","containersRef","isDisabled","disabledRef","measureDroppableContainers","timeoutId","previousValue","map","useInitialValue","computeFn","useInitialRect","useMutationObserver","handleMutations","mutationObserver","MutationObserver","useResizeObserver","handleResize","resizeObserver","ResizeObserver","defaultMeasure","useRect","fallbackRect","setRect","measureRect","currentRect","newRect","records","record","useRectDelta","initialRect","defaultValue$1","useScrollableAncestors","previousNode","ancestors","useScrollOffsets","elements","scrollCoordinates","setScrollCoordinates","prevElements","handleScroll","scrollingElement","previousElements","cleanup","scrollableElement","useScrollOffsetsDelta","initialScrollOffsets","hasScrollOffsets","useSensorSetup","teardownFns","teardown","useSyntheticListeners","useWindowRect","defaultValue$2","useRects","firstElement","windowRect","rects","setRects","measureRects","getMeasurableNode","firstChild","useDragOverlayMeasuring","handleNodeChange","nodeRef","setRef","defaultSensors","defaultData","defaultMeasuringConfiguration","DroppableContainersMap","_super$get","_this$get$node$curren","_this$get","defaultPublicContext","defaultInternalContext","InternalContext","PublicContext","getInitialState","reducer","state","action","RestoreFocus","activatorEvent","previousActivatorEvent","previousActiveId","activatorNode","focusableNode","applyModifiers","modifiers","_a","__objRest","useMeasuringConfiguration","useLayoutShiftScrollCompensation","initialized","rectDelta","ActiveDraggableContext","Status","DndContext","memo","_sensorContext$curren","_dragOverlay$nodeRef$","_dragOverlay$rect","_over$rect","accessibility","children","collisionDetection","measuring","store","useReducer","dispatch","dispatchMonitorEvent","registerMonitorListener","status","setStatus","isInitialized","activeId","translate","activeRects","_node$data","activeRef","activeSensor","setActiveSensor","setActivatorEvent","latestProps","draggableDescribedById","enabledDroppableContainers","measuringConfiguration","measuringScheduled","activationCoordinates","autoScrollOptions","getAutoScrollerOptions","initialActiveNodeRect","activeNodeRect","containerNodeRect","sensorContext","overNode","dragOverlay","draggingNode","draggingNodeRect","usesDragOverlay","nodeRectDelta","modifiedTranslate","scrollAdjustment","activeNodeScrollDelta","scrollAdjustedTranslate","overId","setOver","appliedTranslate","activeSensorRef","instantiateSensor","sensorInstance","onDragAbort","onDragPending","onDragStart","unstable_batchedUpdates","createHandler","__async","cancelDrop","bindActivatorToSensorInstantiator","nativeEvent","activeDraggableNode","activationContext","activators","onDragMove","onDragOver","overContainer","publicContext","internalContext","activeSensorDisablesAutoscroll","autoScrollGloballyDisabled","NullContext","defaultRole","ID_PREFIX","useDraggable","data","attributes","ariaDescribedById","role","roleDescription","tabIndex","isDragging","setActivatorNodeRef","dataRef","memoizedAttributes","useDndContext","ID_PREFIX$1","defaultResizeObserverConfig","useDroppable","resizeObserverConfig","previous","resizeObserverConnected","callbackId","resizeObserverDisabled","updateMeasurementsFor","resizeObserverTimeout","newElement","previousElement","AnimationManager","animation","clonedChildren","setClonedChildren","setElement","previousChildren","cloneElement","defaultTransform","NullifiedContextProvider","baseStyles","defaultTransition","PositionedOverlay","forwardRef","as","className","style","transition","scaleAdjustedTransform","styles","defaultDropAnimationSideEffects","originalStyles","defaultKeyframeResolver","initial","final","defaultDropAnimationConfiguration","useDropAnimation","activeDraggable","measurableNode","createDefaultDropAnimation","sideEffects","keyframes","rest","scale","finalTransform","animationKeyframes","firstKeyframe","lastKeyframe","resolve","useKey","DragOverlay","dropAnimationConfig","wrapperElement","zIndex","modifiedTransform","dropAnimation","SchedulerContext","SchedulerProvider","jsx","useScheduler","hourHeight","timeSnap","px","time","minutes","min","roundDateTime","date","snap","round","newDate","roundedMinutes","DAY_COLUMN_DATA_ATTRIBUTE","getDateFromClick","day","dayColumnDiv","getDateFromY","positionY","targetRect","percentageOfDay","percentageToDate","minutesFromMidnight","hours","selectedDate","getCurrentTimePercentage","now","groupCrossingEvents","groups","group","e","isEventCrossing","event1","event2","getEventPositions","positions","groupedEvents","getEventTop","getEventLengthInMin","oneMinInPx","getEventHeight","getMinutesFromStartOfDay","__assign","s","i","n","p","rowSizeBase","colSizeBase","edgeBase","Resizer","onResizeStart","replaceStyles","onMouseDown","onTouchStart","_jsx","__extends","extendStatics","d","__","DEFAULT_SIZE","clamp","max","size","gridGap","v","hasDirection","dir","isMouseEvent","findClosestSnap","snapArray","snapGap","closestGapIndex","prev","curr","gap","getStringSize","getPixelSize","parentSize","ratio","calculateNewMax","maxWidth","maxHeight","minWidth","minHeight","normalizeToPair","val","definedProps","baseClassName","Resizable","_super","_b","_c","_d","_this","parent","base","orgWidth","orgHeight","orgPosition","getSize","percent","wrapChanged","wrap","newSize","kind","propsSize","boundsByDirection","widthByDirection","heightByDirection","boundWidth","boundHeight","parent_1","clientX","clientY","resizeRatioX","resizeRatioY","original","lockAspectRatio","lockAspectRatioExtraHeight","lockAspectRatioExtraWidth","newWidth","newHeight","extraHeight","extraWidth","computedMinWidth","computedMaxWidth","computedMinHeight","computedMaxHeight","extraMinWidth","extraMaxWidth","extraMinHeight","extraMaxHeight","lockedMinWidth","lockedMaxWidth","lockedMinHeight","lockedMaxHeight","adjustedScale","parent_2","parentRect","top_1","startResize","flexBasis","parent_3","boundaryMax","newGridWidth","newGridHeight","vw","vh","newState","widthChanged","heightChanged","flexBaseChanged","changed","flushSync","isResizing","enable","handleStyles","handleClasses","handleWrapperStyle","handleWrapperClass","handleComponent","resizers","extendsProps","Wrapper","_jsxs","c","PureComponent","ScheduledEventResizeHandler","onPointerDown","eventStyles","tv","ScheduledEvent","onEventClick","eventComponent","isDraggable","isResizable","onEventResize","onEventDrop","gridSize","pxToMinutes","snapToTime","canDrag","canResize","onEventClickHandler","onResize","_","elementRef","onStopResize","newEndDate","newStartDate","eventContent","wrapper","title","ResizeEnable","getFormattedTime","currentTimeMarker","CurrentTimeMarker","showValue","position","setPosition","setValue","markerRef","currentTime","currentTimeLabel","dayColumn","DayColumn","onDayClick","filteredEvents","dayStart","dayEnd","onDayClickHandler","eventsPositions","jsxs","dayColumns","DayColumns","dates","setActiveId","pointerSensor","keyboardSensor","handleDragEnd","deltaY","eventData","dayData","createModifier","handleDragStart","topDelta","hourRows","HourRows","hourRow","timeRuler","TimeRuler","showCurrentTime","hourMark","hourLabel","hour","Day","holyday","dayOfWeek","monthName","dateStyle","dayOfWeekStyle","monthNameStyle","weekDays","WeekDays","schedulerStyles","Scheduler","startDate","endDate","showDates","days","currentDate","content","TooltipProvider"],"mappings":"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","x_google_ignoreList":[0,1,2,6,7]}
1
+ {"version":3,"file":"scheduler.js","sources":["../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@18.3.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.js","../../node_modules/.pnpm/@dnd-kit+accessibility@3.1.1_react@18.3.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js","../../node_modules/.pnpm/@dnd-kit+core@6.3.1_react-d_dd28f9613915b34fadb5fb09ef9e129f/node_modules/@dnd-kit/core/dist/core.esm.js","../../src/components/scheduler/context/SchedulerContext.tsx","../../src/lib/utils/date/roundDateTime.ts","../../src/components/scheduler/utils/SchedulerUtils.ts","../../node_modules/.pnpm/re-resizable@6.11.2_react-d_db33c8a618a7bf9130ff2cecff25773d/node_modules/re-resizable/lib/resizer.js","../../node_modules/.pnpm/re-resizable@6.11.2_react-d_db33c8a618a7bf9130ff2cecff25773d/node_modules/re-resizable/lib/index.js","../../src/components/scheduler/components/scheduled-event/ScheduledEventResizeHandler.tsx","../../src/components/scheduler/components/scheduled-event/ScheduledEvent.tsx","../../src/lib/utils/date/date.ts","../../src/components/scheduler/components/time-ruler/CurrentTimeMarker.tsx","../../src/components/scheduler/components/day-column/DayColumn.tsx","../../src/components/scheduler/components/day-columns/DayColumns.tsx","../../src/components/scheduler/components/hour-rows/HourRows.tsx","../../src/components/scheduler/components/time-ruler/TimeRuler.tsx","../../src/components/scheduler/components/day/Day.tsx","../../src/components/scheduler/components/week-days/WeekDays.tsx","../../src/components/scheduler/Scheduler.tsx"],"sourcesContent":["import { useMemo, useLayoutEffect, useEffect, useRef, useCallback } from 'react';\n\nfunction useCombinedRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n\n return useMemo(() => node => {\n refs.forEach(ref => ref(node));\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n refs);\n}\n\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nconst canUseDOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\nfunction isWindow(element) {\n const elementString = Object.prototype.toString.call(element);\n return elementString === '[object Window]' || // In Electron context the Window object serializes to [object global]\n elementString === '[object global]';\n}\n\nfunction isNode(node) {\n return 'nodeType' in node;\n}\n\nfunction getWindow(target) {\n var _target$ownerDocument, _target$ownerDocument2;\n\n if (!target) {\n return window;\n }\n\n if (isWindow(target)) {\n return target;\n }\n\n if (!isNode(target)) {\n return window;\n }\n\n return (_target$ownerDocument = (_target$ownerDocument2 = target.ownerDocument) == null ? void 0 : _target$ownerDocument2.defaultView) != null ? _target$ownerDocument : window;\n}\n\nfunction isDocument(node) {\n const {\n Document\n } = getWindow(node);\n return node instanceof Document;\n}\n\nfunction isHTMLElement(node) {\n if (isWindow(node)) {\n return false;\n }\n\n return node instanceof getWindow(node).HTMLElement;\n}\n\nfunction isSVGElement(node) {\n return node instanceof getWindow(node).SVGElement;\n}\n\nfunction getOwnerDocument(target) {\n if (!target) {\n return document;\n }\n\n if (isWindow(target)) {\n return target.document;\n }\n\n if (!isNode(target)) {\n return document;\n }\n\n if (isDocument(target)) {\n return target;\n }\n\n if (isHTMLElement(target) || isSVGElement(target)) {\n return target.ownerDocument;\n }\n\n return document;\n}\n\n/**\r\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\r\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\r\n */\n\nconst useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;\n\nfunction useEvent(handler) {\n const handlerRef = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n handlerRef.current = handler;\n });\n return useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return handlerRef.current == null ? void 0 : handlerRef.current(...args);\n }, []);\n}\n\nfunction useInterval() {\n const intervalRef = useRef(null);\n const set = useCallback((listener, duration) => {\n intervalRef.current = setInterval(listener, duration);\n }, []);\n const clear = useCallback(() => {\n if (intervalRef.current !== null) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n return [set, clear];\n}\n\nfunction useLatestValue(value, dependencies) {\n if (dependencies === void 0) {\n dependencies = [value];\n }\n\n const valueRef = useRef(value);\n useIsomorphicLayoutEffect(() => {\n if (valueRef.current !== value) {\n valueRef.current = value;\n }\n }, dependencies);\n return valueRef;\n}\n\nfunction useLazyMemo(callback, dependencies) {\n const valueRef = useRef();\n return useMemo(() => {\n const newValue = callback(valueRef.current);\n valueRef.current = newValue;\n return newValue;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [...dependencies]);\n}\n\nfunction useNodeRef(onChange) {\n const onChangeHandler = useEvent(onChange);\n const node = useRef(null);\n const setNodeRef = useCallback(element => {\n if (element !== node.current) {\n onChangeHandler == null ? void 0 : onChangeHandler(element, node.current);\n }\n\n node.current = element;\n }, //eslint-disable-next-line\n []);\n return [node, setNodeRef];\n}\n\nfunction usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nlet ids = {};\nfunction useUniqueId(prefix, value) {\n return useMemo(() => {\n if (value) {\n return value;\n }\n\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n return prefix + \"-\" + id;\n }, [prefix, value]);\n}\n\nfunction createAdjustmentFn(modifier) {\n return function (object) {\n for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n adjustments[_key - 1] = arguments[_key];\n }\n\n return adjustments.reduce((accumulator, adjustment) => {\n const entries = Object.entries(adjustment);\n\n for (const [key, valueAdjustment] of entries) {\n const value = accumulator[key];\n\n if (value != null) {\n accumulator[key] = value + modifier * valueAdjustment;\n }\n }\n\n return accumulator;\n }, { ...object\n });\n };\n}\n\nconst add = /*#__PURE__*/createAdjustmentFn(1);\nconst subtract = /*#__PURE__*/createAdjustmentFn(-1);\n\nfunction hasViewportRelativeCoordinates(event) {\n return 'clientX' in event && 'clientY' in event;\n}\n\nfunction isKeyboardEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n KeyboardEvent\n } = getWindow(event.target);\n return KeyboardEvent && event instanceof KeyboardEvent;\n}\n\nfunction isTouchEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n TouchEvent\n } = getWindow(event.target);\n return TouchEvent && event instanceof TouchEvent;\n}\n\n/**\r\n * Returns the normalized x and y coordinates for mouse and touch events.\r\n */\n\nfunction getEventCoordinates(event) {\n if (isTouchEvent(event)) {\n if (event.touches && event.touches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.touches[0];\n return {\n x,\n y\n };\n } else if (event.changedTouches && event.changedTouches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.changedTouches[0];\n return {\n x,\n y\n };\n }\n }\n\n if (hasViewportRelativeCoordinates(event)) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n }\n\n return null;\n}\n\nconst CSS = /*#__PURE__*/Object.freeze({\n Translate: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n x,\n y\n } = transform;\n return \"translate3d(\" + (x ? Math.round(x) : 0) + \"px, \" + (y ? Math.round(y) : 0) + \"px, 0)\";\n }\n\n },\n Scale: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n scaleX,\n scaleY\n } = transform;\n return \"scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\";\n }\n\n },\n Transform: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n return [CSS.Translate.toString(transform), CSS.Scale.toString(transform)].join(' ');\n }\n\n },\n Transition: {\n toString(_ref) {\n let {\n property,\n duration,\n easing\n } = _ref;\n return property + \" \" + duration + \"ms \" + easing;\n }\n\n }\n});\n\nconst SELECTOR = 'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';\nfunction findFirstFocusableNode(element) {\n if (element.matches(SELECTOR)) {\n return element;\n }\n\n return element.querySelector(SELECTOR);\n}\n\nexport { CSS, add, canUseDOM, findFirstFocusableNode, getEventCoordinates, getOwnerDocument, getWindow, hasViewportRelativeCoordinates, isDocument, isHTMLElement, isKeyboardEvent, isNode, isSVGElement, isTouchEvent, isWindow, subtract, useCombinedRefs, useEvent, useInterval, useIsomorphicLayoutEffect, useLatestValue, useLazyMemo, useNodeRef, usePrevious, useUniqueId };\n//# sourceMappingURL=utilities.esm.js.map\n","import React, { useState, useCallback } from 'react';\n\nconst hiddenStyles = {\n display: 'none'\n};\nfunction HiddenText(_ref) {\n let {\n id,\n value\n } = _ref;\n return React.createElement(\"div\", {\n id: id,\n style: hiddenStyles\n }, value);\n}\n\nfunction LiveRegion(_ref) {\n let {\n id,\n announcement,\n ariaLiveType = \"assertive\"\n } = _ref;\n // Hide element visually but keep it readable by screen readers\n const visuallyHidden = {\n position: 'fixed',\n top: 0,\n left: 0,\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(100%)',\n whiteSpace: 'nowrap'\n };\n return React.createElement(\"div\", {\n id: id,\n style: visuallyHidden,\n role: \"status\",\n \"aria-live\": ariaLiveType,\n \"aria-atomic\": true\n }, announcement);\n}\n\nfunction useAnnouncement() {\n const [announcement, setAnnouncement] = useState('');\n const announce = useCallback(value => {\n if (value != null) {\n setAnnouncement(value);\n }\n }, []);\n return {\n announce,\n announcement\n };\n}\n\nexport { HiddenText, LiveRegion, useAnnouncement };\n//# sourceMappingURL=accessibility.esm.js.map\n","import React, { createContext, useContext, useEffect, useState, useCallback, useMemo, useRef, memo, useReducer, cloneElement, forwardRef } from 'react';\nimport { createPortal, unstable_batchedUpdates } from 'react-dom';\nimport { useUniqueId, getEventCoordinates, getWindow, isDocument, isHTMLElement, isSVGElement, canUseDOM, isWindow, isNode, getOwnerDocument, add, isKeyboardEvent, subtract, useLazyMemo, useInterval, usePrevious, useLatestValue, useEvent, useIsomorphicLayoutEffect, useNodeRef, findFirstFocusableNode, CSS } from '@dnd-kit/utilities';\nimport { useAnnouncement, HiddenText, LiveRegion } from '@dnd-kit/accessibility';\n\nconst DndMonitorContext = /*#__PURE__*/createContext(null);\n\nfunction useDndMonitor(listener) {\n const registerListener = useContext(DndMonitorContext);\n useEffect(() => {\n if (!registerListener) {\n throw new Error('useDndMonitor must be used within a children of <DndContext>');\n }\n\n const unsubscribe = registerListener(listener);\n return unsubscribe;\n }, [listener, registerListener]);\n}\n\nfunction useDndMonitorProvider() {\n const [listeners] = useState(() => new Set());\n const registerListener = useCallback(listener => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }, [listeners]);\n const dispatch = useCallback(_ref => {\n let {\n type,\n event\n } = _ref;\n listeners.forEach(listener => {\n var _listener$type;\n\n return (_listener$type = listener[type]) == null ? void 0 : _listener$type.call(listener, event);\n });\n }, [listeners]);\n return [dispatch, registerListener];\n}\n\nconst defaultScreenReaderInstructions = {\n draggable: \"\\n To pick up a draggable item, press the space bar.\\n While dragging, use the arrow keys to move the item.\\n Press space again to drop the item in its new position, or press escape to cancel.\\n \"\n};\nconst defaultAnnouncements = {\n onDragStart(_ref) {\n let {\n active\n } = _ref;\n return \"Picked up draggable item \" + active.id + \".\";\n },\n\n onDragOver(_ref2) {\n let {\n active,\n over\n } = _ref2;\n\n if (over) {\n return \"Draggable item \" + active.id + \" was moved over droppable area \" + over.id + \".\";\n }\n\n return \"Draggable item \" + active.id + \" is no longer over a droppable area.\";\n },\n\n onDragEnd(_ref3) {\n let {\n active,\n over\n } = _ref3;\n\n if (over) {\n return \"Draggable item \" + active.id + \" was dropped over droppable area \" + over.id;\n }\n\n return \"Draggable item \" + active.id + \" was dropped.\";\n },\n\n onDragCancel(_ref4) {\n let {\n active\n } = _ref4;\n return \"Dragging was cancelled. Draggable item \" + active.id + \" was dropped.\";\n }\n\n};\n\nfunction Accessibility(_ref) {\n let {\n announcements = defaultAnnouncements,\n container,\n hiddenTextDescribedById,\n screenReaderInstructions = defaultScreenReaderInstructions\n } = _ref;\n const {\n announce,\n announcement\n } = useAnnouncement();\n const liveRegionId = useUniqueId(\"DndLiveRegion\");\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n setMounted(true);\n }, []);\n useDndMonitor(useMemo(() => ({\n onDragStart(_ref2) {\n let {\n active\n } = _ref2;\n announce(announcements.onDragStart({\n active\n }));\n },\n\n onDragMove(_ref3) {\n let {\n active,\n over\n } = _ref3;\n\n if (announcements.onDragMove) {\n announce(announcements.onDragMove({\n active,\n over\n }));\n }\n },\n\n onDragOver(_ref4) {\n let {\n active,\n over\n } = _ref4;\n announce(announcements.onDragOver({\n active,\n over\n }));\n },\n\n onDragEnd(_ref5) {\n let {\n active,\n over\n } = _ref5;\n announce(announcements.onDragEnd({\n active,\n over\n }));\n },\n\n onDragCancel(_ref6) {\n let {\n active,\n over\n } = _ref6;\n announce(announcements.onDragCancel({\n active,\n over\n }));\n }\n\n }), [announce, announcements]));\n\n if (!mounted) {\n return null;\n }\n\n const markup = React.createElement(React.Fragment, null, React.createElement(HiddenText, {\n id: hiddenTextDescribedById,\n value: screenReaderInstructions.draggable\n }), React.createElement(LiveRegion, {\n id: liveRegionId,\n announcement: announcement\n }));\n return container ? createPortal(markup, container) : markup;\n}\n\nvar Action;\n\n(function (Action) {\n Action[\"DragStart\"] = \"dragStart\";\n Action[\"DragMove\"] = \"dragMove\";\n Action[\"DragEnd\"] = \"dragEnd\";\n Action[\"DragCancel\"] = \"dragCancel\";\n Action[\"DragOver\"] = \"dragOver\";\n Action[\"RegisterDroppable\"] = \"registerDroppable\";\n Action[\"SetDroppableDisabled\"] = \"setDroppableDisabled\";\n Action[\"UnregisterDroppable\"] = \"unregisterDroppable\";\n})(Action || (Action = {}));\n\nfunction noop() {}\n\nfunction useSensor(sensor, options) {\n return useMemo(() => ({\n sensor,\n options: options != null ? options : {}\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [sensor, options]);\n}\n\nfunction useSensors() {\n for (var _len = arguments.length, sensors = new Array(_len), _key = 0; _key < _len; _key++) {\n sensors[_key] = arguments[_key];\n }\n\n return useMemo(() => [...sensors].filter(sensor => sensor != null), // eslint-disable-next-line react-hooks/exhaustive-deps\n [...sensors]);\n}\n\nconst defaultCoordinates = /*#__PURE__*/Object.freeze({\n x: 0,\n y: 0\n});\n\n/**\r\n * Returns the distance between two points\r\n */\nfunction distanceBetween(p1, p2) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n}\n\nfunction getRelativeTransformOrigin(event, rect) {\n const eventCoordinates = getEventCoordinates(event);\n\n if (!eventCoordinates) {\n return '0 0';\n }\n\n const transformOrigin = {\n x: (eventCoordinates.x - rect.left) / rect.width * 100,\n y: (eventCoordinates.y - rect.top) / rect.height * 100\n };\n return transformOrigin.x + \"% \" + transformOrigin.y + \"%\";\n}\n\n/**\r\n * Sort collisions from smallest to greatest value\r\n */\nfunction sortCollisionsAsc(_ref, _ref2) {\n let {\n data: {\n value: a\n }\n } = _ref;\n let {\n data: {\n value: b\n }\n } = _ref2;\n return a - b;\n}\n/**\r\n * Sort collisions from greatest to smallest value\r\n */\n\nfunction sortCollisionsDesc(_ref3, _ref4) {\n let {\n data: {\n value: a\n }\n } = _ref3;\n let {\n data: {\n value: b\n }\n } = _ref4;\n return b - a;\n}\n/**\r\n * Returns the coordinates of the corners of a given rectangle:\r\n * [TopLeft {x, y}, TopRight {x, y}, BottomLeft {x, y}, BottomRight {x, y}]\r\n */\n\nfunction cornersOfRectangle(_ref5) {\n let {\n left,\n top,\n height,\n width\n } = _ref5;\n return [{\n x: left,\n y: top\n }, {\n x: left + width,\n y: top\n }, {\n x: left,\n y: top + height\n }, {\n x: left + width,\n y: top + height\n }];\n}\nfunction getFirstCollision(collisions, property) {\n if (!collisions || collisions.length === 0) {\n return null;\n }\n\n const [firstCollision] = collisions;\n return property ? firstCollision[property] : firstCollision;\n}\n\n/**\r\n * Returns the coordinates of the center of a given ClientRect\r\n */\n\nfunction centerOfRectangle(rect, left, top) {\n if (left === void 0) {\n left = rect.left;\n }\n\n if (top === void 0) {\n top = rect.top;\n }\n\n return {\n x: left + rect.width * 0.5,\n y: top + rect.height * 0.5\n };\n}\n/**\r\n * Returns the closest rectangles from an array of rectangles to the center of a given\r\n * rectangle.\r\n */\n\n\nconst closestCenter = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const centerRect = centerOfRectangle(collisionRect, collisionRect.left, collisionRect.top);\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const distBetween = distanceBetween(centerOfRectangle(rect), centerRect);\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: distBetween\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\n/**\r\n * Returns the closest rectangles from an array of rectangles to the corners of\r\n * another rectangle.\r\n */\n\nconst closestCorners = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const corners = cornersOfRectangle(collisionRect);\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const rectCorners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner, index) => {\n return accumulator + distanceBetween(rectCorners[index], corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: effectiveDistance\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\n/**\r\n * Returns the intersecting rectangle area between two rectangles\r\n */\n\nfunction getIntersectionRatio(entry, target) {\n const top = Math.max(target.top, entry.top);\n const left = Math.max(target.left, entry.left);\n const right = Math.min(target.left + target.width, entry.left + entry.width);\n const bottom = Math.min(target.top + target.height, entry.top + entry.height);\n const width = right - left;\n const height = bottom - top;\n\n if (left < right && top < bottom) {\n const targetArea = target.width * target.height;\n const entryArea = entry.width * entry.height;\n const intersectionArea = width * height;\n const intersectionRatio = intersectionArea / (targetArea + entryArea - intersectionArea);\n return Number(intersectionRatio.toFixed(4));\n } // Rectangles do not overlap, or overlap has an area of zero (edge/corner overlap)\n\n\n return 0;\n}\n/**\r\n * Returns the rectangles that has the greatest intersection area with a given\r\n * rectangle in an array of rectangles.\r\n */\n\nconst rectIntersection = _ref => {\n let {\n collisionRect,\n droppableRects,\n droppableContainers\n } = _ref;\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect) {\n const intersectionRatio = getIntersectionRatio(rect, collisionRect);\n\n if (intersectionRatio > 0) {\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: intersectionRatio\n }\n });\n }\n }\n }\n\n return collisions.sort(sortCollisionsDesc);\n};\n\n/**\r\n * Check if a given point is contained within a bounding rectangle\r\n */\n\nfunction isPointWithinRect(point, rect) {\n const {\n top,\n left,\n bottom,\n right\n } = rect;\n return top <= point.y && point.y <= bottom && left <= point.x && point.x <= right;\n}\n/**\r\n * Returns the rectangles that the pointer is hovering over\r\n */\n\n\nconst pointerWithin = _ref => {\n let {\n droppableContainers,\n droppableRects,\n pointerCoordinates\n } = _ref;\n\n if (!pointerCoordinates) {\n return [];\n }\n\n const collisions = [];\n\n for (const droppableContainer of droppableContainers) {\n const {\n id\n } = droppableContainer;\n const rect = droppableRects.get(id);\n\n if (rect && isPointWithinRect(pointerCoordinates, rect)) {\n /* There may be more than a single rectangle intersecting\r\n * with the pointer coordinates. In order to sort the\r\n * colliding rectangles, we measure the distance between\r\n * the pointer and the corners of the intersecting rectangle\r\n */\n const corners = cornersOfRectangle(rect);\n const distances = corners.reduce((accumulator, corner) => {\n return accumulator + distanceBetween(pointerCoordinates, corner);\n }, 0);\n const effectiveDistance = Number((distances / 4).toFixed(4));\n collisions.push({\n id,\n data: {\n droppableContainer,\n value: effectiveDistance\n }\n });\n }\n }\n\n return collisions.sort(sortCollisionsAsc);\n};\n\nfunction adjustScale(transform, rect1, rect2) {\n return { ...transform,\n scaleX: rect1 && rect2 ? rect1.width / rect2.width : 1,\n scaleY: rect1 && rect2 ? rect1.height / rect2.height : 1\n };\n}\n\nfunction getRectDelta(rect1, rect2) {\n return rect1 && rect2 ? {\n x: rect1.left - rect2.left,\n y: rect1.top - rect2.top\n } : defaultCoordinates;\n}\n\nfunction createRectAdjustmentFn(modifier) {\n return function adjustClientRect(rect) {\n for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n adjustments[_key - 1] = arguments[_key];\n }\n\n return adjustments.reduce((acc, adjustment) => ({ ...acc,\n top: acc.top + modifier * adjustment.y,\n bottom: acc.bottom + modifier * adjustment.y,\n left: acc.left + modifier * adjustment.x,\n right: acc.right + modifier * adjustment.x\n }), { ...rect\n });\n };\n}\nconst getAdjustedRect = /*#__PURE__*/createRectAdjustmentFn(1);\n\nfunction parseTransform(transform) {\n if (transform.startsWith('matrix3d(')) {\n const transformArray = transform.slice(9, -1).split(/, /);\n return {\n x: +transformArray[12],\n y: +transformArray[13],\n scaleX: +transformArray[0],\n scaleY: +transformArray[5]\n };\n } else if (transform.startsWith('matrix(')) {\n const transformArray = transform.slice(7, -1).split(/, /);\n return {\n x: +transformArray[4],\n y: +transformArray[5],\n scaleX: +transformArray[0],\n scaleY: +transformArray[3]\n };\n }\n\n return null;\n}\n\nfunction inverseTransform(rect, transform, transformOrigin) {\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return rect;\n }\n\n const {\n scaleX,\n scaleY,\n x: translateX,\n y: translateY\n } = parsedTransform;\n const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n const y = rect.top - translateY - (1 - scaleY) * parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n const w = scaleX ? rect.width / scaleX : rect.width;\n const h = scaleY ? rect.height / scaleY : rect.height;\n return {\n width: w,\n height: h,\n top: y,\n right: x + w,\n bottom: y + h,\n left: x\n };\n}\n\nconst defaultOptions = {\n ignoreTransform: false\n};\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n */\n\nfunction getClientRect(element, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n let rect = element.getBoundingClientRect();\n\n if (options.ignoreTransform) {\n const {\n transform,\n transformOrigin\n } = getWindow(element).getComputedStyle(element);\n\n if (transform) {\n rect = inverseTransform(rect, transform, transformOrigin);\n }\n }\n\n const {\n top,\n left,\n width,\n height,\n bottom,\n right\n } = rect;\n return {\n top,\n left,\n width,\n height,\n bottom,\n right\n };\n}\n/**\r\n * Returns the bounding client rect of an element relative to the viewport.\r\n *\r\n * @remarks\r\n * The ClientRect returned by this method does not take into account transforms\r\n * applied to the element it measures.\r\n *\r\n */\n\nfunction getTransformAgnosticClientRect(element) {\n return getClientRect(element, {\n ignoreTransform: true\n });\n}\n\nfunction getWindowClientRect(element) {\n const width = element.innerWidth;\n const height = element.innerHeight;\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height\n };\n}\n\nfunction isFixed(node, computedStyle) {\n if (computedStyle === void 0) {\n computedStyle = getWindow(node).getComputedStyle(node);\n }\n\n return computedStyle.position === 'fixed';\n}\n\nfunction isScrollable(element, computedStyle) {\n if (computedStyle === void 0) {\n computedStyle = getWindow(element).getComputedStyle(element);\n }\n\n const overflowRegex = /(auto|scroll|overlay)/;\n const properties = ['overflow', 'overflowX', 'overflowY'];\n return properties.some(property => {\n const value = computedStyle[property];\n return typeof value === 'string' ? overflowRegex.test(value) : false;\n });\n}\n\nfunction getScrollableAncestors(element, limit) {\n const scrollParents = [];\n\n function findScrollableAncestors(node) {\n if (limit != null && scrollParents.length >= limit) {\n return scrollParents;\n }\n\n if (!node) {\n return scrollParents;\n }\n\n if (isDocument(node) && node.scrollingElement != null && !scrollParents.includes(node.scrollingElement)) {\n scrollParents.push(node.scrollingElement);\n return scrollParents;\n }\n\n if (!isHTMLElement(node) || isSVGElement(node)) {\n return scrollParents;\n }\n\n if (scrollParents.includes(node)) {\n return scrollParents;\n }\n\n const computedStyle = getWindow(element).getComputedStyle(node);\n\n if (node !== element) {\n if (isScrollable(node, computedStyle)) {\n scrollParents.push(node);\n }\n }\n\n if (isFixed(node, computedStyle)) {\n return scrollParents;\n }\n\n return findScrollableAncestors(node.parentNode);\n }\n\n if (!element) {\n return scrollParents;\n }\n\n return findScrollableAncestors(element);\n}\nfunction getFirstScrollableAncestor(node) {\n const [firstScrollableAncestor] = getScrollableAncestors(node, 1);\n return firstScrollableAncestor != null ? firstScrollableAncestor : null;\n}\n\nfunction getScrollableElement(element) {\n if (!canUseDOM || !element) {\n return null;\n }\n\n if (isWindow(element)) {\n return element;\n }\n\n if (!isNode(element)) {\n return null;\n }\n\n if (isDocument(element) || element === getOwnerDocument(element).scrollingElement) {\n return window;\n }\n\n if (isHTMLElement(element)) {\n return element;\n }\n\n return null;\n}\n\nfunction getScrollXCoordinate(element) {\n if (isWindow(element)) {\n return element.scrollX;\n }\n\n return element.scrollLeft;\n}\nfunction getScrollYCoordinate(element) {\n if (isWindow(element)) {\n return element.scrollY;\n }\n\n return element.scrollTop;\n}\nfunction getScrollCoordinates(element) {\n return {\n x: getScrollXCoordinate(element),\n y: getScrollYCoordinate(element)\n };\n}\n\nvar Direction;\n\n(function (Direction) {\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n\nfunction isDocumentScrollingElement(element) {\n if (!canUseDOM || !element) {\n return false;\n }\n\n return element === document.scrollingElement;\n}\n\nfunction getScrollPosition(scrollingContainer) {\n const minScroll = {\n x: 0,\n y: 0\n };\n const dimensions = isDocumentScrollingElement(scrollingContainer) ? {\n height: window.innerHeight,\n width: window.innerWidth\n } : {\n height: scrollingContainer.clientHeight,\n width: scrollingContainer.clientWidth\n };\n const maxScroll = {\n x: scrollingContainer.scrollWidth - dimensions.width,\n y: scrollingContainer.scrollHeight - dimensions.height\n };\n const isTop = scrollingContainer.scrollTop <= minScroll.y;\n const isLeft = scrollingContainer.scrollLeft <= minScroll.x;\n const isBottom = scrollingContainer.scrollTop >= maxScroll.y;\n const isRight = scrollingContainer.scrollLeft >= maxScroll.x;\n return {\n isTop,\n isLeft,\n isBottom,\n isRight,\n maxScroll,\n minScroll\n };\n}\n\nconst defaultThreshold = {\n x: 0.2,\n y: 0.2\n};\nfunction getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, _ref, acceleration, thresholdPercentage) {\n let {\n top,\n left,\n right,\n bottom\n } = _ref;\n\n if (acceleration === void 0) {\n acceleration = 10;\n }\n\n if (thresholdPercentage === void 0) {\n thresholdPercentage = defaultThreshold;\n }\n\n const {\n isTop,\n isBottom,\n isLeft,\n isRight\n } = getScrollPosition(scrollContainer);\n const direction = {\n x: 0,\n y: 0\n };\n const speed = {\n x: 0,\n y: 0\n };\n const threshold = {\n height: scrollContainerRect.height * thresholdPercentage.y,\n width: scrollContainerRect.width * thresholdPercentage.x\n };\n\n if (!isTop && top <= scrollContainerRect.top + threshold.height) {\n // Scroll Up\n direction.y = Direction.Backward;\n speed.y = acceleration * Math.abs((scrollContainerRect.top + threshold.height - top) / threshold.height);\n } else if (!isBottom && bottom >= scrollContainerRect.bottom - threshold.height) {\n // Scroll Down\n direction.y = Direction.Forward;\n speed.y = acceleration * Math.abs((scrollContainerRect.bottom - threshold.height - bottom) / threshold.height);\n }\n\n if (!isRight && right >= scrollContainerRect.right - threshold.width) {\n // Scroll Right\n direction.x = Direction.Forward;\n speed.x = acceleration * Math.abs((scrollContainerRect.right - threshold.width - right) / threshold.width);\n } else if (!isLeft && left <= scrollContainerRect.left + threshold.width) {\n // Scroll Left\n direction.x = Direction.Backward;\n speed.x = acceleration * Math.abs((scrollContainerRect.left + threshold.width - left) / threshold.width);\n }\n\n return {\n direction,\n speed\n };\n}\n\nfunction getScrollElementRect(element) {\n if (element === document.scrollingElement) {\n const {\n innerWidth,\n innerHeight\n } = window;\n return {\n top: 0,\n left: 0,\n right: innerWidth,\n bottom: innerHeight,\n width: innerWidth,\n height: innerHeight\n };\n }\n\n const {\n top,\n left,\n right,\n bottom\n } = element.getBoundingClientRect();\n return {\n top,\n left,\n right,\n bottom,\n width: element.clientWidth,\n height: element.clientHeight\n };\n}\n\nfunction getScrollOffsets(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return add(acc, getScrollCoordinates(node));\n }, defaultCoordinates);\n}\nfunction getScrollXOffset(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return acc + getScrollXCoordinate(node);\n }, 0);\n}\nfunction getScrollYOffset(scrollableAncestors) {\n return scrollableAncestors.reduce((acc, node) => {\n return acc + getScrollYCoordinate(node);\n }, 0);\n}\n\nfunction scrollIntoViewIfNeeded(element, measure) {\n if (measure === void 0) {\n measure = getClientRect;\n }\n\n if (!element) {\n return;\n }\n\n const {\n top,\n left,\n bottom,\n right\n } = measure(element);\n const firstScrollableAncestor = getFirstScrollableAncestor(element);\n\n if (!firstScrollableAncestor) {\n return;\n }\n\n if (bottom <= 0 || right <= 0 || top >= window.innerHeight || left >= window.innerWidth) {\n element.scrollIntoView({\n block: 'center',\n inline: 'center'\n });\n }\n}\n\nconst properties = [['x', ['left', 'right'], getScrollXOffset], ['y', ['top', 'bottom'], getScrollYOffset]];\nclass Rect {\n constructor(rect, element) {\n this.rect = void 0;\n this.width = void 0;\n this.height = void 0;\n this.top = void 0;\n this.bottom = void 0;\n this.right = void 0;\n this.left = void 0;\n const scrollableAncestors = getScrollableAncestors(element);\n const scrollOffsets = getScrollOffsets(scrollableAncestors);\n this.rect = { ...rect\n };\n this.width = rect.width;\n this.height = rect.height;\n\n for (const [axis, keys, getScrollOffset] of properties) {\n for (const key of keys) {\n Object.defineProperty(this, key, {\n get: () => {\n const currentOffsets = getScrollOffset(scrollableAncestors);\n const scrollOffsetsDeltla = scrollOffsets[axis] - currentOffsets;\n return this.rect[key] + scrollOffsetsDeltla;\n },\n enumerable: true\n });\n }\n }\n\n Object.defineProperty(this, 'rect', {\n enumerable: false\n });\n }\n\n}\n\nclass Listeners {\n constructor(target) {\n this.target = void 0;\n this.listeners = [];\n\n this.removeAll = () => {\n this.listeners.forEach(listener => {\n var _this$target;\n\n return (_this$target = this.target) == null ? void 0 : _this$target.removeEventListener(...listener);\n });\n };\n\n this.target = target;\n }\n\n add(eventName, handler, options) {\n var _this$target2;\n\n (_this$target2 = this.target) == null ? void 0 : _this$target2.addEventListener(eventName, handler, options);\n this.listeners.push([eventName, handler, options]);\n }\n\n}\n\nfunction getEventListenerTarget(target) {\n // If the `event.target` element is removed from the document events will still be targeted\n // at it, and hence won't always bubble up to the window or document anymore.\n // If there is any risk of an element being removed while it is being dragged,\n // the best practice is to attach the event listeners directly to the target.\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget\n const {\n EventTarget\n } = getWindow(target);\n return target instanceof EventTarget ? target : getOwnerDocument(target);\n}\n\nfunction hasExceededDistance(delta, measurement) {\n const dx = Math.abs(delta.x);\n const dy = Math.abs(delta.y);\n\n if (typeof measurement === 'number') {\n return Math.sqrt(dx ** 2 + dy ** 2) > measurement;\n }\n\n if ('x' in measurement && 'y' in measurement) {\n return dx > measurement.x && dy > measurement.y;\n }\n\n if ('x' in measurement) {\n return dx > measurement.x;\n }\n\n if ('y' in measurement) {\n return dy > measurement.y;\n }\n\n return false;\n}\n\nvar EventName;\n\n(function (EventName) {\n EventName[\"Click\"] = \"click\";\n EventName[\"DragStart\"] = \"dragstart\";\n EventName[\"Keydown\"] = \"keydown\";\n EventName[\"ContextMenu\"] = \"contextmenu\";\n EventName[\"Resize\"] = \"resize\";\n EventName[\"SelectionChange\"] = \"selectionchange\";\n EventName[\"VisibilityChange\"] = \"visibilitychange\";\n})(EventName || (EventName = {}));\n\nfunction preventDefault(event) {\n event.preventDefault();\n}\nfunction stopPropagation(event) {\n event.stopPropagation();\n}\n\nvar KeyboardCode;\n\n(function (KeyboardCode) {\n KeyboardCode[\"Space\"] = \"Space\";\n KeyboardCode[\"Down\"] = \"ArrowDown\";\n KeyboardCode[\"Right\"] = \"ArrowRight\";\n KeyboardCode[\"Left\"] = \"ArrowLeft\";\n KeyboardCode[\"Up\"] = \"ArrowUp\";\n KeyboardCode[\"Esc\"] = \"Escape\";\n KeyboardCode[\"Enter\"] = \"Enter\";\n KeyboardCode[\"Tab\"] = \"Tab\";\n})(KeyboardCode || (KeyboardCode = {}));\n\nconst defaultKeyboardCodes = {\n start: [KeyboardCode.Space, KeyboardCode.Enter],\n cancel: [KeyboardCode.Esc],\n end: [KeyboardCode.Space, KeyboardCode.Enter, KeyboardCode.Tab]\n};\nconst defaultKeyboardCoordinateGetter = (event, _ref) => {\n let {\n currentCoordinates\n } = _ref;\n\n switch (event.code) {\n case KeyboardCode.Right:\n return { ...currentCoordinates,\n x: currentCoordinates.x + 25\n };\n\n case KeyboardCode.Left:\n return { ...currentCoordinates,\n x: currentCoordinates.x - 25\n };\n\n case KeyboardCode.Down:\n return { ...currentCoordinates,\n y: currentCoordinates.y + 25\n };\n\n case KeyboardCode.Up:\n return { ...currentCoordinates,\n y: currentCoordinates.y - 25\n };\n }\n\n return undefined;\n};\n\nclass KeyboardSensor {\n constructor(props) {\n this.props = void 0;\n this.autoScrollEnabled = false;\n this.referenceCoordinates = void 0;\n this.listeners = void 0;\n this.windowListeners = void 0;\n this.props = props;\n const {\n event: {\n target\n }\n } = props;\n this.props = props;\n this.listeners = new Listeners(getOwnerDocument(target));\n this.windowListeners = new Listeners(getWindow(target));\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.attach();\n }\n\n attach() {\n this.handleStart();\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));\n }\n\n handleStart() {\n const {\n activeNode,\n onStart\n } = this.props;\n const node = activeNode.node.current;\n\n if (node) {\n scrollIntoViewIfNeeded(node);\n }\n\n onStart(defaultCoordinates);\n }\n\n handleKeyDown(event) {\n if (isKeyboardEvent(event)) {\n const {\n active,\n context,\n options\n } = this.props;\n const {\n keyboardCodes = defaultKeyboardCodes,\n coordinateGetter = defaultKeyboardCoordinateGetter,\n scrollBehavior = 'smooth'\n } = options;\n const {\n code\n } = event;\n\n if (keyboardCodes.end.includes(code)) {\n this.handleEnd(event);\n return;\n }\n\n if (keyboardCodes.cancel.includes(code)) {\n this.handleCancel(event);\n return;\n }\n\n const {\n collisionRect\n } = context.current;\n const currentCoordinates = collisionRect ? {\n x: collisionRect.left,\n y: collisionRect.top\n } : defaultCoordinates;\n\n if (!this.referenceCoordinates) {\n this.referenceCoordinates = currentCoordinates;\n }\n\n const newCoordinates = coordinateGetter(event, {\n active,\n context: context.current,\n currentCoordinates\n });\n\n if (newCoordinates) {\n const coordinatesDelta = subtract(newCoordinates, currentCoordinates);\n const scrollDelta = {\n x: 0,\n y: 0\n };\n const {\n scrollableAncestors\n } = context.current;\n\n for (const scrollContainer of scrollableAncestors) {\n const direction = event.code;\n const {\n isTop,\n isRight,\n isLeft,\n isBottom,\n maxScroll,\n minScroll\n } = getScrollPosition(scrollContainer);\n const scrollElementRect = getScrollElementRect(scrollContainer);\n const clampedCoordinates = {\n x: Math.min(direction === KeyboardCode.Right ? scrollElementRect.right - scrollElementRect.width / 2 : scrollElementRect.right, Math.max(direction === KeyboardCode.Right ? scrollElementRect.left : scrollElementRect.left + scrollElementRect.width / 2, newCoordinates.x)),\n y: Math.min(direction === KeyboardCode.Down ? scrollElementRect.bottom - scrollElementRect.height / 2 : scrollElementRect.bottom, Math.max(direction === KeyboardCode.Down ? scrollElementRect.top : scrollElementRect.top + scrollElementRect.height / 2, newCoordinates.y))\n };\n const canScrollX = direction === KeyboardCode.Right && !isRight || direction === KeyboardCode.Left && !isLeft;\n const canScrollY = direction === KeyboardCode.Down && !isBottom || direction === KeyboardCode.Up && !isTop;\n\n if (canScrollX && clampedCoordinates.x !== newCoordinates.x) {\n const newScrollCoordinates = scrollContainer.scrollLeft + coordinatesDelta.x;\n const canScrollToNewCoordinates = direction === KeyboardCode.Right && newScrollCoordinates <= maxScroll.x || direction === KeyboardCode.Left && newScrollCoordinates >= minScroll.x;\n\n if (canScrollToNewCoordinates && !coordinatesDelta.y) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n left: newScrollCoordinates,\n behavior: scrollBehavior\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.x = scrollContainer.scrollLeft - newScrollCoordinates;\n } else {\n scrollDelta.x = direction === KeyboardCode.Right ? scrollContainer.scrollLeft - maxScroll.x : scrollContainer.scrollLeft - minScroll.x;\n }\n\n if (scrollDelta.x) {\n scrollContainer.scrollBy({\n left: -scrollDelta.x,\n behavior: scrollBehavior\n });\n }\n\n break;\n } else if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {\n const newScrollCoordinates = scrollContainer.scrollTop + coordinatesDelta.y;\n const canScrollToNewCoordinates = direction === KeyboardCode.Down && newScrollCoordinates <= maxScroll.y || direction === KeyboardCode.Up && newScrollCoordinates >= minScroll.y;\n\n if (canScrollToNewCoordinates && !coordinatesDelta.x) {\n // We don't need to update coordinates, the scroll adjustment alone will trigger\n // logic to auto-detect the new container we are over\n scrollContainer.scrollTo({\n top: newScrollCoordinates,\n behavior: scrollBehavior\n });\n return;\n }\n\n if (canScrollToNewCoordinates) {\n scrollDelta.y = scrollContainer.scrollTop - newScrollCoordinates;\n } else {\n scrollDelta.y = direction === KeyboardCode.Down ? scrollContainer.scrollTop - maxScroll.y : scrollContainer.scrollTop - minScroll.y;\n }\n\n if (scrollDelta.y) {\n scrollContainer.scrollBy({\n top: -scrollDelta.y,\n behavior: scrollBehavior\n });\n }\n\n break;\n }\n }\n\n this.handleMove(event, add(subtract(newCoordinates, this.referenceCoordinates), scrollDelta));\n }\n }\n }\n\n handleMove(event, coordinates) {\n const {\n onMove\n } = this.props;\n event.preventDefault();\n onMove(coordinates);\n }\n\n handleEnd(event) {\n const {\n onEnd\n } = this.props;\n event.preventDefault();\n this.detach();\n onEnd();\n }\n\n handleCancel(event) {\n const {\n onCancel\n } = this.props;\n event.preventDefault();\n this.detach();\n onCancel();\n }\n\n detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll();\n }\n\n}\nKeyboardSensor.activators = [{\n eventName: 'onKeyDown',\n handler: (event, _ref, _ref2) => {\n let {\n keyboardCodes = defaultKeyboardCodes,\n onActivation\n } = _ref;\n let {\n active\n } = _ref2;\n const {\n code\n } = event.nativeEvent;\n\n if (keyboardCodes.start.includes(code)) {\n const activator = active.activatorNode.current;\n\n if (activator && event.target !== activator) {\n return false;\n }\n\n event.preventDefault();\n onActivation == null ? void 0 : onActivation({\n event: event.nativeEvent\n });\n return true;\n }\n\n return false;\n }\n}];\n\nfunction isDistanceConstraint(constraint) {\n return Boolean(constraint && 'distance' in constraint);\n}\n\nfunction isDelayConstraint(constraint) {\n return Boolean(constraint && 'delay' in constraint);\n}\n\nclass AbstractPointerSensor {\n constructor(props, events, listenerTarget) {\n var _getEventCoordinates;\n\n if (listenerTarget === void 0) {\n listenerTarget = getEventListenerTarget(props.event.target);\n }\n\n this.props = void 0;\n this.events = void 0;\n this.autoScrollEnabled = true;\n this.document = void 0;\n this.activated = false;\n this.initialCoordinates = void 0;\n this.timeoutId = null;\n this.listeners = void 0;\n this.documentListeners = void 0;\n this.windowListeners = void 0;\n this.props = props;\n this.events = events;\n const {\n event\n } = props;\n const {\n target\n } = event;\n this.props = props;\n this.events = events;\n this.document = getOwnerDocument(target);\n this.documentListeners = new Listeners(this.document);\n this.listeners = new Listeners(listenerTarget);\n this.windowListeners = new Listeners(getWindow(target));\n this.initialCoordinates = (_getEventCoordinates = getEventCoordinates(event)) != null ? _getEventCoordinates : defaultCoordinates;\n this.handleStart = this.handleStart.bind(this);\n this.handleMove = this.handleMove.bind(this);\n this.handleEnd = this.handleEnd.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleKeydown = this.handleKeydown.bind(this);\n this.removeTextSelection = this.removeTextSelection.bind(this);\n this.attach();\n }\n\n attach() {\n const {\n events,\n props: {\n options: {\n activationConstraint,\n bypassActivationConstraint\n }\n }\n } = this;\n this.listeners.add(events.move.name, this.handleMove, {\n passive: false\n });\n this.listeners.add(events.end.name, this.handleEnd);\n\n if (events.cancel) {\n this.listeners.add(events.cancel.name, this.handleCancel);\n }\n\n this.windowListeners.add(EventName.Resize, this.handleCancel);\n this.windowListeners.add(EventName.DragStart, preventDefault);\n this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n this.windowListeners.add(EventName.ContextMenu, preventDefault);\n this.documentListeners.add(EventName.Keydown, this.handleKeydown);\n\n if (activationConstraint) {\n if (bypassActivationConstraint != null && bypassActivationConstraint({\n event: this.props.event,\n activeNode: this.props.activeNode,\n options: this.props.options\n })) {\n return this.handleStart();\n }\n\n if (isDelayConstraint(activationConstraint)) {\n this.timeoutId = setTimeout(this.handleStart, activationConstraint.delay);\n this.handlePending(activationConstraint);\n return;\n }\n\n if (isDistanceConstraint(activationConstraint)) {\n this.handlePending(activationConstraint);\n return;\n }\n }\n\n this.handleStart();\n }\n\n detach() {\n this.listeners.removeAll();\n this.windowListeners.removeAll(); // Wait until the next event loop before removing document listeners\n // This is necessary because we listen for `click` and `selection` events on the document\n\n setTimeout(this.documentListeners.removeAll, 50);\n\n if (this.timeoutId !== null) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n\n handlePending(constraint, offset) {\n const {\n active,\n onPending\n } = this.props;\n onPending(active, constraint, this.initialCoordinates, offset);\n }\n\n handleStart() {\n const {\n initialCoordinates\n } = this;\n const {\n onStart\n } = this.props;\n\n if (initialCoordinates) {\n this.activated = true; // Stop propagation of click events once activation constraints are met\n\n this.documentListeners.add(EventName.Click, stopPropagation, {\n capture: true\n }); // Remove any text selection from the document\n\n this.removeTextSelection(); // Prevent further text selection while dragging\n\n this.documentListeners.add(EventName.SelectionChange, this.removeTextSelection);\n onStart(initialCoordinates);\n }\n }\n\n handleMove(event) {\n var _getEventCoordinates2;\n\n const {\n activated,\n initialCoordinates,\n props\n } = this;\n const {\n onMove,\n options: {\n activationConstraint\n }\n } = props;\n\n if (!initialCoordinates) {\n return;\n }\n\n const coordinates = (_getEventCoordinates2 = getEventCoordinates(event)) != null ? _getEventCoordinates2 : defaultCoordinates;\n const delta = subtract(initialCoordinates, coordinates); // Constraint validation\n\n if (!activated && activationConstraint) {\n if (isDistanceConstraint(activationConstraint)) {\n if (activationConstraint.tolerance != null && hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n\n if (hasExceededDistance(delta, activationConstraint.distance)) {\n return this.handleStart();\n }\n }\n\n if (isDelayConstraint(activationConstraint)) {\n if (hasExceededDistance(delta, activationConstraint.tolerance)) {\n return this.handleCancel();\n }\n }\n\n this.handlePending(activationConstraint, delta);\n return;\n }\n\n if (event.cancelable) {\n event.preventDefault();\n }\n\n onMove(coordinates);\n }\n\n handleEnd() {\n const {\n onAbort,\n onEnd\n } = this.props;\n this.detach();\n\n if (!this.activated) {\n onAbort(this.props.active);\n }\n\n onEnd();\n }\n\n handleCancel() {\n const {\n onAbort,\n onCancel\n } = this.props;\n this.detach();\n\n if (!this.activated) {\n onAbort(this.props.active);\n }\n\n onCancel();\n }\n\n handleKeydown(event) {\n if (event.code === KeyboardCode.Esc) {\n this.handleCancel();\n }\n }\n\n removeTextSelection() {\n var _this$document$getSel;\n\n (_this$document$getSel = this.document.getSelection()) == null ? void 0 : _this$document$getSel.removeAllRanges();\n }\n\n}\n\nconst events = {\n cancel: {\n name: 'pointercancel'\n },\n move: {\n name: 'pointermove'\n },\n end: {\n name: 'pointerup'\n }\n};\nclass PointerSensor extends AbstractPointerSensor {\n constructor(props) {\n const {\n event\n } = props; // Pointer events stop firing if the target is unmounted while dragging\n // Therefore we attach listeners to the owner document instead\n\n const listenerTarget = getOwnerDocument(event.target);\n super(props, events, listenerTarget);\n }\n\n}\nPointerSensor.activators = [{\n eventName: 'onPointerDown',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n\n if (!event.isPrimary || event.button !== 0) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nconst events$1 = {\n move: {\n name: 'mousemove'\n },\n end: {\n name: 'mouseup'\n }\n};\nvar MouseButton;\n\n(function (MouseButton) {\n MouseButton[MouseButton[\"RightClick\"] = 2] = \"RightClick\";\n})(MouseButton || (MouseButton = {}));\n\nclass MouseSensor extends AbstractPointerSensor {\n constructor(props) {\n super(props, events$1, getOwnerDocument(props.event.target));\n }\n\n}\nMouseSensor.activators = [{\n eventName: 'onMouseDown',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n\n if (event.button === MouseButton.RightClick) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nconst events$2 = {\n cancel: {\n name: 'touchcancel'\n },\n move: {\n name: 'touchmove'\n },\n end: {\n name: 'touchend'\n }\n};\nclass TouchSensor extends AbstractPointerSensor {\n constructor(props) {\n super(props, events$2);\n }\n\n static setup() {\n // Adding a non-capture and non-passive `touchmove` listener in order\n // to force `event.preventDefault()` calls to work in dynamically added\n // touchmove event handlers. This is required for iOS Safari.\n window.addEventListener(events$2.move.name, noop, {\n capture: false,\n passive: false\n });\n return function teardown() {\n window.removeEventListener(events$2.move.name, noop);\n }; // We create a new handler because the teardown function of another sensor\n // could remove our event listener if we use a referentially equal listener.\n\n function noop() {}\n }\n\n}\nTouchSensor.activators = [{\n eventName: 'onTouchStart',\n handler: (_ref, _ref2) => {\n let {\n nativeEvent: event\n } = _ref;\n let {\n onActivation\n } = _ref2;\n const {\n touches\n } = event;\n\n if (touches.length > 1) {\n return false;\n }\n\n onActivation == null ? void 0 : onActivation({\n event\n });\n return true;\n }\n}];\n\nvar AutoScrollActivator;\n\n(function (AutoScrollActivator) {\n AutoScrollActivator[AutoScrollActivator[\"Pointer\"] = 0] = \"Pointer\";\n AutoScrollActivator[AutoScrollActivator[\"DraggableRect\"] = 1] = \"DraggableRect\";\n})(AutoScrollActivator || (AutoScrollActivator = {}));\n\nvar TraversalOrder;\n\n(function (TraversalOrder) {\n TraversalOrder[TraversalOrder[\"TreeOrder\"] = 0] = \"TreeOrder\";\n TraversalOrder[TraversalOrder[\"ReversedTreeOrder\"] = 1] = \"ReversedTreeOrder\";\n})(TraversalOrder || (TraversalOrder = {}));\n\nfunction useAutoScroller(_ref) {\n let {\n acceleration,\n activator = AutoScrollActivator.Pointer,\n canScroll,\n draggingRect,\n enabled,\n interval = 5,\n order = TraversalOrder.TreeOrder,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects,\n delta,\n threshold\n } = _ref;\n const scrollIntent = useScrollIntent({\n delta,\n disabled: !enabled\n });\n const [setAutoScrollInterval, clearAutoScrollInterval] = useInterval();\n const scrollSpeed = useRef({\n x: 0,\n y: 0\n });\n const scrollDirection = useRef({\n x: 0,\n y: 0\n });\n const rect = useMemo(() => {\n switch (activator) {\n case AutoScrollActivator.Pointer:\n return pointerCoordinates ? {\n top: pointerCoordinates.y,\n bottom: pointerCoordinates.y,\n left: pointerCoordinates.x,\n right: pointerCoordinates.x\n } : null;\n\n case AutoScrollActivator.DraggableRect:\n return draggingRect;\n }\n }, [activator, draggingRect, pointerCoordinates]);\n const scrollContainerRef = useRef(null);\n const autoScroll = useCallback(() => {\n const scrollContainer = scrollContainerRef.current;\n\n if (!scrollContainer) {\n return;\n }\n\n const scrollLeft = scrollSpeed.current.x * scrollDirection.current.x;\n const scrollTop = scrollSpeed.current.y * scrollDirection.current.y;\n scrollContainer.scrollBy(scrollLeft, scrollTop);\n }, []);\n const sortedScrollableAncestors = useMemo(() => order === TraversalOrder.TreeOrder ? [...scrollableAncestors].reverse() : scrollableAncestors, [order, scrollableAncestors]);\n useEffect(() => {\n if (!enabled || !scrollableAncestors.length || !rect) {\n clearAutoScrollInterval();\n return;\n }\n\n for (const scrollContainer of sortedScrollableAncestors) {\n if ((canScroll == null ? void 0 : canScroll(scrollContainer)) === false) {\n continue;\n }\n\n const index = scrollableAncestors.indexOf(scrollContainer);\n const scrollContainerRect = scrollableAncestorRects[index];\n\n if (!scrollContainerRect) {\n continue;\n }\n\n const {\n direction,\n speed\n } = getScrollDirectionAndSpeed(scrollContainer, scrollContainerRect, rect, acceleration, threshold);\n\n for (const axis of ['x', 'y']) {\n if (!scrollIntent[axis][direction[axis]]) {\n speed[axis] = 0;\n direction[axis] = 0;\n }\n }\n\n if (speed.x > 0 || speed.y > 0) {\n clearAutoScrollInterval();\n scrollContainerRef.current = scrollContainer;\n setAutoScrollInterval(autoScroll, interval);\n scrollSpeed.current = speed;\n scrollDirection.current = direction;\n return;\n }\n }\n\n scrollSpeed.current = {\n x: 0,\n y: 0\n };\n scrollDirection.current = {\n x: 0,\n y: 0\n };\n clearAutoScrollInterval();\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [acceleration, autoScroll, canScroll, clearAutoScrollInterval, enabled, interval, // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(rect), // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(scrollIntent), setAutoScrollInterval, scrollableAncestors, sortedScrollableAncestors, scrollableAncestorRects, // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold)]);\n}\nconst defaultScrollIntent = {\n x: {\n [Direction.Backward]: false,\n [Direction.Forward]: false\n },\n y: {\n [Direction.Backward]: false,\n [Direction.Forward]: false\n }\n};\n\nfunction useScrollIntent(_ref2) {\n let {\n delta,\n disabled\n } = _ref2;\n const previousDelta = usePrevious(delta);\n return useLazyMemo(previousIntent => {\n if (disabled || !previousDelta || !previousIntent) {\n // Reset scroll intent tracking when auto-scrolling is disabled\n return defaultScrollIntent;\n }\n\n const direction = {\n x: Math.sign(delta.x - previousDelta.x),\n y: Math.sign(delta.y - previousDelta.y)\n }; // Keep track of the user intent to scroll in each direction for both axis\n\n return {\n x: {\n [Direction.Backward]: previousIntent.x[Direction.Backward] || direction.x === -1,\n [Direction.Forward]: previousIntent.x[Direction.Forward] || direction.x === 1\n },\n y: {\n [Direction.Backward]: previousIntent.y[Direction.Backward] || direction.y === -1,\n [Direction.Forward]: previousIntent.y[Direction.Forward] || direction.y === 1\n }\n };\n }, [disabled, delta, previousDelta]);\n}\n\nfunction useCachedNode(draggableNodes, id) {\n const draggableNode = id != null ? draggableNodes.get(id) : undefined;\n const node = draggableNode ? draggableNode.node.current : null;\n return useLazyMemo(cachedNode => {\n var _ref;\n\n if (id == null) {\n return null;\n } // In some cases, the draggable node can unmount while dragging\n // This is the case for virtualized lists. In those situations,\n // we fall back to the last known value for that node.\n\n\n return (_ref = node != null ? node : cachedNode) != null ? _ref : null;\n }, [node, id]);\n}\n\nfunction useCombineActivators(sensors, getSyntheticHandler) {\n return useMemo(() => sensors.reduce((accumulator, sensor) => {\n const {\n sensor: Sensor\n } = sensor;\n const sensorActivators = Sensor.activators.map(activator => ({\n eventName: activator.eventName,\n handler: getSyntheticHandler(activator.handler, sensor)\n }));\n return [...accumulator, ...sensorActivators];\n }, []), [sensors, getSyntheticHandler]);\n}\n\nvar MeasuringStrategy;\n\n(function (MeasuringStrategy) {\n MeasuringStrategy[MeasuringStrategy[\"Always\"] = 0] = \"Always\";\n MeasuringStrategy[MeasuringStrategy[\"BeforeDragging\"] = 1] = \"BeforeDragging\";\n MeasuringStrategy[MeasuringStrategy[\"WhileDragging\"] = 2] = \"WhileDragging\";\n})(MeasuringStrategy || (MeasuringStrategy = {}));\n\nvar MeasuringFrequency;\n\n(function (MeasuringFrequency) {\n MeasuringFrequency[\"Optimized\"] = \"optimized\";\n})(MeasuringFrequency || (MeasuringFrequency = {}));\n\nconst defaultValue = /*#__PURE__*/new Map();\nfunction useDroppableMeasuring(containers, _ref) {\n let {\n dragging,\n dependencies,\n config\n } = _ref;\n const [queue, setQueue] = useState(null);\n const {\n frequency,\n measure,\n strategy\n } = config;\n const containersRef = useRef(containers);\n const disabled = isDisabled();\n const disabledRef = useLatestValue(disabled);\n const measureDroppableContainers = useCallback(function (ids) {\n if (ids === void 0) {\n ids = [];\n }\n\n if (disabledRef.current) {\n return;\n }\n\n setQueue(value => {\n if (value === null) {\n return ids;\n }\n\n return value.concat(ids.filter(id => !value.includes(id)));\n });\n }, [disabledRef]);\n const timeoutId = useRef(null);\n const droppableRects = useLazyMemo(previousValue => {\n if (disabled && !dragging) {\n return defaultValue;\n }\n\n if (!previousValue || previousValue === defaultValue || containersRef.current !== containers || queue != null) {\n const map = new Map();\n\n for (let container of containers) {\n if (!container) {\n continue;\n }\n\n if (queue && queue.length > 0 && !queue.includes(container.id) && container.rect.current) {\n // This container does not need to be re-measured\n map.set(container.id, container.rect.current);\n continue;\n }\n\n const node = container.node.current;\n const rect = node ? new Rect(measure(node), node) : null;\n container.rect.current = rect;\n\n if (rect) {\n map.set(container.id, rect);\n }\n }\n\n return map;\n }\n\n return previousValue;\n }, [containers, queue, dragging, disabled, measure]);\n useEffect(() => {\n containersRef.current = containers;\n }, [containers]);\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n measureDroppableContainers();\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [dragging, disabled]);\n useEffect(() => {\n if (queue && queue.length > 0) {\n setQueue(null);\n }\n }, //eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(queue)]);\n useEffect(() => {\n if (disabled || typeof frequency !== 'number' || timeoutId.current !== null) {\n return;\n }\n\n timeoutId.current = setTimeout(() => {\n measureDroppableContainers();\n timeoutId.current = null;\n }, frequency);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [frequency, disabled, measureDroppableContainers, ...dependencies]);\n return {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled: queue != null\n };\n\n function isDisabled() {\n switch (strategy) {\n case MeasuringStrategy.Always:\n return false;\n\n case MeasuringStrategy.BeforeDragging:\n return dragging;\n\n default:\n return !dragging;\n }\n }\n}\n\nfunction useInitialValue(value, computeFn) {\n return useLazyMemo(previousValue => {\n if (!value) {\n return null;\n }\n\n if (previousValue) {\n return previousValue;\n }\n\n return typeof computeFn === 'function' ? computeFn(value) : value;\n }, [computeFn, value]);\n}\n\nfunction useInitialRect(node, measure) {\n return useInitialValue(node, measure);\n}\n\n/**\r\n * Returns a new MutationObserver instance.\r\n * If `MutationObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\nfunction useMutationObserver(_ref) {\n let {\n callback,\n disabled\n } = _ref;\n const handleMutations = useEvent(callback);\n const mutationObserver = useMemo(() => {\n if (disabled || typeof window === 'undefined' || typeof window.MutationObserver === 'undefined') {\n return undefined;\n }\n\n const {\n MutationObserver\n } = window;\n return new MutationObserver(handleMutations);\n }, [handleMutations, disabled]);\n useEffect(() => {\n return () => mutationObserver == null ? void 0 : mutationObserver.disconnect();\n }, [mutationObserver]);\n return mutationObserver;\n}\n\n/**\r\n * Returns a new ResizeObserver instance bound to the `onResize` callback.\r\n * If `ResizeObserver` is undefined in the execution environment, returns `undefined`.\r\n */\n\nfunction useResizeObserver(_ref) {\n let {\n callback,\n disabled\n } = _ref;\n const handleResize = useEvent(callback);\n const resizeObserver = useMemo(() => {\n if (disabled || typeof window === 'undefined' || typeof window.ResizeObserver === 'undefined') {\n return undefined;\n }\n\n const {\n ResizeObserver\n } = window;\n return new ResizeObserver(handleResize);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [disabled]);\n useEffect(() => {\n return () => resizeObserver == null ? void 0 : resizeObserver.disconnect();\n }, [resizeObserver]);\n return resizeObserver;\n}\n\nfunction defaultMeasure(element) {\n return new Rect(getClientRect(element), element);\n}\n\nfunction useRect(element, measure, fallbackRect) {\n if (measure === void 0) {\n measure = defaultMeasure;\n }\n\n const [rect, setRect] = useState(null);\n\n function measureRect() {\n setRect(currentRect => {\n if (!element) {\n return null;\n }\n\n if (element.isConnected === false) {\n var _ref;\n\n // Fall back to last rect we measured if the element is\n // no longer connected to the DOM.\n return (_ref = currentRect != null ? currentRect : fallbackRect) != null ? _ref : null;\n }\n\n const newRect = measure(element);\n\n if (JSON.stringify(currentRect) === JSON.stringify(newRect)) {\n return currentRect;\n }\n\n return newRect;\n });\n }\n\n const mutationObserver = useMutationObserver({\n callback(records) {\n if (!element) {\n return;\n }\n\n for (const record of records) {\n const {\n type,\n target\n } = record;\n\n if (type === 'childList' && target instanceof HTMLElement && target.contains(element)) {\n measureRect();\n break;\n }\n }\n }\n\n });\n const resizeObserver = useResizeObserver({\n callback: measureRect\n });\n useIsomorphicLayoutEffect(() => {\n measureRect();\n\n if (element) {\n resizeObserver == null ? void 0 : resizeObserver.observe(element);\n mutationObserver == null ? void 0 : mutationObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n } else {\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n }\n }, [element]);\n return rect;\n}\n\nfunction useRectDelta(rect) {\n const initialRect = useInitialValue(rect);\n return getRectDelta(rect, initialRect);\n}\n\nconst defaultValue$1 = [];\nfunction useScrollableAncestors(node) {\n const previousNode = useRef(node);\n const ancestors = useLazyMemo(previousValue => {\n if (!node) {\n return defaultValue$1;\n }\n\n if (previousValue && previousValue !== defaultValue$1 && node && previousNode.current && node.parentNode === previousNode.current.parentNode) {\n return previousValue;\n }\n\n return getScrollableAncestors(node);\n }, [node]);\n useEffect(() => {\n previousNode.current = node;\n }, [node]);\n return ancestors;\n}\n\nfunction useScrollOffsets(elements) {\n const [scrollCoordinates, setScrollCoordinates] = useState(null);\n const prevElements = useRef(elements); // To-do: Throttle the handleScroll callback\n\n const handleScroll = useCallback(event => {\n const scrollingElement = getScrollableElement(event.target);\n\n if (!scrollingElement) {\n return;\n }\n\n setScrollCoordinates(scrollCoordinates => {\n if (!scrollCoordinates) {\n return null;\n }\n\n scrollCoordinates.set(scrollingElement, getScrollCoordinates(scrollingElement));\n return new Map(scrollCoordinates);\n });\n }, []);\n useEffect(() => {\n const previousElements = prevElements.current;\n\n if (elements !== previousElements) {\n cleanup(previousElements);\n const entries = elements.map(element => {\n const scrollableElement = getScrollableElement(element);\n\n if (scrollableElement) {\n scrollableElement.addEventListener('scroll', handleScroll, {\n passive: true\n });\n return [scrollableElement, getScrollCoordinates(scrollableElement)];\n }\n\n return null;\n }).filter(entry => entry != null);\n setScrollCoordinates(entries.length ? new Map(entries) : null);\n prevElements.current = elements;\n }\n\n return () => {\n cleanup(elements);\n cleanup(previousElements);\n };\n\n function cleanup(elements) {\n elements.forEach(element => {\n const scrollableElement = getScrollableElement(element);\n scrollableElement == null ? void 0 : scrollableElement.removeEventListener('scroll', handleScroll);\n });\n }\n }, [handleScroll, elements]);\n return useMemo(() => {\n if (elements.length) {\n return scrollCoordinates ? Array.from(scrollCoordinates.values()).reduce((acc, coordinates) => add(acc, coordinates), defaultCoordinates) : getScrollOffsets(elements);\n }\n\n return defaultCoordinates;\n }, [elements, scrollCoordinates]);\n}\n\nfunction useScrollOffsetsDelta(scrollOffsets, dependencies) {\n if (dependencies === void 0) {\n dependencies = [];\n }\n\n const initialScrollOffsets = useRef(null);\n useEffect(() => {\n initialScrollOffsets.current = null;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n dependencies);\n useEffect(() => {\n const hasScrollOffsets = scrollOffsets !== defaultCoordinates;\n\n if (hasScrollOffsets && !initialScrollOffsets.current) {\n initialScrollOffsets.current = scrollOffsets;\n }\n\n if (!hasScrollOffsets && initialScrollOffsets.current) {\n initialScrollOffsets.current = null;\n }\n }, [scrollOffsets]);\n return initialScrollOffsets.current ? subtract(scrollOffsets, initialScrollOffsets.current) : defaultCoordinates;\n}\n\nfunction useSensorSetup(sensors) {\n useEffect(() => {\n if (!canUseDOM) {\n return;\n }\n\n const teardownFns = sensors.map(_ref => {\n let {\n sensor\n } = _ref;\n return sensor.setup == null ? void 0 : sensor.setup();\n });\n return () => {\n for (const teardown of teardownFns) {\n teardown == null ? void 0 : teardown();\n }\n };\n }, // TO-DO: Sensors length could theoretically change which would not be a valid dependency\n // eslint-disable-next-line react-hooks/exhaustive-deps\n sensors.map(_ref2 => {\n let {\n sensor\n } = _ref2;\n return sensor;\n }));\n}\n\nfunction useSyntheticListeners(listeners, id) {\n return useMemo(() => {\n return listeners.reduce((acc, _ref) => {\n let {\n eventName,\n handler\n } = _ref;\n\n acc[eventName] = event => {\n handler(event, id);\n };\n\n return acc;\n }, {});\n }, [listeners, id]);\n}\n\nfunction useWindowRect(element) {\n return useMemo(() => element ? getWindowClientRect(element) : null, [element]);\n}\n\nconst defaultValue$2 = [];\nfunction useRects(elements, measure) {\n if (measure === void 0) {\n measure = getClientRect;\n }\n\n const [firstElement] = elements;\n const windowRect = useWindowRect(firstElement ? getWindow(firstElement) : null);\n const [rects, setRects] = useState(defaultValue$2);\n\n function measureRects() {\n setRects(() => {\n if (!elements.length) {\n return defaultValue$2;\n }\n\n return elements.map(element => isDocumentScrollingElement(element) ? windowRect : new Rect(measure(element), element));\n });\n }\n\n const resizeObserver = useResizeObserver({\n callback: measureRects\n });\n useIsomorphicLayoutEffect(() => {\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n measureRects();\n elements.forEach(element => resizeObserver == null ? void 0 : resizeObserver.observe(element));\n }, [elements]);\n return rects;\n}\n\nfunction getMeasurableNode(node) {\n if (!node) {\n return null;\n }\n\n if (node.children.length > 1) {\n return node;\n }\n\n const firstChild = node.children[0];\n return isHTMLElement(firstChild) ? firstChild : node;\n}\n\nfunction useDragOverlayMeasuring(_ref) {\n let {\n measure\n } = _ref;\n const [rect, setRect] = useState(null);\n const handleResize = useCallback(entries => {\n for (const {\n target\n } of entries) {\n if (isHTMLElement(target)) {\n setRect(rect => {\n const newRect = measure(target);\n return rect ? { ...rect,\n width: newRect.width,\n height: newRect.height\n } : newRect;\n });\n break;\n }\n }\n }, [measure]);\n const resizeObserver = useResizeObserver({\n callback: handleResize\n });\n const handleNodeChange = useCallback(element => {\n const node = getMeasurableNode(element);\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n\n if (node) {\n resizeObserver == null ? void 0 : resizeObserver.observe(node);\n }\n\n setRect(node ? measure(node) : null);\n }, [measure, resizeObserver]);\n const [nodeRef, setRef] = useNodeRef(handleNodeChange);\n return useMemo(() => ({\n nodeRef,\n rect,\n setRef\n }), [rect, nodeRef, setRef]);\n}\n\nconst defaultSensors = [{\n sensor: PointerSensor,\n options: {}\n}, {\n sensor: KeyboardSensor,\n options: {}\n}];\nconst defaultData = {\n current: {}\n};\nconst defaultMeasuringConfiguration = {\n draggable: {\n measure: getTransformAgnosticClientRect\n },\n droppable: {\n measure: getTransformAgnosticClientRect,\n strategy: MeasuringStrategy.WhileDragging,\n frequency: MeasuringFrequency.Optimized\n },\n dragOverlay: {\n measure: getClientRect\n }\n};\n\nclass DroppableContainersMap extends Map {\n get(id) {\n var _super$get;\n\n return id != null ? (_super$get = super.get(id)) != null ? _super$get : undefined : undefined;\n }\n\n toArray() {\n return Array.from(this.values());\n }\n\n getEnabled() {\n return this.toArray().filter(_ref => {\n let {\n disabled\n } = _ref;\n return !disabled;\n });\n }\n\n getNodeFor(id) {\n var _this$get$node$curren, _this$get;\n\n return (_this$get$node$curren = (_this$get = this.get(id)) == null ? void 0 : _this$get.node.current) != null ? _this$get$node$curren : undefined;\n }\n\n}\n\nconst defaultPublicContext = {\n activatorEvent: null,\n active: null,\n activeNode: null,\n activeNodeRect: null,\n collisions: null,\n containerNodeRect: null,\n draggableNodes: /*#__PURE__*/new Map(),\n droppableRects: /*#__PURE__*/new Map(),\n droppableContainers: /*#__PURE__*/new DroppableContainersMap(),\n over: null,\n dragOverlay: {\n nodeRef: {\n current: null\n },\n rect: null,\n setRef: noop\n },\n scrollableAncestors: [],\n scrollableAncestorRects: [],\n measuringConfiguration: defaultMeasuringConfiguration,\n measureDroppableContainers: noop,\n windowRect: null,\n measuringScheduled: false\n};\nconst defaultInternalContext = {\n activatorEvent: null,\n activators: [],\n active: null,\n activeNodeRect: null,\n ariaDescribedById: {\n draggable: ''\n },\n dispatch: noop,\n draggableNodes: /*#__PURE__*/new Map(),\n over: null,\n measureDroppableContainers: noop\n};\nconst InternalContext = /*#__PURE__*/createContext(defaultInternalContext);\nconst PublicContext = /*#__PURE__*/createContext(defaultPublicContext);\n\nfunction getInitialState() {\n return {\n draggable: {\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n nodes: new Map(),\n translate: {\n x: 0,\n y: 0\n }\n },\n droppable: {\n containers: new DroppableContainersMap()\n }\n };\n}\nfunction reducer(state, action) {\n switch (action.type) {\n case Action.DragStart:\n return { ...state,\n draggable: { ...state.draggable,\n initialCoordinates: action.initialCoordinates,\n active: action.active\n }\n };\n\n case Action.DragMove:\n if (state.draggable.active == null) {\n return state;\n }\n\n return { ...state,\n draggable: { ...state.draggable,\n translate: {\n x: action.coordinates.x - state.draggable.initialCoordinates.x,\n y: action.coordinates.y - state.draggable.initialCoordinates.y\n }\n }\n };\n\n case Action.DragEnd:\n case Action.DragCancel:\n return { ...state,\n draggable: { ...state.draggable,\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n translate: {\n x: 0,\n y: 0\n }\n }\n };\n\n case Action.RegisterDroppable:\n {\n const {\n element\n } = action;\n const {\n id\n } = element;\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, element);\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n case Action.SetDroppableDisabled:\n {\n const {\n id,\n key,\n disabled\n } = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.set(id, { ...element,\n disabled\n });\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n case Action.UnregisterDroppable:\n {\n const {\n id,\n key\n } = action;\n const element = state.droppable.containers.get(id);\n\n if (!element || key !== element.key) {\n return state;\n }\n\n const containers = new DroppableContainersMap(state.droppable.containers);\n containers.delete(id);\n return { ...state,\n droppable: { ...state.droppable,\n containers\n }\n };\n }\n\n default:\n {\n return state;\n }\n }\n}\n\nfunction RestoreFocus(_ref) {\n let {\n disabled\n } = _ref;\n const {\n active,\n activatorEvent,\n draggableNodes\n } = useContext(InternalContext);\n const previousActivatorEvent = usePrevious(activatorEvent);\n const previousActiveId = usePrevious(active == null ? void 0 : active.id); // Restore keyboard focus on the activator node\n\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n if (!activatorEvent && previousActivatorEvent && previousActiveId != null) {\n if (!isKeyboardEvent(previousActivatorEvent)) {\n return;\n }\n\n if (document.activeElement === previousActivatorEvent.target) {\n // No need to restore focus\n return;\n }\n\n const draggableNode = draggableNodes.get(previousActiveId);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n activatorNode,\n node\n } = draggableNode;\n\n if (!activatorNode.current && !node.current) {\n return;\n }\n\n requestAnimationFrame(() => {\n for (const element of [activatorNode.current, node.current]) {\n if (!element) {\n continue;\n }\n\n const focusableNode = findFirstFocusableNode(element);\n\n if (focusableNode) {\n focusableNode.focus();\n break;\n }\n }\n });\n }\n }, [activatorEvent, disabled, draggableNodes, previousActiveId, previousActivatorEvent]);\n return null;\n}\n\nfunction applyModifiers(modifiers, _ref) {\n let {\n transform,\n ...args\n } = _ref;\n return modifiers != null && modifiers.length ? modifiers.reduce((accumulator, modifier) => {\n return modifier({\n transform: accumulator,\n ...args\n });\n }, transform) : transform;\n}\n\nfunction useMeasuringConfiguration(config) {\n return useMemo(() => ({\n draggable: { ...defaultMeasuringConfiguration.draggable,\n ...(config == null ? void 0 : config.draggable)\n },\n droppable: { ...defaultMeasuringConfiguration.droppable,\n ...(config == null ? void 0 : config.droppable)\n },\n dragOverlay: { ...defaultMeasuringConfiguration.dragOverlay,\n ...(config == null ? void 0 : config.dragOverlay)\n }\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [config == null ? void 0 : config.draggable, config == null ? void 0 : config.droppable, config == null ? void 0 : config.dragOverlay]);\n}\n\nfunction useLayoutShiftScrollCompensation(_ref) {\n let {\n activeNode,\n measure,\n initialRect,\n config = true\n } = _ref;\n const initialized = useRef(false);\n const {\n x,\n y\n } = typeof config === 'boolean' ? {\n x: config,\n y: config\n } : config;\n useIsomorphicLayoutEffect(() => {\n const disabled = !x && !y;\n\n if (disabled || !activeNode) {\n initialized.current = false;\n return;\n }\n\n if (initialized.current || !initialRect) {\n // Return early if layout shift scroll compensation was already attempted\n // or if there is no initialRect to compare to.\n return;\n } // Get the most up to date node ref for the active draggable\n\n\n const node = activeNode == null ? void 0 : activeNode.node.current;\n\n if (!node || node.isConnected === false) {\n // Return early if there is no attached node ref or if the node is\n // disconnected from the document.\n return;\n }\n\n const rect = measure(node);\n const rectDelta = getRectDelta(rect, initialRect);\n\n if (!x) {\n rectDelta.x = 0;\n }\n\n if (!y) {\n rectDelta.y = 0;\n } // Only perform layout shift scroll compensation once\n\n\n initialized.current = true;\n\n if (Math.abs(rectDelta.x) > 0 || Math.abs(rectDelta.y) > 0) {\n const firstScrollableAncestor = getFirstScrollableAncestor(node);\n\n if (firstScrollableAncestor) {\n firstScrollableAncestor.scrollBy({\n top: rectDelta.y,\n left: rectDelta.x\n });\n }\n }\n }, [activeNode, x, y, initialRect, measure]);\n}\n\nconst ActiveDraggableContext = /*#__PURE__*/createContext({ ...defaultCoordinates,\n scaleX: 1,\n scaleY: 1\n});\nvar Status;\n\n(function (Status) {\n Status[Status[\"Uninitialized\"] = 0] = \"Uninitialized\";\n Status[Status[\"Initializing\"] = 1] = \"Initializing\";\n Status[Status[\"Initialized\"] = 2] = \"Initialized\";\n})(Status || (Status = {}));\n\nconst DndContext = /*#__PURE__*/memo(function DndContext(_ref) {\n var _sensorContext$curren, _dragOverlay$nodeRef$, _dragOverlay$rect, _over$rect;\n\n let {\n id,\n accessibility,\n autoScroll = true,\n children,\n sensors = defaultSensors,\n collisionDetection = rectIntersection,\n measuring,\n modifiers,\n ...props\n } = _ref;\n const store = useReducer(reducer, undefined, getInitialState);\n const [state, dispatch] = store;\n const [dispatchMonitorEvent, registerMonitorListener] = useDndMonitorProvider();\n const [status, setStatus] = useState(Status.Uninitialized);\n const isInitialized = status === Status.Initialized;\n const {\n draggable: {\n active: activeId,\n nodes: draggableNodes,\n translate\n },\n droppable: {\n containers: droppableContainers\n }\n } = state;\n const node = activeId != null ? draggableNodes.get(activeId) : null;\n const activeRects = useRef({\n initial: null,\n translated: null\n });\n const active = useMemo(() => {\n var _node$data;\n\n return activeId != null ? {\n id: activeId,\n // It's possible for the active node to unmount while dragging\n data: (_node$data = node == null ? void 0 : node.data) != null ? _node$data : defaultData,\n rect: activeRects\n } : null;\n }, [activeId, node]);\n const activeRef = useRef(null);\n const [activeSensor, setActiveSensor] = useState(null);\n const [activatorEvent, setActivatorEvent] = useState(null);\n const latestProps = useLatestValue(props, Object.values(props));\n const draggableDescribedById = useUniqueId(\"DndDescribedBy\", id);\n const enabledDroppableContainers = useMemo(() => droppableContainers.getEnabled(), [droppableContainers]);\n const measuringConfiguration = useMeasuringConfiguration(measuring);\n const {\n droppableRects,\n measureDroppableContainers,\n measuringScheduled\n } = useDroppableMeasuring(enabledDroppableContainers, {\n dragging: isInitialized,\n dependencies: [translate.x, translate.y],\n config: measuringConfiguration.droppable\n });\n const activeNode = useCachedNode(draggableNodes, activeId);\n const activationCoordinates = useMemo(() => activatorEvent ? getEventCoordinates(activatorEvent) : null, [activatorEvent]);\n const autoScrollOptions = getAutoScrollerOptions();\n const initialActiveNodeRect = useInitialRect(activeNode, measuringConfiguration.draggable.measure);\n useLayoutShiftScrollCompensation({\n activeNode: activeId != null ? draggableNodes.get(activeId) : null,\n config: autoScrollOptions.layoutShiftCompensation,\n initialRect: initialActiveNodeRect,\n measure: measuringConfiguration.draggable.measure\n });\n const activeNodeRect = useRect(activeNode, measuringConfiguration.draggable.measure, initialActiveNodeRect);\n const containerNodeRect = useRect(activeNode ? activeNode.parentElement : null);\n const sensorContext = useRef({\n activatorEvent: null,\n active: null,\n activeNode,\n collisionRect: null,\n collisions: null,\n droppableRects,\n draggableNodes,\n draggingNode: null,\n draggingNodeRect: null,\n droppableContainers,\n over: null,\n scrollableAncestors: [],\n scrollAdjustedTranslate: null\n });\n const overNode = droppableContainers.getNodeFor((_sensorContext$curren = sensorContext.current.over) == null ? void 0 : _sensorContext$curren.id);\n const dragOverlay = useDragOverlayMeasuring({\n measure: measuringConfiguration.dragOverlay.measure\n }); // Use the rect of the drag overlay if it is mounted\n\n const draggingNode = (_dragOverlay$nodeRef$ = dragOverlay.nodeRef.current) != null ? _dragOverlay$nodeRef$ : activeNode;\n const draggingNodeRect = isInitialized ? (_dragOverlay$rect = dragOverlay.rect) != null ? _dragOverlay$rect : activeNodeRect : null;\n const usesDragOverlay = Boolean(dragOverlay.nodeRef.current && dragOverlay.rect); // The delta between the previous and new position of the draggable node\n // is only relevant when there is no drag overlay\n\n const nodeRectDelta = useRectDelta(usesDragOverlay ? null : activeNodeRect); // Get the window rect of the dragging node\n\n const windowRect = useWindowRect(draggingNode ? getWindow(draggingNode) : null); // Get scrollable ancestors of the dragging node\n\n const scrollableAncestors = useScrollableAncestors(isInitialized ? overNode != null ? overNode : activeNode : null);\n const scrollableAncestorRects = useRects(scrollableAncestors); // Apply modifiers\n\n const modifiedTranslate = applyModifiers(modifiers, {\n transform: {\n x: translate.x - nodeRectDelta.x,\n y: translate.y - nodeRectDelta.y,\n scaleX: 1,\n scaleY: 1\n },\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect,\n over: sensorContext.current.over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect\n });\n const pointerCoordinates = activationCoordinates ? add(activationCoordinates, translate) : null;\n const scrollOffsets = useScrollOffsets(scrollableAncestors); // Represents the scroll delta since dragging was initiated\n\n const scrollAdjustment = useScrollOffsetsDelta(scrollOffsets); // Represents the scroll delta since the last time the active node rect was measured\n\n const activeNodeScrollDelta = useScrollOffsetsDelta(scrollOffsets, [activeNodeRect]);\n const scrollAdjustedTranslate = add(modifiedTranslate, scrollAdjustment);\n const collisionRect = draggingNodeRect ? getAdjustedRect(draggingNodeRect, modifiedTranslate) : null;\n const collisions = active && collisionRect ? collisionDetection({\n active,\n collisionRect,\n droppableRects,\n droppableContainers: enabledDroppableContainers,\n pointerCoordinates\n }) : null;\n const overId = getFirstCollision(collisions, 'id');\n const [over, setOver] = useState(null); // When there is no drag overlay used, we need to account for the\n // window scroll delta\n\n const appliedTranslate = usesDragOverlay ? modifiedTranslate : add(modifiedTranslate, activeNodeScrollDelta);\n const transform = adjustScale(appliedTranslate, (_over$rect = over == null ? void 0 : over.rect) != null ? _over$rect : null, activeNodeRect);\n const activeSensorRef = useRef(null);\n const instantiateSensor = useCallback((event, _ref2) => {\n let {\n sensor: Sensor,\n options\n } = _ref2;\n\n if (activeRef.current == null) {\n return;\n }\n\n const activeNode = draggableNodes.get(activeRef.current);\n\n if (!activeNode) {\n return;\n }\n\n const activatorEvent = event.nativeEvent;\n const sensorInstance = new Sensor({\n active: activeRef.current,\n activeNode,\n event: activatorEvent,\n options,\n // Sensors need to be instantiated with refs for arguments that change over time\n // otherwise they are frozen in time with the stale arguments\n context: sensorContext,\n\n onAbort(id) {\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n onDragAbort\n } = latestProps.current;\n const event = {\n id\n };\n onDragAbort == null ? void 0 : onDragAbort(event);\n dispatchMonitorEvent({\n type: 'onDragAbort',\n event\n });\n },\n\n onPending(id, constraint, initialCoordinates, offset) {\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n onDragPending\n } = latestProps.current;\n const event = {\n id,\n constraint,\n initialCoordinates,\n offset\n };\n onDragPending == null ? void 0 : onDragPending(event);\n dispatchMonitorEvent({\n type: 'onDragPending',\n event\n });\n },\n\n onStart(initialCoordinates) {\n const id = activeRef.current;\n\n if (id == null) {\n return;\n }\n\n const draggableNode = draggableNodes.get(id);\n\n if (!draggableNode) {\n return;\n }\n\n const {\n onDragStart\n } = latestProps.current;\n const event = {\n activatorEvent,\n active: {\n id,\n data: draggableNode.data,\n rect: activeRects\n }\n };\n unstable_batchedUpdates(() => {\n onDragStart == null ? void 0 : onDragStart(event);\n setStatus(Status.Initializing);\n dispatch({\n type: Action.DragStart,\n initialCoordinates,\n active: id\n });\n dispatchMonitorEvent({\n type: 'onDragStart',\n event\n });\n setActiveSensor(activeSensorRef.current);\n setActivatorEvent(activatorEvent);\n });\n },\n\n onMove(coordinates) {\n dispatch({\n type: Action.DragMove,\n coordinates\n });\n },\n\n onEnd: createHandler(Action.DragEnd),\n onCancel: createHandler(Action.DragCancel)\n });\n activeSensorRef.current = sensorInstance;\n\n function createHandler(type) {\n return async function handler() {\n const {\n active,\n collisions,\n over,\n scrollAdjustedTranslate\n } = sensorContext.current;\n let event = null;\n\n if (active && scrollAdjustedTranslate) {\n const {\n cancelDrop\n } = latestProps.current;\n event = {\n activatorEvent,\n active: active,\n collisions,\n delta: scrollAdjustedTranslate,\n over\n };\n\n if (type === Action.DragEnd && typeof cancelDrop === 'function') {\n const shouldCancel = await Promise.resolve(cancelDrop(event));\n\n if (shouldCancel) {\n type = Action.DragCancel;\n }\n }\n }\n\n activeRef.current = null;\n unstable_batchedUpdates(() => {\n dispatch({\n type\n });\n setStatus(Status.Uninitialized);\n setOver(null);\n setActiveSensor(null);\n setActivatorEvent(null);\n activeSensorRef.current = null;\n const eventName = type === Action.DragEnd ? 'onDragEnd' : 'onDragCancel';\n\n if (event) {\n const handler = latestProps.current[eventName];\n handler == null ? void 0 : handler(event);\n dispatchMonitorEvent({\n type: eventName,\n event\n });\n }\n });\n };\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes]);\n const bindActivatorToSensorInstantiator = useCallback((handler, sensor) => {\n return (event, active) => {\n const nativeEvent = event.nativeEvent;\n const activeDraggableNode = draggableNodes.get(active);\n\n if ( // Another sensor is already instantiating\n activeRef.current !== null || // No active draggable\n !activeDraggableNode || // Event has already been captured\n nativeEvent.dndKit || nativeEvent.defaultPrevented) {\n return;\n }\n\n const activationContext = {\n active: activeDraggableNode\n };\n const shouldActivate = handler(event, sensor.options, activationContext);\n\n if (shouldActivate === true) {\n nativeEvent.dndKit = {\n capturedBy: sensor.sensor\n };\n activeRef.current = active;\n instantiateSensor(event, sensor);\n }\n };\n }, [draggableNodes, instantiateSensor]);\n const activators = useCombineActivators(sensors, bindActivatorToSensorInstantiator);\n useSensorSetup(sensors);\n useIsomorphicLayoutEffect(() => {\n if (activeNodeRect && status === Status.Initializing) {\n setStatus(Status.Initialized);\n }\n }, [activeNodeRect, status]);\n useEffect(() => {\n const {\n onDragMove\n } = latestProps.current;\n const {\n active,\n activatorEvent,\n collisions,\n over\n } = sensorContext.current;\n\n if (!active || !activatorEvent) {\n return;\n }\n\n const event = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y\n },\n over\n };\n unstable_batchedUpdates(() => {\n onDragMove == null ? void 0 : onDragMove(event);\n dispatchMonitorEvent({\n type: 'onDragMove',\n event\n });\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollAdjustedTranslate.x, scrollAdjustedTranslate.y]);\n useEffect(() => {\n const {\n active,\n activatorEvent,\n collisions,\n droppableContainers,\n scrollAdjustedTranslate\n } = sensorContext.current;\n\n if (!active || activeRef.current == null || !activatorEvent || !scrollAdjustedTranslate) {\n return;\n }\n\n const {\n onDragOver\n } = latestProps.current;\n const overContainer = droppableContainers.get(overId);\n const over = overContainer && overContainer.rect.current ? {\n id: overContainer.id,\n rect: overContainer.rect.current,\n data: overContainer.data,\n disabled: overContainer.disabled\n } : null;\n const event = {\n active,\n activatorEvent,\n collisions,\n delta: {\n x: scrollAdjustedTranslate.x,\n y: scrollAdjustedTranslate.y\n },\n over\n };\n unstable_batchedUpdates(() => {\n setOver(over);\n onDragOver == null ? void 0 : onDragOver(event);\n dispatchMonitorEvent({\n type: 'onDragOver',\n event\n });\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [overId]);\n useIsomorphicLayoutEffect(() => {\n sensorContext.current = {\n activatorEvent,\n active,\n activeNode,\n collisionRect,\n collisions,\n droppableRects,\n draggableNodes,\n draggingNode,\n draggingNodeRect,\n droppableContainers,\n over,\n scrollableAncestors,\n scrollAdjustedTranslate\n };\n activeRects.current = {\n initial: draggingNodeRect,\n translated: collisionRect\n };\n }, [active, activeNode, collisions, collisionRect, draggableNodes, draggingNode, draggingNodeRect, droppableRects, droppableContainers, over, scrollableAncestors, scrollAdjustedTranslate]);\n useAutoScroller({ ...autoScrollOptions,\n delta: translate,\n draggingRect: collisionRect,\n pointerCoordinates,\n scrollableAncestors,\n scrollableAncestorRects\n });\n const publicContext = useMemo(() => {\n const context = {\n active,\n activeNode,\n activeNodeRect,\n activatorEvent,\n collisions,\n containerNodeRect,\n dragOverlay,\n draggableNodes,\n droppableContainers,\n droppableRects,\n over,\n measureDroppableContainers,\n scrollableAncestors,\n scrollableAncestorRects,\n measuringConfiguration,\n measuringScheduled,\n windowRect\n };\n return context;\n }, [active, activeNode, activeNodeRect, activatorEvent, collisions, containerNodeRect, dragOverlay, draggableNodes, droppableContainers, droppableRects, over, measureDroppableContainers, scrollableAncestors, scrollableAncestorRects, measuringConfiguration, measuringScheduled, windowRect]);\n const internalContext = useMemo(() => {\n const context = {\n activatorEvent,\n activators,\n active,\n activeNodeRect,\n ariaDescribedById: {\n draggable: draggableDescribedById\n },\n dispatch,\n draggableNodes,\n over,\n measureDroppableContainers\n };\n return context;\n }, [activatorEvent, activators, active, activeNodeRect, dispatch, draggableDescribedById, draggableNodes, over, measureDroppableContainers]);\n return React.createElement(DndMonitorContext.Provider, {\n value: registerMonitorListener\n }, React.createElement(InternalContext.Provider, {\n value: internalContext\n }, React.createElement(PublicContext.Provider, {\n value: publicContext\n }, React.createElement(ActiveDraggableContext.Provider, {\n value: transform\n }, children)), React.createElement(RestoreFocus, {\n disabled: (accessibility == null ? void 0 : accessibility.restoreFocus) === false\n })), React.createElement(Accessibility, { ...accessibility,\n hiddenTextDescribedById: draggableDescribedById\n }));\n\n function getAutoScrollerOptions() {\n const activeSensorDisablesAutoscroll = (activeSensor == null ? void 0 : activeSensor.autoScrollEnabled) === false;\n const autoScrollGloballyDisabled = typeof autoScroll === 'object' ? autoScroll.enabled === false : autoScroll === false;\n const enabled = isInitialized && !activeSensorDisablesAutoscroll && !autoScrollGloballyDisabled;\n\n if (typeof autoScroll === 'object') {\n return { ...autoScroll,\n enabled\n };\n }\n\n return {\n enabled\n };\n }\n});\n\nconst NullContext = /*#__PURE__*/createContext(null);\nconst defaultRole = 'button';\nconst ID_PREFIX = 'Draggable';\nfunction useDraggable(_ref) {\n let {\n id,\n data,\n disabled = false,\n attributes\n } = _ref;\n const key = useUniqueId(ID_PREFIX);\n const {\n activators,\n activatorEvent,\n active,\n activeNodeRect,\n ariaDescribedById,\n draggableNodes,\n over\n } = useContext(InternalContext);\n const {\n role = defaultRole,\n roleDescription = 'draggable',\n tabIndex = 0\n } = attributes != null ? attributes : {};\n const isDragging = (active == null ? void 0 : active.id) === id;\n const transform = useContext(isDragging ? ActiveDraggableContext : NullContext);\n const [node, setNodeRef] = useNodeRef();\n const [activatorNode, setActivatorNodeRef] = useNodeRef();\n const listeners = useSyntheticListeners(activators, id);\n const dataRef = useLatestValue(data);\n useIsomorphicLayoutEffect(() => {\n draggableNodes.set(id, {\n id,\n key,\n node,\n activatorNode,\n data: dataRef\n });\n return () => {\n const node = draggableNodes.get(id);\n\n if (node && node.key === key) {\n draggableNodes.delete(id);\n }\n };\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [draggableNodes, id]);\n const memoizedAttributes = useMemo(() => ({\n role,\n tabIndex,\n 'aria-disabled': disabled,\n 'aria-pressed': isDragging && role === defaultRole ? true : undefined,\n 'aria-roledescription': roleDescription,\n 'aria-describedby': ariaDescribedById.draggable\n }), [disabled, role, tabIndex, isDragging, roleDescription, ariaDescribedById.draggable]);\n return {\n active,\n activatorEvent,\n activeNodeRect,\n attributes: memoizedAttributes,\n isDragging,\n listeners: disabled ? undefined : listeners,\n node,\n over,\n setNodeRef,\n setActivatorNodeRef,\n transform\n };\n}\n\nfunction useDndContext() {\n return useContext(PublicContext);\n}\n\nconst ID_PREFIX$1 = 'Droppable';\nconst defaultResizeObserverConfig = {\n timeout: 25\n};\nfunction useDroppable(_ref) {\n let {\n data,\n disabled = false,\n id,\n resizeObserverConfig\n } = _ref;\n const key = useUniqueId(ID_PREFIX$1);\n const {\n active,\n dispatch,\n over,\n measureDroppableContainers\n } = useContext(InternalContext);\n const previous = useRef({\n disabled\n });\n const resizeObserverConnected = useRef(false);\n const rect = useRef(null);\n const callbackId = useRef(null);\n const {\n disabled: resizeObserverDisabled,\n updateMeasurementsFor,\n timeout: resizeObserverTimeout\n } = { ...defaultResizeObserverConfig,\n ...resizeObserverConfig\n };\n const ids = useLatestValue(updateMeasurementsFor != null ? updateMeasurementsFor : id);\n const handleResize = useCallback(() => {\n if (!resizeObserverConnected.current) {\n // ResizeObserver invokes the `handleResize` callback as soon as `observe` is called,\n // assuming the element is rendered and displayed.\n resizeObserverConnected.current = true;\n return;\n }\n\n if (callbackId.current != null) {\n clearTimeout(callbackId.current);\n }\n\n callbackId.current = setTimeout(() => {\n measureDroppableContainers(Array.isArray(ids.current) ? ids.current : [ids.current]);\n callbackId.current = null;\n }, resizeObserverTimeout);\n }, //eslint-disable-next-line react-hooks/exhaustive-deps\n [resizeObserverTimeout]);\n const resizeObserver = useResizeObserver({\n callback: handleResize,\n disabled: resizeObserverDisabled || !active\n });\n const handleNodeChange = useCallback((newElement, previousElement) => {\n if (!resizeObserver) {\n return;\n }\n\n if (previousElement) {\n resizeObserver.unobserve(previousElement);\n resizeObserverConnected.current = false;\n }\n\n if (newElement) {\n resizeObserver.observe(newElement);\n }\n }, [resizeObserver]);\n const [nodeRef, setNodeRef] = useNodeRef(handleNodeChange);\n const dataRef = useLatestValue(data);\n useEffect(() => {\n if (!resizeObserver || !nodeRef.current) {\n return;\n }\n\n resizeObserver.disconnect();\n resizeObserverConnected.current = false;\n resizeObserver.observe(nodeRef.current);\n }, [nodeRef, resizeObserver]);\n useEffect(() => {\n dispatch({\n type: Action.RegisterDroppable,\n element: {\n id,\n key,\n disabled,\n node: nodeRef,\n rect,\n data: dataRef\n }\n });\n return () => dispatch({\n type: Action.UnregisterDroppable,\n key,\n id\n });\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [id]);\n useEffect(() => {\n if (disabled !== previous.current.disabled) {\n dispatch({\n type: Action.SetDroppableDisabled,\n id,\n key,\n disabled\n });\n previous.current.disabled = disabled;\n }\n }, [id, key, disabled, dispatch]);\n return {\n active,\n rect,\n isOver: (over == null ? void 0 : over.id) === id,\n node: nodeRef,\n over,\n setNodeRef\n };\n}\n\nfunction AnimationManager(_ref) {\n let {\n animation,\n children\n } = _ref;\n const [clonedChildren, setClonedChildren] = useState(null);\n const [element, setElement] = useState(null);\n const previousChildren = usePrevious(children);\n\n if (!children && !clonedChildren && previousChildren) {\n setClonedChildren(previousChildren);\n }\n\n useIsomorphicLayoutEffect(() => {\n if (!element) {\n return;\n }\n\n const key = clonedChildren == null ? void 0 : clonedChildren.key;\n const id = clonedChildren == null ? void 0 : clonedChildren.props.id;\n\n if (key == null || id == null) {\n setClonedChildren(null);\n return;\n }\n\n Promise.resolve(animation(id, element)).then(() => {\n setClonedChildren(null);\n });\n }, [animation, clonedChildren, element]);\n return React.createElement(React.Fragment, null, children, clonedChildren ? cloneElement(clonedChildren, {\n ref: setElement\n }) : null);\n}\n\nconst defaultTransform = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1\n};\nfunction NullifiedContextProvider(_ref) {\n let {\n children\n } = _ref;\n return React.createElement(InternalContext.Provider, {\n value: defaultInternalContext\n }, React.createElement(ActiveDraggableContext.Provider, {\n value: defaultTransform\n }, children));\n}\n\nconst baseStyles = {\n position: 'fixed',\n touchAction: 'none'\n};\n\nconst defaultTransition = activatorEvent => {\n const isKeyboardActivator = isKeyboardEvent(activatorEvent);\n return isKeyboardActivator ? 'transform 250ms ease' : undefined;\n};\n\nconst PositionedOverlay = /*#__PURE__*/forwardRef((_ref, ref) => {\n let {\n as,\n activatorEvent,\n adjustScale,\n children,\n className,\n rect,\n style,\n transform,\n transition = defaultTransition\n } = _ref;\n\n if (!rect) {\n return null;\n }\n\n const scaleAdjustedTransform = adjustScale ? transform : { ...transform,\n scaleX: 1,\n scaleY: 1\n };\n const styles = { ...baseStyles,\n width: rect.width,\n height: rect.height,\n top: rect.top,\n left: rect.left,\n transform: CSS.Transform.toString(scaleAdjustedTransform),\n transformOrigin: adjustScale && activatorEvent ? getRelativeTransformOrigin(activatorEvent, rect) : undefined,\n transition: typeof transition === 'function' ? transition(activatorEvent) : transition,\n ...style\n };\n return React.createElement(as, {\n className,\n style: styles,\n ref\n }, children);\n});\n\nconst defaultDropAnimationSideEffects = options => _ref => {\n let {\n active,\n dragOverlay\n } = _ref;\n const originalStyles = {};\n const {\n styles,\n className\n } = options;\n\n if (styles != null && styles.active) {\n for (const [key, value] of Object.entries(styles.active)) {\n if (value === undefined) {\n continue;\n }\n\n originalStyles[key] = active.node.style.getPropertyValue(key);\n active.node.style.setProperty(key, value);\n }\n }\n\n if (styles != null && styles.dragOverlay) {\n for (const [key, value] of Object.entries(styles.dragOverlay)) {\n if (value === undefined) {\n continue;\n }\n\n dragOverlay.node.style.setProperty(key, value);\n }\n }\n\n if (className != null && className.active) {\n active.node.classList.add(className.active);\n }\n\n if (className != null && className.dragOverlay) {\n dragOverlay.node.classList.add(className.dragOverlay);\n }\n\n return function cleanup() {\n for (const [key, value] of Object.entries(originalStyles)) {\n active.node.style.setProperty(key, value);\n }\n\n if (className != null && className.active) {\n active.node.classList.remove(className.active);\n }\n };\n};\n\nconst defaultKeyframeResolver = _ref2 => {\n let {\n transform: {\n initial,\n final\n }\n } = _ref2;\n return [{\n transform: CSS.Transform.toString(initial)\n }, {\n transform: CSS.Transform.toString(final)\n }];\n};\n\nconst defaultDropAnimationConfiguration = {\n duration: 250,\n easing: 'ease',\n keyframes: defaultKeyframeResolver,\n sideEffects: /*#__PURE__*/defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0'\n }\n }\n })\n};\nfunction useDropAnimation(_ref3) {\n let {\n config,\n draggableNodes,\n droppableContainers,\n measuringConfiguration\n } = _ref3;\n return useEvent((id, node) => {\n if (config === null) {\n return;\n }\n\n const activeDraggable = draggableNodes.get(id);\n\n if (!activeDraggable) {\n return;\n }\n\n const activeNode = activeDraggable.node.current;\n\n if (!activeNode) {\n return;\n }\n\n const measurableNode = getMeasurableNode(node);\n\n if (!measurableNode) {\n return;\n }\n\n const {\n transform\n } = getWindow(node).getComputedStyle(node);\n const parsedTransform = parseTransform(transform);\n\n if (!parsedTransform) {\n return;\n }\n\n const animation = typeof config === 'function' ? config : createDefaultDropAnimation(config);\n scrollIntoViewIfNeeded(activeNode, measuringConfiguration.draggable.measure);\n return animation({\n active: {\n id,\n data: activeDraggable.data,\n node: activeNode,\n rect: measuringConfiguration.draggable.measure(activeNode)\n },\n draggableNodes,\n dragOverlay: {\n node,\n rect: measuringConfiguration.dragOverlay.measure(measurableNode)\n },\n droppableContainers,\n measuringConfiguration,\n transform: parsedTransform\n });\n });\n}\n\nfunction createDefaultDropAnimation(options) {\n const {\n duration,\n easing,\n sideEffects,\n keyframes\n } = { ...defaultDropAnimationConfiguration,\n ...options\n };\n return _ref4 => {\n let {\n active,\n dragOverlay,\n transform,\n ...rest\n } = _ref4;\n\n if (!duration) {\n // Do not animate if animation duration is zero.\n return;\n }\n\n const delta = {\n x: dragOverlay.rect.left - active.rect.left,\n y: dragOverlay.rect.top - active.rect.top\n };\n const scale = {\n scaleX: transform.scaleX !== 1 ? active.rect.width * transform.scaleX / dragOverlay.rect.width : 1,\n scaleY: transform.scaleY !== 1 ? active.rect.height * transform.scaleY / dragOverlay.rect.height : 1\n };\n const finalTransform = {\n x: transform.x - delta.x,\n y: transform.y - delta.y,\n ...scale\n };\n const animationKeyframes = keyframes({ ...rest,\n active,\n dragOverlay,\n transform: {\n initial: transform,\n final: finalTransform\n }\n });\n const [firstKeyframe] = animationKeyframes;\n const lastKeyframe = animationKeyframes[animationKeyframes.length - 1];\n\n if (JSON.stringify(firstKeyframe) === JSON.stringify(lastKeyframe)) {\n // The start and end keyframes are the same, infer that there is no animation needed.\n return;\n }\n\n const cleanup = sideEffects == null ? void 0 : sideEffects({\n active,\n dragOverlay,\n ...rest\n });\n const animation = dragOverlay.node.animate(animationKeyframes, {\n duration,\n easing,\n fill: 'forwards'\n });\n return new Promise(resolve => {\n animation.onfinish = () => {\n cleanup == null ? void 0 : cleanup();\n resolve();\n };\n });\n };\n}\n\nlet key = 0;\nfunction useKey(id) {\n return useMemo(() => {\n if (id == null) {\n return;\n }\n\n key++;\n return key;\n }, [id]);\n}\n\nconst DragOverlay = /*#__PURE__*/React.memo(_ref => {\n let {\n adjustScale = false,\n children,\n dropAnimation: dropAnimationConfig,\n style,\n transition,\n modifiers,\n wrapperElement = 'div',\n className,\n zIndex = 999\n } = _ref;\n const {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggableNodes,\n droppableContainers,\n dragOverlay,\n over,\n measuringConfiguration,\n scrollableAncestors,\n scrollableAncestorRects,\n windowRect\n } = useDndContext();\n const transform = useContext(ActiveDraggableContext);\n const key = useKey(active == null ? void 0 : active.id);\n const modifiedTransform = applyModifiers(modifiers, {\n activatorEvent,\n active,\n activeNodeRect,\n containerNodeRect,\n draggingNodeRect: dragOverlay.rect,\n over,\n overlayNodeRect: dragOverlay.rect,\n scrollableAncestors,\n scrollableAncestorRects,\n transform,\n windowRect\n });\n const initialRect = useInitialValue(activeNodeRect);\n const dropAnimation = useDropAnimation({\n config: dropAnimationConfig,\n draggableNodes,\n droppableContainers,\n measuringConfiguration\n }); // We need to wait for the active node to be measured before connecting the drag overlay ref\n // otherwise collisions can be computed against a mispositioned drag overlay\n\n const ref = initialRect ? dragOverlay.setRef : undefined;\n return React.createElement(NullifiedContextProvider, null, React.createElement(AnimationManager, {\n animation: dropAnimation\n }, active && key ? React.createElement(PositionedOverlay, {\n key: key,\n id: active.id,\n ref: ref,\n as: wrapperElement,\n activatorEvent: activatorEvent,\n adjustScale: adjustScale,\n className: className,\n transition: transition,\n rect: initialRect,\n style: {\n zIndex,\n ...style\n },\n transform: modifiedTransform\n }, children) : null));\n});\n\nexport { AutoScrollActivator, DndContext, DragOverlay, KeyboardCode, KeyboardSensor, MeasuringFrequency, MeasuringStrategy, MouseSensor, PointerSensor, TouchSensor, TraversalOrder, applyModifiers, closestCenter, closestCorners, defaultAnnouncements, defaultCoordinates, defaultDropAnimationConfiguration as defaultDropAnimation, defaultDropAnimationSideEffects, defaultKeyboardCoordinateGetter, defaultScreenReaderInstructions, getClientRect, getFirstCollision, getScrollableAncestors, pointerWithin, rectIntersection, useDndContext, useDndMonitor, useDraggable, useDroppable, useSensor, useSensors };\n//# sourceMappingURL=core.esm.js.map\n","import { createContext, useContext, useMemo } from \"react\";\r\nimport { SchedulerBaseSettings } from \"../Scheduler\";\r\n\r\ninterface SchedulerContextType extends SchedulerBaseSettings {\r\n\tdates: Date[];\r\n\thourHeight: number;\r\n\ttimeSnap: number;\r\n}\r\n\r\nconst SchedulerContext = createContext<SchedulerContextType | undefined>(undefined);\r\n\r\nexport const SchedulerProvider = ({ children, value }: { children: React.ReactNode; value: SchedulerContextType }) => {\r\n\treturn <SchedulerContext.Provider value={value}>{children}</SchedulerContext.Provider>;\r\n};\r\n\r\ninterface UseSchedulerProps {\r\n\t/**\r\n\t * Размер сетки для перетаскивания и ресайза события.\r\n\t * Вычисляется из hourHeight и timeSnap.\r\n\t */\r\n\tgridSize: number;\r\n\t/**\r\n\t * Преобразование пикселей в минуты.\r\n\t * Используется для вычисления времени при перетаскивании и ресайзе события.\r\n\t */\r\n\tpxToMinutes: (px: number) => number;\r\n\t/**\r\n\t * Округление времени до ближайшего времени с учетом timeSnap.\r\n\t */\r\n\tsnapToTime: (time: Date) => Date;\r\n\t/**\r\n\t * Преобразование минут в пиксели.\r\n\t */\r\n\tminInPx: (min: number) => number;\r\n}\r\n\r\nexport const useScheduler = (): UseSchedulerProps & SchedulerContextType => {\r\n\tconst context = useContext(SchedulerContext);\r\n\tif (context === undefined) {\r\n\t\tthrow new Error(\"useScheduler must be used within a SchedulerProvider\");\r\n\t}\r\n\r\n\tconst { hourHeight, timeSnap } = context;\r\n\tconst props = useMemo(() => {\r\n\t\treturn {\r\n\t\t\tgridSize: (hourHeight / 60) * timeSnap,\r\n\t\t\tpxToMinutes: (px: number) => {\r\n\t\t\t\treturn Math.round((px / hourHeight) * 60);\r\n\t\t\t},\r\n\t\t\tsnapToTime: (time: Date) => {\r\n\t\t\t\tconst minutes = time.getMinutes();\r\n\t\t\t\treturn new Date(\r\n\t\t\t\t\ttime.getFullYear(),\r\n\t\t\t\t\ttime.getMonth(),\r\n\t\t\t\t\ttime.getDate(),\r\n\t\t\t\t\ttime.getHours(),\r\n\t\t\t\t\tMath.round(minutes / timeSnap) * timeSnap\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t\tminInPx: (min: number) => {\r\n\t\t\t\treturn min * (hourHeight / 60);\r\n\t\t\t}\r\n\t\t};\r\n\t}, [hourHeight, timeSnap]);\r\n\r\n\treturn {\r\n\t\t...context,\r\n\t\t...props\r\n\t};\r\n};\r\n","type RoundDirection = \"up\" | \"down\";\r\n\r\n/**\r\n * Округляет дату до ближайшего интервала snap\r\n * @param date - Дата для округления\r\n * @param snap - Интервал округления в минутах\r\n * @param round - Направление округления. По умолчанию ближайшее.\r\n * @returns Округленная дата\r\n */\r\nexport const roundDateTime = (date: Date, snap: number, round?: RoundDirection) => {\r\n\tconst newDate = new Date(date);\r\n\tconst minutes = newDate.getMinutes();\r\n\tlet roundedMinutes: number;\r\n\r\n\tswitch (round) {\r\n\t\tcase \"up\":\r\n\t\t\troundedMinutes = Math.ceil(minutes / snap) * snap;\r\n\t\t\tbreak;\r\n\t\tcase \"down\":\r\n\t\t\troundedMinutes = Math.floor(minutes / snap) * snap;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\troundedMinutes = Math.round(minutes / snap) * snap;\r\n\t}\r\n\tnewDate.setMinutes(roundedMinutes, 0, 0);\r\n\treturn newDate;\r\n};\r\n","import { roundDateTime } from \"@/lib/utils/date/roundDateTime\";\r\nimport { ClientRect } from \"@dnd-kit/core\";\r\nimport { IScheduledEvent } from \"../types\";\r\n\r\nexport const DAY_COLUMN_DATA_ATTRIBUTE = \"data-day-column\";\r\n\r\nexport function getDateFromClick(event: React.MouseEvent<HTMLDivElement>, day: Date, timeSnap: number) {\r\n\tconst target = event.target as HTMLDivElement;\r\n\tif (!target) throw new Error(\"Target not found\");\r\n\tconst dayColumnDiv = target.closest(`[${DAY_COLUMN_DATA_ATTRIBUTE}]`);\r\n\tif (!dayColumnDiv) throw new Error(\"Day column not found\");\r\n\r\n\tconst rect = dayColumnDiv.getBoundingClientRect();\r\n\r\n\treturn getDateFromY(event.clientY, rect, day, timeSnap);\r\n}\r\n\r\nexport function getDateFromY(positionY: number, targetRect: ClientRect, day: Date, timeSnap: number) {\r\n\tconst clickY = positionY - targetRect.top;\r\n\tconst percentageOfDay = clickY / targetRect.height;\r\n\treturn percentageToDate(percentageOfDay, day, timeSnap);\r\n}\r\n\r\n/**\r\n * Возвращает дату со временем, соответствующим проценту дня\r\n */\r\nfunction percentageToDate(percentageOfDay: number, day: Date, timeSnap: number) {\r\n\t// Преобразуем процент дня в минуты (24 часа * 60 минут = 1440 минут)\r\n\tconst minutesFromMidnight = Math.floor(percentageOfDay * 1440);\r\n\tconst hours = Math.floor(minutesFromMidnight / 60);\r\n\tconst minutes = minutesFromMidnight % 60;\r\n\r\n\t// Создаем новую дату с выбранным временем\r\n\tconst selectedDate = new Date(day);\r\n\tselectedDate.setHours(hours, minutes, 0, 0);\r\n\r\n\treturn roundDateTime(selectedDate, timeSnap);\r\n}\r\n\r\n/**\r\n * Возвращает процент времени от начала дня до текущего момента\r\n */\r\nexport function getCurrentTimePercentage() {\r\n\tconst now = new Date();\r\n\tconst minutes = now.getHours() * 60 + now.getMinutes();\r\n\treturn `${(minutes / 1440) * 100}%`;\r\n}\r\n\r\n/**\r\n * Группирует события, которые пересекаются по времени\r\n */\r\nexport function groupCrossingEvents(events: IScheduledEvent[]): IScheduledEvent[][] {\r\n\tconst groups: IScheduledEvent[][] = [];\r\n\r\n\tevents.sort((a, b) => {\r\n\t\treturn a.startDate.getTime() - b.startDate.getTime();\r\n\t});\r\n\r\n\tfor (const event of events) {\r\n\t\tconst group = groups.find((group) => group.some((e) => isEventCrossing(e, event)));\r\n\t\tif (group) {\r\n\t\t\tgroup.push(event);\r\n\t\t} else {\r\n\t\t\tgroups.push([event]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn groups;\r\n}\r\n\r\nfunction isEventCrossing(event1: IScheduledEvent, event2: IScheduledEvent) {\r\n\treturn event1.startDate < event2.endDate && event1.endDate > event2.startDate;\r\n}\r\n\r\n/**\r\n * Позиция элемента\r\n */\r\ninterface EventPosition {\r\n\ttop: string;\r\n\tleft: string;\r\n\twidth: string;\r\n}\r\n\r\n/**\r\n * Возвращает данные для позиционирования событий на день\r\n */\r\nexport function getEventPositions(events: IScheduledEvent[], hourHeight: number): Map<string | number, EventPosition> {\r\n\tconst positions = new Map<string | number, EventPosition>();\r\n\tconst groupedEvents = groupCrossingEvents(events);\r\n\tfor (const group of groupedEvents) {\r\n\t\tfor (const [index, event] of group.entries()) {\r\n\t\t\tpositions.set(event.id, {\r\n\t\t\t\ttop: getEventTop(event, hourHeight) + \"px\",\r\n\t\t\t\tleft: `${(100 / group.length) * index}%`,\r\n\t\t\t\twidth: `${(100 / group.length) * (index + 1) - (100 / group.length) * index}%`\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\treturn positions;\r\n}\r\n\r\nfunction getEventLengthInMin(event: IScheduledEvent) {\r\n\treturn (event.endDate.getTime() - event.startDate.getTime()) / 1000 / 60;\r\n}\r\n\r\nfunction oneMinInPx(hourHeight: number) {\r\n\treturn hourHeight / 60;\r\n}\r\n\r\n/**\r\n * Возвращает высоту события в пикселях\r\n */\r\nexport function getEventHeight(event: IScheduledEvent, hourHeight: number) {\r\n\treturn getEventLengthInMin(event) * oneMinInPx(hourHeight);\r\n}\r\n\r\n/**\r\n * Возвращает верхний отступ события в пикселях\r\n */\r\nfunction getEventTop(event: IScheduledEvent, hourHeight: number) {\r\n\treturn getMinutesFromStartOfDay(event.startDate) * oneMinInPx(hourHeight);\r\n}\r\n\r\n/**\r\n * Возвращает количество минут, прошедших с начала дня\r\n */\r\nexport function getMinutesFromStartOfDay(date: Date): number {\r\n\treturn date.getHours() * 60 + date.getMinutes();\r\n}\r\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { memo, useCallback, useMemo } from 'react';\nvar rowSizeBase = {\n width: '100%',\n height: '10px',\n top: '0px',\n left: '0px',\n cursor: 'row-resize',\n};\nvar colSizeBase = {\n width: '10px',\n height: '100%',\n top: '0px',\n left: '0px',\n cursor: 'col-resize',\n};\nvar edgeBase = {\n width: '20px',\n height: '20px',\n position: 'absolute',\n zIndex: 1,\n};\nvar styles = {\n top: __assign(__assign({}, rowSizeBase), { top: '-5px' }),\n right: __assign(__assign({}, colSizeBase), { left: undefined, right: '-5px' }),\n bottom: __assign(__assign({}, rowSizeBase), { top: undefined, bottom: '-5px' }),\n left: __assign(__assign({}, colSizeBase), { left: '-5px' }),\n topRight: __assign(__assign({}, edgeBase), { right: '-10px', top: '-10px', cursor: 'ne-resize' }),\n bottomRight: __assign(__assign({}, edgeBase), { right: '-10px', bottom: '-10px', cursor: 'se-resize' }),\n bottomLeft: __assign(__assign({}, edgeBase), { left: '-10px', bottom: '-10px', cursor: 'sw-resize' }),\n topLeft: __assign(__assign({}, edgeBase), { left: '-10px', top: '-10px', cursor: 'nw-resize' }),\n};\nexport var Resizer = memo(function (props) {\n var onResizeStart = props.onResizeStart, direction = props.direction, children = props.children, replaceStyles = props.replaceStyles, className = props.className;\n var onMouseDown = useCallback(function (e) {\n onResizeStart(e, direction);\n }, [onResizeStart, direction]);\n var onTouchStart = useCallback(function (e) {\n onResizeStart(e, direction);\n }, [onResizeStart, direction]);\n var style = useMemo(function () {\n return __assign(__assign({ position: 'absolute', userSelect: 'none' }, styles[direction]), (replaceStyles !== null && replaceStyles !== void 0 ? replaceStyles : {}));\n }, [replaceStyles, direction]);\n return (_jsx(\"div\", { className: className || undefined, style: style, onMouseDown: onMouseDown, onTouchStart: onTouchStart, children: children }));\n});\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { PureComponent } from 'react';\nimport { flushSync } from 'react-dom';\nimport { Resizer } from './resizer';\nvar DEFAULT_SIZE = {\n width: 'auto',\n height: 'auto',\n};\nvar clamp = function (n, min, max) { return Math.max(Math.min(n, max), min); };\nvar snap = function (n, size, gridGap) {\n var v = Math.round(n / size);\n return v * size + gridGap * (v - 1);\n};\nvar hasDirection = function (dir, target) {\n return new RegExp(dir, 'i').test(target);\n};\n// INFO: In case of window is a Proxy and does not porxy Events correctly, use isTouchEvent & isMouseEvent to distinguish event type instead of `instanceof`.\nvar isTouchEvent = function (event) {\n return Boolean(event.touches && event.touches.length);\n};\nvar isMouseEvent = function (event) {\n return Boolean((event.clientX || event.clientX === 0) &&\n (event.clientY || event.clientY === 0));\n};\nvar findClosestSnap = function (n, snapArray, snapGap) {\n if (snapGap === void 0) { snapGap = 0; }\n var closestGapIndex = snapArray.reduce(function (prev, curr, index) { return (Math.abs(curr - n) < Math.abs(snapArray[prev] - n) ? index : prev); }, 0);\n var gap = Math.abs(snapArray[closestGapIndex] - n);\n return snapGap === 0 || gap < snapGap ? snapArray[closestGapIndex] : n;\n};\nvar getStringSize = function (n) {\n n = n.toString();\n if (n === 'auto') {\n return n;\n }\n if (n.endsWith('px')) {\n return n;\n }\n if (n.endsWith('%')) {\n return n;\n }\n if (n.endsWith('vh')) {\n return n;\n }\n if (n.endsWith('vw')) {\n return n;\n }\n if (n.endsWith('vmax')) {\n return n;\n }\n if (n.endsWith('vmin')) {\n return n;\n }\n return \"\".concat(n, \"px\");\n};\nvar getPixelSize = function (size, parentSize, innerWidth, innerHeight) {\n if (size && typeof size === 'string') {\n if (size.endsWith('px')) {\n return Number(size.replace('px', ''));\n }\n if (size.endsWith('%')) {\n var ratio = Number(size.replace('%', '')) / 100;\n return parentSize * ratio;\n }\n if (size.endsWith('vw')) {\n var ratio = Number(size.replace('vw', '')) / 100;\n return innerWidth * ratio;\n }\n if (size.endsWith('vh')) {\n var ratio = Number(size.replace('vh', '')) / 100;\n return innerHeight * ratio;\n }\n }\n return size;\n};\nvar calculateNewMax = function (parentSize, innerWidth, innerHeight, maxWidth, maxHeight, minWidth, minHeight) {\n maxWidth = getPixelSize(maxWidth, parentSize.width, innerWidth, innerHeight);\n maxHeight = getPixelSize(maxHeight, parentSize.height, innerWidth, innerHeight);\n minWidth = getPixelSize(minWidth, parentSize.width, innerWidth, innerHeight);\n minHeight = getPixelSize(minHeight, parentSize.height, innerWidth, innerHeight);\n return {\n maxWidth: typeof maxWidth === 'undefined' ? undefined : Number(maxWidth),\n maxHeight: typeof maxHeight === 'undefined' ? undefined : Number(maxHeight),\n minWidth: typeof minWidth === 'undefined' ? undefined : Number(minWidth),\n minHeight: typeof minHeight === 'undefined' ? undefined : Number(minHeight),\n };\n};\n/**\n * transform T | [T, T] to [T, T]\n * @param val\n * @returns\n */\n// tslint:disable-next-line\nvar normalizeToPair = function (val) { return (Array.isArray(val) ? val : [val, val]); };\nvar definedProps = [\n 'as',\n 'ref',\n 'style',\n 'className',\n 'grid',\n 'gridGap',\n 'snap',\n 'bounds',\n 'boundsByDirection',\n 'size',\n 'defaultSize',\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight',\n 'lockAspectRatio',\n 'lockAspectRatioExtraWidth',\n 'lockAspectRatioExtraHeight',\n 'enable',\n 'handleStyles',\n 'handleClasses',\n 'handleWrapperStyle',\n 'handleWrapperClass',\n 'children',\n 'onResizeStart',\n 'onResize',\n 'onResizeStop',\n 'handleComponent',\n 'scale',\n 'resizeRatio',\n 'snapGap',\n];\n// HACK: This class is used to calculate % size.\nvar baseClassName = '__resizable_base__';\nvar Resizable = /** @class */ (function (_super) {\n __extends(Resizable, _super);\n function Resizable(props) {\n var _a, _b, _c, _d;\n var _this = _super.call(this, props) || this;\n _this.ratio = 1;\n _this.resizable = null;\n // For parent boundary\n _this.parentLeft = 0;\n _this.parentTop = 0;\n // For boundary\n _this.resizableLeft = 0;\n _this.resizableRight = 0;\n _this.resizableTop = 0;\n _this.resizableBottom = 0;\n // For target boundary\n _this.targetLeft = 0;\n _this.targetTop = 0;\n _this.delta = {\n width: 0,\n height: 0,\n };\n _this.appendBase = function () {\n if (!_this.resizable || !_this.window) {\n return null;\n }\n var parent = _this.parentNode;\n if (!parent) {\n return null;\n }\n var element = _this.window.document.createElement('div');\n element.style.width = '100%';\n element.style.height = '100%';\n element.style.position = 'absolute';\n element.style.transform = 'scale(0, 0)';\n element.style.left = '0';\n element.style.flex = '0 0 100%';\n if (element.classList) {\n element.classList.add(baseClassName);\n }\n else {\n element.className += baseClassName;\n }\n parent.appendChild(element);\n return element;\n };\n _this.removeBase = function (base) {\n var parent = _this.parentNode;\n if (!parent) {\n return;\n }\n parent.removeChild(base);\n };\n _this.state = {\n isResizing: false,\n width: (_b = (_a = _this.propsSize) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : 'auto',\n height: (_d = (_c = _this.propsSize) === null || _c === void 0 ? void 0 : _c.height) !== null && _d !== void 0 ? _d : 'auto',\n direction: 'right',\n original: {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n },\n backgroundStyle: {\n height: '100%',\n width: '100%',\n backgroundColor: 'rgba(0,0,0,0)',\n cursor: 'auto',\n opacity: 0,\n position: 'fixed',\n zIndex: 9999,\n top: '0',\n left: '0',\n bottom: '0',\n right: '0',\n },\n flexBasis: undefined,\n };\n _this.onResizeStart = _this.onResizeStart.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.onMouseUp = _this.onMouseUp.bind(_this);\n return _this;\n }\n Object.defineProperty(Resizable.prototype, \"parentNode\", {\n get: function () {\n if (!this.resizable) {\n return null;\n }\n return this.resizable.parentNode;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"window\", {\n get: function () {\n if (!this.resizable) {\n return null;\n }\n if (!this.resizable.ownerDocument) {\n return null;\n }\n return this.resizable.ownerDocument.defaultView;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"propsSize\", {\n get: function () {\n return this.props.size || this.props.defaultSize || DEFAULT_SIZE;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"size\", {\n get: function () {\n var width = 0;\n var height = 0;\n if (this.resizable && this.window) {\n var orgWidth = this.resizable.offsetWidth;\n var orgHeight = this.resizable.offsetHeight;\n // HACK: Set position `relative` to get parent size.\n // This is because when re-resizable set `absolute`, I can not get base width correctly.\n var orgPosition = this.resizable.style.position;\n if (orgPosition !== 'relative') {\n this.resizable.style.position = 'relative';\n }\n // INFO: Use original width or height if set auto.\n width = this.resizable.style.width !== 'auto' ? this.resizable.offsetWidth : orgWidth;\n height = this.resizable.style.height !== 'auto' ? this.resizable.offsetHeight : orgHeight;\n // Restore original position\n this.resizable.style.position = orgPosition;\n }\n return { width: width, height: height };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"sizeStyle\", {\n get: function () {\n var _this = this;\n var size = this.props.size;\n var getSize = function (key) {\n var _a;\n if (typeof _this.state[key] === 'undefined' || _this.state[key] === 'auto') {\n return 'auto';\n }\n if (_this.propsSize && _this.propsSize[key] && ((_a = _this.propsSize[key]) === null || _a === void 0 ? void 0 : _a.toString().endsWith('%'))) {\n if (_this.state[key].toString().endsWith('%')) {\n return _this.state[key].toString();\n }\n var parentSize = _this.getParentSize();\n var value = Number(_this.state[key].toString().replace('px', ''));\n var percent = (value / parentSize[key]) * 100;\n return \"\".concat(percent, \"%\");\n }\n return getStringSize(_this.state[key]);\n };\n var width = size && typeof size.width !== 'undefined' && !this.state.isResizing\n ? getStringSize(size.width)\n : getSize('width');\n var height = size && typeof size.height !== 'undefined' && !this.state.isResizing\n ? getStringSize(size.height)\n : getSize('height');\n return { width: width, height: height };\n },\n enumerable: false,\n configurable: true\n });\n Resizable.prototype.getParentSize = function () {\n if (!this.parentNode) {\n if (!this.window) {\n return { width: 0, height: 0 };\n }\n return { width: this.window.innerWidth, height: this.window.innerHeight };\n }\n var base = this.appendBase();\n if (!base) {\n return { width: 0, height: 0 };\n }\n // INFO: To calculate parent width with flex layout\n var wrapChanged = false;\n var wrap = this.parentNode.style.flexWrap;\n if (wrap !== 'wrap') {\n wrapChanged = true;\n this.parentNode.style.flexWrap = 'wrap';\n // HACK: Use relative to get parent padding size\n }\n base.style.position = 'relative';\n base.style.minWidth = '100%';\n base.style.minHeight = '100%';\n var size = {\n width: base.offsetWidth,\n height: base.offsetHeight,\n };\n if (wrapChanged) {\n this.parentNode.style.flexWrap = wrap;\n }\n this.removeBase(base);\n return size;\n };\n Resizable.prototype.bindEvents = function () {\n if (this.window) {\n this.window.addEventListener('mouseup', this.onMouseUp);\n this.window.addEventListener('mousemove', this.onMouseMove);\n this.window.addEventListener('mouseleave', this.onMouseUp);\n this.window.addEventListener('touchmove', this.onMouseMove, {\n capture: true,\n passive: false,\n });\n this.window.addEventListener('touchend', this.onMouseUp);\n }\n };\n Resizable.prototype.unbindEvents = function () {\n if (this.window) {\n this.window.removeEventListener('mouseup', this.onMouseUp);\n this.window.removeEventListener('mousemove', this.onMouseMove);\n this.window.removeEventListener('mouseleave', this.onMouseUp);\n this.window.removeEventListener('touchmove', this.onMouseMove, true);\n this.window.removeEventListener('touchend', this.onMouseUp);\n }\n };\n Resizable.prototype.componentDidMount = function () {\n if (!this.resizable || !this.window) {\n return;\n }\n var computedStyle = this.window.getComputedStyle(this.resizable);\n this.setState({\n width: this.state.width || this.size.width,\n height: this.state.height || this.size.height,\n flexBasis: computedStyle.flexBasis !== 'auto' ? computedStyle.flexBasis : undefined,\n });\n };\n Resizable.prototype.componentWillUnmount = function () {\n if (this.window) {\n this.unbindEvents();\n }\n };\n Resizable.prototype.createSizeForCssProperty = function (newSize, kind) {\n var propsSize = this.propsSize && this.propsSize[kind];\n return this.state[kind] === 'auto' &&\n this.state.original[kind] === newSize &&\n (typeof propsSize === 'undefined' || propsSize === 'auto')\n ? 'auto'\n : newSize;\n };\n Resizable.prototype.calculateNewMaxFromBoundary = function (maxWidth, maxHeight) {\n var boundsByDirection = this.props.boundsByDirection;\n var direction = this.state.direction;\n var widthByDirection = boundsByDirection && hasDirection('left', direction);\n var heightByDirection = boundsByDirection && hasDirection('top', direction);\n var boundWidth;\n var boundHeight;\n if (this.props.bounds === 'parent') {\n var parent_1 = this.parentNode;\n if (parent_1) {\n boundWidth = widthByDirection\n ? this.resizableRight - this.parentLeft\n : parent_1.offsetWidth + (this.parentLeft - this.resizableLeft);\n boundHeight = heightByDirection\n ? this.resizableBottom - this.parentTop\n : parent_1.offsetHeight + (this.parentTop - this.resizableTop);\n }\n }\n else if (this.props.bounds === 'window') {\n if (this.window) {\n boundWidth = widthByDirection ? this.resizableRight : this.window.innerWidth - this.resizableLeft;\n boundHeight = heightByDirection ? this.resizableBottom : this.window.innerHeight - this.resizableTop;\n }\n }\n else if (this.props.bounds) {\n boundWidth = widthByDirection\n ? this.resizableRight - this.targetLeft\n : this.props.bounds.offsetWidth + (this.targetLeft - this.resizableLeft);\n boundHeight = heightByDirection\n ? this.resizableBottom - this.targetTop\n : this.props.bounds.offsetHeight + (this.targetTop - this.resizableTop);\n }\n if (boundWidth && Number.isFinite(boundWidth)) {\n maxWidth = maxWidth && maxWidth < boundWidth ? maxWidth : boundWidth;\n }\n if (boundHeight && Number.isFinite(boundHeight)) {\n maxHeight = maxHeight && maxHeight < boundHeight ? maxHeight : boundHeight;\n }\n return { maxWidth: maxWidth, maxHeight: maxHeight };\n };\n Resizable.prototype.calculateNewSizeFromDirection = function (clientX, clientY) {\n var scale = this.props.scale || 1;\n var _a = normalizeToPair(this.props.resizeRatio || 1), resizeRatioX = _a[0], resizeRatioY = _a[1];\n var _b = this.state, direction = _b.direction, original = _b.original;\n var _c = this.props, lockAspectRatio = _c.lockAspectRatio, lockAspectRatioExtraHeight = _c.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _c.lockAspectRatioExtraWidth;\n var newWidth = original.width;\n var newHeight = original.height;\n var extraHeight = lockAspectRatioExtraHeight || 0;\n var extraWidth = lockAspectRatioExtraWidth || 0;\n if (hasDirection('right', direction)) {\n newWidth = original.width + ((clientX - original.x) * resizeRatioX) / scale;\n if (lockAspectRatio) {\n newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n }\n }\n if (hasDirection('left', direction)) {\n newWidth = original.width - ((clientX - original.x) * resizeRatioX) / scale;\n if (lockAspectRatio) {\n newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n }\n }\n if (hasDirection('bottom', direction)) {\n newHeight = original.height + ((clientY - original.y) * resizeRatioY) / scale;\n if (lockAspectRatio) {\n newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n }\n }\n if (hasDirection('top', direction)) {\n newHeight = original.height - ((clientY - original.y) * resizeRatioY) / scale;\n if (lockAspectRatio) {\n newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n }\n }\n return { newWidth: newWidth, newHeight: newHeight };\n };\n Resizable.prototype.calculateNewSizeFromAspectRatio = function (newWidth, newHeight, max, min) {\n var _a = this.props, lockAspectRatio = _a.lockAspectRatio, lockAspectRatioExtraHeight = _a.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _a.lockAspectRatioExtraWidth;\n var computedMinWidth = typeof min.width === 'undefined' ? 10 : min.width;\n var computedMaxWidth = typeof max.width === 'undefined' || max.width < 0 ? newWidth : max.width;\n var computedMinHeight = typeof min.height === 'undefined' ? 10 : min.height;\n var computedMaxHeight = typeof max.height === 'undefined' || max.height < 0 ? newHeight : max.height;\n var extraHeight = lockAspectRatioExtraHeight || 0;\n var extraWidth = lockAspectRatioExtraWidth || 0;\n if (lockAspectRatio) {\n var extraMinWidth = (computedMinHeight - extraHeight) * this.ratio + extraWidth;\n var extraMaxWidth = (computedMaxHeight - extraHeight) * this.ratio + extraWidth;\n var extraMinHeight = (computedMinWidth - extraWidth) / this.ratio + extraHeight;\n var extraMaxHeight = (computedMaxWidth - extraWidth) / this.ratio + extraHeight;\n var lockedMinWidth = Math.max(computedMinWidth, extraMinWidth);\n var lockedMaxWidth = Math.min(computedMaxWidth, extraMaxWidth);\n var lockedMinHeight = Math.max(computedMinHeight, extraMinHeight);\n var lockedMaxHeight = Math.min(computedMaxHeight, extraMaxHeight);\n newWidth = clamp(newWidth, lockedMinWidth, lockedMaxWidth);\n newHeight = clamp(newHeight, lockedMinHeight, lockedMaxHeight);\n }\n else {\n newWidth = clamp(newWidth, computedMinWidth, computedMaxWidth);\n newHeight = clamp(newHeight, computedMinHeight, computedMaxHeight);\n }\n return { newWidth: newWidth, newHeight: newHeight };\n };\n Resizable.prototype.setBoundingClientRect = function () {\n var adjustedScale = 1 / (this.props.scale || 1);\n // For parent boundary\n if (this.props.bounds === 'parent') {\n var parent_2 = this.parentNode;\n if (parent_2) {\n var parentRect = parent_2.getBoundingClientRect();\n this.parentLeft = parentRect.left * adjustedScale;\n this.parentTop = parentRect.top * adjustedScale;\n }\n }\n // For target(html element) boundary\n if (this.props.bounds && typeof this.props.bounds !== 'string') {\n var targetRect = this.props.bounds.getBoundingClientRect();\n this.targetLeft = targetRect.left * adjustedScale;\n this.targetTop = targetRect.top * adjustedScale;\n }\n // For boundary\n if (this.resizable) {\n var _a = this.resizable.getBoundingClientRect(), left = _a.left, top_1 = _a.top, right = _a.right, bottom = _a.bottom;\n this.resizableLeft = left * adjustedScale;\n this.resizableRight = right * adjustedScale;\n this.resizableTop = top_1 * adjustedScale;\n this.resizableBottom = bottom * adjustedScale;\n }\n };\n Resizable.prototype.onResizeStart = function (event, direction) {\n if (!this.resizable || !this.window) {\n return;\n }\n var clientX = 0;\n var clientY = 0;\n if (event.nativeEvent && isMouseEvent(event.nativeEvent)) {\n clientX = event.nativeEvent.clientX;\n clientY = event.nativeEvent.clientY;\n }\n else if (event.nativeEvent && isTouchEvent(event.nativeEvent)) {\n clientX = event.nativeEvent.touches[0].clientX;\n clientY = event.nativeEvent.touches[0].clientY;\n }\n if (this.props.onResizeStart) {\n if (this.resizable) {\n var startResize = this.props.onResizeStart(event, direction, this.resizable);\n if (startResize === false) {\n return;\n }\n }\n }\n // Fix #168\n if (this.props.size) {\n if (typeof this.props.size.height !== 'undefined' && this.props.size.height !== this.state.height) {\n this.setState({ height: this.props.size.height });\n }\n if (typeof this.props.size.width !== 'undefined' && this.props.size.width !== this.state.width) {\n this.setState({ width: this.props.size.width });\n }\n }\n // For lockAspectRatio case\n this.ratio =\n typeof this.props.lockAspectRatio === 'number' ? this.props.lockAspectRatio : this.size.width / this.size.height;\n var flexBasis;\n var computedStyle = this.window.getComputedStyle(this.resizable);\n if (computedStyle.flexBasis !== 'auto') {\n var parent_3 = this.parentNode;\n if (parent_3) {\n var dir = this.window.getComputedStyle(parent_3).flexDirection;\n this.flexDir = dir.startsWith('row') ? 'row' : 'column';\n flexBasis = computedStyle.flexBasis;\n }\n }\n // For boundary\n this.setBoundingClientRect();\n this.bindEvents();\n var state = {\n original: {\n x: clientX,\n y: clientY,\n width: this.size.width,\n height: this.size.height,\n },\n isResizing: true,\n backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: this.window.getComputedStyle(event.target).cursor || 'auto' }),\n direction: direction,\n flexBasis: flexBasis,\n };\n this.setState(state);\n };\n Resizable.prototype.onMouseMove = function (event) {\n var _this = this;\n if (!this.state.isResizing || !this.resizable || !this.window) {\n return;\n }\n if (this.window.TouchEvent && isTouchEvent(event)) {\n try {\n event.preventDefault();\n event.stopPropagation();\n }\n catch (e) {\n // Ignore on fail\n }\n }\n var _a = this.props, maxWidth = _a.maxWidth, maxHeight = _a.maxHeight, minWidth = _a.minWidth, minHeight = _a.minHeight;\n var clientX = isTouchEvent(event) ? event.touches[0].clientX : event.clientX;\n var clientY = isTouchEvent(event) ? event.touches[0].clientY : event.clientY;\n var _b = this.state, direction = _b.direction, original = _b.original, width = _b.width, height = _b.height;\n var parentSize = this.getParentSize();\n var max = calculateNewMax(parentSize, this.window.innerWidth, this.window.innerHeight, maxWidth, maxHeight, minWidth, minHeight);\n maxWidth = max.maxWidth;\n maxHeight = max.maxHeight;\n minWidth = max.minWidth;\n minHeight = max.minHeight;\n // Calculate new size\n var _c = this.calculateNewSizeFromDirection(clientX, clientY), newHeight = _c.newHeight, newWidth = _c.newWidth;\n // Calculate max size from boundary settings\n var boundaryMax = this.calculateNewMaxFromBoundary(maxWidth, maxHeight);\n if (this.props.snap && this.props.snap.x) {\n newWidth = findClosestSnap(newWidth, this.props.snap.x, this.props.snapGap);\n }\n if (this.props.snap && this.props.snap.y) {\n newHeight = findClosestSnap(newHeight, this.props.snap.y, this.props.snapGap);\n }\n // Calculate new size from aspect ratio\n var newSize = this.calculateNewSizeFromAspectRatio(newWidth, newHeight, { width: boundaryMax.maxWidth, height: boundaryMax.maxHeight }, { width: minWidth, height: minHeight });\n newWidth = newSize.newWidth;\n newHeight = newSize.newHeight;\n if (this.props.grid) {\n var newGridWidth = snap(newWidth, this.props.grid[0], this.props.gridGap ? this.props.gridGap[0] : 0);\n var newGridHeight = snap(newHeight, this.props.grid[1], this.props.gridGap ? this.props.gridGap[1] : 0);\n var gap = this.props.snapGap || 0;\n var w = gap === 0 || Math.abs(newGridWidth - newWidth) <= gap ? newGridWidth : newWidth;\n var h = gap === 0 || Math.abs(newGridHeight - newHeight) <= gap ? newGridHeight : newHeight;\n newWidth = w;\n newHeight = h;\n }\n var delta = {\n width: newWidth - original.width,\n height: newHeight - original.height,\n };\n this.delta = delta;\n if (width && typeof width === 'string') {\n if (width.endsWith('%')) {\n var percent = (newWidth / parentSize.width) * 100;\n newWidth = \"\".concat(percent, \"%\");\n }\n else if (width.endsWith('vw')) {\n var vw = (newWidth / this.window.innerWidth) * 100;\n newWidth = \"\".concat(vw, \"vw\");\n }\n else if (width.endsWith('vh')) {\n var vh = (newWidth / this.window.innerHeight) * 100;\n newWidth = \"\".concat(vh, \"vh\");\n }\n }\n if (height && typeof height === 'string') {\n if (height.endsWith('%')) {\n var percent = (newHeight / parentSize.height) * 100;\n newHeight = \"\".concat(percent, \"%\");\n }\n else if (height.endsWith('vw')) {\n var vw = (newHeight / this.window.innerWidth) * 100;\n newHeight = \"\".concat(vw, \"vw\");\n }\n else if (height.endsWith('vh')) {\n var vh = (newHeight / this.window.innerHeight) * 100;\n newHeight = \"\".concat(vh, \"vh\");\n }\n }\n var newState = {\n width: this.createSizeForCssProperty(newWidth, 'width'),\n height: this.createSizeForCssProperty(newHeight, 'height'),\n };\n if (this.flexDir === 'row') {\n newState.flexBasis = newState.width;\n }\n else if (this.flexDir === 'column') {\n newState.flexBasis = newState.height;\n }\n var widthChanged = this.state.width !== newState.width;\n var heightChanged = this.state.height !== newState.height;\n var flexBaseChanged = this.state.flexBasis !== newState.flexBasis;\n var changed = widthChanged || heightChanged || flexBaseChanged;\n if (changed) {\n // For v18, update state sync\n flushSync(function () {\n _this.setState(newState);\n });\n }\n if (this.props.onResize) {\n if (changed) {\n this.props.onResize(event, direction, this.resizable, delta);\n }\n }\n };\n Resizable.prototype.onMouseUp = function (event) {\n var _a, _b;\n var _c = this.state, isResizing = _c.isResizing, direction = _c.direction, original = _c.original;\n if (!isResizing || !this.resizable) {\n return;\n }\n if (this.props.onResizeStop) {\n this.props.onResizeStop(event, direction, this.resizable, this.delta);\n }\n if (this.props.size) {\n this.setState({ width: (_a = this.props.size.width) !== null && _a !== void 0 ? _a : 'auto', height: (_b = this.props.size.height) !== null && _b !== void 0 ? _b : 'auto' });\n }\n this.unbindEvents();\n this.setState({\n isResizing: false,\n backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: 'auto' }),\n });\n };\n Resizable.prototype.updateSize = function (size) {\n var _a, _b;\n this.setState({ width: (_a = size.width) !== null && _a !== void 0 ? _a : 'auto', height: (_b = size.height) !== null && _b !== void 0 ? _b : 'auto' });\n };\n Resizable.prototype.renderResizer = function () {\n var _this = this;\n var _a = this.props, enable = _a.enable, handleStyles = _a.handleStyles, handleClasses = _a.handleClasses, handleWrapperStyle = _a.handleWrapperStyle, handleWrapperClass = _a.handleWrapperClass, handleComponent = _a.handleComponent;\n if (!enable) {\n return null;\n }\n var resizers = Object.keys(enable).map(function (dir) {\n if (enable[dir] !== false) {\n return (_jsx(Resizer, { direction: dir, onResizeStart: _this.onResizeStart, replaceStyles: handleStyles && handleStyles[dir], className: handleClasses && handleClasses[dir], children: handleComponent && handleComponent[dir] ? handleComponent[dir] : null }, dir));\n }\n return null;\n });\n // #93 Wrap the resize box in span (will not break 100% width/height)\n return (_jsx(\"div\", { className: handleWrapperClass, style: handleWrapperStyle, children: resizers }));\n };\n Resizable.prototype.render = function () {\n var _this = this;\n var extendsProps = Object.keys(this.props).reduce(function (acc, key) {\n if (definedProps.indexOf(key) !== -1) {\n return acc;\n }\n acc[key] = _this.props[key];\n return acc;\n }, {});\n var style = __assign(__assign(__assign({ position: 'relative', userSelect: this.state.isResizing ? 'none' : 'auto' }, this.props.style), this.sizeStyle), { maxWidth: this.props.maxWidth, maxHeight: this.props.maxHeight, minWidth: this.props.minWidth, minHeight: this.props.minHeight, boxSizing: 'border-box', flexShrink: 0 });\n if (this.state.flexBasis) {\n style.flexBasis = this.state.flexBasis;\n }\n var Wrapper = this.props.as || 'div';\n return (_jsxs(Wrapper, __assign({ style: style, className: this.props.className }, extendsProps, { \n // `ref` is after `extendsProps` to ensure this one wins over a version\n // passed in\n ref: function (c) {\n if (c) {\n _this.resizable = c;\n }\n }, children: [this.state.isResizing && _jsx(\"div\", { style: this.state.backgroundStyle }), this.props.children, this.renderResizer()] })));\n };\n Resizable.defaultProps = {\n as: 'div',\n onResizeStart: function () { },\n onResize: function () { },\n onResizeStop: function () { },\n enable: {\n top: true,\n right: true,\n bottom: true,\n left: true,\n topRight: true,\n bottomRight: true,\n bottomLeft: true,\n topLeft: true,\n },\n style: {},\n grid: [1, 1],\n gridGap: [0, 0],\n lockAspectRatio: false,\n lockAspectRatioExtraWidth: 0,\n lockAspectRatioExtraHeight: 0,\n scale: 1,\n resizeRatio: 1,\n snapGap: 0,\n };\n return Resizable;\n}(PureComponent));\nexport { Resizable };\n","import React, { useCallback } from \"react\";\r\n\r\nexport const ScheduledEventResizeHandler: React.FC = () => {\r\n\t// Перехватываем событие, чтобы не вызывался onClick и не вызывался drag-and-drop\r\n\tconst onPointerDown = useCallback((e: React.PointerEvent) => {\r\n\t\te.stopPropagation();\r\n\t}, []);\r\n\treturn <div className=\"h-full w-full\" onPointerDown={onPointerDown} />;\r\n};\r\n","import { useDraggable } from \"@dnd-kit/core\";\r\nimport { Resizable, ResizeCallback } from \"re-resizable\";\r\nimport { useCallback, useMemo } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { useScheduler } from \"../../context/SchedulerContext\";\r\nimport { IScheduledEvent } from \"../../types\";\r\nimport { getEventHeight } from \"../../utils/SchedulerUtils\";\r\nimport { ScheduledEventResizeHandler } from \"./ScheduledEventResizeHandler\";\r\n\r\nconst eventStyles = tv({\r\n\tbase: \"absolute left-0 right-0 select-none\",\r\n\tslots: {\r\n\t\twrapper: \"h-full w-full cursor-pointer rounded border border-primary/20 bg-primary/10 px-2 py-1\",\r\n\t\ttitle: \"truncate text-xs font-medium\",\r\n\t\tresizeTop: \"absolute left-0 right-0 top-0 h-1 cursor-ns-resize\",\r\n\t\tresizeBottom: \"absolute bottom-0 left-0 right-0 h-1 cursor-ns-resize\"\r\n\t},\r\n\tvariants: {\r\n\t\tdragging: {\r\n\t\t\ttrue: \"opacity-50\"\r\n\t\t}\r\n\t}\r\n});\r\n\r\nexport interface ScheduledEventProps<T = unknown> {\r\n\tevent: IScheduledEvent<T>;\r\n\ttop?: string;\r\n\tleft?: string;\r\n\twidth?: string;\r\n\tonEventClick?: (event: IScheduledEvent<T>) => void;\r\n}\r\n\r\nexport const ScheduledEvent: React.FC<ScheduledEventProps> = ({ event, onEventClick, width, left, top }) => {\r\n\tconst {\r\n\t\teventComponent,\r\n\t\tisDraggable,\r\n\t\tisResizable,\r\n\t\tonEventResize,\r\n\t\tonEventDrop,\r\n\t\thourHeight,\r\n\t\tgridSize,\r\n\t\tpxToMinutes,\r\n\t\tsnapToTime\r\n\t} = useScheduler();\r\n\r\n\tconst canDrag = isDraggable ? isDraggable(event) : onEventDrop !== undefined;\r\n\tconst canResize = isResizable ? isResizable(event) : onEventResize !== undefined;\r\n\r\n\tconst { attributes, listeners, setNodeRef, transform } = useDraggable({\r\n\t\tid: event.id,\r\n\t\tdata: { event },\r\n\t\tdisabled: !canDrag\r\n\t});\r\n\tconst isDragging = !!transform;\r\n\r\n\tconst height = useMemo(() => getEventHeight(event, hourHeight), [event, hourHeight]);\r\n\tconst style = {\r\n\t\ttop,\r\n\t\theight,\r\n\t\tleft,\r\n\t\twidth\r\n\t\t// transform: CSS.Transform.toString(transform)\r\n\t};\r\n\r\n\tconst onEventClickHandler = useCallback(\r\n\t\t(e: React.MouseEvent) => {\r\n\t\t\tif (!onEventClick) return;\r\n\t\t\tonEventClick(event);\r\n\t\t\te.stopPropagation();\r\n\t\t},\r\n\t\t[onEventClick, event]\r\n\t);\r\n\r\n\tconst onResize = useCallback<ResizeCallback>((_, direction, elementRef, delta) => {\r\n\t\tif (direction === \"top\") {\r\n\t\t\t// При растягивании вверх двигаем элемент\r\n\t\t\telementRef.style.transform = `translateY(${-delta.height}px)`;\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst onStopResize: ResizeCallback = useCallback(\r\n\t\t(_, direction, elementRef, delta) => {\r\n\t\t\tif (direction === \"bottom\") {\r\n\t\t\t\tconst minutes = pxToMinutes(delta.height);\r\n\t\t\t\tconst newEndDate = new Date(event.endDate.getTime() + minutes * 60 * 1000);\r\n\t\t\t\tonEventResize?.(event, {\r\n\t\t\t\t\tstartDate: event.startDate,\r\n\t\t\t\t\tendDate: snapToTime(newEndDate)\r\n\t\t\t\t});\r\n\t\t\t} else if (direction === \"top\") {\r\n\t\t\t\telementRef.style.transform = \"none\";\r\n\t\t\t\tconst minutes = pxToMinutes(delta.height);\r\n\t\t\t\tconst newStartDate = new Date(event.startDate.getTime() - minutes * 60 * 1000);\r\n\t\t\t\tonEventResize?.(event, {\r\n\t\t\t\t\tstartDate: snapToTime(newStartDate),\r\n\t\t\t\t\tendDate: event.endDate\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\t[event, onEventResize, pxToMinutes, snapToTime]\r\n\t);\r\n\r\n\tconst eventContent = useMemo(() => {\r\n\t\tconst { wrapper, title } = eventStyles();\r\n\t\tconst base = (\r\n\t\t\t<div className={wrapper()}>\r\n\t\t\t\t<div className={title()}>{event.title}</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t\tif (eventComponent) {\r\n\t\t\tconst EventComponent = eventComponent;\r\n\t\t\treturn <EventComponent event={event} baseEventComponent={base} />;\r\n\t\t}\r\n\t\treturn base;\r\n\t}, [eventComponent, event]);\r\n\r\n\tconst { base } = eventStyles();\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={base({ dragging: isDragging })}\r\n\t\t\tref={setNodeRef}\r\n\t\t\tstyle={style}\r\n\t\t\t{...(canDrag ? attributes : {})}\r\n\t\t\t{...(canDrag ? listeners : {})}\r\n\t\t\tonClick={onEventClickHandler}\r\n\t\t>\r\n\t\t\t<Resizable\r\n\t\t\t\tsize={{ height: height }}\r\n\t\t\t\tenable={canResize ? ResizeEnable : false}\r\n\t\t\t\tgrid={[0, gridSize]}\r\n\t\t\t\tonResize={onResize}\r\n\t\t\t\tonResizeStop={onStopResize}\r\n\t\t\t\thandleComponent={{\r\n\t\t\t\t\tbottom: <ScheduledEventResizeHandler />,\r\n\t\t\t\t\ttop: <ScheduledEventResizeHandler />\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t{eventContent}\r\n\t\t\t</Resizable>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nconst ResizeEnable = {\r\n\ttop: true,\r\n\tbottom: true\r\n};\r\n","export function getFormattedTime(date: Date): string {\r\n\treturn date.toLocaleTimeString(undefined, { hour: \"2-digit\", minute: \"2-digit\" });\r\n}\r\n","import { getFormattedTime } from \"@/lib/utils/date/date\";\r\nimport { useEffect, useState, useRef } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { getCurrentTimePercentage } from \"../../utils/SchedulerUtils\";\r\n\r\nconst currentTimeMarker = tv({\r\n\tslots: {\r\n\t\tcurrentTime: \"absolute left-0 right-0 border-t border-primary/50\",\r\n\t\tcurrentTimeLabel: \"absolute left-1 -translate-y-1/2 rounded-sm bg-primary px-1 text-xs text-primary-foreground\"\r\n\t}\r\n});\r\n\r\ntype CurrentTimeMarkerProps = {\r\n\tshowValue?: boolean;\r\n};\r\n\r\nexport const CurrentTimeMarker: React.FC<CurrentTimeMarkerProps> = ({ showValue = false }) => {\r\n\tconst [position, setPosition] = useState(() => getCurrentTimePercentage());\r\n\r\n\tconst [value, setValue] = useState<string | null>(() => {\r\n\t\tif (!showValue) return null;\r\n\t\treturn getFormattedTime(new Date());\r\n\t});\r\n\r\n\tconst markerRef = useRef<HTMLDivElement | null>(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tmarkerRef.current?.scrollIntoView({ behavior: \"instant\", block: \"center\" });\r\n\r\n\t\tconst interval = setInterval(() => {\r\n\t\t\tsetPosition(getCurrentTimePercentage());\r\n\t\t\tif (showValue) setValue(getFormattedTime(new Date()));\r\n\t\t}, 60000); // обновление каждую минуту\r\n\r\n\t\treturn () => clearInterval(interval);\r\n\t}, [showValue]);\r\n\r\n\tconst { currentTime, currentTimeLabel } = currentTimeMarker();\r\n\treturn (\r\n\t\t<div ref={markerRef} className={currentTime()} style={{ top: position }}>\r\n\t\t\t{showValue && <span className={currentTimeLabel()}>{value}</span>}\r\n\t\t</div>\r\n\t);\r\n};\r\n","import { useDroppable } from \"@dnd-kit/core\";\r\nimport { useCallback, useMemo } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { useScheduler } from \"../../context/SchedulerContext\";\r\nimport { IScheduledEvent } from \"../../types\";\r\nimport { DAY_COLUMN_DATA_ATTRIBUTE, getDateFromClick, getEventPositions } from \"../../utils/SchedulerUtils\";\r\nimport { ScheduledEvent } from \"../scheduled-event/ScheduledEvent\";\r\nimport { CurrentTimeMarker } from \"../time-ruler/CurrentTimeMarker\";\r\n\r\nconst dayColumn = tv({\r\n\tslots: { wrapper: \"relative h-full w-full overflow-visible border-l border-border first:border-l-0\" }\r\n});\r\n\r\nexport interface DayColumnProps {\r\n\tday: Date;\r\n\tevents: IScheduledEvent[];\r\n}\r\n\r\nexport const DayColumn: React.FC<DayColumnProps> = ({ day, events }) => {\r\n\tconst { timeSnap, onDayClick, onEventClick, hourHeight } = useScheduler();\r\n\tconst { setNodeRef } = useDroppable({ id: `day-column-${day.toISOString()}`, data: { day } });\r\n\r\n\tconst filteredEvents = useMemo(() => {\r\n\t\tconst dayStart = new Date(day.setHours(0, 0, 0, 0));\r\n\t\tconst dayEnd = new Date(day.setHours(23, 59, 59, 999));\r\n\r\n\t\treturn events.filter((event) => {\r\n\t\t\treturn event.startDate <= dayEnd && event.endDate >= dayStart;\r\n\t\t});\r\n\t}, [day, events]);\r\n\r\n\tconst onDayClickHandler = useCallback(\r\n\t\t(event: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tonDayClick?.({ date: getDateFromClick(event, day, timeSnap ?? 0) });\r\n\t\t},\r\n\t\t[onDayClick, day, timeSnap]\r\n\t);\r\n\r\n\tconst eventsPositions = useMemo(() => getEventPositions(filteredEvents, hourHeight), [filteredEvents, hourHeight]);\r\n\r\n\tconst { wrapper } = dayColumn();\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={wrapper()}\r\n\t\t\tstyle={{ height: `${hourHeight * 24}px` }}\r\n\t\t\tref={setNodeRef}\r\n\t\t\tonClick={onDayClickHandler}\r\n\t\t\t{...{ [DAY_COLUMN_DATA_ATTRIBUTE]: \"\" }}\r\n\t\t>\r\n\t\t\t{filteredEvents.map((event) => {\r\n\t\t\t\tconst position = eventsPositions.get(event.id);\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<ScheduledEvent\r\n\t\t\t\t\t\tkey={event.id}\r\n\t\t\t\t\t\tevent={event}\r\n\t\t\t\t\t\tonEventClick={onEventClick}\r\n\t\t\t\t\t\ttop={position?.top}\r\n\t\t\t\t\t\twidth={position?.width}\r\n\t\t\t\t\t\tleft={position?.left}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t})}\r\n\r\n\t\t\t<CurrentTimeMarker />\r\n\t\t</div>\r\n\t);\r\n};\r\n","import {\r\n\tDndContext,\r\n\tDragEndEvent,\r\n\tDragOverlay,\r\n\tDragStartEvent,\r\n\tKeyboardSensor,\r\n\tModifier,\r\n\tPointerSensor,\r\n\tUniqueIdentifier,\r\n\tuseSensor,\r\n\tuseSensors\r\n} from \"@dnd-kit/core\";\r\nimport { useCallback, useMemo, useState } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { useScheduler } from \"../../context/SchedulerContext\";\r\nimport { IScheduledEvent } from \"../../types\";\r\nimport { DayColumn } from \"../day-column/DayColumn\";\r\nimport { ScheduledEvent } from \"../scheduled-event/ScheduledEvent\";\r\n\r\nconst dayColumns = tv({\r\n\tbase: \"flex h-full w-full\"\r\n});\r\n\r\nexport interface DayColumnsProps {\r\n\tevents: IScheduledEvent[];\r\n}\r\n\r\nexport const DayColumns: React.FC<DayColumnsProps> = ({ events }) => {\r\n\tconst { onEventDrop, dates, gridSize, pxToMinutes, snapToTime } = useScheduler();\r\n\r\n\tconst [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\r\n\r\n\t// Настройка Drag'n'Drop\r\n\tconst pointerSensor = useSensor(PointerSensor, { activationConstraint: { distance: 10 } });\r\n\tconst keyboardSensor = useSensor(KeyboardSensor);\r\n\tconst sensors = useSensors(pointerSensor, keyboardSensor);\r\n\r\n\tconst handleDragEnd = useCallback(\r\n\t\t(event: DragEndEvent) => {\r\n\t\t\tsetActiveId(null);\r\n\t\t\tconst deltaY = event.delta.y;\r\n\t\t\tconst eventData = event.active.data.current?.event;\r\n\t\t\tconst dayData = event.over?.data.current?.day;\r\n\t\t\tconst minutes = pxToMinutes(deltaY);\r\n\t\t\tconst newStartDate = new Date(eventData.startDate.getTime() + minutes * 60 * 1000);\r\n\t\t\tnewStartDate.setDate(dayData.getDate());\r\n\t\t\tconst newEndDate = new Date(eventData.endDate.getTime() + minutes * 60 * 1000);\r\n\t\t\tnewEndDate.setDate(dayData.getDate());\r\n\t\t\tonEventDrop?.(eventData, { startDate: snapToTime(newStartDate), endDate: snapToTime(newEndDate) });\r\n\t\t},\r\n\t\t[onEventDrop, pxToMinutes, snapToTime]\r\n\t);\r\n\r\n\tconst modifier = useMemo(() => createModifier(gridSize), [gridSize]);\r\n\r\n\treturn (\r\n\t\t<DndContext onDragStart={handleDragStart} onDragEnd={handleDragEnd} sensors={sensors}>\r\n\t\t\t<div className={dayColumns()}>\r\n\t\t\t\t{dates.map((day, index) => (\r\n\t\t\t\t\t<DayColumn key={index} day={day} events={events} />\r\n\t\t\t\t))}\r\n\t\t\t</div>\r\n\t\t\t<DragOverlay dropAnimation={null} modifiers={[modifier]}>\r\n\t\t\t\t{activeId ? <ScheduledEvent event={events.find((e) => e.id === activeId) as IScheduledEvent} /> : null}\r\n\t\t\t</DragOverlay>\r\n\t\t</DndContext>\r\n\t);\r\n\r\n\tfunction handleDragStart(event: DragStartEvent) {\r\n\t\tsetActiveId(event.active.id);\r\n\t}\r\n};\r\n\r\nconst createModifier = (gridSize: number) => {\r\n\tconst modifier: Modifier = (args) => {\r\n\t\tconst { transform, draggingNodeRect, over, containerNodeRect } = args;\r\n\t\tif (!draggingNodeRect || !over?.rect || !containerNodeRect) return transform;\r\n\r\n\t\t// Перетаскиваемое событие выравнивается по левому краю колонки дня\r\n\t\tconst x = over.rect.left - draggingNodeRect.left;\r\n\r\n\t\t// Определяется изначальное смещение события от сетки\r\n\t\tconst topDelta = (containerNodeRect.top - draggingNodeRect.top) % gridSize;\r\n\t\t// Текущая позиция перетаскиваемого события подгоняется под сетку и сдвигается на изначальное смещение, чтобы событие попало в сетку\r\n\t\tconst y = Math.floor(transform.y / gridSize) * gridSize + topDelta;\r\n\r\n\t\treturn {\r\n\t\t\t...transform,\r\n\t\t\tx,\r\n\t\t\ty\r\n\t\t};\r\n\t};\r\n\r\n\treturn modifier;\r\n};\r\n","import { tv } from \"tailwind-variants\";\r\nimport { useScheduler } from \"../../context/SchedulerContext\";\r\n\r\nconst hourRows = tv({\r\n\tslots: {\r\n\t\twrapper: \"pointer-events-none absolute inset-0 flex h-full flex-col justify-between\",\r\n\t\thourRow: \"h-full border-t border-border\"\r\n\t}\r\n});\r\n\r\nexport const HourRows = () => {\r\n\tconst { hourHeight } = useScheduler();\r\n\tconst { wrapper, hourRow } = hourRows();\r\n\treturn (\r\n\t\t<div className={wrapper()} style={{ height: `${hourHeight * 24}px` }}>\r\n\t\t\t{Array.from({ length: 24 }).map((_, index) => (\r\n\t\t\t\t<div key={index} className={hourRow()} style={{ height: `${hourHeight}px` }} />\r\n\t\t\t))}\r\n\t\t</div>\r\n\t);\r\n};\r\n","import { useMemo } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { CurrentTimeMarker } from \"./CurrentTimeMarker\";\r\nimport { getFormattedTime } from \"@/lib/utils/date/date\";\r\nimport { useScheduler } from \"../../context/SchedulerContext\";\r\n\r\nconst timeRuler = tv({\r\n\tslots: {\r\n\t\twrapper: \"relative h-full\",\r\n\t\thourMark: \"h-full pl-2 pr-2\",\r\n\t\thourLabel: \"-translate-y-1/2 text-xs text-muted-foreground\"\r\n\t}\r\n});\r\n\r\ntype TimeRulerProps = {\r\n\tshowCurrentTime?: boolean;\r\n};\r\n\r\nexport const TimeRuler: React.FC<TimeRulerProps> = ({ showCurrentTime = false }) => {\r\n\tconst { hourHeight } = useScheduler();\r\n\tconst { wrapper, hourMark, hourLabel } = timeRuler();\r\n\r\n\tconst hours = useMemo(() => {\r\n\t\tconst now = new Date();\r\n\t\treturn Array.from({ length: 24 }, (_, i) => {\r\n\t\t\tnow.setHours(i);\r\n\t\t\tnow.setMinutes(0);\r\n\t\t\tnow.setSeconds(0);\r\n\t\t\tnow.setMilliseconds(0);\r\n\t\t\treturn getFormattedTime(now);\r\n\t\t});\r\n\t}, []);\r\n\treturn (\r\n\t\t<div className={wrapper()} style={{ height: `${hourHeight * 24}px` }}>\r\n\t\t\t{hours.map((hour, index) => (\r\n\t\t\t\t<div key={hour} className={hourMark()} style={{ height: `${hourHeight}px` }}>\r\n\t\t\t\t\t{index !== 0 && <div className={hourLabel()}>{hour}</div>}\r\n\t\t\t\t</div>\r\n\t\t\t))}\r\n\r\n\t\t\t{showCurrentTime && <CurrentTimeMarker showValue />}\r\n\t\t</div>\r\n\t);\r\n};\r\n","import { VariantsConfig } from \"@/lib/utils/variants\";\r\nimport { useMemo } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\n\r\nexport interface DayVariants {\r\n\tholyday?: boolean;\r\n}\r\n\r\nconst day = tv({\r\n\tslots: {\r\n\t\twrapper: \"flex w-full flex-col items-center\",\r\n\t\tdate: \"text-3xl font-bold leading-none text-secondary-foreground\",\r\n\t\tdayOfWeek: \"px-1 text-sm leading-none text-muted-foreground\",\r\n\t\tmonthName: \"px-1 text-sm leading-none text-muted-foreground\"\r\n\t},\r\n\tvariants: {\r\n\t\tholyday: {\r\n\t\t\ttrue: {\r\n\t\t\t\tdayOfWeek: \"text-muted-foreground\"\r\n\t\t\t}\r\n\t\t}\r\n\t} satisfies VariantsConfig<DayVariants>\r\n});\r\n\r\ntype DayProps = DayVariants & {\r\n\tdate: Date;\r\n};\r\n\r\nexport const Day: React.FC<DayProps> = ({ date, holyday = false }) => {\r\n\tconst dayOfWeek = useMemo(() => date.toLocaleDateString(undefined, { weekday: \"short\" }), [date]);\r\n\tconst monthName = useMemo(() => date.toLocaleDateString(undefined, { month: \"long\" }), [date]);\r\n\r\n\tconst { wrapper, date: dateStyle, dayOfWeek: dayOfWeekStyle, monthName: monthNameStyle } = day({ holyday });\r\n\r\n\treturn (\r\n\t\t<div className={wrapper()}>\r\n\t\t\t<div className={dayOfWeekStyle()}>{dayOfWeek}</div>\r\n\t\t\t<div className={dateStyle()}>{date.getDate()}</div>\r\n\t\t\t<div className={monthNameStyle()}>{monthName}</div>\r\n\t\t</div>\r\n\t);\r\n};\r\n","import { tv } from \"tailwind-variants\";\r\nimport { useScheduler } from \"../../context/SchedulerContext\";\r\nimport { Day } from \"../day/Day\";\r\n\r\nconst weekDays = tv({ base: \"flex w-full justify-between\" });\r\n\r\nexport const WeekDays: React.FC = () => {\r\n\tconst { dates } = useScheduler();\r\n\treturn (\r\n\t\t<div className={weekDays()}>\r\n\t\t\t{dates.map((day, index) => (\r\n\t\t\t\t<Day key={index} date={day} />\r\n\t\t\t))}\r\n\t\t</div>\r\n\t);\r\n};\r\n","import { useMemo } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { DayColumns } from \"./components/day-columns/DayColumns\";\r\nimport { HourRows } from \"./components/hour-rows/HourRows\";\r\nimport { TimeRuler } from \"./components/time-ruler/TimeRuler\";\r\nimport { WeekDays } from \"./components/week-days/WeekDays\";\r\nimport { SchedulerProvider } from \"./context/SchedulerContext\";\r\nimport { IScheduledEvent } from \"./types\";\r\nimport { TooltipProvider } from \"../tooltip\";\r\n\r\nconst schedulerStyles = tv({\r\n\tbase: \"flex h-full flex-col\",\r\n\tslots: {\r\n\t\tcontent: \"relative flex flex-1 overflow-auto\",\r\n\t\tdays: \"relative flex-1\"\r\n\t}\r\n});\r\n\r\ninterface EventComponentProps {\r\n\tevent: IScheduledEvent;\r\n\tbaseEventComponent: React.ReactNode;\r\n}\r\n\r\nexport interface EventDateChange {\r\n\tstartDate: Date;\r\n\tendDate: Date;\r\n}\r\n\r\nexport interface SchedulerBaseSettings {\r\n\t/**\r\n\t * Высота строки часа, в px\r\n\t * @default 40\r\n\t */\r\n\thourHeight?: number;\r\n\t/**\r\n\t * Интервал округления времени в минутах\r\n\t * @default 15\r\n\t */\r\n\ttimeSnap?: number;\r\n\t/**\r\n\t * Событие, которое срабатывает при клике на день.\r\n\t * Время задается в зависимости от позиции клика.\r\n\t */\r\n\tonDayClick?: (data: { date: Date }) => void;\r\n\t/**\r\n\t * Событие, которое срабатывает при клике на событие\r\n\t */\r\n\tonEventClick?: (event: IScheduledEvent) => void;\r\n\t/**\r\n\t * Событие, которое срабатывает при перетаскивании события\r\n\t */\r\n\tonEventDrop?: (event: IScheduledEvent, change: EventDateChange) => void;\r\n\t/**\r\n\t * Событие, которое срабатывает при изменении времени события с помощью ресайзера\r\n\t */\r\n\tonEventResize?: (event: IScheduledEvent, change: EventDateChange) => void;\r\n\t/**\r\n\t * Компонент, который будет использоваться для отображения события\r\n\t */\r\n\teventComponent?: React.ComponentType<EventComponentProps>;\r\n\t/**\r\n\t * Функция, определяющая, можно ли перетаскивать событие\r\n\t */\r\n\tisDraggable?: (event: IScheduledEvent) => boolean;\r\n\t/**\r\n\t * Функция, определяющая, можно ли изменять размер события\r\n\t */\r\n\tisResizable?: (event: IScheduledEvent) => boolean;\r\n}\r\n\r\nexport interface SchedulerProps extends SchedulerBaseSettings {\r\n\t/**\r\n\t * Список отображаемых событий\r\n\t */\r\n\tevents: IScheduledEvent[];\r\n\t/**\r\n\t * Дата с которой начинается отображение\r\n\t */\r\n\tstartDate?: Date;\r\n\t/**\r\n\t * Дата с которой заканчивается отображение\r\n\t */\r\n\tendDate?: Date;\r\n\t/**\r\n\t * Показывать дни в заголовке. По умолчанию оторажаются.\r\n\t * @default true\r\n\t */\r\n\tshowDates?: boolean;\r\n}\r\n\r\nexport const Scheduler: React.FC<SchedulerProps> = ({\r\n\tevents,\r\n\tstartDate,\r\n\tendDate,\r\n\ttimeSnap = 15,\r\n\tonDayClick,\r\n\tonEventClick,\r\n\tonEventDrop,\r\n\tonEventResize,\r\n\teventComponent,\r\n\tshowDates = true,\r\n\thourHeight = 40,\r\n\tisDraggable,\r\n\tisResizable\r\n}) => {\r\n\tconst dates = useMemo(() => {\r\n\t\tconst date = startDate ? new Date(startDate) : new Date();\r\n\t\tdate.setHours(0, 0, 0, 0);\r\n\r\n\t\tconst days: Date[] = [];\r\n\r\n\t\tif (!endDate) {\r\n\t\t\tdays.push(date);\r\n\t\t} else {\r\n\t\t\tconst currentDate = new Date(date);\r\n\t\t\twhile (currentDate <= endDate) {\r\n\t\t\t\tdays.push(new Date(currentDate));\r\n\t\t\t\tcurrentDate.setDate(currentDate.getDate() + 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn days;\r\n\t}, [startDate, endDate]);\r\n\r\n\tconst { content, days, base } = schedulerStyles();\r\n\r\n\tconst weekDays = showDates ? (\r\n\t\t<div>\r\n\t\t\t<WeekDays />\r\n\t\t</div>\r\n\t) : null;\r\n\r\n\treturn (\r\n\t\t<SchedulerProvider\r\n\t\t\tvalue={{\r\n\t\t\t\tdates,\r\n\t\t\t\ttimeSnap,\r\n\t\t\t\tonDayClick,\r\n\t\t\t\tonEventClick,\r\n\t\t\t\tonEventDrop,\r\n\t\t\t\tonEventResize,\r\n\t\t\t\thourHeight,\r\n\t\t\t\teventComponent,\r\n\t\t\t\tisDraggable,\r\n\t\t\t\tisResizable\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t<TooltipProvider>\r\n\t\t\t\t<div className={base()}>\r\n\t\t\t\t\t{weekDays}\r\n\t\t\t\t\t<div className={content()}>\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t<TimeRuler showCurrentTime />\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div className={days()}>\r\n\t\t\t\t\t\t\t<HourRows />\r\n\t\t\t\t\t\t\t<DayColumns events={events} />\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</TooltipProvider>\r\n\t\t</SchedulerProvider>\r\n\t);\r\n};\r\n"],"names":["canUseDOM","isWindow","element","elementString","isNode","node","getWindow","target","_target$ownerDocument","_target$ownerDocument2","isDocument","Document","isHTMLElement","isSVGElement","getOwnerDocument","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","useEvent","handler","handlerRef","useRef","useCallback","_len","args","_key","useInterval","intervalRef","set","listener","duration","clear","useLatestValue","value","dependencies","valueRef","useLazyMemo","callback","useMemo","newValue","useNodeRef","onChange","onChangeHandler","setNodeRef","usePrevious","ref","ids","useUniqueId","prefix","id","createAdjustmentFn","modifier","object","adjustments","accumulator","adjustment","entries","key","valueAdjustment","add","subtract","hasViewportRelativeCoordinates","event","isKeyboardEvent","KeyboardEvent","isTouchEvent","TouchEvent","getEventCoordinates","x","y","CSS","transform","scaleX","scaleY","_ref","property","easing","SELECTOR","findFirstFocusableNode","hiddenStyles","HiddenText","React","LiveRegion","announcement","ariaLiveType","visuallyHidden","useAnnouncement","setAnnouncement","useState","DndMonitorContext","createContext","useDndMonitor","registerListener","useContext","useDndMonitorProvider","listeners","type","_listener$type","defaultScreenReaderInstructions","defaultAnnouncements","active","_ref2","over","_ref3","_ref4","Accessibility","announcements","container","hiddenTextDescribedById","screenReaderInstructions","announce","liveRegionId","mounted","setMounted","_ref5","_ref6","markup","createPortal","Action","noop","useSensor","sensor","options","useSensors","sensors","defaultCoordinates","getRelativeTransformOrigin","rect","eventCoordinates","transformOrigin","sortCollisionsDesc","a","b","getFirstCollision","collisions","firstCollision","getIntersectionRatio","entry","top","left","right","bottom","width","height","targetArea","entryArea","intersectionArea","intersectionRatio","rectIntersection","collisionRect","droppableRects","droppableContainers","droppableContainer","adjustScale","rect1","rect2","getRectDelta","createRectAdjustmentFn","acc","getAdjustedRect","parseTransform","transformArray","inverseTransform","parsedTransform","translateX","translateY","w","h","defaultOptions","getClientRect","getTransformAgnosticClientRect","getWindowClientRect","isFixed","computedStyle","isScrollable","overflowRegex","getScrollableAncestors","limit","scrollParents","findScrollableAncestors","getFirstScrollableAncestor","firstScrollableAncestor","getScrollableElement","getScrollXCoordinate","getScrollYCoordinate","getScrollCoordinates","Direction","isDocumentScrollingElement","getScrollPosition","scrollingContainer","minScroll","dimensions","maxScroll","isTop","isLeft","isBottom","isRight","defaultThreshold","getScrollDirectionAndSpeed","scrollContainer","scrollContainerRect","acceleration","thresholdPercentage","direction","speed","threshold","getScrollElementRect","innerWidth","innerHeight","getScrollOffsets","scrollableAncestors","getScrollXOffset","getScrollYOffset","scrollIntoViewIfNeeded","measure","properties","Rect","scrollOffsets","axis","keys","getScrollOffset","currentOffsets","scrollOffsetsDeltla","Listeners","_this$target","eventName","_this$target2","getEventListenerTarget","EventTarget","hasExceededDistance","delta","measurement","dx","dy","EventName","preventDefault","stopPropagation","KeyboardCode","defaultKeyboardCodes","defaultKeyboardCoordinateGetter","currentCoordinates","KeyboardSensor","props","activeNode","onStart","context","keyboardCodes","coordinateGetter","scrollBehavior","code","newCoordinates","coordinatesDelta","scrollDelta","scrollElementRect","clampedCoordinates","canScrollX","canScrollY","newScrollCoordinates","canScrollToNewCoordinates","coordinates","onMove","onEnd","onCancel","onActivation","activator","isDistanceConstraint","constraint","isDelayConstraint","AbstractPointerSensor","events","listenerTarget","_getEventCoordinates","activationConstraint","bypassActivationConstraint","offset","onPending","initialCoordinates","_getEventCoordinates2","activated","onAbort","_this$document$getSel","PointerSensor","events$1","MouseButton","MouseSensor","events$2","TouchSensor","touches","AutoScrollActivator","TraversalOrder","useAutoScroller","canScroll","draggingRect","enabled","interval","order","pointerCoordinates","scrollableAncestorRects","scrollIntent","useScrollIntent","setAutoScrollInterval","clearAutoScrollInterval","scrollSpeed","scrollDirection","scrollContainerRef","autoScroll","scrollLeft","scrollTop","sortedScrollableAncestors","index","defaultScrollIntent","disabled","previousDelta","previousIntent","useCachedNode","draggableNodes","draggableNode","cachedNode","useCombineActivators","getSyntheticHandler","Sensor","sensorActivators","MeasuringStrategy","MeasuringFrequency","defaultValue","useDroppableMeasuring","containers","dragging","config","queue","setQueue","frequency","strategy","containersRef","isDisabled","disabledRef","measureDroppableContainers","timeoutId","previousValue","map","useInitialValue","computeFn","useInitialRect","useMutationObserver","handleMutations","mutationObserver","MutationObserver","useResizeObserver","handleResize","resizeObserver","ResizeObserver","defaultMeasure","useRect","fallbackRect","setRect","measureRect","currentRect","newRect","records","record","useRectDelta","initialRect","defaultValue$1","useScrollableAncestors","previousNode","ancestors","useScrollOffsets","elements","scrollCoordinates","setScrollCoordinates","prevElements","handleScroll","scrollingElement","previousElements","cleanup","scrollableElement","useScrollOffsetsDelta","initialScrollOffsets","hasScrollOffsets","useSensorSetup","teardownFns","teardown","useSyntheticListeners","useWindowRect","defaultValue$2","useRects","firstElement","windowRect","rects","setRects","measureRects","getMeasurableNode","firstChild","useDragOverlayMeasuring","handleNodeChange","nodeRef","setRef","defaultSensors","defaultData","defaultMeasuringConfiguration","DroppableContainersMap","_super$get","_this$get$node$curren","_this$get","defaultPublicContext","defaultInternalContext","InternalContext","PublicContext","getInitialState","reducer","state","action","RestoreFocus","activatorEvent","previousActivatorEvent","previousActiveId","activatorNode","focusableNode","applyModifiers","modifiers","useMeasuringConfiguration","useLayoutShiftScrollCompensation","initialized","rectDelta","ActiveDraggableContext","Status","DndContext","memo","_sensorContext$curren","_dragOverlay$nodeRef$","_dragOverlay$rect","_over$rect","accessibility","children","collisionDetection","measuring","store","useReducer","dispatch","dispatchMonitorEvent","registerMonitorListener","status","setStatus","isInitialized","activeId","translate","activeRects","_node$data","activeRef","activeSensor","setActiveSensor","setActivatorEvent","latestProps","draggableDescribedById","enabledDroppableContainers","measuringConfiguration","measuringScheduled","activationCoordinates","autoScrollOptions","getAutoScrollerOptions","initialActiveNodeRect","activeNodeRect","containerNodeRect","sensorContext","overNode","dragOverlay","draggingNode","draggingNodeRect","usesDragOverlay","nodeRectDelta","modifiedTranslate","scrollAdjustment","activeNodeScrollDelta","scrollAdjustedTranslate","overId","setOver","appliedTranslate","activeSensorRef","instantiateSensor","sensorInstance","onDragAbort","onDragPending","onDragStart","unstable_batchedUpdates","createHandler","cancelDrop","bindActivatorToSensorInstantiator","nativeEvent","activeDraggableNode","activationContext","activators","onDragMove","onDragOver","overContainer","publicContext","internalContext","activeSensorDisablesAutoscroll","autoScrollGloballyDisabled","NullContext","defaultRole","ID_PREFIX","useDraggable","data","attributes","ariaDescribedById","role","roleDescription","tabIndex","isDragging","setActivatorNodeRef","dataRef","memoizedAttributes","useDndContext","ID_PREFIX$1","defaultResizeObserverConfig","useDroppable","resizeObserverConfig","previous","resizeObserverConnected","callbackId","resizeObserverDisabled","updateMeasurementsFor","resizeObserverTimeout","newElement","previousElement","AnimationManager","animation","clonedChildren","setClonedChildren","setElement","previousChildren","cloneElement","defaultTransform","NullifiedContextProvider","baseStyles","defaultTransition","PositionedOverlay","forwardRef","as","className","style","transition","scaleAdjustedTransform","styles","defaultDropAnimationSideEffects","originalStyles","defaultKeyframeResolver","initial","final","defaultDropAnimationConfiguration","useDropAnimation","activeDraggable","measurableNode","createDefaultDropAnimation","sideEffects","keyframes","rest","scale","finalTransform","animationKeyframes","firstKeyframe","lastKeyframe","resolve","useKey","DragOverlay","dropAnimationConfig","wrapperElement","zIndex","modifiedTransform","dropAnimation","SchedulerContext","SchedulerProvider","jsx","useScheduler","hourHeight","timeSnap","px","time","minutes","min","roundDateTime","date","snap","round","newDate","roundedMinutes","DAY_COLUMN_DATA_ATTRIBUTE","getDateFromClick","day","dayColumnDiv","getDateFromY","positionY","targetRect","percentageOfDay","percentageToDate","minutesFromMidnight","hours","selectedDate","getCurrentTimePercentage","now","groupCrossingEvents","groups","group","e","isEventCrossing","event1","event2","getEventPositions","positions","groupedEvents","getEventTop","getEventLengthInMin","oneMinInPx","getEventHeight","getMinutesFromStartOfDay","__assign","s","i","n","p","rowSizeBase","colSizeBase","edgeBase","Resizer","onResizeStart","replaceStyles","onMouseDown","onTouchStart","_jsx","__extends","extendStatics","d","__","DEFAULT_SIZE","clamp","max","size","gridGap","v","hasDirection","dir","isMouseEvent","findClosestSnap","snapArray","snapGap","closestGapIndex","prev","curr","gap","getStringSize","getPixelSize","parentSize","ratio","calculateNewMax","maxWidth","maxHeight","minWidth","minHeight","normalizeToPair","val","definedProps","baseClassName","Resizable","_super","_a","_b","_c","_d","_this","parent","base","orgWidth","orgHeight","orgPosition","getSize","percent","wrapChanged","wrap","newSize","kind","propsSize","boundsByDirection","widthByDirection","heightByDirection","boundWidth","boundHeight","parent_1","clientX","clientY","resizeRatioX","resizeRatioY","original","lockAspectRatio","lockAspectRatioExtraHeight","lockAspectRatioExtraWidth","newWidth","newHeight","extraHeight","extraWidth","computedMinWidth","computedMaxWidth","computedMinHeight","computedMaxHeight","extraMinWidth","extraMaxWidth","extraMinHeight","extraMaxHeight","lockedMinWidth","lockedMaxWidth","lockedMinHeight","lockedMaxHeight","adjustedScale","parent_2","parentRect","top_1","startResize","flexBasis","parent_3","boundaryMax","newGridWidth","newGridHeight","vw","vh","newState","widthChanged","heightChanged","flexBaseChanged","changed","flushSync","isResizing","enable","handleStyles","handleClasses","handleWrapperStyle","handleWrapperClass","handleComponent","resizers","extendsProps","Wrapper","_jsxs","c","PureComponent","ScheduledEventResizeHandler","onPointerDown","eventStyles","tv","ScheduledEvent","onEventClick","eventComponent","isDraggable","isResizable","onEventResize","onEventDrop","gridSize","pxToMinutes","snapToTime","canDrag","canResize","onEventClickHandler","onResize","_","elementRef","onStopResize","newEndDate","newStartDate","eventContent","wrapper","title","ResizeEnable","getFormattedTime","currentTimeMarker","CurrentTimeMarker","showValue","position","setPosition","setValue","markerRef","currentTime","currentTimeLabel","dayColumn","DayColumn","onDayClick","filteredEvents","dayStart","dayEnd","onDayClickHandler","eventsPositions","jsxs","dayColumns","DayColumns","dates","setActiveId","pointerSensor","keyboardSensor","handleDragEnd","deltaY","eventData","dayData","createModifier","handleDragStart","topDelta","hourRows","HourRows","hourRow","timeRuler","TimeRuler","showCurrentTime","hourMark","hourLabel","hour","Day","holyday","dayOfWeek","monthName","dateStyle","dayOfWeekStyle","monthNameStyle","weekDays","WeekDays","schedulerStyles","Scheduler","startDate","endDate","showDates","days","currentDate","content","TooltipProvider"],"mappings":"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","x_google_ignoreList":[0,1,2,6,7]}