@uva-glass/component-library 3.56.0 → 3.57.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/dist/{Accordion-DaCqVof1.js → Accordion-DQNoRsg_.js} +2 -2
  2. package/dist/{Accordion-DaCqVof1.js.map → Accordion-DQNoRsg_.js.map} +1 -1
  3. package/dist/{AccordionCard-CD5H9gR1.js → AccordionCard-C4k8EI39.js} +2 -2
  4. package/dist/{AccordionCard-CD5H9gR1.js.map → AccordionCard-C4k8EI39.js.map} +1 -1
  5. package/dist/{ActionList-C0hD9noC.js → ActionList-D2GC2qPX.js} +2 -2
  6. package/dist/{ActionList-C0hD9noC.js.map → ActionList-D2GC2qPX.js.map} +1 -1
  7. package/dist/{AddCatalogueLinkForm-DNv2tEdF.js → AddCatalogueLinkForm-Di0xm7Ep.js} +5 -5
  8. package/dist/{AddCatalogueLinkForm-DNv2tEdF.js.map → AddCatalogueLinkForm-Di0xm7Ep.js.map} +1 -1
  9. package/dist/{AppStatusBar-BK0yaC4G.js → AppStatusBar-DW-w7Nzp.js} +2 -2
  10. package/dist/{AppStatusBar-BK0yaC4G.js.map → AppStatusBar-DW-w7Nzp.js.map} +1 -1
  11. package/dist/{ButtonGroup-ZqGGZ1rz.js → ButtonGroup-D2z5UWTR.js} +2 -2
  12. package/dist/{ButtonGroup-ZqGGZ1rz.js.map → ButtonGroup-D2z5UWTR.js.map} +1 -1
  13. package/dist/{Card-BH1ySOiP.js → Card-DENYj3eR.js} +3 -3
  14. package/dist/{Card-BH1ySOiP.js.map → Card-DENYj3eR.js.map} +1 -1
  15. package/dist/{CheckboxButtonBar-DpNnwLzI.js → CheckboxButtonBar-OrJSqUTN.js} +5 -5
  16. package/dist/{CheckboxButtonBar-DpNnwLzI.js.map → CheckboxButtonBar-OrJSqUTN.js.map} +1 -1
  17. package/dist/{Column-BwCVSZrG.js → Column-jJBZgP8m.js} +2 -2
  18. package/dist/{Column-BwCVSZrG.js.map → Column-jJBZgP8m.js.map} +1 -1
  19. package/dist/{Container-DK25h_-f.js → Container-DOcrVe7u.js} +2 -2
  20. package/dist/{Container-DK25h_-f.js.map → Container-DOcrVe7u.js.map} +1 -1
  21. package/dist/{ControlsButton-9uR_zW_F.js → ControlsButton-Byx4XQtB.js} +2 -2
  22. package/dist/{ControlsButton-9uR_zW_F.js.map → ControlsButton-Byx4XQtB.js.map} +1 -1
  23. package/dist/{CopyableText-hSqhyUWx.js → CopyableText-BKsM-TuS.js} +2 -2
  24. package/dist/{CopyableText-hSqhyUWx.js.map → CopyableText-BKsM-TuS.js.map} +1 -1
  25. package/dist/{DataTable-C46IkAmF.js → DataTable-Cgn_RKTA.js} +2 -2
  26. package/dist/{DataTable-C46IkAmF.js.map → DataTable-Cgn_RKTA.js.map} +1 -1
  27. package/dist/{Drawer-BbVJqFQI.js → Drawer-fUw0LEuj.js} +3 -3
  28. package/dist/{Drawer-BbVJqFQI.js.map → Drawer-fUw0LEuj.js.map} +1 -1
  29. package/dist/{EmptyStateDataDisplay-IT2P3ius.js → EmptyStateDataDisplay-FBDAGO88.js} +2 -2
  30. package/dist/{EmptyStateDataDisplay-IT2P3ius.js.map → EmptyStateDataDisplay-FBDAGO88.js.map} +1 -1
  31. package/dist/{ExpandableInfoPanel-DMfcJFP3.js → ExpandableInfoPanel-BmbgbAjf.js} +2 -2
  32. package/dist/{ExpandableInfoPanel-DMfcJFP3.js.map → ExpandableInfoPanel-BmbgbAjf.js.map} +1 -1
  33. package/dist/{FeedbackBar-DRbJVniP.js → FeedbackBar-DEDpoNy7.js} +3 -3
  34. package/dist/{FeedbackBar-DRbJVniP.js.map → FeedbackBar-DEDpoNy7.js.map} +1 -1
  35. package/dist/{FeedbackBox-CaSxB4uc.js → FeedbackBox-BpOf_dxg.js} +2 -2
  36. package/dist/{FeedbackBox-CaSxB4uc.js.map → FeedbackBox-BpOf_dxg.js.map} +1 -1
  37. package/dist/{Fieldset-D01_rj_p.js → Fieldset-CgnLyAyS.js} +2 -2
  38. package/dist/{Fieldset-D01_rj_p.js.map → Fieldset-CgnLyAyS.js.map} +1 -1
  39. package/dist/{FormField-CcV84TfI.js → FormField-ByjTkKKq.js} +2 -2
  40. package/dist/{FormField-CcV84TfI.js.map → FormField-ByjTkKKq.js.map} +1 -1
  41. package/dist/{IconButton-CSNMVEG1.js → IconButton-BZVNomru.js} +2 -2
  42. package/dist/{IconButton-CSNMVEG1.js.map → IconButton-BZVNomru.js.map} +1 -1
  43. package/dist/{InfoMessage-COywXu4O.js → InfoMessage-CCEg222m.js} +2 -2
  44. package/dist/{InfoMessage-COywXu4O.js.map → InfoMessage-CCEg222m.js.map} +1 -1
  45. package/dist/{Input-BzKvzbzP.js → Input-CF3dxqTC.js} +2 -2
  46. package/dist/{Input-BzKvzbzP.js.map → Input-CF3dxqTC.js.map} +1 -1
  47. package/dist/{InputField-T01uazlI.js → InputField-asFsxHvx.js} +2 -2
  48. package/dist/{InputField-T01uazlI.js.map → InputField-asFsxHvx.js.map} +1 -1
  49. package/dist/{Label-D0ACrYG3.js → Label-52ny6d06.js} +2 -2
  50. package/dist/{Label-D0ACrYG3.js.map → Label-52ny6d06.js.map} +1 -1
  51. package/dist/{Lexical.prod-8zZnpGo4.js → Lexical.prod-nAj5fF96.js} +2200 -1708
  52. package/dist/Lexical.prod-nAj5fF96.js.map +1 -0
  53. package/dist/LexicalClipboard.prod-B9sWgdS2.js +348 -0
  54. package/dist/LexicalClipboard.prod-B9sWgdS2.js.map +1 -0
  55. package/dist/{LexicalComposerContext.prod-y_BRxu3Z.js → LexicalComposerContext.prod-DumMmRBt.js} +2 -2
  56. package/dist/LexicalComposerContext.prod-DumMmRBt.js.map +1 -0
  57. package/dist/LexicalHtml.prod-RCMsF0qt.js +2139 -0
  58. package/dist/LexicalHtml.prod-RCMsF0qt.js.map +1 -0
  59. package/dist/{LexicalLink.prod-BVUv9-sZ.js → LexicalLink.prod-BcBNTFEb.js} +212 -195
  60. package/dist/LexicalLink.prod-BcBNTFEb.js.map +1 -0
  61. package/dist/LexicalList.prod-THQt9B32.js +890 -0
  62. package/dist/LexicalList.prod-THQt9B32.js.map +1 -0
  63. package/dist/{LexicalTable.prod-D_9Dr3kL.js → LexicalTable.prod-BpHQYpBM.js} +691 -608
  64. package/dist/LexicalTable.prod-BpHQYpBM.js.map +1 -0
  65. package/dist/LexicalUtils.prod-7S6iuu9A.js +347 -0
  66. package/dist/LexicalUtils.prod-7S6iuu9A.js.map +1 -0
  67. package/dist/{LinkContextMenu-CTu2nP2j.js → LinkContextMenu-Byu3AEqp.js} +2 -2
  68. package/dist/{LinkContextMenu-CTu2nP2j.js.map → LinkContextMenu-Byu3AEqp.js.map} +1 -1
  69. package/dist/{MenuLink-La_3ANEL.js → MenuLink-sK2_W2zs.js} +2 -2
  70. package/dist/{MenuLink-La_3ANEL.js.map → MenuLink-sK2_W2zs.js.map} +1 -1
  71. package/dist/{ModalDialog-J7xcPcnS.js → ModalDialog-4V70sxK_.js} +3 -3
  72. package/dist/{ModalDialog-J7xcPcnS.js.map → ModalDialog-4V70sxK_.js.map} +1 -1
  73. package/dist/{MultiSelectBox-BmBxa6PH.js → MultiSelectBox-D34qAgzc.js} +2 -2
  74. package/dist/{MultiSelectBox-BmBxa6PH.js.map → MultiSelectBox-D34qAgzc.js.map} +1 -1
  75. package/dist/{MultiSelectItem-6d8kQgFs.js → MultiSelectItem-hx3Y4Lmk.js} +2 -2
  76. package/dist/{MultiSelectItem-6d8kQgFs.js.map → MultiSelectItem-hx3Y4Lmk.js.map} +1 -1
  77. package/dist/{Notification-BAqCenxt.js → Notification-BhqWENfu.js} +2 -2
  78. package/dist/{Notification-BAqCenxt.js.map → Notification-BhqWENfu.js.map} +1 -1
  79. package/dist/{OverlayCloseButton-j-7mC4Zz.js → OverlayCloseButton-Dt6Yec8G.js} +2 -2
  80. package/dist/{OverlayCloseButton-j-7mC4Zz.js.map → OverlayCloseButton-Dt6Yec8G.js.map} +1 -1
  81. package/dist/{OverlayStepBar-Cj_-0waE.js → OverlayStepBar-BiC06Itd.js} +2 -2
  82. package/dist/{OverlayStepBar-Cj_-0waE.js.map → OverlayStepBar-BiC06Itd.js.map} +1 -1
  83. package/dist/{PageOverlay-DqwdG5ve.js → PageOverlay-BR9ypiar.js} +3 -3
  84. package/dist/{PageOverlay-DqwdG5ve.js.map → PageOverlay-BR9ypiar.js.map} +1 -1
  85. package/dist/{PasteHandlerPlugin-Bc6n-G35.js → PasteHandlerPlugin-DyTXcFsj.js} +6 -6
  86. package/dist/{PasteHandlerPlugin-Bc6n-G35.js.map → PasteHandlerPlugin-DyTXcFsj.js.map} +1 -1
  87. package/dist/{Periods-C5cxLlWt.js → Periods-B4ms3N24.js} +2 -2
  88. package/dist/{Periods-C5cxLlWt.js.map → Periods-B4ms3N24.js.map} +1 -1
  89. package/dist/{ProgrammeCard-CAAOSWKa.js → ProgrammeCard-DdCFNx0d.js} +2 -2
  90. package/dist/{ProgrammeCard-CAAOSWKa.js.map → ProgrammeCard-DdCFNx0d.js.map} +1 -1
  91. package/dist/{RadioButton-CKALsbBb.js → RadioButton-DmBpXwIS.js} +2 -2
  92. package/dist/{RadioButton-CKALsbBb.js.map → RadioButton-DmBpXwIS.js.map} +1 -1
  93. package/dist/{RadioGroup-DhnnBRJu.js → RadioGroup-DlQjMmpa.js} +3 -3
  94. package/dist/{RadioGroup-DhnnBRJu.js.map → RadioGroup-DlQjMmpa.js.map} +1 -1
  95. package/dist/{Repeater-Bnoqqz0X.js → Repeater-BAEfOMZI.js} +2 -2
  96. package/dist/{Repeater-Bnoqqz0X.js.map → Repeater-BAEfOMZI.js.map} +1 -1
  97. package/dist/{SectionNotification-BT0Z2edJ.js → SectionNotification-CN-NdGL8.js} +2 -2
  98. package/dist/{SectionNotification-BT0Z2edJ.js.map → SectionNotification-CN-NdGL8.js.map} +1 -1
  99. package/dist/{Slider-dCmT0VM2.js → Slider-Czd2xAGf.js} +2 -2
  100. package/dist/{Slider-dCmT0VM2.js.map → Slider-Czd2xAGf.js.map} +1 -1
  101. package/dist/{SortableProvider-DV6gWmq_.js → SortableProvider-D-6Ttz0h.js} +2 -2
  102. package/dist/{SortableProvider-DV6gWmq_.js.map → SortableProvider-D-6Ttz0h.js.map} +1 -1
  103. package/dist/{StatusBage-CfEIuIPa.js → StatusBage-hJmNPqtk.js} +2 -2
  104. package/dist/{StatusBage-CfEIuIPa.js.map → StatusBage-hJmNPqtk.js.map} +1 -1
  105. package/dist/{StatusPill-CbJV4t-V.js → StatusPill-vdqU92pW.js} +2 -2
  106. package/dist/{StatusPill-CbJV4t-V.js.map → StatusPill-vdqU92pW.js.map} +1 -1
  107. package/dist/{TableCellContextMenu-9V8mnPmU.js → TableCellContextMenu--4IdoKAU.js} +3 -3
  108. package/dist/{TableCellContextMenu-9V8mnPmU.js.map → TableCellContextMenu--4IdoKAU.js.map} +1 -1
  109. package/dist/TableCellResizerPlugin-Dn8Ks2Lm.js +208 -0
  110. package/dist/TableCellResizerPlugin-Dn8Ks2Lm.js.map +1 -0
  111. package/dist/{TextArea-GR2ZWwLh.js → TextArea-D_VoyGIO.js} +2 -2
  112. package/dist/{TextArea-GR2ZWwLh.js.map → TextArea-D_VoyGIO.js.map} +1 -1
  113. package/dist/{ToggleSwitch-b54K58vY.js → ToggleSwitch-ev4Jh4y-.js} +2 -2
  114. package/dist/{ToggleSwitch-b54K58vY.js.map → ToggleSwitch-ev4Jh4y-.js.map} +1 -1
  115. package/dist/{VarIndicator-DoMWwSUm.js → VarIndicator-D0cnlcIf.js} +2 -2
  116. package/dist/{VarIndicator-DoMWwSUm.js.map → VarIndicator-D0cnlcIf.js.map} +1 -1
  117. package/dist/{chunk-FON5IJBZ-BBb6rYhU.js → chunk-5WKL7XVT-3IraU-Ja.js} +19 -24
  118. package/dist/chunk-5WKL7XVT-3IraU-Ja.js.map +1 -0
  119. package/dist/{client-DJaPTT6C.js → client-BcEWjSJP.js} +2 -2
  120. package/dist/client-BcEWjSJP.js.map +1 -0
  121. package/dist/{clsx-BWCAbrjV.js → clsx-C67XSbzZ.js} +2 -2
  122. package/dist/clsx-C67XSbzZ.js.map +1 -0
  123. package/dist/components/Accordion/Accordion.js +1 -1
  124. package/dist/components/Accordion/Accordion.stories.js +2 -2
  125. package/dist/components/Accordion/Accordion.test.js +4 -4
  126. package/dist/components/Accordion/index.js +1 -1
  127. package/dist/components/AccordionCard/AccordionCard.js +1 -1
  128. package/dist/components/AccordionCard/AccordionCard.stories.js +2 -2
  129. package/dist/components/AccordionCard/AccordionCard.test.js +4 -4
  130. package/dist/components/AccordionCard/index.js +1 -1
  131. package/dist/components/ActionList/ActionList.js +1 -1
  132. package/dist/components/ActionList/ActionList.stories.js +1 -1
  133. package/dist/components/ActionList/ActionList.test.js +4 -4
  134. package/dist/components/ActionList/index.js +1 -1
  135. package/dist/components/AppStatusBar/AppStatusBar.js +1 -1
  136. package/dist/components/AppStatusBar/AppStatusBar.stories.js +1 -1
  137. package/dist/components/AppStatusBar/AppStatusBar.test.js +3 -3
  138. package/dist/components/AppStatusBar/index.js +1 -1
  139. package/dist/components/Attention/Attention.test.js +2 -2
  140. package/dist/components/Backdrop/Backdrop.stories.js +1 -1
  141. package/dist/components/Backdrop/Backdrop.test.js +2 -2
  142. package/dist/components/ButtonGroup/ButtonGroup.js +1 -1
  143. package/dist/components/ButtonGroup/ButtonGroup.stories.js +2 -2
  144. package/dist/components/ButtonGroup/index.js +1 -1
  145. package/dist/components/Buttons/Button.js +1 -1
  146. package/dist/components/Buttons/Button.stories.js +1 -1
  147. package/dist/components/Buttons/Button.test.js +2 -2
  148. package/dist/components/Buttons/LinkButton.js +1 -1
  149. package/dist/components/Buttons/LinkButton.stories.js +1 -1
  150. package/dist/components/Buttons/LinkButton.test.js +2 -2
  151. package/dist/components/Buttons/MenuButton.js +1 -1
  152. package/dist/components/Buttons/MenuButton.stories.js +1 -1
  153. package/dist/components/Buttons/MenuButton.test.js +2 -2
  154. package/dist/components/Card/Card.js +1 -1
  155. package/dist/components/Card/Card.stories.js +1 -1
  156. package/dist/components/Card/Card.test.js +3 -3
  157. package/dist/components/Card/index.js +1 -1
  158. package/dist/components/Checkbox/Checkbox.stories.js +3 -3
  159. package/dist/components/Checkbox/Checkbox.test.js +3 -3
  160. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.js +1 -1
  161. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js +3 -3
  162. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js +3 -3
  163. package/dist/components/CheckboxButtonBar/index.js +1 -1
  164. package/dist/components/CheckboxTree/CheckboxTree.js +1 -1
  165. package/dist/components/CheckboxTree/CheckboxTree.stories.js +3 -3
  166. package/dist/components/CheckboxTree/index.js +1 -1
  167. package/dist/components/Chip/Chip.stories.js +1 -1
  168. package/dist/components/ControlsButton/ControlsButton.js +1 -1
  169. package/dist/components/ControlsButton/ControlsButton.stories.js +3 -3
  170. package/dist/components/ControlsButton/index.js +1 -1
  171. package/dist/components/CopyableText/CopyableText.js +1 -1
  172. package/dist/components/CopyableText/CopyableText.stories.js +1 -1
  173. package/dist/components/CopyableText/index.js +1 -1
  174. package/dist/components/DataTable/DataTable.js +1 -1
  175. package/dist/components/DataTable/DataTable.stories.js +1 -1
  176. package/dist/components/DataTable/index.js +1 -1
  177. package/dist/components/Drawer/Drawer.js +1 -1
  178. package/dist/components/Drawer/Drawer.stories.js +3 -3
  179. package/dist/components/Drawer/index.js +1 -1
  180. package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.js +1 -1
  181. package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.stories.js +1 -1
  182. package/dist/components/EmptyStateDataDisplay/index.js +1 -1
  183. package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.js +1 -1
  184. package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.stories.js +2 -2
  185. package/dist/components/ExpandableInfoPanel/index.js +1 -1
  186. package/dist/components/FeedbackBar/FeedbackBar.js +1 -1
  187. package/dist/components/FeedbackBar/FeedbackBar.stories.js +3 -3
  188. package/dist/components/FeedbackBar/FeedbackBar.test.js +3 -3
  189. package/dist/components/FeedbackBar/index.js +1 -1
  190. package/dist/components/FeedbackBox/FeedbackBox.js +1 -1
  191. package/dist/components/FeedbackBox/FeedbackBox.stories.js +3 -3
  192. package/dist/components/FeedbackBox/index.js +1 -1
  193. package/dist/components/Fieldset/Fieldset.js +1 -1
  194. package/dist/components/Fieldset/Fieldset.stories.js +5 -5
  195. package/dist/components/Fieldset/index.js +1 -1
  196. package/dist/components/FormField/FormField.js +1 -1
  197. package/dist/components/FormField/FormField.stories.js +4 -4
  198. package/dist/components/FormField/index.js +1 -1
  199. package/dist/components/FormInput/FormInput.js +1 -1
  200. package/dist/components/FormInput/FormInput.stories.js +2 -2
  201. package/dist/components/FormInput/index.js +1 -1
  202. package/dist/components/GridRow/Column/Column.js +1 -1
  203. package/dist/components/GridRow/Column/index.js +1 -1
  204. package/dist/components/GridRow/GridRow.js +2 -2
  205. package/dist/components/IconButton/IconButton.js +1 -1
  206. package/dist/components/IconButton/IconButton.stories.js +2 -2
  207. package/dist/components/IconButton/index.js +1 -1
  208. package/dist/components/InfoMessage/InfoMessage.js +1 -1
  209. package/dist/components/InfoMessage/InfoMessage.stories.js +1 -1
  210. package/dist/components/InfoMessage/index.js +1 -1
  211. package/dist/components/Input/Input.js +1 -1
  212. package/dist/components/Input/Input.stories.js +1 -1
  213. package/dist/components/Input/index.js +1 -1
  214. package/dist/components/InputField/InputField.js +1 -1
  215. package/dist/components/InputField/InputField.stories.js +3 -3
  216. package/dist/components/InputField/index.js +1 -1
  217. package/dist/components/Label/Label.js +1 -1
  218. package/dist/components/Label/Label.stories.js +1 -1
  219. package/dist/components/Label/Label.test.js +3 -3
  220. package/dist/components/Label/index.js +1 -1
  221. package/dist/components/MenuLink/MenuLink.js +1 -1
  222. package/dist/components/MenuLink/MenuLink.stories.js +1 -1
  223. package/dist/components/MenuLink/index.js +1 -1
  224. package/dist/components/MetaDataBar/MetaDataBar.test.js +1 -1
  225. package/dist/components/MetaDataList/MetaDataList.stories.js +1 -1
  226. package/dist/components/ModalDialog/ModalDialog.js +1 -1
  227. package/dist/components/ModalDialog/ModalDialog.stories.js +6 -6
  228. package/dist/components/ModalDialog/index.js +1 -1
  229. package/dist/components/MultiSelect/MultiSelect.js +1 -1
  230. package/dist/components/MultiSelect/MultiSelect.stories.js +3 -3
  231. package/dist/components/MultiSelect/components/MultiSelectHeader.js +1 -1
  232. package/dist/components/MultiSelect/components/MultiSelectItem.js +1 -1
  233. package/dist/components/MultiSelect/index.js +1 -1
  234. package/dist/components/MultiSelectBox/MultiSelectBox.js +1 -1
  235. package/dist/components/MultiSelectBox/MultiSelectBox.stories.js +2 -2
  236. package/dist/components/MultiSelectBox/MultiSelectBox.test.js +3 -3
  237. package/dist/components/MultiSelectBox/index.js +1 -1
  238. package/dist/components/Notification/Notification.js +1 -1
  239. package/dist/components/Notification/Notification.stories.js +2 -2
  240. package/dist/components/Notification/Notification.test.js +3 -3
  241. package/dist/components/Notification/index.js +1 -1
  242. package/dist/components/OverlayCloseButton/OverlayCloseButton.js +1 -1
  243. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js +3 -3
  244. package/dist/components/OverlayCloseButton/index.js +1 -1
  245. package/dist/components/OverlayStepBar/OverlayStepBar.js +1 -1
  246. package/dist/components/OverlayStepBar/OverlayStepBar.stories.js +1 -1
  247. package/dist/components/OverlayStepBar/index.js +1 -1
  248. package/dist/components/PageOverlay/PageOverlay.js +1 -1
  249. package/dist/components/PageOverlay/PageOverlay.stories.js +6 -6
  250. package/dist/components/PageOverlay/PageOverlay.stories.js.map +1 -1
  251. package/dist/components/PageOverlay/index.js +1 -1
  252. package/dist/components/PeriodSelector/PeriodSelector.js +1 -1
  253. package/dist/components/PeriodSelector/PeriodSelector.stories.js +2 -2
  254. package/dist/components/PeriodSelector/index.js +1 -1
  255. package/dist/components/Periods/Periods.js +1 -1
  256. package/dist/components/Periods/Periods.stories.js +1 -1
  257. package/dist/components/Periods/index.js +1 -1
  258. package/dist/components/ProgrammeCard/ProgrammeCard.js +1 -1
  259. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js +3 -3
  260. package/dist/components/ProgrammeCard/index.js +1 -1
  261. package/dist/components/RadioButton/RadioButton.js +1 -1
  262. package/dist/components/RadioButton/RadioButton.stories.js +1 -1
  263. package/dist/components/RadioButton/index.js +1 -1
  264. package/dist/components/RadioGroup/RadioGroup.js +1 -1
  265. package/dist/components/RadioGroup/RadioGroup.stories.js +2 -2
  266. package/dist/components/RadioGroup/Radiogroup.test.js +3 -3
  267. package/dist/components/RadioGroup/index.js +1 -1
  268. package/dist/components/RadioTabSelector/RadioTabSelector.js +1 -1
  269. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js +2 -2
  270. package/dist/components/RadioTabSelector/index.js +1 -1
  271. package/dist/components/Repeater/Repeater.js +1 -1
  272. package/dist/components/Repeater/Repeater.stories.js +2 -2
  273. package/dist/components/Repeater/index.js +1 -1
  274. package/dist/components/RteEditor/EditorHeader/EditorHeader.js +1 -1
  275. package/dist/components/RteEditor/EditorHeader/index.js +1 -1
  276. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +5 -5
  277. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.js +1 -1
  278. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.js +1 -1
  279. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js +37 -37
  280. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +1 -1
  281. package/dist/components/RteEditor/Plugins/HistoryPlugin/index.js +1 -1
  282. package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +1 -1
  283. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js +1 -1
  284. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +1 -1
  285. package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +1 -1
  286. package/dist/components/RteEditor/Plugins/LinkPlugin/index.js +1 -1
  287. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +15 -15
  288. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +1 -1
  289. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/index.js +1 -1
  290. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.js +1 -1
  291. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/index.js +1 -1
  292. package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +1 -1
  293. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js +1 -1
  294. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/index.js +1 -1
  295. package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +1 -1
  296. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +30 -30
  297. package/dist/components/RteEditor/Plugins/TablePlugin/index.js +2 -2
  298. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +1 -1
  299. package/dist/components/RteEditor/Plugins/ToolbarPlugin/index.js +1 -1
  300. package/dist/components/RteEditor/Plugins/index.js +4 -4
  301. package/dist/components/RteEditor/RteEditor.js +1 -1
  302. package/dist/components/RteEditor/RteEditor.stories.js +2 -2
  303. package/dist/components/RteEditor/helpers.js +4 -4
  304. package/dist/components/RteEditor/index.js +1 -1
  305. package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js +18 -18
  306. package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js +17 -17
  307. package/dist/components/SearchField/SearchField.js +1 -1
  308. package/dist/components/SectionNotification/SectionNotification.js +1 -1
  309. package/dist/components/SectionNotification/SectionNotification.stories.js +1 -1
  310. package/dist/components/SectionNotification/index.js +1 -1
  311. package/dist/components/SelectListbox/SelectListBox.stories.js +1 -1
  312. package/dist/components/SelectListbox/components/SelectButton.js +1 -1
  313. package/dist/components/SelectListbox/components/SelectOption.js +1 -1
  314. package/dist/components/Slider/Slider.js +1 -1
  315. package/dist/components/Slider/Slider.stories.js +1 -1
  316. package/dist/components/Slider/index.js +1 -1
  317. package/dist/components/Sortable/Sortable.js +1 -1
  318. package/dist/components/Sortable/Sortable.stories.js +2 -2
  319. package/dist/components/Sortable/SortableProvider.js +1 -1
  320. package/dist/components/Sortable/components/SortableContainer.js +1 -1
  321. package/dist/components/Sortable/components/SortableItem.js +2 -2
  322. package/dist/components/StatusBadge/StatusBadge.stories.js +1 -1
  323. package/dist/components/StatusBadge/StatusBadge.test.js +3 -3
  324. package/dist/components/StatusBadge/StatusBage.js +1 -1
  325. package/dist/components/StatusBadge/index.js +1 -1
  326. package/dist/components/StatusPill/StatusPill.js +1 -1
  327. package/dist/components/StatusPill/StatusPill.stories.js +2 -2
  328. package/dist/components/StatusPill/index.js +1 -1
  329. package/dist/components/TextArea/TextArea.js +1 -1
  330. package/dist/components/TextArea/TextArea.stories.js +2 -2
  331. package/dist/components/TextArea/TextArea.test.js +4 -4
  332. package/dist/components/TextArea/index.js +1 -1
  333. package/dist/components/ToggleSwitch/ToggleSwitch.js +1 -1
  334. package/dist/components/ToggleSwitch/ToggleSwitch.stories.js +2 -2
  335. package/dist/components/ToggleSwitch/index.js +1 -1
  336. package/dist/components/Tooltip/Tooltip.stories.js +1 -1
  337. package/dist/components/VarIndicator/VarIndicator.js +1 -1
  338. package/dist/components/VarIndicator/VarIndicator.stories.js +2 -2
  339. package/dist/components/VarIndicator/VarIndicator.test.js +4 -4
  340. package/dist/components/VarIndicator/index.js +1 -1
  341. package/dist/components/WeekSelector/components/WeekSelectorOption.js +1 -1
  342. package/dist/components/index.js +42 -42
  343. package/dist/components-KU0q76JR.js +2150 -0
  344. package/dist/components-KU0q76JR.js.map +1 -0
  345. package/dist/{lib-Do6N-CJR.js → dist-C6Ar8a59.js} +2799 -714
  346. package/dist/dist-C6Ar8a59.js.map +1 -0
  347. package/dist/{esm-BJhEQquH.js → esm-B6Pg-v2v.js} +89 -89
  348. package/dist/esm-B6Pg-v2v.js.map +1 -0
  349. package/dist/{helpers-z8cqBNoz.js → helpers-BzYayeT-.js} +9 -9
  350. package/dist/helpers-BzYayeT-.js.map +1 -0
  351. package/dist/index.js +42 -42
  352. package/dist/{react-18-BAudFSEM.js → react-18-DbbN8Pdb.js} +3 -3
  353. package/dist/react-18-DbbN8Pdb.js.map +1 -0
  354. package/dist/react.esm-56DGmlLk.js +8884 -0
  355. package/dist/react.esm-56DGmlLk.js.map +1 -0
  356. package/dist/setupTests.js +6 -1196
  357. package/dist/setupTests.js.map +1 -1
  358. package/dist/storyComponents/Container/Container.js +1 -1
  359. package/dist/storyComponents/Container/index.js +1 -1
  360. package/dist/storybook__react.d.js +17 -17
  361. package/dist/storybook__react.d.js.map +1 -1
  362. package/dist/{test-Bd7kXF_B.js → test-WxLxsxwA.js} +56 -57
  363. package/dist/test-WxLxsxwA.js.map +1 -0
  364. package/dist/{test-utils-DcI4ZXle.js → test-utils-CMrZ33U0.js} +2 -2
  365. package/dist/test-utils-CMrZ33U0.js.map +1 -0
  366. package/package.json +38 -25
  367. package/dist/Lexical.prod-8zZnpGo4.js.map +0 -1
  368. package/dist/LexicalClipboard.prod-hbxbsROy.js +0 -651
  369. package/dist/LexicalClipboard.prod-hbxbsROy.js.map +0 -1
  370. package/dist/LexicalComposerContext.prod-y_BRxu3Z.js.map +0 -1
  371. package/dist/LexicalExtension.prod-v8IpET5E.js +0 -913
  372. package/dist/LexicalExtension.prod-v8IpET5E.js.map +0 -1
  373. package/dist/LexicalLink.prod-BVUv9-sZ.js.map +0 -1
  374. package/dist/LexicalList.prod-CCPDDafy.js +0 -806
  375. package/dist/LexicalList.prod-CCPDDafy.js.map +0 -1
  376. package/dist/LexicalTable.prod-D_9Dr3kL.js.map +0 -1
  377. package/dist/LexicalUtils.prod-BWhWP8es.js +0 -343
  378. package/dist/LexicalUtils.prod-BWhWP8es.js.map +0 -1
  379. package/dist/TableCellResizerPlugin-Djym940U.js +0 -208
  380. package/dist/TableCellResizerPlugin-Djym940U.js.map +0 -1
  381. package/dist/chunk-FON5IJBZ-BBb6rYhU.js.map +0 -1
  382. package/dist/client-DJaPTT6C.js.map +0 -1
  383. package/dist/clsx-BWCAbrjV.js.map +0 -1
  384. package/dist/components-D6_Sx8Hs.js +0 -1995
  385. package/dist/components-D6_Sx8Hs.js.map +0 -1
  386. package/dist/dist-Dlg0QxSO.js +0 -2225
  387. package/dist/dist-Dlg0QxSO.js.map +0 -1
  388. package/dist/esm-BJhEQquH.js.map +0 -1
  389. package/dist/helpers-z8cqBNoz.js.map +0 -1
  390. package/dist/lib-Do6N-CJR.js.map +0 -1
  391. package/dist/react-18-BAudFSEM.js.map +0 -1
  392. package/dist/react.esm-GvSawg5E.js +0 -3297
  393. package/dist/react.esm-GvSawg5E.js.map +0 -1
  394. package/dist/test-Bd7kXF_B.js.map +0 -1
  395. package/dist/test-utils-DcI4ZXle.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RadioButton-CKALsbBb.js","names":[],"sources":["../src/components/RadioButton/RadioButton.module.css","../src/components/RadioButton/RadioButton.tsx"],"sourcesContent":[".radio-button {\n align-items: center;\n display: grid;\n gap: 0 0.5rem;\n grid-template-columns: auto [label] 1fr;\n}\n\n.radio-button__input {\n accent-color: var(--color-navy-600);\n}\n\n.radio-button .radio-button__input {\n cursor: pointer;\n margin-top: 0;\n}\n\n.radio-button__label {\n position: relative;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n}\n\n.radio-button__label::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: -1rem;\n bottom: 0;\n width: 1rem;\n}\n\n.radio-button__description {\n color: var(--color-grey-700);\n grid-area: label;\n margin: 0;\n}\n\n.radio-button .radio-button__label {\n width: fit-content;\n}\n\n.radio-button :disabled + .radio-button__label {\n color: var(--color-grey-700);\n cursor: unset;\n}\n\n.radio-button--gap-large {\n column-gap: 1rem;\n}\n","import { clsx } from 'clsx';\n\nimport type { InputHTMLAttributes } from 'react';\n\nimport styles from './RadioButton.module.css';\n\nexport interface RadioButtonProps extends InputHTMLAttributes<HTMLInputElement> {\n /** The id of the element. */\n id: string;\n /** The label of the radio button. */\n label: string;\n /** The description that is shown under the label. */\n description?: string;\n /** The gap between the label and radio button. */\n gap?: 'normal' | 'large';\n}\n\n/** Represents a component for a radio button. */\nexport const RadioButton = ({ id, label, gap = 'normal', description, ...restProps }: RadioButtonProps) => (\n <div className={clsx(styles['radio-button'], styles[`radio-button--gap-${gap}`])}>\n <input\n className={styles['radio-button__input']}\n {...restProps}\n id={id}\n type=\"radio\"\n aria-describedby={description ? `${id}-description` : undefined}\n />\n <label className={styles['radio-button__label']} htmlFor={id}>\n {label}\n </label>\n {description && (\n <p id={`${id}-description`} className={styles['radio-button__description']}>\n {description}\n </p>\n )}\n </div>\n);\n"],"mappings":";;;;;;;;;GCkBa,KAAe,EAAE,OAAI,UAAO,SAAM,UAAU,gBAAa,GAAG,QACvE,kBAAC,OAAD;CAAK,WAAW,EAAK,EAAO,iBAAiB,EAAO,qBAAqB,IAAM;WAA/E;EACE,kBAAC,SAAD;GACE,WAAW,EAAO;GAClB,GAAI;GACA;GACJ,MAAK;GACL,oBAAkB,IAAc,GAAG,EAAG,gBAAgB,KAAA;EACvD,CAAA;EACD,kBAAC,SAAD;GAAO,WAAW,EAAO;GAAwB,SAAS;aACvD;EACI,CAAA;EACN,KACC,kBAAC,KAAD;GAAG,IAAI,GAAG,EAAG;GAAe,WAAW,EAAO;aAC3C;EACA,CAAA;CAEF"}
1
+ {"version":3,"file":"RadioButton-DmBpXwIS.js","names":[],"sources":["../src/components/RadioButton/RadioButton.module.css","../src/components/RadioButton/RadioButton.tsx"],"sourcesContent":[".radio-button {\n align-items: center;\n display: grid;\n gap: 0 0.5rem;\n grid-template-columns: auto [label] 1fr;\n}\n\n.radio-button__input {\n accent-color: var(--color-navy-600);\n}\n\n.radio-button .radio-button__input {\n cursor: pointer;\n margin-top: 0;\n}\n\n.radio-button__label {\n position: relative;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n}\n\n.radio-button__label::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: -1rem;\n bottom: 0;\n width: 1rem;\n}\n\n.radio-button__description {\n color: var(--color-grey-700);\n grid-area: label;\n margin: 0;\n}\n\n.radio-button .radio-button__label {\n width: fit-content;\n}\n\n.radio-button :disabled + .radio-button__label {\n color: var(--color-grey-700);\n cursor: unset;\n}\n\n.radio-button--gap-large {\n column-gap: 1rem;\n}\n","import { clsx } from 'clsx';\n\nimport type { InputHTMLAttributes } from 'react';\n\nimport styles from './RadioButton.module.css';\n\nexport interface RadioButtonProps extends InputHTMLAttributes<HTMLInputElement> {\n /** The id of the element. */\n id: string;\n /** The label of the radio button. */\n label: string;\n /** The description that is shown under the label. */\n description?: string;\n /** The gap between the label and radio button. */\n gap?: 'normal' | 'large';\n}\n\n/** Represents a component for a radio button. */\nexport const RadioButton = ({ id, label, gap = 'normal', description, ...restProps }: RadioButtonProps) => (\n <div className={clsx(styles['radio-button'], styles[`radio-button--gap-${gap}`])}>\n <input\n className={styles['radio-button__input']}\n {...restProps}\n id={id}\n type=\"radio\"\n aria-describedby={description ? `${id}-description` : undefined}\n />\n <label className={styles['radio-button__label']} htmlFor={id}>\n {label}\n </label>\n {description && (\n <p id={`${id}-description`} className={styles['radio-button__description']}>\n {description}\n </p>\n )}\n </div>\n);\n"],"mappings":";;;;;;;;;GCkBa,KAAe,EAAE,OAAI,UAAO,SAAM,UAAU,gBAAa,GAAG,QACvE,kBAAC,OAAD;CAAK,WAAW,EAAK,EAAO,iBAAiB,EAAO,qBAAqB,IAAM;WAA/E;EACE,kBAAC,SAAD;GACE,WAAW,EAAO;GAClB,GAAI;GACA;GACJ,MAAK;GACL,oBAAkB,IAAc,GAAG,EAAG,gBAAgB,KAAA;EACvD,CAAA;EACD,kBAAC,SAAD;GAAO,WAAW,EAAO;GAAwB,SAAS;aACvD;EACI,CAAA;EACN,KACC,kBAAC,KAAD;GAAG,IAAI,GAAG,EAAG;GAAe,WAAW,EAAO;aAC3C;EACA,CAAA;CAEF"}
@@ -1,5 +1,5 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
2
- import { t } from "./RadioButton-CKALsbBb.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
+ import { t } from "./RadioButton-DmBpXwIS.js";
3
3
  import { useState as n } from "react";
4
4
  import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
5
  import './assets/RadioGroup.css';//#region src/components/RadioGroup/RadioGroup.module.css
@@ -47,4 +47,4 @@ var a = {
47
47
  //#endregion
48
48
  export { o as t };
49
49
 
50
- //# sourceMappingURL=RadioGroup-DhnnBRJu.js.map
50
+ //# sourceMappingURL=RadioGroup-DlQjMmpa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup-DhnnBRJu.js","names":[],"sources":["../src/components/RadioGroup/RadioGroup.module.css","../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":[".radio-group__wrapper {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.radio-group__header {\n font-family: inherit;\n font-size: inherit;\n line-height: var(--line-height-s);\n margin: 0;\n}\n\n.radio-group {\n background-color: var(--color-uva-white);\n border: 1px solid var(--color-grey-600);\n border-radius: 0.25rem;\n overflow: hidden;\n}\n\n.radio-group__option {\n cursor: pointer;\n display: flex;\n gap: 1rem;\n padding: 1rem;\n}\n\n.radio-group__option:not(:last-of-type) {\n border-bottom: 1px solid var(--color-grey-400);\n}\n\n.radio-group__option:hover {\n background-color: var(--color-grey-300);\n}\n\n.radio-group__option--disabled {\n cursor: default;\n pointer-events: none;\n}\n","import { useState } from 'react';\nimport { clsx } from 'clsx';\n\nimport styles from './RadioGroup.module.css';\n\nimport { RadioButton } from 'components/RadioButton/RadioButton';\n\ntype Option = {\n id: string;\n titleLabel: string;\n descriptionLabel?: string;\n value: string;\n};\n\nexport interface RadioGroupProps {\n /** The label of the radio group */\n label: string;\n /** Radio options. */\n options: Option[];\n /** Returns selected values as string */\n onChange: (value: string) => void;\n /** If true, the whole group will be disabled. */\n disabled?: boolean;\n}\n\n/** Represents a component for dispalying grouped styled radio buttons. */\nexport const RadioGroup = ({ label, options, onChange, disabled }: RadioGroupProps) => {\n const [selectedValue, setSelectedValue] = useState<string | null>(null);\n\n const handleSelection = (value: string) => {\n if (!disabled) {\n setSelectedValue(value);\n onChange(value);\n }\n };\n\n return (\n <div className={styles['radio-group__wrapper']}>\n <h2 className={styles['radio-group__header']}>{label}</h2>\n <div className={styles['radio-group']}>\n {options.map(({ id, descriptionLabel, titleLabel, value }) => (\n <div\n className={clsx(styles['radio-group__option'], {\n [styles['radio-group__option--disabled']]: disabled,\n })}\n key={id}\n onClick={() => handleSelection(value)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n handleSelection(value);\n }\n }}\n role=\"presentation\"\n >\n <RadioButton\n id={id}\n label={titleLabel}\n description={descriptionLabel}\n name={label}\n onChange={(event) => {\n handleSelection(event.target.value);\n }}\n value={value}\n checked={selectedValue === value}\n disabled={disabled}\n gap=\"large\"\n />\n </div>\n ))}\n </div>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;GC0Ba,KAAc,EAAE,UAAO,YAAS,aAAU,kBAAgC;CACrF,IAAM,CAAC,GAAe,KAAoB,EAAwB,IAAI,GAEhE,KAAmB,MAAkB;EACzC,AAAK,MACH,EAAiB,CAAK,GACtB,EAAS,CAAK;CAElB;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,CACE,kBAAC,MAAD;GAAI,WAAW,EAAO;aAAyB;EAAU,CAAA,GACzD,kBAAC,OAAD;GAAK,WAAW,EAAO;aACpB,EAAQ,KAAK,EAAE,OAAI,qBAAkB,eAAY,eAChD,kBAAC,OAAD;IACE,WAAW,EAAK,EAAO,wBAAwB,GAC5C,EAAO,mCAAmC,EAC7C,CAAC;IAED,eAAe,EAAgB,CAAK;IACpC,YAAY,MAAU;KACpB,CAAI,EAAM,QAAQ,WAAW,EAAM,QAAQ,QACzC,EAAgB,CAAK;IAEzB;IACA,MAAK;cAEL,kBAAC,GAAD;KACM;KACJ,OAAO;KACP,aAAa;KACb,MAAM;KACN,WAAW,MAAU;MACnB,EAAgB,EAAM,OAAO,KAAK;KACpC;KACO;KACP,SAAS,MAAkB;KACjB;KACV,KAAI;IACL,CAAA;GACE,GAtBE,CAsBF,CACN;EACE,CAAA,CACF;;AAET"}
1
+ {"version":3,"file":"RadioGroup-DlQjMmpa.js","names":[],"sources":["../src/components/RadioGroup/RadioGroup.module.css","../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":[".radio-group__wrapper {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.radio-group__header {\n font-family: inherit;\n font-size: inherit;\n line-height: var(--line-height-s);\n margin: 0;\n}\n\n.radio-group {\n background-color: var(--color-uva-white);\n border: 1px solid var(--color-grey-600);\n border-radius: 0.25rem;\n overflow: hidden;\n}\n\n.radio-group__option {\n cursor: pointer;\n display: flex;\n gap: 1rem;\n padding: 1rem;\n}\n\n.radio-group__option:not(:last-of-type) {\n border-bottom: 1px solid var(--color-grey-400);\n}\n\n.radio-group__option:hover {\n background-color: var(--color-grey-300);\n}\n\n.radio-group__option--disabled {\n cursor: default;\n pointer-events: none;\n}\n","import { useState } from 'react';\nimport { clsx } from 'clsx';\n\nimport styles from './RadioGroup.module.css';\n\nimport { RadioButton } from 'components/RadioButton/RadioButton';\n\ntype Option = {\n id: string;\n titleLabel: string;\n descriptionLabel?: string;\n value: string;\n};\n\nexport interface RadioGroupProps {\n /** The label of the radio group */\n label: string;\n /** Radio options. */\n options: Option[];\n /** Returns selected values as string */\n onChange: (value: string) => void;\n /** If true, the whole group will be disabled. */\n disabled?: boolean;\n}\n\n/** Represents a component for dispalying grouped styled radio buttons. */\nexport const RadioGroup = ({ label, options, onChange, disabled }: RadioGroupProps) => {\n const [selectedValue, setSelectedValue] = useState<string | null>(null);\n\n const handleSelection = (value: string) => {\n if (!disabled) {\n setSelectedValue(value);\n onChange(value);\n }\n };\n\n return (\n <div className={styles['radio-group__wrapper']}>\n <h2 className={styles['radio-group__header']}>{label}</h2>\n <div className={styles['radio-group']}>\n {options.map(({ id, descriptionLabel, titleLabel, value }) => (\n <div\n className={clsx(styles['radio-group__option'], {\n [styles['radio-group__option--disabled']]: disabled,\n })}\n key={id}\n onClick={() => handleSelection(value)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n handleSelection(value);\n }\n }}\n role=\"presentation\"\n >\n <RadioButton\n id={id}\n label={titleLabel}\n description={descriptionLabel}\n name={label}\n onChange={(event) => {\n handleSelection(event.target.value);\n }}\n value={value}\n checked={selectedValue === value}\n disabled={disabled}\n gap=\"large\"\n />\n </div>\n ))}\n </div>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;GC0Ba,KAAc,EAAE,UAAO,YAAS,aAAU,kBAAgC;CACrF,IAAM,CAAC,GAAe,KAAoB,EAAwB,IAAI,GAEhE,KAAmB,MAAkB;EACzC,AAAK,MACH,EAAiB,CAAK,GACtB,EAAS,CAAK;CAElB;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,CACE,kBAAC,MAAD;GAAI,WAAW,EAAO;aAAyB;EAAU,CAAA,GACzD,kBAAC,OAAD;GAAK,WAAW,EAAO;aACpB,EAAQ,KAAK,EAAE,OAAI,qBAAkB,eAAY,eAChD,kBAAC,OAAD;IACE,WAAW,EAAK,EAAO,wBAAwB,GAC5C,EAAO,mCAAmC,EAC7C,CAAC;IAED,eAAe,EAAgB,CAAK;IACpC,YAAY,MAAU;KACpB,CAAI,EAAM,QAAQ,WAAW,EAAM,QAAQ,QACzC,EAAgB,CAAK;IAEzB;IACA,MAAK;cAEL,kBAAC,GAAD;KACM;KACJ,OAAO;KACP,aAAa;KACb,MAAM;KACN,WAAW,MAAU;MACnB,EAAgB,EAAM,OAAO,KAAK;KACpC;KACO;KACP,SAAS,MAAkB;KACjB;KACV,KAAI;IACL,CAAA;GACE,GAtBE,CAsBF,CACN;EACE,CAAA,CACF;;AAET"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  import './assets/Repeater.css';var n = {
4
4
  repeater: "_repeater_12czp_1",
@@ -19,4 +19,4 @@ import './assets/Repeater.css';var n = {
19
19
  //#endregion
20
20
  export { r as t };
21
21
 
22
- //# sourceMappingURL=Repeater-Bnoqqz0X.js.map
22
+ //# sourceMappingURL=Repeater-BAEfOMZI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Repeater-Bnoqqz0X.js","names":[],"sources":["../src/components/Repeater/Repeater.module.css","../src/components/Repeater/Repeater.tsx"],"sourcesContent":[".repeater {\n display: flex;\n}\n\n.repeater--row {\n flex-direction: row;\n}\n\n.repeater--row-reverse {\n flex-direction: row-reverse;\n}\n\n.repeater--column {\n flex-direction: column;\n}\n\n.repeater--column-reverse {\n flex-direction: column-reverse;\n}\n\n.repeater--gap-025 {\n gap: 0.25rem;\n}\n\n.repeater--gap-050 {\n gap: 0.5rem;\n}\n\n.repeater--gap-075 {\n gap: 0.75rem;\n}\n\n.repeater--gap-100 {\n gap: 1rem;\n}\n\n.repeater--gap-150 {\n gap: 1.5rem;\n}\n\n.repeater--gap-200 {\n gap: 2rem;\n}\n","import { clsx } from 'clsx';\n\nimport type { PropsWithChildren } from 'react';\n\nimport styles from './Repeater.module.css';\n\nexport interface RepeaterProps {\n /** The direction of the items. */\n flexDirection?: 'row' | 'row-reverse' | 'column' | 'column-reverse';\n /** The gap between the items. */\n gap?: '025' | '050' | '075' | '100' | '150' | '200';\n}\n\n/** Represents a component to show a list of items. */\nexport const Repeater = ({ children, flexDirection = 'column', gap = '050' }: PropsWithChildren<RepeaterProps>) => {\n return (\n <div className={clsx(styles['repeater'], styles[`repeater--${flexDirection}`], styles[`repeater--gap-${gap}`])}>\n {children}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;GCca,KAAY,EAAE,aAAU,mBAAgB,UAAU,SAAM,YAEjE,kBAAC,OAAD;CAAK,WAAW,EAAK,EAAO,UAAa,EAAO,aAAa,MAAkB,EAAO,iBAAiB,IAAM;CAC1G;AACE,CAAA"}
1
+ {"version":3,"file":"Repeater-BAEfOMZI.js","names":[],"sources":["../src/components/Repeater/Repeater.module.css","../src/components/Repeater/Repeater.tsx"],"sourcesContent":[".repeater {\n display: flex;\n}\n\n.repeater--row {\n flex-direction: row;\n}\n\n.repeater--row-reverse {\n flex-direction: row-reverse;\n}\n\n.repeater--column {\n flex-direction: column;\n}\n\n.repeater--column-reverse {\n flex-direction: column-reverse;\n}\n\n.repeater--gap-025 {\n gap: 0.25rem;\n}\n\n.repeater--gap-050 {\n gap: 0.5rem;\n}\n\n.repeater--gap-075 {\n gap: 0.75rem;\n}\n\n.repeater--gap-100 {\n gap: 1rem;\n}\n\n.repeater--gap-150 {\n gap: 1.5rem;\n}\n\n.repeater--gap-200 {\n gap: 2rem;\n}\n","import { clsx } from 'clsx';\n\nimport type { PropsWithChildren } from 'react';\n\nimport styles from './Repeater.module.css';\n\nexport interface RepeaterProps {\n /** The direction of the items. */\n flexDirection?: 'row' | 'row-reverse' | 'column' | 'column-reverse';\n /** The gap between the items. */\n gap?: '025' | '050' | '075' | '100' | '150' | '200';\n}\n\n/** Represents a component to show a list of items. */\nexport const Repeater = ({ children, flexDirection = 'column', gap = '050' }: PropsWithChildren<RepeaterProps>) => {\n return (\n <div className={clsx(styles['repeater'], styles[`repeater--${flexDirection}`], styles[`repeater--gap-${gap}`])}>\n {children}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;GCca,KAAY,EAAE,aAAU,mBAAgB,UAAU,SAAM,YAEjE,kBAAC,OAAD;CAAK,WAAW,EAAK,EAAO,UAAa,EAAO,aAAa,MAAkB,EAAO,iBAAiB,IAAM;CAC1G;AACE,CAAA"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  import './assets/SectionNotification.css';//#region src/components/SectionNotification/SectionNotification.module.css
4
4
  var n = {
@@ -11,4 +11,4 @@ var n = {
11
11
  //#endregion
12
12
  export { r as t };
13
13
 
14
- //# sourceMappingURL=SectionNotification-BT0Z2edJ.js.map
14
+ //# sourceMappingURL=SectionNotification-CN-NdGL8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SectionNotification-BT0Z2edJ.js","names":[],"sources":["../src/components/SectionNotification/SectionNotification.module.css","../src/components/SectionNotification/SectionNotification.tsx"],"sourcesContent":[".section-notification {\n align-items: center;\n background-color: var(--color-orange-100);\n display: flex;\n gap: 0.5rem;\n justify-content: center;\n padding: 0.75rem 1rem;\n}\n\n.section-notification--fullwidth {\n width: 100%;\n}\n","import classNames from 'clsx';\n\nimport type { PropsWithChildren } from 'react';\n\nimport styles from './SectionNotification.module.css';\n\nexport interface SectionNotificationProps {\n /** `true` if the notification bar should be full width; otherwise, `false`. */\n fullWidth?: boolean;\n}\n\n/** Represents a component to show notifications within a [Card](/story/atoms-card--card-example). */\nexport const SectionNotification = ({ fullWidth = false, children }: PropsWithChildren<SectionNotificationProps>) => (\n <div\n className={classNames(styles['section-notification'], {\n [styles['section-notification--fullwidth']]: fullWidth,\n })}\n >\n {children}\n </div>\n);\n"],"mappings":";;;;;;GCYa,KAAuB,EAAE,eAAY,IAAO,kBACvD,kBAAC,OAAD;CACE,WAAW,EAAW,EAAO,yBAAyB,GACnD,EAAO,qCAAqC,EAC/C,CAAC;CAEA;AACE,CAAA"}
1
+ {"version":3,"file":"SectionNotification-CN-NdGL8.js","names":[],"sources":["../src/components/SectionNotification/SectionNotification.module.css","../src/components/SectionNotification/SectionNotification.tsx"],"sourcesContent":[".section-notification {\n align-items: center;\n background-color: var(--color-orange-100);\n display: flex;\n gap: 0.5rem;\n justify-content: center;\n padding: 0.75rem 1rem;\n}\n\n.section-notification--fullwidth {\n width: 100%;\n}\n","import classNames from 'clsx';\n\nimport type { PropsWithChildren } from 'react';\n\nimport styles from './SectionNotification.module.css';\n\nexport interface SectionNotificationProps {\n /** `true` if the notification bar should be full width; otherwise, `false`. */\n fullWidth?: boolean;\n}\n\n/** Represents a component to show notifications within a [Card](/story/atoms-card--card-example). */\nexport const SectionNotification = ({ fullWidth = false, children }: PropsWithChildren<SectionNotificationProps>) => (\n <div\n className={classNames(styles['section-notification'], {\n [styles['section-notification--fullwidth']]: fullWidth,\n })}\n >\n {children}\n </div>\n);\n"],"mappings":";;;;;;GCYa,KAAuB,EAAE,eAAY,IAAO,kBACvD,kBAAC,OAAD;CACE,WAAW,EAAW,EAAO,yBAAyB,GACnD,EAAO,qCAAqC,EAC/C,CAAC;CAEA;AACE,CAAA"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { Icon as t } from "./components/Icon/Icon.js";
3
3
  import { useEffect as n, useEffectEvent as r, useRef as i, useState as a } from "react";
4
4
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
@@ -99,4 +99,4 @@ import './assets/Slider.css';var c = {
99
99
  //#endregion
100
100
  export { p as t };
101
101
 
102
- //# sourceMappingURL=Slider-dCmT0VM2.js.map
102
+ //# sourceMappingURL=Slider-Czd2xAGf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Slider-dCmT0VM2.js","names":[],"sources":["../src/components/Slider/Slider.module.css","../src/components/Slider/Slider.tsx"],"sourcesContent":[".slider_wrapper {\n align-items: center;\n display: flex;\n gap: 1rem;\n width: 100%;\n}\n\n.slider_button {\n align-items: center;\n appearance: none;\n aspect-ratio: 1 / 1;\n background: none;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n color: var(--color-uva-black);\n cursor: pointer;\n display: flex;\n height: 2rem;\n justify-content: center;\n width: 2rem;\n}\n\n.slider_button:focus-visible {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n}\n\n.slider_button:hover {\n border-color: var(--color-grey-700);\n}\n\n.slider_button:disabled,\n.slider_button:disabled:hover {\n border: none;\n cursor: not-allowed;\n}\n\n.slider_trackwrapper {\n display: flex;\n position: relative;\n width: 100%;\n}\n\n.slider_balloon {\n color: var(--color-uva-black);\n font-weight: var(--semibold);\n position: absolute;\n text-align: center;\n top: -1.8125rem;\n white-space: nowrap;\n}\n\n.slider_input {\n appearance: none;\n background: var(--color-grey-400);\n flex-grow: 1;\n height: 0.25rem;\n}\n\n.slider_input:focus-visible {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n}\n\n.slider_input:disabled {\n cursor: not-allowed;\n}\n\n.slider_input::-webkit-slider-runnable-track {\n appearance: none;\n color: var(--color-navy-600);\n cursor: pointer;\n height: 2rem;\n margin-top: -0.125rem;\n}\n\n.slider_input:disabled::-webkit-slider-runnable-track {\n cursor: not-allowed;\n}\n\n.slider_input::-webkit-slider-thumb {\n appearance: none;\n background: var(--color-uva-white);\n border: 2px solid var(--color-navy-600);\n border-radius: 0.125rem;\n cursor: pointer;\n height: var(--thumb-size);\n margin-top: calc(0.5rem + 1px);\n position: relative;\n width: var(--thumb-size);\n}\n\n.slider_input:disabled::-webkit-slider-thumb,\n.slider_input:disabled:hover::-webkit-slider-thumb {\n background: var(--color-grey-700);\n border: 2px solid var(--color-grey-700);\n cursor: not-allowed;\n}\n\n.slider_input::-moz-range-thumb {\n appearance: none;\n background: var(--color-uva-white);\n border: 2px solid var(--color-navy-600);\n border-radius: 0.125rem;\n cursor: pointer;\n height: var(--thumb-size);\n margin-top: calc(-0.25rem - 1px);\n position: relative;\n width: var(--thumb-size);\n}\n\n.slider_input:disabled::-moz-range-thumb,\n.slider_input:hover:disabled::-moz-range-thumb {\n background: var(--color-grey-700);\n border: 2px solid var(--color-grey-700);\n cursor: not-allowed;\n}\n\n.slider_input::-ms-thumb {\n appearance: none;\n background: var(--color-uva-white);\n border: 2px solid var(--color-navy-600);\n border-radius: 0.125rem;\n cursor: pointer;\n height: var(--thumb-size);\n margin-top: calc(-0.25rem - 1px);\n position: relative;\n width: var(--thumb-size);\n}\n\n.slider_input:disabled::-ms-thumb,\n.slider_input:hover:disabled::-ms-thumb {\n background: var(--color-grey-700);\n border: 2px solid var(--color-grey-700);\n cursor: not-allowed;\n}\n\n.slider_input::-webkit-slider-thumb:hover {\n background: var(--color-navy-200);\n border: 2px solid var(--color-navy-800);\n}\n\n.slider_input::-moz-range-thumb:hover {\n background: var(--color-navy-200);\n border: 2px solid var(--color-navy-800);\n}\n\n.slider_input::-ms-thumb:hover {\n background: var(--color-navy-200);\n border: 2px solid var(--color-navy-800);\n}\n\n.slider_input::-moz-range-progress {\n background-color: var(--color-navy-600);\n}\n\n.slider_input::-moz-range-track {\n background-color: var(--color-grey-400);\n}\n\n.slider_input::-ms-fill-lower {\n background-color: var(--color-navy-600);\n}\n\n.slider_input::-ms-fill-upper {\n background-color: var(--color-grey-400);\n}\n","import { useEffect, useEffectEvent, useRef, useState } from 'react';\r\nimport { clsx } from 'clsx';\r\n\r\nimport type { CSSProperties } from 'react';\r\n\r\nimport styles from './Slider.module.css';\r\n\r\nimport { Icon } from 'components/Icon';\r\n\r\nexport interface SliderProps {\r\n /* The minimum value of the slider */\r\n min: number;\r\n /* The maximum value of the slider */\r\n max: number;\r\n /* The current value of the slider */\r\n value?: number;\r\n /* The step value of the slider */\r\n step?: number;\r\n /* The units to display next to the value */\r\n units?: string;\r\n /* aria-label labels for navigation buttons */\r\n navigationLabels?: { increase: string; decrease: string };\r\n /* Whether the slider is disabled */\r\n disabled?: boolean;\r\n /* Callback function when the value changes */\r\n onChange?: (value: number) => void;\r\n}\r\n\r\nconst HALF_STEP = 0.5;\r\nconst HUNDRED = 100;\r\nconst THUMB_SIZE = 16;\r\nconst REM = 16;\r\n\r\nexport const Slider = ({\r\n min,\r\n max,\r\n value,\r\n step = 1,\r\n units,\r\n navigationLabels,\r\n disabled = false,\r\n onChange,\r\n}: SliderProps) => {\r\n const [sliderValue, setSliderValue] = useState(value !== undefined ? value : (min + max) * HALF_STEP);\r\n const [balloonLeftPosition, setBalloonLeftPosition] = useState('');\r\n const sliderRef = useRef<HTMLInputElement>(null);\r\n const trackWrapperRef = useRef<HTMLDivElement>(null);\r\n const balloonRef = useRef<HTMLDivElement>(null);\r\n\r\n const handleButtonClick = (direction: number) => {\r\n const newValue = sliderValue + direction * step;\r\n if (newValue >= min && newValue <= max) {\r\n setSliderValue(newValue);\r\n paintValueOnTrack(newValue);\r\n setFloaterPosition(newValue);\r\n if (onChange) {\r\n onChange(newValue);\r\n }\r\n }\r\n };\r\n\r\n const handleSliderChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = Number(event.target.value);\r\n setSliderValue(newValue);\r\n paintValueOnTrack(newValue);\r\n setFloaterPosition(newValue);\r\n if (onChange) {\r\n onChange(newValue);\r\n }\r\n };\r\n\r\n const paintValueOnTrack = (valueToPaint: number) => {\r\n if (!sliderRef.current) return;\r\n const percentage = ((valueToPaint - min) / (max - min)) * HUNDRED;\r\n if (disabled) {\r\n sliderRef.current.style.background = `linear-gradient(\r\n to right, \r\n var(--color-grey-700) 0%, \r\n var(--color-grey-700) ${percentage}%, \r\n var(--color-grey-400) ${percentage}%, \r\n var(--color-grey-400) 100%)`;\r\n } else {\r\n sliderRef.current.style.background = `linear-gradient(\r\n to right, \r\n var(--color-navy-600) 0%, \r\n var(--color-navy-600) ${percentage}%, \r\n var(--color-grey-400) ${percentage}%, \r\n var(--color-grey-400) 100%)`;\r\n }\r\n };\r\n\r\n const setFloaterPosition = (value: number) => {\r\n if (trackWrapperRef.current && balloonRef.current) {\r\n const balloonWidth = balloonRef.current.clientWidth;\r\n const trackWidth = trackWrapperRef.current.clientWidth - THUMB_SIZE;\r\n const position = ((value - min) / (max - min)) * trackWidth;\r\n const leftPosition = position - (balloonWidth - THUMB_SIZE) * HALF_STEP;\r\n const clampedLeft = Math.max(0, Math.min(leftPosition, trackWidth - balloonWidth + THUMB_SIZE * HALF_STEP));\r\n setBalloonLeftPosition(`${clampedLeft}px`);\r\n }\r\n };\r\n\r\n const initializeSlider = useEffectEvent((value: number) => {\r\n setSliderValue(value);\r\n paintValueOnTrack(value);\r\n setFloaterPosition(value);\r\n });\r\n\r\n useEffect(() => {\r\n if (value !== undefined) {\r\n initializeSlider(value);\r\n }\r\n }, [value, disabled]);\r\n\r\n return (\r\n <div className={styles['slider_wrapper']}>\r\n <button\r\n type=\"button\"\r\n className={styles['slider_button']}\r\n onClick={() => handleButtonClick(-1)}\r\n aria-label={navigationLabels?.decrease ? navigationLabels.decrease : 'Verlaag waarde'}\r\n disabled={disabled}\r\n >\r\n <Icon name=\"Minus\" size={20} />\r\n </button>\r\n <div className={styles['slider_trackwrapper']} ref={trackWrapperRef}>\r\n <div\r\n className={clsx(styles['slider_balloon'], { [styles['slider_balloon--disabled']]: disabled })}\r\n style={{ left: balloonLeftPosition }}\r\n ref={balloonRef}\r\n >\r\n {sliderValue}\r\n {units && <span className={styles['slider_units']}>{units}</span>}\r\n </div>\r\n <input\r\n type=\"range\"\r\n className={styles['slider_input']}\r\n min={min}\r\n max={max}\r\n step={step}\r\n value={sliderValue}\r\n onChange={handleSliderChange}\r\n ref={sliderRef}\r\n style={{ '--thumb-size': `${THUMB_SIZE / REM}rem` } as CSSProperties}\r\n aria-valuemin={min}\r\n aria-valuemax={max}\r\n aria-valuenow={sliderValue}\r\n aria-valuetext={units ? `${sliderValue} ${units}` : `${sliderValue}`}\r\n aria-label=\"Slider\"\r\n disabled={disabled}\r\n />\r\n </div>\r\n <button\r\n type=\"button\"\r\n className={styles['slider_button']}\r\n onClick={() => handleButtonClick(1)}\r\n aria-label={navigationLabels?.increase ? navigationLabels.increase : 'Verhoog waarde'}\r\n disabled={disabled}\r\n >\r\n <Icon name=\"Plus\" size={20} />\r\n </button>\r\n </div>\r\n );\r\n};\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"Slider-Czd2xAGf.js","names":[],"sources":["../src/components/Slider/Slider.module.css","../src/components/Slider/Slider.tsx"],"sourcesContent":[".slider_wrapper {\n align-items: center;\n display: flex;\n gap: 1rem;\n width: 100%;\n}\n\n.slider_button {\n align-items: center;\n appearance: none;\n aspect-ratio: 1 / 1;\n background: none;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n color: var(--color-uva-black);\n cursor: pointer;\n display: flex;\n height: 2rem;\n justify-content: center;\n width: 2rem;\n}\n\n.slider_button:focus-visible {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n}\n\n.slider_button:hover {\n border-color: var(--color-grey-700);\n}\n\n.slider_button:disabled,\n.slider_button:disabled:hover {\n border: none;\n cursor: not-allowed;\n}\n\n.slider_trackwrapper {\n display: flex;\n position: relative;\n width: 100%;\n}\n\n.slider_balloon {\n color: var(--color-uva-black);\n font-weight: var(--semibold);\n position: absolute;\n text-align: center;\n top: -1.8125rem;\n white-space: nowrap;\n}\n\n.slider_input {\n appearance: none;\n background: var(--color-grey-400);\n flex-grow: 1;\n height: 0.25rem;\n}\n\n.slider_input:focus-visible {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n}\n\n.slider_input:disabled {\n cursor: not-allowed;\n}\n\n.slider_input::-webkit-slider-runnable-track {\n appearance: none;\n color: var(--color-navy-600);\n cursor: pointer;\n height: 2rem;\n margin-top: -0.125rem;\n}\n\n.slider_input:disabled::-webkit-slider-runnable-track {\n cursor: not-allowed;\n}\n\n.slider_input::-webkit-slider-thumb {\n appearance: none;\n background: var(--color-uva-white);\n border: 2px solid var(--color-navy-600);\n border-radius: 0.125rem;\n cursor: pointer;\n height: var(--thumb-size);\n margin-top: calc(0.5rem + 1px);\n position: relative;\n width: var(--thumb-size);\n}\n\n.slider_input:disabled::-webkit-slider-thumb,\n.slider_input:disabled:hover::-webkit-slider-thumb {\n background: var(--color-grey-700);\n border: 2px solid var(--color-grey-700);\n cursor: not-allowed;\n}\n\n.slider_input::-moz-range-thumb {\n appearance: none;\n background: var(--color-uva-white);\n border: 2px solid var(--color-navy-600);\n border-radius: 0.125rem;\n cursor: pointer;\n height: var(--thumb-size);\n margin-top: calc(-0.25rem - 1px);\n position: relative;\n width: var(--thumb-size);\n}\n\n.slider_input:disabled::-moz-range-thumb,\n.slider_input:hover:disabled::-moz-range-thumb {\n background: var(--color-grey-700);\n border: 2px solid var(--color-grey-700);\n cursor: not-allowed;\n}\n\n.slider_input::-ms-thumb {\n appearance: none;\n background: var(--color-uva-white);\n border: 2px solid var(--color-navy-600);\n border-radius: 0.125rem;\n cursor: pointer;\n height: var(--thumb-size);\n margin-top: calc(-0.25rem - 1px);\n position: relative;\n width: var(--thumb-size);\n}\n\n.slider_input:disabled::-ms-thumb,\n.slider_input:hover:disabled::-ms-thumb {\n background: var(--color-grey-700);\n border: 2px solid var(--color-grey-700);\n cursor: not-allowed;\n}\n\n.slider_input::-webkit-slider-thumb:hover {\n background: var(--color-navy-200);\n border: 2px solid var(--color-navy-800);\n}\n\n.slider_input::-moz-range-thumb:hover {\n background: var(--color-navy-200);\n border: 2px solid var(--color-navy-800);\n}\n\n.slider_input::-ms-thumb:hover {\n background: var(--color-navy-200);\n border: 2px solid var(--color-navy-800);\n}\n\n.slider_input::-moz-range-progress {\n background-color: var(--color-navy-600);\n}\n\n.slider_input::-moz-range-track {\n background-color: var(--color-grey-400);\n}\n\n.slider_input::-ms-fill-lower {\n background-color: var(--color-navy-600);\n}\n\n.slider_input::-ms-fill-upper {\n background-color: var(--color-grey-400);\n}\n","import { useEffect, useEffectEvent, useRef, useState } from 'react';\r\nimport { clsx } from 'clsx';\r\n\r\nimport type { CSSProperties } from 'react';\r\n\r\nimport styles from './Slider.module.css';\r\n\r\nimport { Icon } from 'components/Icon';\r\n\r\nexport interface SliderProps {\r\n /* The minimum value of the slider */\r\n min: number;\r\n /* The maximum value of the slider */\r\n max: number;\r\n /* The current value of the slider */\r\n value?: number;\r\n /* The step value of the slider */\r\n step?: number;\r\n /* The units to display next to the value */\r\n units?: string;\r\n /* aria-label labels for navigation buttons */\r\n navigationLabels?: { increase: string; decrease: string };\r\n /* Whether the slider is disabled */\r\n disabled?: boolean;\r\n /* Callback function when the value changes */\r\n onChange?: (value: number) => void;\r\n}\r\n\r\nconst HALF_STEP = 0.5;\r\nconst HUNDRED = 100;\r\nconst THUMB_SIZE = 16;\r\nconst REM = 16;\r\n\r\nexport const Slider = ({\r\n min,\r\n max,\r\n value,\r\n step = 1,\r\n units,\r\n navigationLabels,\r\n disabled = false,\r\n onChange,\r\n}: SliderProps) => {\r\n const [sliderValue, setSliderValue] = useState(value !== undefined ? value : (min + max) * HALF_STEP);\r\n const [balloonLeftPosition, setBalloonLeftPosition] = useState('');\r\n const sliderRef = useRef<HTMLInputElement>(null);\r\n const trackWrapperRef = useRef<HTMLDivElement>(null);\r\n const balloonRef = useRef<HTMLDivElement>(null);\r\n\r\n const handleButtonClick = (direction: number) => {\r\n const newValue = sliderValue + direction * step;\r\n if (newValue >= min && newValue <= max) {\r\n setSliderValue(newValue);\r\n paintValueOnTrack(newValue);\r\n setFloaterPosition(newValue);\r\n if (onChange) {\r\n onChange(newValue);\r\n }\r\n }\r\n };\r\n\r\n const handleSliderChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = Number(event.target.value);\r\n setSliderValue(newValue);\r\n paintValueOnTrack(newValue);\r\n setFloaterPosition(newValue);\r\n if (onChange) {\r\n onChange(newValue);\r\n }\r\n };\r\n\r\n const paintValueOnTrack = (valueToPaint: number) => {\r\n if (!sliderRef.current) return;\r\n const percentage = ((valueToPaint - min) / (max - min)) * HUNDRED;\r\n if (disabled) {\r\n sliderRef.current.style.background = `linear-gradient(\r\n to right, \r\n var(--color-grey-700) 0%, \r\n var(--color-grey-700) ${percentage}%, \r\n var(--color-grey-400) ${percentage}%, \r\n var(--color-grey-400) 100%)`;\r\n } else {\r\n sliderRef.current.style.background = `linear-gradient(\r\n to right, \r\n var(--color-navy-600) 0%, \r\n var(--color-navy-600) ${percentage}%, \r\n var(--color-grey-400) ${percentage}%, \r\n var(--color-grey-400) 100%)`;\r\n }\r\n };\r\n\r\n const setFloaterPosition = (value: number) => {\r\n if (trackWrapperRef.current && balloonRef.current) {\r\n const balloonWidth = balloonRef.current.clientWidth;\r\n const trackWidth = trackWrapperRef.current.clientWidth - THUMB_SIZE;\r\n const position = ((value - min) / (max - min)) * trackWidth;\r\n const leftPosition = position - (balloonWidth - THUMB_SIZE) * HALF_STEP;\r\n const clampedLeft = Math.max(0, Math.min(leftPosition, trackWidth - balloonWidth + THUMB_SIZE * HALF_STEP));\r\n setBalloonLeftPosition(`${clampedLeft}px`);\r\n }\r\n };\r\n\r\n const initializeSlider = useEffectEvent((value: number) => {\r\n setSliderValue(value);\r\n paintValueOnTrack(value);\r\n setFloaterPosition(value);\r\n });\r\n\r\n useEffect(() => {\r\n if (value !== undefined) {\r\n initializeSlider(value);\r\n }\r\n }, [value, disabled]);\r\n\r\n return (\r\n <div className={styles['slider_wrapper']}>\r\n <button\r\n type=\"button\"\r\n className={styles['slider_button']}\r\n onClick={() => handleButtonClick(-1)}\r\n aria-label={navigationLabels?.decrease ? navigationLabels.decrease : 'Verlaag waarde'}\r\n disabled={disabled}\r\n >\r\n <Icon name=\"Minus\" size={20} />\r\n </button>\r\n <div className={styles['slider_trackwrapper']} ref={trackWrapperRef}>\r\n <div\r\n className={clsx(styles['slider_balloon'], { [styles['slider_balloon--disabled']]: disabled })}\r\n style={{ left: balloonLeftPosition }}\r\n ref={balloonRef}\r\n >\r\n {sliderValue}\r\n {units && <span className={styles['slider_units']}>{units}</span>}\r\n </div>\r\n <input\r\n type=\"range\"\r\n className={styles['slider_input']}\r\n min={min}\r\n max={max}\r\n step={step}\r\n value={sliderValue}\r\n onChange={handleSliderChange}\r\n ref={sliderRef}\r\n style={{ '--thumb-size': `${THUMB_SIZE / REM}rem` } as CSSProperties}\r\n aria-valuemin={min}\r\n aria-valuemax={max}\r\n aria-valuenow={sliderValue}\r\n aria-valuetext={units ? `${sliderValue} ${units}` : `${sliderValue}`}\r\n aria-label=\"Slider\"\r\n disabled={disabled}\r\n />\r\n </div>\r\n <button\r\n type=\"button\"\r\n className={styles['slider_button']}\r\n onClick={() => handleButtonClick(1)}\r\n aria-label={navigationLabels?.increase ? navigationLabels.increase : 'Verhoog waarde'}\r\n disabled={disabled}\r\n >\r\n <Icon name=\"Plus\" size={20} />\r\n </button>\r\n </div>\r\n );\r\n};\r\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { t } from "./Sortable.module-CgDMpWM8.js";
3
3
  import { initialState as n, sortableReducer as r } from "./components/Sortable/sortableReducer.js";
4
4
  import { clearDraggingSource as i, clearDraggingTarget as a, dragEnd as o, dragStart as s, drop as c, moveToPosition as l, reset as u, setClone as d, setDraggingSource as f, setDraggingTarget as p } from "./components/Sortable/actions.js";
@@ -144,4 +144,4 @@ function E() {
144
144
  //#endregion
145
145
  export { E as n, x as r, T as t };
146
146
 
147
- //# sourceMappingURL=SortableProvider-DV6gWmq_.js.map
147
+ //# sourceMappingURL=SortableProvider-D-6Ttz0h.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SortableProvider-DV6gWmq_.js","names":[],"sources":["../src/components/Sortable/components/SortableContainer.tsx","../src/components/Sortable/SortableProvider.tsx"],"sourcesContent":["import { cloneElement, useEffect, useRef } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { DragEvent } from 'react';\n\nimport styles from 'components/Sortable/Sortable.module.css';\nimport { useSortable } from 'components/Sortable/SortableProvider';\n\nexport type OnSort = (indices: number[]) => void;\n\ninterface SortableContainerProps {\n scrollable?: boolean;\n hideNumbers?: boolean;\n onSort?: OnSort;\n}\n\nexport function SortableContainer({ scrollable, hideNumbers, onSort }: SortableContainerProps) {\n const { clone, draggingTarget, drop, sortableItems, setDraggingTarget, reset, indices } = useSortable();\n const containerRef = useRef<HTMLUListElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const indicesRef = useRef<number[]>(indices);\n\n function getTargetIndex(event: DragEvent<HTMLLIElement>) {\n const sortableContainer = containerRef.current;\n\n if (!sortableContainer?.hasChildNodes()) return;\n\n const listItemNode = event.currentTarget;\n const childNodes = Array.from(sortableContainer.childNodes);\n const targetIndex = childNodes.findIndex((node) => node.isEqualNode(listItemNode));\n\n return targetIndex;\n }\n\n function handleDrop(event: DragEvent<HTMLLIElement>) {\n const targetIndex = getTargetIndex(event);\n\n if (targetIndex === undefined) return;\n\n if (clone && wrapperRef.current) wrapperRef.current.removeChild(clone);\n\n drop(targetIndex);\n }\n\n function handleDragOver(event: DragEvent<HTMLLIElement>) {\n // Prevent default to allow drop\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n\n if (clone) {\n const { clientX, clientY } = event;\n const { x, y, width, height } = event.currentTarget.getBoundingClientRect();\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n const grabPosition = height / 2 - (clientY - y);\n\n // lock drag image movement to x-axis and mouse pointer\n clone.setAttribute(\n 'style',\n `\n left: ${clientX - (clientX - x)}px;\n top: ${y - grabPosition}px;\n height: ${height}px;\n width: ${width}px;\n visibility: visible;\n `\n );\n }\n\n const targetIndex = getTargetIndex(event);\n\n if (targetIndex === undefined || targetIndex === draggingTarget) return;\n\n setDraggingTarget(targetIndex);\n }\n\n function handleContainerDragLeave(event: DragEvent<HTMLUListElement>) {\n const { relatedTarget } = event;\n\n const within = relatedTarget !== null && containerRef.current?.contains(relatedTarget as Node);\n\n if (!within) {\n reset();\n\n if (clone) {\n clone.setAttribute('style', 'visibility: hidden;');\n }\n }\n }\n\n useEffect(() => {\n if (!clone || !wrapperRef.current) return;\n\n wrapperRef.current.appendChild(clone);\n\n return function () {\n clone.remove();\n };\n }, [clone]);\n\n useEffect(() => {\n if (!onSort) return;\n\n if (indices.valueOf() !== indicesRef.current.valueOf()) {\n onSort(indices);\n\n indicesRef.current = indices;\n }\n }, [indices, indicesRef, onSort]);\n\n return (\n <div\n className={clsx(styles['sortable__wrapper'], { [styles['sortable__wrapper--scrollable']]: scrollable })}\n ref={wrapperRef}\n >\n <ul\n className={clsx(styles['sortable__container'], {\n [styles['sortable__container--drag-over']]: clone !== undefined,\n })}\n onDragLeave={handleContainerDragLeave}\n ref={containerRef}\n role=\"presentation\"\n >\n {sortableItems.map((child, index) => (\n <li\n className={clsx(styles['sortable__drop-target'], {\n [styles['sortable__drop-target--no-number']]: hideNumbers,\n })}\n draggable={false}\n key={index}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n role=\"presentation\"\n >\n {cloneElement(child, { index })}\n </li>\n ))}\n </ul>\n </div>\n );\n}\n","import { createContext, useContext, useReducer, useRef } from 'react';\n\nimport type { ReactElement, ReactNode } from 'react';\nimport type { SortableStateType } from './sortableReducer';\nimport type { SortableItem, SortableItemProps } from './components/SortableItem';\n\nimport { sortableReducer, initialState } from './sortableReducer';\nimport { SortableContainer } from './components/SortableContainer';\nimport * as actions from './actions';\n\ntype SortableContextType = {\n clearDraggingSource: () => void;\n clearDraggingTarget: () => void;\n dragEnd: () => void;\n dragStart: (index: number) => void;\n drop: (index: number) => void;\n moveToPosition: (index: number) => void;\n reset: () => void;\n setClone: (node: Element) => void;\n setDraggingSource: (index: number) => void;\n setDraggingTarget: (index: number) => void;\n};\n\nconst SortableContext = createContext<(SortableContextType & SortableStateType) | undefined>(undefined);\n\ntype SortableItems = ReactElement<SortableItemProps, typeof SortableItem>[];\n\ninterface Props<T = unknown> {\n renderItems: SortableItems;\n dataItems: T[];\n scrollable?: boolean;\n hideNumbers?: boolean;\n onSort?: (items: T[]) => void;\n children?: ReactNode;\n}\n\nfunction isReactElementWithIndex(value: string | ReactElement): value is ReactElement<{ index: number }> {\n return typeof value !== 'string';\n}\n\nconst init = (renderItems: SortableItems): SortableStateType => {\n const reactChildren = renderItems.filter(isReactElementWithIndex);\n\n return {\n ...initialState,\n indices: reactChildren.map(({ props }) => props.index),\n maxIndex: reactChildren.length - 1,\n sortableItems: reactChildren,\n };\n};\n\nexport function SortableProvider<T>({ renderItems, dataItems, scrollable, hideNumbers, onSort }: Props<T>) {\n const persistentItems = useRef(dataItems);\n\n const [state, dispatch] = useReducer(sortableReducer, renderItems, init);\n\n function setDraggingSource(index: number) {\n dispatch(actions.setDraggingSource(index));\n }\n\n function setDraggingTarget(index: number) {\n dispatch(actions.setDraggingTarget(index));\n }\n\n function moveToPosition(index: number) {\n dispatch(actions.moveToPosition(index));\n }\n\n function clearDraggingTarget() {\n dispatch(actions.clearDraggingTarget());\n }\n\n function clearDraggingSource() {\n dispatch(actions.clearDraggingSource());\n }\n\n function drop(index: number) {\n dispatch(actions.drop(index));\n }\n\n function dragStart(index: number) {\n dispatch(actions.dragStart(index));\n }\n\n function dragEnd() {\n dispatch(actions.dragEnd());\n }\n\n function reset() {\n dispatch(actions.reset());\n }\n\n function setClone(node: Element) {\n dispatch(actions.setClone(node));\n }\n\n function onHandleSort(sortedIndices: number[]) {\n const sortedData = sortedIndices.map((index) => persistentItems.current[index]);\n onSort && onSort(sortedData);\n }\n\n return (\n <SortableContext.Provider\n value={{\n ...state,\n clearDraggingSource,\n clearDraggingTarget,\n dragEnd,\n dragStart,\n drop,\n moveToPosition,\n reset,\n setClone,\n setDraggingSource,\n setDraggingTarget,\n }}\n >\n <SortableContainer scrollable={scrollable} hideNumbers={hideNumbers} onSort={onHandleSort} />\n </SortableContext.Provider>\n );\n}\n\nexport function useSortable() {\n const context = useContext(SortableContext);\n\n if (context === undefined) {\n throw new Error('useSortable must be used within a SortableProvider');\n }\n\n return context;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SortableProvider-D-6Ttz0h.js","names":[],"sources":["../src/components/Sortable/components/SortableContainer.tsx","../src/components/Sortable/SortableProvider.tsx"],"sourcesContent":["import { cloneElement, useEffect, useRef } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { DragEvent } from 'react';\n\nimport styles from 'components/Sortable/Sortable.module.css';\nimport { useSortable } from 'components/Sortable/SortableProvider';\n\nexport type OnSort = (indices: number[]) => void;\n\ninterface SortableContainerProps {\n scrollable?: boolean;\n hideNumbers?: boolean;\n onSort?: OnSort;\n}\n\nexport function SortableContainer({ scrollable, hideNumbers, onSort }: SortableContainerProps) {\n const { clone, draggingTarget, drop, sortableItems, setDraggingTarget, reset, indices } = useSortable();\n const containerRef = useRef<HTMLUListElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const indicesRef = useRef<number[]>(indices);\n\n function getTargetIndex(event: DragEvent<HTMLLIElement>) {\n const sortableContainer = containerRef.current;\n\n if (!sortableContainer?.hasChildNodes()) return;\n\n const listItemNode = event.currentTarget;\n const childNodes = Array.from(sortableContainer.childNodes);\n const targetIndex = childNodes.findIndex((node) => node.isEqualNode(listItemNode));\n\n return targetIndex;\n }\n\n function handleDrop(event: DragEvent<HTMLLIElement>) {\n const targetIndex = getTargetIndex(event);\n\n if (targetIndex === undefined) return;\n\n if (clone && wrapperRef.current) wrapperRef.current.removeChild(clone);\n\n drop(targetIndex);\n }\n\n function handleDragOver(event: DragEvent<HTMLLIElement>) {\n // Prevent default to allow drop\n event.preventDefault();\n event.dataTransfer.dropEffect = 'move';\n\n if (clone) {\n const { clientX, clientY } = event;\n const { x, y, width, height } = event.currentTarget.getBoundingClientRect();\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n const grabPosition = height / 2 - (clientY - y);\n\n // lock drag image movement to x-axis and mouse pointer\n clone.setAttribute(\n 'style',\n `\n left: ${clientX - (clientX - x)}px;\n top: ${y - grabPosition}px;\n height: ${height}px;\n width: ${width}px;\n visibility: visible;\n `\n );\n }\n\n const targetIndex = getTargetIndex(event);\n\n if (targetIndex === undefined || targetIndex === draggingTarget) return;\n\n setDraggingTarget(targetIndex);\n }\n\n function handleContainerDragLeave(event: DragEvent<HTMLUListElement>) {\n const { relatedTarget } = event;\n\n const within = relatedTarget !== null && containerRef.current?.contains(relatedTarget as Node);\n\n if (!within) {\n reset();\n\n if (clone) {\n clone.setAttribute('style', 'visibility: hidden;');\n }\n }\n }\n\n useEffect(() => {\n if (!clone || !wrapperRef.current) return;\n\n wrapperRef.current.appendChild(clone);\n\n return function () {\n clone.remove();\n };\n }, [clone]);\n\n useEffect(() => {\n if (!onSort) return;\n\n if (indices.valueOf() !== indicesRef.current.valueOf()) {\n onSort(indices);\n\n indicesRef.current = indices;\n }\n }, [indices, indicesRef, onSort]);\n\n return (\n <div\n className={clsx(styles['sortable__wrapper'], { [styles['sortable__wrapper--scrollable']]: scrollable })}\n ref={wrapperRef}\n >\n <ul\n className={clsx(styles['sortable__container'], {\n [styles['sortable__container--drag-over']]: clone !== undefined,\n })}\n onDragLeave={handleContainerDragLeave}\n ref={containerRef}\n role=\"presentation\"\n >\n {sortableItems.map((child, index) => (\n <li\n className={clsx(styles['sortable__drop-target'], {\n [styles['sortable__drop-target--no-number']]: hideNumbers,\n })}\n draggable={false}\n key={index}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n role=\"presentation\"\n >\n {cloneElement(child, { index })}\n </li>\n ))}\n </ul>\n </div>\n );\n}\n","import { createContext, useContext, useReducer, useRef } from 'react';\n\nimport type { ReactElement, ReactNode } from 'react';\nimport type { SortableStateType } from './sortableReducer';\nimport type { SortableItem, SortableItemProps } from './components/SortableItem';\n\nimport { sortableReducer, initialState } from './sortableReducer';\nimport { SortableContainer } from './components/SortableContainer';\nimport * as actions from './actions';\n\ntype SortableContextType = {\n clearDraggingSource: () => void;\n clearDraggingTarget: () => void;\n dragEnd: () => void;\n dragStart: (index: number) => void;\n drop: (index: number) => void;\n moveToPosition: (index: number) => void;\n reset: () => void;\n setClone: (node: Element) => void;\n setDraggingSource: (index: number) => void;\n setDraggingTarget: (index: number) => void;\n};\n\nconst SortableContext = createContext<(SortableContextType & SortableStateType) | undefined>(undefined);\n\ntype SortableItems = ReactElement<SortableItemProps, typeof SortableItem>[];\n\ninterface Props<T = unknown> {\n renderItems: SortableItems;\n dataItems: T[];\n scrollable?: boolean;\n hideNumbers?: boolean;\n onSort?: (items: T[]) => void;\n children?: ReactNode;\n}\n\nfunction isReactElementWithIndex(value: string | ReactElement): value is ReactElement<{ index: number }> {\n return typeof value !== 'string';\n}\n\nconst init = (renderItems: SortableItems): SortableStateType => {\n const reactChildren = renderItems.filter(isReactElementWithIndex);\n\n return {\n ...initialState,\n indices: reactChildren.map(({ props }) => props.index),\n maxIndex: reactChildren.length - 1,\n sortableItems: reactChildren,\n };\n};\n\nexport function SortableProvider<T>({ renderItems, dataItems, scrollable, hideNumbers, onSort }: Props<T>) {\n const persistentItems = useRef(dataItems);\n\n const [state, dispatch] = useReducer(sortableReducer, renderItems, init);\n\n function setDraggingSource(index: number) {\n dispatch(actions.setDraggingSource(index));\n }\n\n function setDraggingTarget(index: number) {\n dispatch(actions.setDraggingTarget(index));\n }\n\n function moveToPosition(index: number) {\n dispatch(actions.moveToPosition(index));\n }\n\n function clearDraggingTarget() {\n dispatch(actions.clearDraggingTarget());\n }\n\n function clearDraggingSource() {\n dispatch(actions.clearDraggingSource());\n }\n\n function drop(index: number) {\n dispatch(actions.drop(index));\n }\n\n function dragStart(index: number) {\n dispatch(actions.dragStart(index));\n }\n\n function dragEnd() {\n dispatch(actions.dragEnd());\n }\n\n function reset() {\n dispatch(actions.reset());\n }\n\n function setClone(node: Element) {\n dispatch(actions.setClone(node));\n }\n\n function onHandleSort(sortedIndices: number[]) {\n const sortedData = sortedIndices.map((index) => persistentItems.current[index]);\n onSort && onSort(sortedData);\n }\n\n return (\n <SortableContext.Provider\n value={{\n ...state,\n clearDraggingSource,\n clearDraggingTarget,\n dragEnd,\n dragStart,\n drop,\n moveToPosition,\n reset,\n setClone,\n setDraggingSource,\n setDraggingTarget,\n }}\n >\n <SortableContainer scrollable={scrollable} hideNumbers={hideNumbers} onSort={onHandleSort} />\n </SortableContext.Provider>\n );\n}\n\nexport function useSortable() {\n const context = useContext(SortableContext);\n\n if (context === undefined) {\n throw new Error('useSortable must be used within a SortableProvider');\n }\n\n return context;\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  import './assets/StatusBage.css';var n = {
4
4
  statusbadge: "_statusbadge_1irx5_1",
@@ -10,4 +10,4 @@ import './assets/StatusBage.css';var n = {
10
10
  //#endregion
11
11
  export { r as t };
12
12
 
13
- //# sourceMappingURL=StatusBage-CfEIuIPa.js.map
13
+ //# sourceMappingURL=StatusBage-hJmNPqtk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBage-CfEIuIPa.js","names":[],"sources":["../src/components/StatusBadge/StatusBadge.module.css","../src/components/StatusBadge/StatusBage.tsx"],"sourcesContent":[".statusbadge {\n align-items: center;\n background-color: var(--color-grey-200);\n color: var(--color-grey-700);\n display: flex;\n font-family: inherit;\n font-size: var(--font-size-text-non-essential);\n height: 1.5rem;\n padding: 0 0.5rem;\n white-space: nowrap;\n width: fit-content;\n}\n\n.statusbadge--high-contrast {\n background-color: var(--color-uva-white);\n}\n","import { clsx } from 'clsx';\n\nimport styles from './StatusBadge.module.css';\n\nexport interface StatusBadgeProps {\n /** Text on the badge */\n label: string;\n /** true to render the card with high contrast colors; otherwise, false. The default is false. */\n highContrast?: boolean;\n}\n\nexport const StatusBadge = ({ label, highContrast = false }: StatusBadgeProps) => {\n return (\n <div className={clsx(styles['statusbadge'], [highContrast && styles['statusbadge--high-contrast']])}>{label}</div>\n );\n};\n"],"mappings":";;;;;GCWa,KAAe,EAAE,UAAO,kBAAe,SAEhD,kBAAC,OAAD;CAAK,WAAW,EAAK,EAAO,aAAgB,CAAC,KAAgB,EAAO,6BAA6B,CAAC;WAAI;AAAW,CAAA"}
1
+ {"version":3,"file":"StatusBage-hJmNPqtk.js","names":[],"sources":["../src/components/StatusBadge/StatusBadge.module.css","../src/components/StatusBadge/StatusBage.tsx"],"sourcesContent":[".statusbadge {\n align-items: center;\n background-color: var(--color-grey-200);\n color: var(--color-grey-700);\n display: flex;\n font-family: inherit;\n font-size: var(--font-size-text-non-essential);\n height: 1.5rem;\n padding: 0 0.5rem;\n white-space: nowrap;\n width: fit-content;\n}\n\n.statusbadge--high-contrast {\n background-color: var(--color-uva-white);\n}\n","import { clsx } from 'clsx';\n\nimport styles from './StatusBadge.module.css';\n\nexport interface StatusBadgeProps {\n /** Text on the badge */\n label: string;\n /** true to render the card with high contrast colors; otherwise, false. The default is false. */\n highContrast?: boolean;\n}\n\nexport const StatusBadge = ({ label, highContrast = false }: StatusBadgeProps) => {\n return (\n <div className={clsx(styles['statusbadge'], [highContrast && styles['statusbadge--high-contrast']])}>{label}</div>\n );\n};\n"],"mappings":";;;;;GCWa,KAAe,EAAE,UAAO,kBAAe,SAEhD,kBAAC,OAAD;CAAK,WAAW,EAAK,EAAO,aAAgB,CAAC,KAAgB,EAAO,6BAA6B,CAAC;WAAI;AAAW,CAAA"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { Icon as t } from "./components/Icon/Icon.js";
3
3
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
4
  import './assets/StatusPill.css';//#region src/components/StatusPill/StatusPill.module.css
@@ -27,4 +27,4 @@ function o({ status: o, variant: s = "default", label: c }) {
27
27
  //#endregion
28
28
  export { o as t };
29
29
 
30
- //# sourceMappingURL=StatusPill-CbJV4t-V.js.map
30
+ //# sourceMappingURL=StatusPill-vdqU92pW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusPill-CbJV4t-V.js","names":[],"sources":["../src/components/StatusPill/StatusPill.module.css","../src/components/StatusPill/StatusPill.tsx"],"sourcesContent":[".status-pill {\n align-items: center;\n border-radius: 1.5rem;\n display: flex;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n width: fit-content;\n}\n\n.status-pill__possible {\n background-color: var(--color-forest-100);\n color: var(--color-forest-900);\n}\n\n.status-pill__impossible {\n background-color: var(--color-red-100);\n color: var(--color-red-800);\n}\n\n.status-pill__new {\n background-color: var(--color-navy-100);\n color: var(--color-navy-600);\n font-size: var(--font-size-text-non-essential);\n}\n\n.status-pill__dark {\n background-color: var(--color-uva-black);\n color: var(--color-uva-white);\n font-size: var(--font-size-text-non-essential);\n font-weight: var(--semibold);\n}\n\n.status-pill--bar {\n border-radius: 0;\n justify-content: center;\n padding: 0.5rem;\n width: 100%;\n}\n\n.status-pill--compact {\n height: 1.125rem;\n padding: 0.125rem 0.5rem 0 0.5rem;\n}\n","import { clsx } from 'clsx';\n\nimport type { IconProps } from 'components/Icon';\n\nimport styles from './StatusPill.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport interface StatusPillProps {\n /** The status to convey. */\n status: 'possible' | 'impossible' | 'new' | 'dark';\n /** The variant of the pill. */\n variant?: 'default' | 'bar' | 'compact';\n /** A description of the status. */\n label: string;\n}\n\nconst iconNameMap: Partial<Record<StatusPillProps['status'], IconProps['name']>> = {\n possible: 'CheckCircleFillMini',\n impossible: 'CrossCircleFillMini',\n};\n\n/** Represents a component for a status pill. */\nexport function StatusPill({ status, variant = 'default', label }: StatusPillProps) {\n return (\n <span\n className={clsx(\n styles['status-pill'],\n styles[`status-pill__${status}`],\n variant !== 'default' && styles[`status-pill--${variant}`]\n )}\n >\n {(status === 'possible' || status === 'impossible') && (\n <Icon name={iconNameMap[status]!} title={status} size={16} />\n )}\n {label}\n </span>\n );\n}\n"],"mappings":";;;;;;;;;;;;GCiBM,IAA6E;CACjF,UAAU;CACV,YAAY;AACd;AAGA,SAAgB,EAAW,EAAE,WAAQ,aAAU,WAAW,YAA0B;CAClF,OACE,kBAAC,QAAD;EACE,WAAW,EACT,EAAO,gBACP,EAAO,gBAAgB,MACvB,MAAY,aAAa,EAAO,gBAAgB,IAClD;YALF,EAOI,MAAW,cAAc,MAAW,iBACpC,kBAAC,GAAD;GAAM,MAAM,EAAY;GAAU,OAAO;GAAQ,MAAM;EAAK,CAAA,GAE7D,CACG;;AAEV"}
1
+ {"version":3,"file":"StatusPill-vdqU92pW.js","names":[],"sources":["../src/components/StatusPill/StatusPill.module.css","../src/components/StatusPill/StatusPill.tsx"],"sourcesContent":[".status-pill {\n align-items: center;\n border-radius: 1.5rem;\n display: flex;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n width: fit-content;\n}\n\n.status-pill__possible {\n background-color: var(--color-forest-100);\n color: var(--color-forest-900);\n}\n\n.status-pill__impossible {\n background-color: var(--color-red-100);\n color: var(--color-red-800);\n}\n\n.status-pill__new {\n background-color: var(--color-navy-100);\n color: var(--color-navy-600);\n font-size: var(--font-size-text-non-essential);\n}\n\n.status-pill__dark {\n background-color: var(--color-uva-black);\n color: var(--color-uva-white);\n font-size: var(--font-size-text-non-essential);\n font-weight: var(--semibold);\n}\n\n.status-pill--bar {\n border-radius: 0;\n justify-content: center;\n padding: 0.5rem;\n width: 100%;\n}\n\n.status-pill--compact {\n height: 1.125rem;\n padding: 0.125rem 0.5rem 0 0.5rem;\n}\n","import { clsx } from 'clsx';\n\nimport type { IconProps } from 'components/Icon';\n\nimport styles from './StatusPill.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport interface StatusPillProps {\n /** The status to convey. */\n status: 'possible' | 'impossible' | 'new' | 'dark';\n /** The variant of the pill. */\n variant?: 'default' | 'bar' | 'compact';\n /** A description of the status. */\n label: string;\n}\n\nconst iconNameMap: Partial<Record<StatusPillProps['status'], IconProps['name']>> = {\n possible: 'CheckCircleFillMini',\n impossible: 'CrossCircleFillMini',\n};\n\n/** Represents a component for a status pill. */\nexport function StatusPill({ status, variant = 'default', label }: StatusPillProps) {\n return (\n <span\n className={clsx(\n styles['status-pill'],\n styles[`status-pill__${status}`],\n variant !== 'default' && styles[`status-pill--${variant}`]\n )}\n >\n {(status === 'possible' || status === 'impossible') && (\n <Icon name={iconNameMap[status]!} title={status} size={16} />\n )}\n {label}\n </span>\n );\n}\n"],"mappings":";;;;;;;;;;;;GCiBM,IAA6E;CACjF,UAAU;CACV,YAAY;AACd;AAGA,SAAgB,EAAW,EAAE,WAAQ,aAAU,WAAW,YAA0B;CAClF,OACE,kBAAC,QAAD;EACE,WAAW,EACT,EAAO,gBACP,EAAO,gBAAgB,MACvB,MAAY,aAAa,EAAO,gBAAgB,IAClD;YALF,EAOI,MAAW,cAAc,MAAW,iBACpC,kBAAC,GAAD;GAAM,MAAM,EAAY;GAAU,OAAO;GAAQ,MAAM;EAAK,CAAA,GAE7D,CACG;;AAEV"}
@@ -1,6 +1,6 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { Icon as t } from "./components/Icon/Icon.js";
3
- import { t as n } from "./LexicalComposerContext.prod-y_BRxu3Z.js";
3
+ import { t as n } from "./LexicalComposerContext.prod-DumMmRBt.js";
4
4
  import { useTranslation as r } from "./components/RteEditor/hooks/useTranslation.js";
5
5
  import { useEffect as i, useRef as a, useState as o } from "react";
6
6
  import { jsx as s, jsxs as c } from "react/jsx-runtime";
@@ -116,4 +116,4 @@ var l = {
116
116
  //#endregion
117
117
  export { h as t };
118
118
 
119
- //# sourceMappingURL=TableCellContextMenu-9V8mnPmU.js.map
119
+ //# sourceMappingURL=TableCellContextMenu--4IdoKAU.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableCellContextMenu-9V8mnPmU.js","names":[],"sources":["../src/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.module.css","../src/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.tsx"],"sourcesContent":[".context-menu__wrapper {\n left: 0;\n min-width: 10rem;\n position: fixed;\n top: 0;\n visibility: visible;\n z-index: 1000;\n}\n\n.context-menu__button {\n align-items: center;\n background-color: var(--color-grey-300);\n border: 0;\n border-radius: 4px;\n color: var(--color-grey-700);\n display: flex;\n height: 1.35rem;\n justify-content: center;\n position: absolute;\n right: 0.25rem;\n top: -1.6rem;\n width: 1.35rem;\n}\n\n.context-menu {\n background-color: var(--color-uva-white);\n border: 1px solid var(--color-grey-500);\n border-radius: 4px;\n box-shadow: 0 2px 6px rgba(0 0 0 / 20%);\n height: 0;\n list-style-type: none;\n margin: -2px 0 0;\n overflow: hidden;\n padding: 0;\n visibility: hidden;\n}\n\n.context-menu--open {\n height: auto;\n visibility: visible;\n}\n\n.context-menu__item {\n align-items: center;\n background-color: var(--color-uva-white);\n border: none;\n color: var(--color-uva-black);\n display: flex;\n padding: 0.65rem;\n width: 100%;\n}\n\n.context-menu__item:hover {\n background-color: var(--color-grey-300);\n}\n\n.context-menu__item-divider {\n border-bottom: 1px solid var(--color-grey-500);\n}\n\n.context-menu__wrapper--hidden,\n.context-menu__wrapper--hidden .context-menu {\n visibility: hidden;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { clsx } from 'clsx';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\n\nimport type { Position } from 'components/RteEditor/Plugins/ToolbarPlugin';\n\nimport styles from './TableCellContextMenu.module.css';\n\nimport { Icon } from 'components/Icon';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\nexport type Actions =\n | 'insertRowAbove'\n | 'insertRowBelow'\n | 'deleteRow'\n | 'deleteTable'\n | 'insertColumnLeft'\n | 'insertColumnRight'\n | 'deleteColumn';\ninterface TableCellContextMenuProps {\n position: Position;\n parentScrollPosition: number;\n onAction: (action: Actions) => void;\n}\n\nconst CONTEXT_MENU_OFFSET = 25;\nconst WHITE_SPACE = 10;\nconst BUTTON_SHIFT = 4;\nconst BUTTON_RESET = 25;\n\nconst measureElement = (srcElement: HTMLElement) => {\n const measureElement = srcElement.cloneNode(true) as HTMLElement;\n measureElement.style.height = 'auto';\n measureElement.style.left = '-3000px';\n document.body.appendChild(measureElement);\n const height = measureElement.getBoundingClientRect().height;\n document.body.removeChild(measureElement);\n return height;\n};\n\nexport const TableCellContextMenu = ({ position, parentScrollPosition, onAction }: TableCellContextMenuProps) => {\n const t = useTranslation();\n const [isOpen, setIsOpen] = useState(false);\n const [isHidden, setIsHidden] = useState(false);\n const [localPosition, setLocalPosition] = useState<Position>({ xPos: 0, yPos: 0, height: 0 });\n const [menuHeight, setMenuHeight] = useState(0);\n const startScrollPosition = useRef(0);\n const menuRef = useRef<HTMLUListElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const [editor] = useLexicalComposerContext();\n\n const handleAction = (action: Actions) => {\n onAction(action);\n setIsOpen(false);\n };\n\n const flipMenuIfNotInViewport = () => {\n const menuWidth = menuRef.current ? menuRef.current.getBoundingClientRect().width : 0;\n\n if (containerRef.current && menuRef.current && buttonRef.current) {\n if (localPosition.xPos < menuWidth && containerRef.current) {\n containerRef.current.style.left = `${menuWidth - localPosition.xPos + WHITE_SPACE}px`;\n buttonRef.current.style.right = `${menuWidth - localPosition.xPos + BUTTON_SHIFT + WHITE_SPACE}px`;\n } else {\n containerRef.current.style.left = '0px';\n buttonRef.current.style.right = `${BUTTON_SHIFT}px`;\n }\n\n if (!menuHeight) {\n setMenuHeight(measureElement(menuRef.current));\n }\n\n if (menuHeight > document.documentElement.clientHeight - localPosition.yPos) {\n containerRef.current.style.top = `-${menuHeight + localPosition.height}px`;\n buttonRef.current.style.top = `${menuHeight + BUTTON_SHIFT}px`;\n buttonRef.current.style.transform = 'rotate(180deg)';\n } else {\n containerRef.current.style.top = '0px';\n buttonRef.current.style.top = `-${BUTTON_RESET}px`;\n buttonRef.current.style.transform = 'none';\n }\n }\n };\n\n const setMenuPosition = () => {\n flipMenuIfNotInViewport();\n return `translate(${(localPosition?.xPos ?? 0) - (menuRef.current ? menuRef.current.getBoundingClientRect().width : 0)}px, ${localPosition.yPos - (parentScrollPosition - startScrollPosition.current)}px)`;\n };\n\n useEffect(() => {\n setLocalPosition(position);\n if (position) {\n startScrollPosition.current = parentScrollPosition;\n }\n setIsOpen(false);\n setIsHidden(false);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [position]);\n\n useEffect(() => {\n if (buttonRef.current) {\n const rect = buttonRef.current.getBoundingClientRect();\n const rootElement = editor.getRootElement();\n if (!rootElement) return;\n if (\n rect.top - rootElement.getBoundingClientRect().top <= 0 ||\n rect.top - rootElement.getBoundingClientRect().bottom + CONTEXT_MENU_OFFSET >= 0\n ) {\n setIsHidden(true);\n } else {\n setIsHidden(false);\n }\n flipMenuIfNotInViewport();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [parentScrollPosition]);\n\n return (\n <div\n className={clsx(styles['context-menu__wrapper'], [isHidden && styles['context-menu__wrapper--hidden']])}\n style={{\n transform: `${setMenuPosition()}`,\n }}\n ref={containerRef}\n >\n <button\n type=\"button\"\n onClick={() => setIsOpen((prev) => !prev)}\n className={styles['context-menu__button']}\n ref={buttonRef}\n >\n <Icon name=\"CheveronDown\" size={16} />\n </button>\n <ul ref={menuRef} className={clsx(styles['context-menu'], isOpen && styles['context-menu--open'])}>\n <li>\n <button\n type=\"button\"\n onClick={() => handleAction('insertRowAbove')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableInsertRowAbove}\n >\n {t.table.insertRowAbove}\n </button>\n </li>\n <li>\n <button\n type=\"button\"\n onClick={() => handleAction('insertRowBelow')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableInsertRowBelow}\n >\n {t.table.insertRowBelow}\n </button>\n </li>\n <li className={styles['context-menu__item-divider']}>\n <button\n type=\"button\"\n onClick={() => handleAction('deleteRow')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableDeleteRow}\n >\n {t.table.deleteRow}\n </button>\n </li>\n\n <li>\n <button\n type=\"button\"\n onClick={() => handleAction('insertColumnLeft')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableInsertColumnLeft}\n >\n {t.table.insertColumnLeft}\n </button>\n </li>\n <li>\n <button\n type=\"button\"\n onClick={() => handleAction('insertColumnRight')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableInsertColumnRight}\n >\n {t.table.insertColumnRight}\n </button>\n </li>\n <li className={styles['context-menu__item-divider']}>\n <button\n type=\"button\"\n onClick={() => handleAction('deleteColumn')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableDeleteColumn}\n >\n {t.table.deleteColumn}\n </button>\n </li>\n\n <li>\n <button\n type=\"button\"\n onClick={() => handleAction('deleteTable')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableDeleteTable}\n >\n {t.table.deleteTable}\n </button>\n </li>\n </ul>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableCellContextMenu--4IdoKAU.js","names":[],"sources":["../src/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.module.css","../src/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.tsx"],"sourcesContent":[".context-menu__wrapper {\n left: 0;\n min-width: 10rem;\n position: fixed;\n top: 0;\n visibility: visible;\n z-index: 1000;\n}\n\n.context-menu__button {\n align-items: center;\n background-color: var(--color-grey-300);\n border: 0;\n border-radius: 4px;\n color: var(--color-grey-700);\n display: flex;\n height: 1.35rem;\n justify-content: center;\n position: absolute;\n right: 0.25rem;\n top: -1.6rem;\n width: 1.35rem;\n}\n\n.context-menu {\n background-color: var(--color-uva-white);\n border: 1px solid var(--color-grey-500);\n border-radius: 4px;\n box-shadow: 0 2px 6px rgba(0 0 0 / 20%);\n height: 0;\n list-style-type: none;\n margin: -2px 0 0;\n overflow: hidden;\n padding: 0;\n visibility: hidden;\n}\n\n.context-menu--open {\n height: auto;\n visibility: visible;\n}\n\n.context-menu__item {\n align-items: center;\n background-color: var(--color-uva-white);\n border: none;\n color: var(--color-uva-black);\n display: flex;\n padding: 0.65rem;\n width: 100%;\n}\n\n.context-menu__item:hover {\n background-color: var(--color-grey-300);\n}\n\n.context-menu__item-divider {\n border-bottom: 1px solid var(--color-grey-500);\n}\n\n.context-menu__wrapper--hidden,\n.context-menu__wrapper--hidden .context-menu {\n visibility: hidden;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { clsx } from 'clsx';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\n\nimport type { Position } from 'components/RteEditor/Plugins/ToolbarPlugin';\n\nimport styles from './TableCellContextMenu.module.css';\n\nimport { Icon } from 'components/Icon';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\nexport type Actions =\n | 'insertRowAbove'\n | 'insertRowBelow'\n | 'deleteRow'\n | 'deleteTable'\n | 'insertColumnLeft'\n | 'insertColumnRight'\n | 'deleteColumn';\ninterface TableCellContextMenuProps {\n position: Position;\n parentScrollPosition: number;\n onAction: (action: Actions) => void;\n}\n\nconst CONTEXT_MENU_OFFSET = 25;\nconst WHITE_SPACE = 10;\nconst BUTTON_SHIFT = 4;\nconst BUTTON_RESET = 25;\n\nconst measureElement = (srcElement: HTMLElement) => {\n const measureElement = srcElement.cloneNode(true) as HTMLElement;\n measureElement.style.height = 'auto';\n measureElement.style.left = '-3000px';\n document.body.appendChild(measureElement);\n const height = measureElement.getBoundingClientRect().height;\n document.body.removeChild(measureElement);\n return height;\n};\n\nexport const TableCellContextMenu = ({ position, parentScrollPosition, onAction }: TableCellContextMenuProps) => {\n const t = useTranslation();\n const [isOpen, setIsOpen] = useState(false);\n const [isHidden, setIsHidden] = useState(false);\n const [localPosition, setLocalPosition] = useState<Position>({ xPos: 0, yPos: 0, height: 0 });\n const [menuHeight, setMenuHeight] = useState(0);\n const startScrollPosition = useRef(0);\n const menuRef = useRef<HTMLUListElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const [editor] = useLexicalComposerContext();\n\n const handleAction = (action: Actions) => {\n onAction(action);\n setIsOpen(false);\n };\n\n const flipMenuIfNotInViewport = () => {\n const menuWidth = menuRef.current ? menuRef.current.getBoundingClientRect().width : 0;\n\n if (containerRef.current && menuRef.current && buttonRef.current) {\n if (localPosition.xPos < menuWidth && containerRef.current) {\n containerRef.current.style.left = `${menuWidth - localPosition.xPos + WHITE_SPACE}px`;\n buttonRef.current.style.right = `${menuWidth - localPosition.xPos + BUTTON_SHIFT + WHITE_SPACE}px`;\n } else {\n containerRef.current.style.left = '0px';\n buttonRef.current.style.right = `${BUTTON_SHIFT}px`;\n }\n\n if (!menuHeight) {\n setMenuHeight(measureElement(menuRef.current));\n }\n\n if (menuHeight > document.documentElement.clientHeight - localPosition.yPos) {\n containerRef.current.style.top = `-${menuHeight + localPosition.height}px`;\n buttonRef.current.style.top = `${menuHeight + BUTTON_SHIFT}px`;\n buttonRef.current.style.transform = 'rotate(180deg)';\n } else {\n containerRef.current.style.top = '0px';\n buttonRef.current.style.top = `-${BUTTON_RESET}px`;\n buttonRef.current.style.transform = 'none';\n }\n }\n };\n\n const setMenuPosition = () => {\n flipMenuIfNotInViewport();\n return `translate(${(localPosition?.xPos ?? 0) - (menuRef.current ? menuRef.current.getBoundingClientRect().width : 0)}px, ${localPosition.yPos - (parentScrollPosition - startScrollPosition.current)}px)`;\n };\n\n useEffect(() => {\n setLocalPosition(position);\n if (position) {\n startScrollPosition.current = parentScrollPosition;\n }\n setIsOpen(false);\n setIsHidden(false);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [position]);\n\n useEffect(() => {\n if (buttonRef.current) {\n const rect = buttonRef.current.getBoundingClientRect();\n const rootElement = editor.getRootElement();\n if (!rootElement) return;\n if (\n rect.top - rootElement.getBoundingClientRect().top <= 0 ||\n rect.top - rootElement.getBoundingClientRect().bottom + CONTEXT_MENU_OFFSET >= 0\n ) {\n setIsHidden(true);\n } else {\n setIsHidden(false);\n }\n flipMenuIfNotInViewport();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [parentScrollPosition]);\n\n return (\n <div\n className={clsx(styles['context-menu__wrapper'], [isHidden && styles['context-menu__wrapper--hidden']])}\n style={{\n transform: `${setMenuPosition()}`,\n }}\n ref={containerRef}\n >\n <button\n type=\"button\"\n onClick={() => setIsOpen((prev) => !prev)}\n className={styles['context-menu__button']}\n ref={buttonRef}\n >\n <Icon name=\"CheveronDown\" size={16} />\n </button>\n <ul ref={menuRef} className={clsx(styles['context-menu'], isOpen && styles['context-menu--open'])}>\n <li>\n <button\n type=\"button\"\n onClick={() => handleAction('insertRowAbove')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableInsertRowAbove}\n >\n {t.table.insertRowAbove}\n </button>\n </li>\n <li>\n <button\n type=\"button\"\n onClick={() => handleAction('insertRowBelow')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableInsertRowBelow}\n >\n {t.table.insertRowBelow}\n </button>\n </li>\n <li className={styles['context-menu__item-divider']}>\n <button\n type=\"button\"\n onClick={() => handleAction('deleteRow')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableDeleteRow}\n >\n {t.table.deleteRow}\n </button>\n </li>\n\n <li>\n <button\n type=\"button\"\n onClick={() => handleAction('insertColumnLeft')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableInsertColumnLeft}\n >\n {t.table.insertColumnLeft}\n </button>\n </li>\n <li>\n <button\n type=\"button\"\n onClick={() => handleAction('insertColumnRight')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableInsertColumnRight}\n >\n {t.table.insertColumnRight}\n </button>\n </li>\n <li className={styles['context-menu__item-divider']}>\n <button\n type=\"button\"\n onClick={() => handleAction('deleteColumn')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableDeleteColumn}\n >\n {t.table.deleteColumn}\n </button>\n </li>\n\n <li>\n <button\n type=\"button\"\n onClick={() => handleAction('deleteTable')}\n className={styles['context-menu__item']}\n aria-label={t.aria.labels.tableDeleteTable}\n >\n {t.table.deleteTable}\n </button>\n </li>\n </ul>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,208 @@
1
+ import { t as e } from "./LexicalComposerContext.prod-DumMmRBt.js";
2
+ import { Cn as t, jn as n, ur as r } from "./Lexical.prod-nAj5fF96.js";
3
+ import { l as i, r as a } from "./LexicalUtils.prod-7S6iuu9A.js";
4
+ import { _ as o, l as s, m as c, n as l, o as u, p as d, s as f, v as p, x as m } from "./LexicalTable.prod-BpHQYpBM.js";
5
+ import { $createTableWrapperNode as h, TableWrapperNode as g } from "./components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js";
6
+ import { getEditorContentWidth as _, getEditorParrentCellWidth as v, tableHasContent as y } from "./components/RteEditor/Plugins/TablePlugin/helpers.js";
7
+ import { useCallback as b, useEffect as x, useLayoutEffect as S, useMemo as C, useRef as w, useState as T } from "react";
8
+ import { Fragment as E, jsx as D, jsxs as O } from "react/jsx-runtime";
9
+ import { createPortal as k } from "react-dom";
10
+ import './assets/TableCellResizerPlugin.css';//#region node_modules/.pnpm/@lexical+react@0.45.0_react-dom@19.2.7_react@19.2.7__react@19.2.7_yjs@13.6.31/node_modules/@lexical/react/dist/useLexicalEditable.prod.mjs
11
+ var A = n ? S : x;
12
+ function j(e) {
13
+ return {
14
+ initialValueFn: () => e.isEditable(),
15
+ subscribe: (t) => e.registerEditableListener(t)
16
+ };
17
+ }
18
+ function M() {
19
+ return function(t) {
20
+ let [n] = e(), r = C(() => t(n), [n, t]), [i, a] = T(() => r.initialValueFn()), o = w(i);
21
+ return A(() => {
22
+ let { initialValueFn: e, subscribe: t } = r, n = e();
23
+ return o.current !== n && (o.current = n, a(n)), t((e) => {
24
+ o.current = e, a(e);
25
+ });
26
+ }, [r, t]), i;
27
+ }(j);
28
+ }
29
+ //#endregion
30
+ //#region src/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.module.css
31
+ var N = { "table-cell-resizer__resizer": "_table-cell-resizer__resizer_2hhfo_17" }, P = 33, F = 32, I = 2;
32
+ function L({ editor: e }) {
33
+ let n = w(null), S = w(null), C = w(null), k = w(null), [A, j] = T(null), [M, L] = T(null), [R, z] = T(!1), [B, V] = T(null), H = b(() => {
34
+ L(null), n.current = null, V(null), k.current = null, C.current = null;
35
+ }, []), U = (e) => (e.buttons & 1) == 1;
36
+ x(() => e.registerNodeTransform(f, (t) => {
37
+ if (!t.getColWidths()) {
38
+ let n = t.getChildren(), r = t.getColumnCount(), a = Array(r).fill(void 0);
39
+ n[0].getChildren().forEach((n, o) => {
40
+ let c = e.getElementByKey(n.getKey());
41
+ if (c && c.style.width) a[o] = parseInt(c.style.width, 10), c.style.width = "";
42
+ else if (y(t)) {
43
+ let n = t ? i(t, s) : null, c = (n ? v(n, r, e) : _(e)) / r;
44
+ a[o] = Math.max(c, F);
45
+ } else a[o] = F;
46
+ }), t.setColWidths(a);
47
+ }
48
+ if (t && !(t.getParent() instanceof g)) {
49
+ let e = h();
50
+ t.replace(e), e.append(t);
51
+ }
52
+ return t;
53
+ }), [e]), x(() => {
54
+ let i = (i) => {
55
+ let a = i.target;
56
+ if (r(a)) {
57
+ if (B) {
58
+ j({
59
+ x: i.clientX,
60
+ y: i.clientY
61
+ });
62
+ return;
63
+ }
64
+ if (z(U(i)), !(S.current && S.current.contains(a)) && n.current !== a) {
65
+ n.current = a;
66
+ let r = d(a);
67
+ r && M !== r ? e.getEditorState().read(() => {
68
+ let i = t(r.elem);
69
+ if (!i) throw Error("TableCellResizer: Table cell node not found.");
70
+ let s = o(i), c = u(s, e.getElementByKey(s.getKey()));
71
+ if (!c) throw Error("TableCellResizer: Table element not found.");
72
+ n.current = a, C.current = c.getBoundingClientRect(), L(r);
73
+ }, { editor: e }) : r ?? H();
74
+ }
75
+ }
76
+ }, a = () => {
77
+ z(!0);
78
+ }, s = () => {
79
+ z(!1);
80
+ }, c = e.registerRootListener((e, t) => {
81
+ t?.removeEventListener("mousemove", i), t?.removeEventListener("mousedown", a), t?.removeEventListener("mouseup", s), e?.addEventListener("mousemove", i), e?.addEventListener("mousedown", a), e?.addEventListener("mouseup", s);
82
+ });
83
+ return () => {
84
+ c();
85
+ };
86
+ }, [
87
+ M,
88
+ B,
89
+ e,
90
+ H
91
+ ]);
92
+ let W = (e) => e === "bottom", G = b((n) => {
93
+ if (!M) throw Error("TableCellResizer: Expected active cell.");
94
+ e.update(() => {
95
+ let r = t(M.elem);
96
+ if (!l(r)) throw Error("TableCellResizer: Table cell node not found.");
97
+ let i = o(r), a = c(r) + r.getRowSpan() - 1, s = i.getChildren();
98
+ if (a >= s.length || a < 0) throw Error("Expected table cell to be inside of table row.");
99
+ let u = s[a];
100
+ if (!m(u)) throw Error("Expected table row");
101
+ let d = u.getHeight();
102
+ if (d === void 0) {
103
+ let t = u.getChildren();
104
+ d = Math.min(...t.map((t) => K(t, e) ?? Infinity));
105
+ }
106
+ let f = Math.max(d + n, P);
107
+ u.setHeight(f);
108
+ }, { tag: "skip-scroll-into-view" });
109
+ }, [M, e]), K = (e, t) => t.getElementByKey(e.getKey())?.clientHeight, q = (e, t) => {
110
+ for (let n = 0; n < t.length; n++) for (let r = 0; r < t[n].length; r++) if (t[n][r].cell === e) return r;
111
+ return -1;
112
+ }, J = b((n) => {
113
+ if (!M) throw Error("TableCellResizer: Expected active cell.");
114
+ e.update(() => {
115
+ let e = t(M.elem);
116
+ if (!l(e)) throw Error("TableCellResizer: Table cell node not found.");
117
+ let r = o(e), [i] = p(r, null, null), a = q(e, i);
118
+ if (a === void 0) throw Error("TableCellResizer: Table column not found.");
119
+ let s = r.getColWidths();
120
+ if (!s) return;
121
+ let c = s[a];
122
+ if (c === void 0) return;
123
+ let u = [...s];
124
+ if (u[a] = Math.max(c + n, F), r.setColWidths(u), a < r.getColumnCount() - 1) {
125
+ let e = r.getColWidths();
126
+ if (!e) return;
127
+ let t = [...e], i = a + 1, o = e[i];
128
+ t[i] = Math.max(o - n, F), r.setColWidths(t);
129
+ }
130
+ }, { tag: "skip-scroll-into-view" });
131
+ }, [M, e]), Y = b((e) => {
132
+ let t = (n) => {
133
+ if (n.preventDefault(), n.stopPropagation(), !M) throw Error("TableCellResizer: Expected active cell.");
134
+ if (k.current) {
135
+ let { x: r, y: i } = k.current;
136
+ if (M === null) return;
137
+ let o = a(n.target);
138
+ W(e) ? G((n.clientY - i) / o) : J((n.clientX - r) / o), H(), document.removeEventListener("mouseup", t);
139
+ }
140
+ };
141
+ return t;
142
+ }, [
143
+ M,
144
+ H,
145
+ J,
146
+ G
147
+ ]), X = b((e) => (t) => {
148
+ if (t.preventDefault(), t.stopPropagation(), !M) throw Error("TableCellResizer: Expected active cell.");
149
+ k.current = {
150
+ x: t.clientX,
151
+ y: t.clientY
152
+ }, j(k.current), V(e), document.addEventListener("mouseup", Y(e));
153
+ }, [M, Y]), Z = b(() => {
154
+ if (M) {
155
+ let { height: e, width: t, top: n, left: r } = M.elem.getBoundingClientRect(), i = a(M.elem), o = {
156
+ bottom: {
157
+ backgroundColor: "none",
158
+ cursor: "ns-resize",
159
+ height: "10px",
160
+ left: `${window.pageXOffset + r}px`,
161
+ top: `${window.pageYOffset + n + e - 10 / I}px`,
162
+ width: `${t}px`,
163
+ zIndex: 5e3
164
+ },
165
+ right: {
166
+ backgroundColor: "none",
167
+ cursor: "ew-resize",
168
+ height: `${e}px`,
169
+ left: `${window.pageXOffset + r + t - 10 / I}px`,
170
+ top: `${window.pageYOffset + n}px`,
171
+ width: "10px",
172
+ zIndex: 5e3
173
+ }
174
+ }, s = C.current;
175
+ return B && A && s && (W(B) ? (o[B].left = `${window.pageXOffset + s.left}px`, o[B].top = `${window.pageYOffset + A.y / i}px`, o[B].height = "3px", o[B].width = `${s.width}px`) : (o[B].top = `${window.pageYOffset + s.top}px`, o[B].left = `${window.pageXOffset + A.x / i}px`, o[B].width = "3px", o[B].height = `${s.height}px`), o[B].backgroundColor = "#adf"), o;
176
+ }
177
+ return {
178
+ bottom: null,
179
+ left: null,
180
+ right: null,
181
+ top: null
182
+ };
183
+ }, [
184
+ M,
185
+ B,
186
+ A
187
+ ])();
188
+ return /* @__PURE__ */ D("div", {
189
+ ref: S,
190
+ children: M != null && !R && /* @__PURE__ */ O(E, { children: [/* @__PURE__ */ D("div", {
191
+ className: N["table-cell-resizer__resizer"],
192
+ style: Z.right || void 0,
193
+ onMouseDown: X("right")
194
+ }), /* @__PURE__ */ D("div", {
195
+ className: N["table-cell-resizer__resizer"],
196
+ style: Z.bottom || void 0,
197
+ onMouseDown: X("bottom")
198
+ })] })
199
+ });
200
+ }
201
+ var R = () => {
202
+ let [t] = e(), n = M();
203
+ return C(() => n ? k(/* @__PURE__ */ D(L, { editor: t }), document.body) : null, [t, n]);
204
+ };
205
+ //#endregion
206
+ export { M as n, R as t };
207
+
208
+ //# sourceMappingURL=TableCellResizerPlugin-Dn8Ks2Lm.js.map