@uva-glass/component-library 3.55.7 → 3.55.8

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 (665) hide show
  1. package/dist/{Accordion-DvblEUVu.js → Accordion-DaCqVof1.js} +2 -2
  2. package/dist/{Accordion-DvblEUVu.js.map → Accordion-DaCqVof1.js.map} +1 -1
  3. package/dist/{AccordionCard-BXy-plB7.js → AccordionCard-CD5H9gR1.js} +2 -2
  4. package/dist/{AccordionCard-BXy-plB7.js.map → AccordionCard-CD5H9gR1.js.map} +1 -1
  5. package/dist/{ActionList-O9w1hqNg.js → ActionList-C0hD9noC.js} +2 -2
  6. package/dist/{ActionList-O9w1hqNg.js.map → ActionList-C0hD9noC.js.map} +1 -1
  7. package/dist/{AddCatalogueLinkForm-rph4K9P0.js → AddCatalogueLinkForm-DNv2tEdF.js} +5 -5
  8. package/dist/{AddCatalogueLinkForm-rph4K9P0.js.map → AddCatalogueLinkForm-DNv2tEdF.js.map} +1 -1
  9. package/dist/{AppStatusBar-Bca0KFDR.js → AppStatusBar-BK0yaC4G.js} +2 -2
  10. package/dist/{AppStatusBar-Bca0KFDR.js.map → AppStatusBar-BK0yaC4G.js.map} +1 -1
  11. package/dist/{Attention-Bq5UU9I8.js → Attention-xqGAJ7-T.js} +1 -1
  12. package/dist/{Attention-Bq5UU9I8.js.map → Attention-xqGAJ7-T.js.map} +1 -1
  13. package/dist/{Backdrop-D8AHeuBn.js → Backdrop-bQ8kXsge.js} +1 -1
  14. package/dist/{Backdrop-D8AHeuBn.js.map → Backdrop-bQ8kXsge.js.map} +1 -1
  15. package/dist/{Button.module-DJlNwQUj.js → Button.module-BkAiXo3V.js} +1 -1
  16. package/dist/{Button.module-DJlNwQUj.js.map → Button.module-BkAiXo3V.js.map} +1 -1
  17. package/dist/{ButtonGroup-DR80lTLz.js → ButtonGroup-ZqGGZ1rz.js} +2 -2
  18. package/dist/{ButtonGroup-DR80lTLz.js.map → ButtonGroup-ZqGGZ1rz.js.map} +1 -1
  19. package/dist/{Card-DMFyuTmy.js → Card-BH1ySOiP.js} +3 -3
  20. package/dist/{Card-DMFyuTmy.js.map → Card-BH1ySOiP.js.map} +1 -1
  21. package/dist/{Checkbox-D6-b_4dC.js → Checkbox-sAt4To2B.js} +1 -1
  22. package/dist/{Checkbox-D6-b_4dC.js.map → Checkbox-sAt4To2B.js.map} +1 -1
  23. package/dist/{CheckboxButtonBar-5UMIFMKH.js → CheckboxButtonBar-DpNnwLzI.js} +5 -5
  24. package/dist/{CheckboxButtonBar-5UMIFMKH.js.map → CheckboxButtonBar-DpNnwLzI.js.map} +1 -1
  25. package/dist/{Chip-DJHvFToV.js → Chip-9XnXFhoJ.js} +1 -1
  26. package/dist/{Chip-DJHvFToV.js.map → Chip-9XnXFhoJ.js.map} +1 -1
  27. package/dist/{ClipboardButton-geHjMl2J.js → ClipboardButton-Cg6LGUiD.js} +1 -1
  28. package/dist/{ClipboardButton-geHjMl2J.js.map → ClipboardButton-Cg6LGUiD.js.map} +1 -1
  29. package/dist/{Column-BwKEOOuL.js → Column-BwCVSZrG.js} +2 -2
  30. package/dist/{Column-BwKEOOuL.js.map → Column-BwCVSZrG.js.map} +1 -1
  31. package/dist/{Container-BLjtYDqq.js → Container-DK25h_-f.js} +2 -2
  32. package/dist/{Container-BLjtYDqq.js.map → Container-DK25h_-f.js.map} +1 -1
  33. package/dist/{ControlsButton-B1XRpMUM.js → ControlsButton-9uR_zW_F.js} +2 -2
  34. package/dist/{ControlsButton-B1XRpMUM.js.map → ControlsButton-9uR_zW_F.js.map} +1 -1
  35. package/dist/{CopyableText-DkyhZ6wk.js → CopyableText-hSqhyUWx.js} +2 -2
  36. package/dist/{CopyableText-DkyhZ6wk.js.map → CopyableText-hSqhyUWx.js.map} +1 -1
  37. package/dist/{Drawer-e7UFHVg9.js → Drawer-BbVJqFQI.js} +4 -4
  38. package/dist/{Drawer-e7UFHVg9.js.map → Drawer-BbVJqFQI.js.map} +1 -1
  39. package/dist/{EmptyStateDataDisplay-D0QiI8nE.js → EmptyStateDataDisplay-IT2P3ius.js} +2 -2
  40. package/dist/{EmptyStateDataDisplay-D0QiI8nE.js.map → EmptyStateDataDisplay-IT2P3ius.js.map} +1 -1
  41. package/dist/{ExpandableInfoPanel-CnBVVNlJ.js → ExpandableInfoPanel-DMfcJFP3.js} +2 -2
  42. package/dist/{ExpandableInfoPanel-CnBVVNlJ.js.map → ExpandableInfoPanel-DMfcJFP3.js.map} +1 -1
  43. package/dist/{FeedbackBar-ByKp32HE.js → FeedbackBar-DRbJVniP.js} +3 -3
  44. package/dist/{FeedbackBar-ByKp32HE.js.map → FeedbackBar-DRbJVniP.js.map} +1 -1
  45. package/dist/{FeedbackBox-Bu7uB9DP.js → FeedbackBox-CaSxB4uc.js} +2 -2
  46. package/dist/{FeedbackBox-Bu7uB9DP.js.map → FeedbackBox-CaSxB4uc.js.map} +1 -1
  47. package/dist/{FieldHint-fxnEOsVZ.js → FieldHint-FEBzgLI_.js} +2 -2
  48. package/dist/{FieldHint-fxnEOsVZ.js.map → FieldHint-FEBzgLI_.js.map} +1 -1
  49. package/dist/{Fieldset-0LFsZ3Mz.js → Fieldset-D01_rj_p.js} +2 -2
  50. package/dist/{Fieldset-0LFsZ3Mz.js.map → Fieldset-D01_rj_p.js.map} +1 -1
  51. package/dist/{Flyout-DEpzfZOC.js → Flyout-JUwXvgo6.js} +1 -1
  52. package/dist/{Flyout-DEpzfZOC.js.map → Flyout-JUwXvgo6.js.map} +1 -1
  53. package/dist/{FormField-BZSoQdp9.js → FormField-CcV84TfI.js} +2 -2
  54. package/dist/{FormField-BZSoQdp9.js.map → FormField-CcV84TfI.js.map} +1 -1
  55. package/dist/{HorizontalList-C22DaDz-.js → HorizontalList-CLlRGWZX.js} +1 -1
  56. package/dist/{HorizontalList-C22DaDz-.js.map → HorizontalList-CLlRGWZX.js.map} +1 -1
  57. package/dist/{IconButton-CWCMH9uf.js → IconButton-CSNMVEG1.js} +2 -2
  58. package/dist/{IconButton-CWCMH9uf.js.map → IconButton-CSNMVEG1.js.map} +1 -1
  59. package/dist/{InfoBanner-DyznQLGr.js → InfoBanner-DqBWtCVE.js} +1 -1
  60. package/dist/{InfoBanner-DyznQLGr.js.map → InfoBanner-DqBWtCVE.js.map} +1 -1
  61. package/dist/{InfoMessage-I-VlwxVc.js → InfoMessage-COywXu4O.js} +2 -2
  62. package/dist/{InfoMessage-I-VlwxVc.js.map → InfoMessage-COywXu4O.js.map} +1 -1
  63. package/dist/{Input-Bn-arMaC.js → Input-BzKvzbzP.js} +2 -2
  64. package/dist/{Input-Bn-arMaC.js.map → Input-BzKvzbzP.js.map} +1 -1
  65. package/dist/{InputField-BWAy19w9.js → InputField-T01uazlI.js} +2 -2
  66. package/dist/{InputField-BWAy19w9.js.map → InputField-T01uazlI.js.map} +1 -1
  67. package/dist/{Label-o0BcWTUS.js → Label-D0ACrYG3.js} +2 -2
  68. package/dist/{Label-o0BcWTUS.js.map → Label-D0ACrYG3.js.map} +1 -1
  69. package/dist/{Lexical.prod-CqPLSi0R.js → Lexical.prod-8zZnpGo4.js} +1 -1
  70. package/dist/Lexical.prod-8zZnpGo4.js.map +1 -0
  71. package/dist/{LexicalClipboard.prod-BVw_sFpo.js → LexicalClipboard.prod-hbxbsROy.js} +4 -4
  72. package/dist/LexicalClipboard.prod-hbxbsROy.js.map +1 -0
  73. package/dist/{LexicalComposerContext.prod-Ca-YN_fj.js → LexicalComposerContext.prod-y_BRxu3Z.js} +1 -1
  74. package/dist/{LexicalComposerContext.prod-Ca-YN_fj.js.map → LexicalComposerContext.prod-y_BRxu3Z.js.map} +1 -1
  75. package/dist/{LexicalExtension.prod-CUQTgbur.js → LexicalExtension.prod-v8IpET5E.js} +3 -3
  76. package/dist/LexicalExtension.prod-v8IpET5E.js.map +1 -0
  77. package/dist/{LexicalLink.prod-DMhcqD9x.js → LexicalLink.prod-BVUv9-sZ.js} +4 -4
  78. package/dist/LexicalLink.prod-BVUv9-sZ.js.map +1 -0
  79. package/dist/{LexicalList.prod-eYlcb5Ao.js → LexicalList.prod-CCPDDafy.js} +4 -4
  80. package/dist/LexicalList.prod-CCPDDafy.js.map +1 -0
  81. package/dist/{LexicalTable.prod-DlOxUQou.js → LexicalTable.prod-D_9Dr3kL.js} +5 -5
  82. package/dist/LexicalTable.prod-D_9Dr3kL.js.map +1 -0
  83. package/dist/{LexicalUtils.prod-BqcriFWV.js → LexicalUtils.prod-BWhWP8es.js} +2 -2
  84. package/dist/{LexicalUtils.prod-BqcriFWV.js.map → LexicalUtils.prod-BWhWP8es.js.map} +1 -1
  85. package/dist/{LinkContextMenu-ePn1iZ_z.js → LinkContextMenu-CTu2nP2j.js} +2 -2
  86. package/dist/{LinkContextMenu-ePn1iZ_z.js.map → LinkContextMenu-CTu2nP2j.js.map} +1 -1
  87. package/dist/{MenuLink-Cm1yZO_5.js → MenuLink-La_3ANEL.js} +2 -2
  88. package/dist/{MenuLink-Cm1yZO_5.js.map → MenuLink-La_3ANEL.js.map} +1 -1
  89. package/dist/{MetaDataBar-C4QO9oBV.js → MetaDataBar-48J7yPrb.js} +1 -1
  90. package/dist/{MetaDataBar-C4QO9oBV.js.map → MetaDataBar-48J7yPrb.js.map} +1 -1
  91. package/dist/{MetaDataList-CAR1HTYs.js → MetaDataList-Co9WCexh.js} +1 -1
  92. package/dist/{MetaDataList-CAR1HTYs.js.map → MetaDataList-Co9WCexh.js.map} +1 -1
  93. package/dist/{ModalDialog-N50NGnd4.js → ModalDialog-J7xcPcnS.js} +5 -5
  94. package/dist/{ModalDialog-N50NGnd4.js.map → ModalDialog-J7xcPcnS.js.map} +1 -1
  95. package/dist/{MultiSelectBox-Cuh_o-A1.js → MultiSelectBox-BmBxa6PH.js} +3 -3
  96. package/dist/{MultiSelectBox-Cuh_o-A1.js.map → MultiSelectBox-BmBxa6PH.js.map} +1 -1
  97. package/dist/{MultiSelectItem-BF5xRjz5.js → MultiSelectItem-6d8kQgFs.js} +3 -3
  98. package/dist/{MultiSelectItem-BF5xRjz5.js.map → MultiSelectItem-6d8kQgFs.js.map} +1 -1
  99. package/dist/{Notification-CIhsHuF0.js → Notification-BAqCenxt.js} +2 -2
  100. package/dist/{Notification-CIhsHuF0.js.map → Notification-BAqCenxt.js.map} +1 -1
  101. package/dist/{OverlayCloseButton-rttFbAM_.js → OverlayCloseButton-j-7mC4Zz.js} +2 -2
  102. package/dist/{OverlayCloseButton-rttFbAM_.js.map → OverlayCloseButton-j-7mC4Zz.js.map} +1 -1
  103. package/dist/{OverlayStepBar-CjaoYdsh.js → OverlayStepBar-Cj_-0waE.js} +2 -2
  104. package/dist/{OverlayStepBar-CjaoYdsh.js.map → OverlayStepBar-Cj_-0waE.js.map} +1 -1
  105. package/dist/{PageOverlay-S4xsqJha.js → PageOverlay-DqwdG5ve.js} +5 -5
  106. package/dist/{PageOverlay-S4xsqJha.js.map → PageOverlay-DqwdG5ve.js.map} +1 -1
  107. package/dist/{PasteHandlerPlugin-BNp8ST0q.js → PasteHandlerPlugin-Bc6n-G35.js} +6 -6
  108. package/dist/{PasteHandlerPlugin-BNp8ST0q.js.map → PasteHandlerPlugin-Bc6n-G35.js.map} +1 -1
  109. package/dist/{Periods-BYETtB6R.js → Periods-C5cxLlWt.js} +2 -2
  110. package/dist/{Periods-BYETtB6R.js.map → Periods-C5cxLlWt.js.map} +1 -1
  111. package/dist/{ProgrammeCard-76gG7ksx.js → ProgrammeCard-CAAOSWKa.js} +2 -2
  112. package/dist/{ProgrammeCard-76gG7ksx.js.map → ProgrammeCard-CAAOSWKa.js.map} +1 -1
  113. package/dist/{RadioButton-Bto2p5B9.js → RadioButton-CKALsbBb.js} +2 -2
  114. package/dist/{RadioButton-Bto2p5B9.js.map → RadioButton-CKALsbBb.js.map} +1 -1
  115. package/dist/{RadioGroup-JeTjVp5B.js → RadioGroup-DhnnBRJu.js} +3 -3
  116. package/dist/{RadioGroup-JeTjVp5B.js.map → RadioGroup-DhnnBRJu.js.map} +1 -1
  117. package/dist/{Repeater-BhkTEUai.js → Repeater-Bnoqqz0X.js} +2 -2
  118. package/dist/{Repeater-BhkTEUai.js.map → Repeater-Bnoqqz0X.js.map} +1 -1
  119. package/dist/{RteEditor.module-BJLUYSpf.js → RteEditor.module-pWBasED2.js} +1 -1
  120. package/dist/{RteEditor.module-BJLUYSpf.js.map → RteEditor.module-pWBasED2.js.map} +1 -1
  121. package/dist/{SearchField.module-BgxjHaPG.js → SearchField.module-Bn9xQD-f.js} +1 -1
  122. package/dist/{SearchField.module-BgxjHaPG.js.map → SearchField.module-Bn9xQD-f.js.map} +1 -1
  123. package/dist/{SectionNotification-CQqwPTqP.js → SectionNotification-BT0Z2edJ.js} +2 -2
  124. package/dist/{SectionNotification-CQqwPTqP.js.map → SectionNotification-BT0Z2edJ.js.map} +1 -1
  125. package/dist/{SelectListbox.module-HaPs1CLD.js → SelectListbox.module-Df90DNyN.js} +1 -1
  126. package/dist/{SelectListbox.module-HaPs1CLD.js.map → SelectListbox.module-Df90DNyN.js.map} +1 -1
  127. package/dist/{Slider-BlLyrET9.js → Slider-dCmT0VM2.js} +2 -2
  128. package/dist/{Slider-BlLyrET9.js.map → Slider-dCmT0VM2.js.map} +1 -1
  129. package/dist/{Sortable.module-8SoaHfuE.js → Sortable.module-CgDMpWM8.js} +1 -1
  130. package/dist/{Sortable.module-8SoaHfuE.js.map → Sortable.module-CgDMpWM8.js.map} +1 -1
  131. package/dist/{SortableProvider-8HYiBXJS.js → SortableProvider-DV6gWmq_.js} +3 -3
  132. package/dist/{SortableProvider-8HYiBXJS.js.map → SortableProvider-DV6gWmq_.js.map} +1 -1
  133. package/dist/{Spinner-BpElTDIu.js → Spinner-BmPjd2Bv.js} +1 -1
  134. package/dist/{Spinner-BpElTDIu.js.map → Spinner-BmPjd2Bv.js.map} +1 -1
  135. package/dist/{StatusBage-DQDOF5-U.js → StatusBage-CfEIuIPa.js} +2 -2
  136. package/dist/{StatusBage-DQDOF5-U.js.map → StatusBage-CfEIuIPa.js.map} +1 -1
  137. package/dist/{StatusPill-DM7n3I4W.js → StatusPill-CbJV4t-V.js} +2 -2
  138. package/dist/{StatusPill-DM7n3I4W.js.map → StatusPill-CbJV4t-V.js.map} +1 -1
  139. package/dist/{TableCellContextMenu-D0IMQr3E.js → TableCellContextMenu-9V8mnPmU.js} +3 -3
  140. package/dist/{TableCellContextMenu-D0IMQr3E.js.map → TableCellContextMenu-9V8mnPmU.js.map} +1 -1
  141. package/dist/{TableCellResizerPlugin-Bc5y-Qbx.js → TableCellResizerPlugin-Djym940U.js} +5 -5
  142. package/dist/{TableCellResizerPlugin-Bc5y-Qbx.js.map → TableCellResizerPlugin-Djym940U.js.map} +1 -1
  143. package/dist/{TextArea-CuASC9bX.js → TextArea-GR2ZWwLh.js} +2 -2
  144. package/dist/{TextArea-CuASC9bX.js.map → TextArea-GR2ZWwLh.js.map} +1 -1
  145. package/dist/{ToggleSwitch-C7z7JVtx.js → ToggleSwitch-b54K58vY.js} +2 -2
  146. package/dist/{ToggleSwitch-C7z7JVtx.js.map → ToggleSwitch-b54K58vY.js.map} +1 -1
  147. package/dist/{Tooltip-D27p9kh4.js → Tooltip-DvkGwn4j.js} +1 -1
  148. package/dist/{Tooltip-D27p9kh4.js.map → Tooltip-DvkGwn4j.js.map} +1 -1
  149. package/dist/{VarIndicator-C-GueOZD.js → VarIndicator-DoMWwSUm.js} +2 -2
  150. package/dist/{VarIndicator-C-GueOZD.js.map → VarIndicator-DoMWwSUm.js.map} +1 -1
  151. package/dist/{WeekSelector.module-BLPrVYgn.js → WeekSelector.module-DuEbNvok.js} +1 -1
  152. package/dist/{WeekSelector.module-BLPrVYgn.js.map → WeekSelector.module-DuEbNvok.js.map} +1 -1
  153. package/dist/__mocks__/svgrMock.js.map +1 -1
  154. package/dist/{chunk-SZQXB3JV-D6GR5B4F.js → chunk-SZQXB3JV-xjYHmnzP.js} +891 -949
  155. package/dist/{chunk-SZQXB3JV-D6GR5B4F.js.map → chunk-SZQXB3JV-xjYHmnzP.js.map} +1 -1
  156. package/dist/{client-b7M3CmlC.js → client-DJaPTT6C.js} +10 -10
  157. package/dist/{client-b7M3CmlC.js.map → client-DJaPTT6C.js.map} +1 -1
  158. package/dist/{clsx-BD2qMUU1.js → clsx-BWCAbrjV.js} +1 -1
  159. package/dist/{clsx-BD2qMUU1.js.map → clsx-BWCAbrjV.js.map} +1 -1
  160. package/dist/components/Accordion/Accordion.js +1 -1
  161. package/dist/components/Accordion/Accordion.stories.js +2 -2
  162. package/dist/components/Accordion/Accordion.stories.js.map +1 -1
  163. package/dist/components/Accordion/Accordion.test.js +4 -4
  164. package/dist/components/Accordion/Accordion.test.js.map +1 -1
  165. package/dist/components/Accordion/index.js +1 -1
  166. package/dist/components/AccordionCard/AccordionCard.d.ts +1 -1
  167. package/dist/components/AccordionCard/AccordionCard.js +1 -1
  168. package/dist/components/AccordionCard/AccordionCard.stories.js +2 -2
  169. package/dist/components/AccordionCard/AccordionCard.stories.js.map +1 -1
  170. package/dist/components/AccordionCard/AccordionCard.test.js +4 -4
  171. package/dist/components/AccordionCard/AccordionCard.test.js.map +1 -1
  172. package/dist/components/AccordionCard/index.js +1 -1
  173. package/dist/components/ActionList/ActionList.d.ts +1 -1
  174. package/dist/components/ActionList/ActionList.js +1 -1
  175. package/dist/components/ActionList/ActionList.stories.js +1 -1
  176. package/dist/components/ActionList/ActionList.stories.js.map +1 -1
  177. package/dist/components/ActionList/ActionList.test.js +4 -4
  178. package/dist/components/ActionList/ActionList.test.js.map +1 -1
  179. package/dist/components/ActionList/index.js +1 -1
  180. package/dist/components/AppStatusBar/AppStatusBar.d.ts +1 -1
  181. package/dist/components/AppStatusBar/AppStatusBar.js +1 -1
  182. package/dist/components/AppStatusBar/AppStatusBar.stories.js +1 -1
  183. package/dist/components/AppStatusBar/AppStatusBar.stories.js.map +1 -1
  184. package/dist/components/AppStatusBar/AppStatusBar.test.js +3 -3
  185. package/dist/components/AppStatusBar/AppStatusBar.test.js.map +1 -1
  186. package/dist/components/AppStatusBar/index.js +1 -1
  187. package/dist/components/Attention/Attention.d.ts +1 -1
  188. package/dist/components/Attention/Attention.js +1 -1
  189. package/dist/components/Attention/Attention.stories.js +1 -1
  190. package/dist/components/Attention/Attention.stories.js.map +1 -1
  191. package/dist/components/Attention/Attention.test.js +3 -3
  192. package/dist/components/Attention/Attention.test.js.map +1 -1
  193. package/dist/components/Attention/index.js +1 -1
  194. package/dist/components/Backdrop/Backdrop.d.ts +1 -1
  195. package/dist/components/Backdrop/Backdrop.js +1 -1
  196. package/dist/components/Backdrop/Backdrop.stories.js +2 -2
  197. package/dist/components/Backdrop/Backdrop.stories.js.map +1 -1
  198. package/dist/components/Backdrop/Backdrop.test.js +3 -3
  199. package/dist/components/Backdrop/Backdrop.test.js.map +1 -1
  200. package/dist/components/Backdrop/index.js +1 -1
  201. package/dist/components/ButtonGroup/ButtonGroup.d.ts +1 -1
  202. package/dist/components/ButtonGroup/ButtonGroup.js +1 -1
  203. package/dist/components/ButtonGroup/ButtonGroup.stories.js +2 -2
  204. package/dist/components/ButtonGroup/ButtonGroup.stories.js.map +1 -1
  205. package/dist/components/ButtonGroup/index.js +1 -1
  206. package/dist/components/Buttons/Button.js +2 -2
  207. package/dist/components/Buttons/Button.js.map +1 -1
  208. package/dist/components/Buttons/Button.stories.js +1 -1
  209. package/dist/components/Buttons/Button.stories.js.map +1 -1
  210. package/dist/components/Buttons/Button.test.js +2 -2
  211. package/dist/components/Buttons/Button.test.js.map +1 -1
  212. package/dist/components/Buttons/LinkButton.js +2 -2
  213. package/dist/components/Buttons/LinkButton.js.map +1 -1
  214. package/dist/components/Buttons/LinkButton.stories.js +1 -1
  215. package/dist/components/Buttons/LinkButton.stories.js.map +1 -1
  216. package/dist/components/Buttons/LinkButton.test.js +2 -2
  217. package/dist/components/Buttons/LinkButton.test.js.map +1 -1
  218. package/dist/components/Buttons/MenuButton.d.ts +1 -1
  219. package/dist/components/Buttons/MenuButton.js +2 -2
  220. package/dist/components/Buttons/MenuButton.js.map +1 -1
  221. package/dist/components/Buttons/MenuButton.stories.js +1 -1
  222. package/dist/components/Buttons/MenuButton.stories.js.map +1 -1
  223. package/dist/components/Buttons/MenuButton.test.js +2 -2
  224. package/dist/components/Buttons/MenuButton.test.js.map +1 -1
  225. package/dist/components/Card/Card.d.ts +1 -1
  226. package/dist/components/Card/Card.js +1 -1
  227. package/dist/components/Card/Card.stories.js +1 -1
  228. package/dist/components/Card/Card.stories.js.map +1 -1
  229. package/dist/components/Card/Card.test.js +3 -3
  230. package/dist/components/Card/Card.test.js.map +1 -1
  231. package/dist/components/Card/index.js +1 -1
  232. package/dist/components/Checkbox/Checkbox.js +1 -1
  233. package/dist/components/Checkbox/Checkbox.stories.js +4 -4
  234. package/dist/components/Checkbox/Checkbox.stories.js.map +1 -1
  235. package/dist/components/Checkbox/Checkbox.test.js +4 -4
  236. package/dist/components/Checkbox/Checkbox.test.js.map +1 -1
  237. package/dist/components/Checkbox/index.js +1 -1
  238. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.d.ts +1 -1
  239. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.js +1 -1
  240. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js +3 -3
  241. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js.map +1 -1
  242. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js +3 -3
  243. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js.map +1 -1
  244. package/dist/components/CheckboxButtonBar/index.js +1 -1
  245. package/dist/components/CheckboxTree/CheckboxTree.d.ts +1 -1
  246. package/dist/components/CheckboxTree/CheckboxTree.js +1 -1
  247. package/dist/components/CheckboxTree/CheckboxTree.stories.js +4 -4
  248. package/dist/components/CheckboxTree/CheckboxTree.stories.js.map +1 -1
  249. package/dist/components/CheckboxTree/index.js +1 -1
  250. package/dist/components/Chip/Chip.d.ts +1 -1
  251. package/dist/components/Chip/Chip.js +1 -1
  252. package/dist/components/Chip/Chip.stories.js +2 -2
  253. package/dist/components/Chip/Chip.stories.js.map +1 -1
  254. package/dist/components/Chip/index.js +1 -1
  255. package/dist/components/ControlsButton/ControlsButton.d.ts +1 -1
  256. package/dist/components/ControlsButton/ControlsButton.js +1 -1
  257. package/dist/components/ControlsButton/ControlsButton.stories.js +4 -4
  258. package/dist/components/ControlsButton/ControlsButton.stories.js.map +1 -1
  259. package/dist/components/ControlsButton/index.js +1 -1
  260. package/dist/components/CopyableText/CopyableText.d.ts +1 -1
  261. package/dist/components/CopyableText/CopyableText.js +1 -1
  262. package/dist/components/CopyableText/CopyableText.stories.js +1 -1
  263. package/dist/components/CopyableText/CopyableText.stories.js.map +1 -1
  264. package/dist/components/CopyableText/index.js +1 -1
  265. package/dist/components/Drawer/Drawer.d.ts +1 -1
  266. package/dist/components/Drawer/Drawer.js +1 -1
  267. package/dist/components/Drawer/Drawer.stories.js +3 -3
  268. package/dist/components/Drawer/Drawer.stories.js.map +1 -1
  269. package/dist/components/Drawer/index.js +1 -1
  270. package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.d.ts +1 -1
  271. package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.js +1 -1
  272. package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.stories.js +1 -1
  273. package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.stories.js.map +1 -1
  274. package/dist/components/EmptyStateDataDisplay/index.js +1 -1
  275. package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.d.ts +1 -1
  276. package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.js +1 -1
  277. package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.stories.js +2 -2
  278. package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.stories.js.map +1 -1
  279. package/dist/components/ExpandableInfoPanel/index.js +1 -1
  280. package/dist/components/FeedbackBar/FeedbackBar.d.ts +1 -1
  281. package/dist/components/FeedbackBar/FeedbackBar.js +1 -1
  282. package/dist/components/FeedbackBar/FeedbackBar.stories.js +3 -3
  283. package/dist/components/FeedbackBar/FeedbackBar.stories.js.map +1 -1
  284. package/dist/components/FeedbackBar/FeedbackBar.test.js +3 -3
  285. package/dist/components/FeedbackBar/FeedbackBar.test.js.map +1 -1
  286. package/dist/components/FeedbackBar/index.js +1 -1
  287. package/dist/components/FeedbackBox/FeedbackBox.d.ts +1 -1
  288. package/dist/components/FeedbackBox/FeedbackBox.js +1 -1
  289. package/dist/components/FeedbackBox/FeedbackBox.stories.js +3 -3
  290. package/dist/components/FeedbackBox/FeedbackBox.stories.js.map +1 -1
  291. package/dist/components/FeedbackBox/index.js +1 -1
  292. package/dist/components/FieldHint/FieldHint.d.ts +1 -1
  293. package/dist/components/FieldHint/FieldHint.js +1 -1
  294. package/dist/components/FieldHint/FieldHint.stories.js +1 -1
  295. package/dist/components/FieldHint/FieldHint.stories.js.map +1 -1
  296. package/dist/components/FieldHint/index.js +1 -1
  297. package/dist/components/Fieldset/Fieldset.d.ts +1 -1
  298. package/dist/components/Fieldset/Fieldset.js +1 -1
  299. package/dist/components/Fieldset/Fieldset.stories.js +5 -5
  300. package/dist/components/Fieldset/Fieldset.stories.js.map +1 -1
  301. package/dist/components/Fieldset/index.js +1 -1
  302. package/dist/components/FormField/FormField.d.ts +1 -1
  303. package/dist/components/FormField/FormField.js +1 -1
  304. package/dist/components/FormField/FormField.stories.js +4 -4
  305. package/dist/components/FormField/FormField.stories.js.map +1 -1
  306. package/dist/components/FormField/index.js +1 -1
  307. package/dist/components/FormInput/FormInput.d.ts +1 -1
  308. package/dist/components/FormInput/FormInput.js +1 -1
  309. package/dist/components/FormInput/FormInput.stories.js +2 -2
  310. package/dist/components/FormInput/FormInput.stories.js.map +1 -1
  311. package/dist/components/FormInput/index.js +1 -1
  312. package/dist/components/GridRow/Column/Column.d.ts +1 -1
  313. package/dist/components/GridRow/Column/Column.js +1 -1
  314. package/dist/components/GridRow/Column/index.js +1 -1
  315. package/dist/components/GridRow/GridRow.d.ts +2 -2
  316. package/dist/components/GridRow/GridRow.js +2 -2
  317. package/dist/components/GridRow/GridRow.js.map +1 -1
  318. package/dist/components/GridRow/GridRow.stories.js.map +1 -1
  319. package/dist/components/HorizontalList/HorizontalList.d.ts +1 -1
  320. package/dist/components/HorizontalList/HorizontalList.js +1 -1
  321. package/dist/components/HorizontalList/HorizontalList.stories.js +1 -1
  322. package/dist/components/HorizontalList/HorizontalList.stories.js.map +1 -1
  323. package/dist/components/HorizontalList/index.js +1 -1
  324. package/dist/components/Icon/Icon.js +1 -1
  325. package/dist/components/Icon/Icon.js.map +1 -1
  326. package/dist/components/Icon/Icon.stories.d.ts +1 -1
  327. package/dist/components/Icon/Icon.stories.js +2 -2
  328. package/dist/components/Icon/Icon.stories.js.map +1 -1
  329. package/dist/components/Icon/icons/index.js +1 -1
  330. package/dist/components/IconButton/IconButton.js +1 -1
  331. package/dist/components/IconButton/IconButton.stories.js +2 -2
  332. package/dist/components/IconButton/IconButton.stories.js.map +1 -1
  333. package/dist/components/IconButton/index.js +1 -1
  334. package/dist/components/InfoBanner/InfoBanner.d.ts +1 -1
  335. package/dist/components/InfoBanner/InfoBanner.js +1 -1
  336. package/dist/components/InfoBanner/InfoBanner.stories.js +1 -1
  337. package/dist/components/InfoBanner/InfoBanner.stories.js.map +1 -1
  338. package/dist/components/InfoBanner/index.js +1 -1
  339. package/dist/components/InfoMessage/InfoMessage.d.ts +1 -1
  340. package/dist/components/InfoMessage/InfoMessage.js +1 -1
  341. package/dist/components/InfoMessage/InfoMessage.stories.js +1 -1
  342. package/dist/components/InfoMessage/InfoMessage.stories.js.map +1 -1
  343. package/dist/components/InfoMessage/index.js +1 -1
  344. package/dist/components/Input/Input.js +1 -1
  345. package/dist/components/Input/Input.stories.js +1 -1
  346. package/dist/components/Input/Input.stories.js.map +1 -1
  347. package/dist/components/Input/index.js +1 -1
  348. package/dist/components/InputField/InputField.js +1 -1
  349. package/dist/components/InputField/InputField.stories.js +3 -3
  350. package/dist/components/InputField/InputField.stories.js.map +1 -1
  351. package/dist/components/InputField/index.js +1 -1
  352. package/dist/components/Label/Label.d.ts +1 -1
  353. package/dist/components/Label/Label.js +1 -1
  354. package/dist/components/Label/Label.stories.js +1 -1
  355. package/dist/components/Label/Label.stories.js.map +1 -1
  356. package/dist/components/Label/Label.test.js +3 -3
  357. package/dist/components/Label/Label.test.js.map +1 -1
  358. package/dist/components/Label/index.js +1 -1
  359. package/dist/components/MenuLink/MenuLink.d.ts +1 -1
  360. package/dist/components/MenuLink/MenuLink.js +1 -1
  361. package/dist/components/MenuLink/MenuLink.stories.js +1 -1
  362. package/dist/components/MenuLink/MenuLink.stories.js.map +1 -1
  363. package/dist/components/MenuLink/index.js +1 -1
  364. package/dist/components/MetaDataBar/MetaDataBar.d.ts +1 -1
  365. package/dist/components/MetaDataBar/MetaDataBar.js +1 -1
  366. package/dist/components/MetaDataBar/MetaDataBar.stories.js +1 -1
  367. package/dist/components/MetaDataBar/MetaDataBar.stories.js.map +1 -1
  368. package/dist/components/MetaDataBar/MetaDataBar.test.js +2 -2
  369. package/dist/components/MetaDataBar/MetaDataBar.test.js.map +1 -1
  370. package/dist/components/MetaDataBar/index.js +1 -1
  371. package/dist/components/MetaDataList/MetaDataList.d.ts +1 -1
  372. package/dist/components/MetaDataList/MetaDataList.js +1 -1
  373. package/dist/components/MetaDataList/MetaDataList.stories.js +2 -2
  374. package/dist/components/MetaDataList/MetaDataList.stories.js.map +1 -1
  375. package/dist/components/MetaDataList/index.js +1 -1
  376. package/dist/components/ModalDialog/ModalDialog.d.ts +1 -1
  377. package/dist/components/ModalDialog/ModalDialog.js +1 -1
  378. package/dist/components/ModalDialog/ModalDialog.stories.js +6 -6
  379. package/dist/components/ModalDialog/ModalDialog.stories.js.map +1 -1
  380. package/dist/components/ModalDialog/index.js +1 -1
  381. package/dist/components/MultiSelect/MultiSelect.d.ts +1 -1
  382. package/dist/components/MultiSelect/MultiSelect.js +1 -1
  383. package/dist/components/MultiSelect/MultiSelect.stories.js +3 -3
  384. package/dist/components/MultiSelect/MultiSelect.stories.js.map +1 -1
  385. package/dist/components/MultiSelect/components/MultiSelectHeader.d.ts +1 -1
  386. package/dist/components/MultiSelect/components/MultiSelectHeader.js +1 -1
  387. package/dist/components/MultiSelect/components/MultiSelectItem.d.ts +1 -1
  388. package/dist/components/MultiSelect/components/MultiSelectItem.js +1 -1
  389. package/dist/components/MultiSelect/index.js +1 -1
  390. package/dist/components/MultiSelectBox/MultiSelectBox.d.ts +1 -1
  391. package/dist/components/MultiSelectBox/MultiSelectBox.js +1 -1
  392. package/dist/components/MultiSelectBox/MultiSelectBox.stories.js +2 -2
  393. package/dist/components/MultiSelectBox/MultiSelectBox.stories.js.map +1 -1
  394. package/dist/components/MultiSelectBox/MultiSelectBox.test.js +3 -3
  395. package/dist/components/MultiSelectBox/MultiSelectBox.test.js.map +1 -1
  396. package/dist/components/MultiSelectBox/index.js +1 -1
  397. package/dist/components/Notification/Notification.d.ts +1 -1
  398. package/dist/components/Notification/Notification.js +1 -1
  399. package/dist/components/Notification/Notification.stories.js +2 -2
  400. package/dist/components/Notification/Notification.stories.js.map +1 -1
  401. package/dist/components/Notification/Notification.test.js +3 -3
  402. package/dist/components/Notification/Notification.test.js.map +1 -1
  403. package/dist/components/Notification/index.js +1 -1
  404. package/dist/components/OverlayCloseButton/OverlayCloseButton.js +1 -1
  405. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js +3 -3
  406. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js.map +1 -1
  407. package/dist/components/OverlayCloseButton/index.js +1 -1
  408. package/dist/components/OverlayStepBar/OverlayStepBar.d.ts +1 -1
  409. package/dist/components/OverlayStepBar/OverlayStepBar.js +1 -1
  410. package/dist/components/OverlayStepBar/OverlayStepBar.stories.js +1 -1
  411. package/dist/components/OverlayStepBar/OverlayStepBar.stories.js.map +1 -1
  412. package/dist/components/OverlayStepBar/index.js +1 -1
  413. package/dist/components/PageOverlay/PageOverlay.d.ts +1 -1
  414. package/dist/components/PageOverlay/PageOverlay.js +1 -1
  415. package/dist/components/PageOverlay/PageOverlay.stories.js +4 -4
  416. package/dist/components/PageOverlay/PageOverlay.stories.js.map +1 -1
  417. package/dist/components/PageOverlay/index.js +1 -1
  418. package/dist/components/PeriodSelector/PeriodSelector.d.ts +1 -1
  419. package/dist/components/PeriodSelector/PeriodSelector.js +1 -1
  420. package/dist/components/PeriodSelector/PeriodSelector.stories.js +2 -2
  421. package/dist/components/PeriodSelector/PeriodSelector.stories.js.map +1 -1
  422. package/dist/components/PeriodSelector/index.js +1 -1
  423. package/dist/components/Periods/Periods.d.ts +1 -1
  424. package/dist/components/Periods/Periods.js +1 -1
  425. package/dist/components/Periods/Periods.stories.js +1 -1
  426. package/dist/components/Periods/Periods.stories.js.map +1 -1
  427. package/dist/components/Periods/index.js +1 -1
  428. package/dist/components/ProgrammeCard/ProgrammeCard.d.ts +1 -1
  429. package/dist/components/ProgrammeCard/ProgrammeCard.js +1 -1
  430. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js +3 -3
  431. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js.map +1 -1
  432. package/dist/components/ProgrammeCard/index.js +1 -1
  433. package/dist/components/RadioButton/RadioButton.d.ts +1 -1
  434. package/dist/components/RadioButton/RadioButton.js +1 -1
  435. package/dist/components/RadioButton/RadioButton.stories.js +1 -1
  436. package/dist/components/RadioButton/RadioButton.stories.js.map +1 -1
  437. package/dist/components/RadioButton/index.js +1 -1
  438. package/dist/components/RadioGroup/RadioGroup.d.ts +1 -1
  439. package/dist/components/RadioGroup/RadioGroup.js +1 -1
  440. package/dist/components/RadioGroup/RadioGroup.stories.js +2 -2
  441. package/dist/components/RadioGroup/RadioGroup.stories.js.map +1 -1
  442. package/dist/components/RadioGroup/Radiogroup.test.js +3 -3
  443. package/dist/components/RadioGroup/Radiogroup.test.js.map +1 -1
  444. package/dist/components/RadioGroup/index.js +1 -1
  445. package/dist/components/RadioTabSelector/RadioTabSelector.d.ts +1 -1
  446. package/dist/components/RadioTabSelector/RadioTabSelector.js +1 -1
  447. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js +2 -2
  448. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js.map +1 -1
  449. package/dist/components/RadioTabSelector/index.js +1 -1
  450. package/dist/components/Repeater/Repeater.d.ts +1 -1
  451. package/dist/components/Repeater/Repeater.js +1 -1
  452. package/dist/components/Repeater/Repeater.stories.js +2 -2
  453. package/dist/components/Repeater/Repeater.stories.js.map +1 -1
  454. package/dist/components/Repeater/index.js +1 -1
  455. package/dist/components/RteEditor/EditorHeader/EditorHeader.d.ts +1 -1
  456. package/dist/components/RteEditor/EditorHeader/EditorHeader.js +1 -1
  457. package/dist/components/RteEditor/EditorHeader/index.js +1 -1
  458. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +4 -4
  459. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js.map +1 -1
  460. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.d.ts +1 -1
  461. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.js +1 -1
  462. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.js +1 -1
  463. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.d.ts +1 -1
  464. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js +6 -6
  465. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js.map +1 -1
  466. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.d.ts +1 -1
  467. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +1 -1
  468. package/dist/components/RteEditor/Plugins/HistoryPlugin/index.js +1 -1
  469. package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +1 -1
  470. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js +1 -1
  471. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.d.ts +1 -1
  472. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +1 -1
  473. package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +1 -1
  474. package/dist/components/RteEditor/Plugins/LinkPlugin/index.js +1 -1
  475. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.d.ts +1 -1
  476. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +6 -6
  477. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js.map +1 -1
  478. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +1 -1
  479. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/index.js +1 -1
  480. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.js +1 -1
  481. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/index.js +1 -1
  482. package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +1 -1
  483. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.d.ts +1 -1
  484. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js +1 -1
  485. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/index.js +1 -1
  486. package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +1 -1
  487. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +2 -2
  488. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js.map +1 -1
  489. package/dist/components/RteEditor/Plugins/TablePlugin/index.js +2 -2
  490. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +1 -1
  491. package/dist/components/RteEditor/Plugins/ToolbarPlugin/index.js +1 -1
  492. package/dist/components/RteEditor/Plugins/index.js +4 -4
  493. package/dist/components/RteEditor/Providers/LanguageProvider.d.ts +1 -1
  494. package/dist/components/RteEditor/Providers/LanguageProvider.js.map +1 -1
  495. package/dist/components/RteEditor/RteEditor.d.ts +2 -2
  496. package/dist/components/RteEditor/RteEditor.js +1 -1
  497. package/dist/components/RteEditor/RteEditor.stories.d.ts +1 -1
  498. package/dist/components/RteEditor/RteEditor.stories.js +2 -2
  499. package/dist/components/RteEditor/RteEditor.stories.js.map +1 -1
  500. package/dist/components/RteEditor/UvaTheme/UvaTheme.js +1 -1
  501. package/dist/components/RteEditor/UvaTheme/UvaTheme.js.map +1 -1
  502. package/dist/components/RteEditor/helpers.js +4 -4
  503. package/dist/components/RteEditor/helpers.js.map +1 -1
  504. package/dist/components/RteEditor/hooks/components/Flyout.js +1 -1
  505. package/dist/components/RteEditor/hooks/useFlyout.js +1 -1
  506. package/dist/components/RteEditor/hooks/useFlyout.js.map +1 -1
  507. package/dist/components/RteEditor/hooks/useTranslation.js.map +1 -1
  508. package/dist/components/RteEditor/index.js +1 -1
  509. package/dist/components/RteEditor/mockCatalogueSearchData.js.map +1 -1
  510. package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js +3 -3
  511. package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js.map +1 -1
  512. package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js +3 -3
  513. package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js.map +1 -1
  514. package/dist/components/RteEditor/translations.js.map +1 -1
  515. package/dist/components/SearchField/SearchField.d.ts +2 -2
  516. package/dist/components/SearchField/SearchField.js +2 -2
  517. package/dist/components/SearchField/SearchField.js.map +1 -1
  518. package/dist/components/SearchField/SearcheField.stories.js.map +1 -1
  519. package/dist/components/SearchField/components/ResultOptionBox.js +1 -1
  520. package/dist/components/SearchField/components/ResultOptionBox.js.map +1 -1
  521. package/dist/components/SearchField/components/ResultsOption.d.ts +1 -1
  522. package/dist/components/SearchField/components/ResultsOption.js +1 -1
  523. package/dist/components/SearchField/components/ResultsOption.js.map +1 -1
  524. package/dist/components/SearchField/mockData.js.map +1 -1
  525. package/dist/components/SectionNotification/SectionNotification.d.ts +1 -1
  526. package/dist/components/SectionNotification/SectionNotification.js +1 -1
  527. package/dist/components/SectionNotification/SectionNotification.stories.js +1 -1
  528. package/dist/components/SectionNotification/SectionNotification.stories.js.map +1 -1
  529. package/dist/components/SectionNotification/index.js +1 -1
  530. package/dist/components/SelectListbox/SelectListBox.stories.js +1 -1
  531. package/dist/components/SelectListbox/SelectListBox.stories.js.map +1 -1
  532. package/dist/components/SelectListbox/SelectListbox.d.ts +2 -2
  533. package/dist/components/SelectListbox/SelectListbox.js.map +1 -1
  534. package/dist/components/SelectListbox/SelectProvider.d.ts +1 -1
  535. package/dist/components/SelectListbox/SelectProvider.js.map +1 -1
  536. package/dist/components/SelectListbox/components/SelectButton.js +2 -2
  537. package/dist/components/SelectListbox/components/SelectButton.js.map +1 -1
  538. package/dist/components/SelectListbox/components/SelectContainer.d.ts +1 -1
  539. package/dist/components/SelectListbox/components/SelectContainer.js +1 -1
  540. package/dist/components/SelectListbox/components/SelectContainer.js.map +1 -1
  541. package/dist/components/SelectListbox/components/SelectOption.d.ts +1 -1
  542. package/dist/components/SelectListbox/components/SelectOption.js +2 -2
  543. package/dist/components/SelectListbox/components/SelectOption.js.map +1 -1
  544. package/dist/components/SelectListbox/components/SelectOptionBox.js +1 -1
  545. package/dist/components/SelectListbox/components/SelectOptionBox.js.map +1 -1
  546. package/dist/components/Slider/Slider.d.ts +1 -1
  547. package/dist/components/Slider/Slider.js +1 -1
  548. package/dist/components/Slider/Slider.stories.js +1 -1
  549. package/dist/components/Slider/Slider.stories.js.map +1 -1
  550. package/dist/components/Slider/index.js +1 -1
  551. package/dist/components/Sortable/Sortable.d.ts +1 -1
  552. package/dist/components/Sortable/Sortable.js +1 -1
  553. package/dist/components/Sortable/Sortable.js.map +1 -1
  554. package/dist/components/Sortable/Sortable.stories.js +2 -2
  555. package/dist/components/Sortable/Sortable.stories.js.map +1 -1
  556. package/dist/components/Sortable/SortableProvider.d.ts +1 -1
  557. package/dist/components/Sortable/SortableProvider.js +1 -1
  558. package/dist/components/Sortable/actions.js.map +1 -1
  559. package/dist/components/Sortable/components/SortableContainer.d.ts +1 -1
  560. package/dist/components/Sortable/components/SortableContainer.js +1 -1
  561. package/dist/components/Sortable/components/SortableHandle.d.ts +1 -1
  562. package/dist/components/Sortable/components/SortableHandle.js +1 -1
  563. package/dist/components/Sortable/components/SortableHandle.js.map +1 -1
  564. package/dist/components/Sortable/components/SortableItem.d.ts +1 -1
  565. package/dist/components/Sortable/components/SortableItem.js +3 -3
  566. package/dist/components/Sortable/components/SortableItem.js.map +1 -1
  567. package/dist/components/Sortable/sortableReducer.js.map +1 -1
  568. package/dist/components/Spinner/Spinner.d.ts +1 -1
  569. package/dist/components/Spinner/Spinner.js +1 -1
  570. package/dist/components/Spinner/Spinner.stories.js +1 -1
  571. package/dist/components/Spinner/Spinner.stories.js.map +1 -1
  572. package/dist/components/Spinner/index.js +1 -1
  573. package/dist/components/StatusBadge/StatusBadge.stories.js +1 -1
  574. package/dist/components/StatusBadge/StatusBadge.stories.js.map +1 -1
  575. package/dist/components/StatusBadge/StatusBadge.test.js +3 -3
  576. package/dist/components/StatusBadge/StatusBadge.test.js.map +1 -1
  577. package/dist/components/StatusBadge/StatusBage.d.ts +1 -1
  578. package/dist/components/StatusBadge/StatusBage.js +1 -1
  579. package/dist/components/StatusBadge/index.js +1 -1
  580. package/dist/components/StatusPill/StatusPill.d.ts +1 -1
  581. package/dist/components/StatusPill/StatusPill.js +1 -1
  582. package/dist/components/StatusPill/StatusPill.stories.js +2 -2
  583. package/dist/components/StatusPill/StatusPill.stories.js.map +1 -1
  584. package/dist/components/StatusPill/index.js +1 -1
  585. package/dist/components/TextArea/TextArea.d.ts +1 -1
  586. package/dist/components/TextArea/TextArea.js +1 -1
  587. package/dist/components/TextArea/TextArea.stories.js +2 -2
  588. package/dist/components/TextArea/TextArea.stories.js.map +1 -1
  589. package/dist/components/TextArea/TextArea.test.js +4 -4
  590. package/dist/components/TextArea/TextArea.test.js.map +1 -1
  591. package/dist/components/TextArea/index.js +1 -1
  592. package/dist/components/ToggleSwitch/ToggleSwitch.d.ts +1 -1
  593. package/dist/components/ToggleSwitch/ToggleSwitch.js +1 -1
  594. package/dist/components/ToggleSwitch/ToggleSwitch.stories.js +2 -2
  595. package/dist/components/ToggleSwitch/ToggleSwitch.stories.js.map +1 -1
  596. package/dist/components/ToggleSwitch/index.js +1 -1
  597. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  598. package/dist/components/Tooltip/Tooltip.js +1 -1
  599. package/dist/components/Tooltip/Tooltip.stories.js +2 -2
  600. package/dist/components/Tooltip/Tooltip.stories.js.map +1 -1
  601. package/dist/components/Tooltip/index.js +1 -1
  602. package/dist/components/VarIndicator/VarIndicator.d.ts +1 -1
  603. package/dist/components/VarIndicator/VarIndicator.js +1 -1
  604. package/dist/components/VarIndicator/VarIndicator.stories.js +2 -2
  605. package/dist/components/VarIndicator/VarIndicator.stories.js.map +1 -1
  606. package/dist/components/VarIndicator/VarIndicator.test.js +4 -4
  607. package/dist/components/VarIndicator/VarIndicator.test.js.map +1 -1
  608. package/dist/components/VarIndicator/index.js +1 -1
  609. package/dist/components/WeekSelector/WeekSelector.d.ts +1 -1
  610. package/dist/components/WeekSelector/WeekSelector.js +2 -2
  611. package/dist/components/WeekSelector/WeekSelector.js.map +1 -1
  612. package/dist/components/WeekSelector/WeekSelector.stories.js.map +1 -1
  613. package/dist/components/WeekSelector/components/WeekSelectorButton.d.ts +1 -1
  614. package/dist/components/WeekSelector/components/WeekSelectorButton.js +1 -1
  615. package/dist/components/WeekSelector/components/WeekSelectorButton.js.map +1 -1
  616. package/dist/components/WeekSelector/components/WeekSelectorOption.d.ts +1 -1
  617. package/dist/components/WeekSelector/components/WeekSelectorOption.js +2 -2
  618. package/dist/components/WeekSelector/components/WeekSelectorOption.js.map +1 -1
  619. package/dist/components/WeekSelector/components/WeekSelectorOptionContainer.js +1 -1
  620. package/dist/components/WeekSelector/components/WeekSelectorOptionContainer.js.map +1 -1
  621. package/dist/components/WeekSelector/mockdata.js.map +1 -1
  622. package/dist/components/hooks/useDebounce.js.map +1 -1
  623. package/dist/components/hooks/useOnClickOutside.js.map +1 -1
  624. package/dist/components/hooks/usePositionedFloaters.js.map +1 -1
  625. package/dist/components/hooks/useResponsive.js.map +1 -1
  626. package/dist/components/index.js +52 -52
  627. package/dist/{components-BzxAULjf.js → components-D6_Sx8Hs.js} +24 -24
  628. package/dist/{components-BzxAULjf.js.map → components-D6_Sx8Hs.js.map} +1 -1
  629. package/dist/{dist-V_v3kC0L.js → dist-Cxk2-lJw.js} +4 -4
  630. package/dist/{dist-V_v3kC0L.js.map → dist-Cxk2-lJw.js.map} +1 -1
  631. package/dist/{esm-BoujHjK5.js → esm-BJhEQquH.js} +10 -10
  632. package/dist/{esm-BoujHjK5.js.map → esm-BJhEQquH.js.map} +1 -1
  633. package/dist/{helpers-B1VK8xTF.js → helpers-z8cqBNoz.js} +3 -3
  634. package/dist/{helpers-B1VK8xTF.js.map → helpers-z8cqBNoz.js.map} +1 -1
  635. package/dist/{icons-TRhI-4V6.js → icons-ClUPu6KU.js} +1 -1
  636. package/dist/{icons-TRhI-4V6.js.map → icons-ClUPu6KU.js.map} +1 -1
  637. package/dist/index.js +52 -52
  638. package/dist/{lib-BvOQt8El.js → lib-Do6N-CJR.js} +2 -2
  639. package/dist/{lib-BvOQt8El.js.map → lib-Do6N-CJR.js.map} +1 -1
  640. package/dist/{react-18-DxAWL8_m.js → react-18-BAudFSEM.js} +3 -3
  641. package/dist/{react-18-DxAWL8_m.js.map → react-18-BAudFSEM.js.map} +1 -1
  642. package/dist/{react.esm-CweFe1CK.js → react.esm-GvSawg5E.js} +79 -79
  643. package/dist/{react.esm-CweFe1CK.js.map → react.esm-GvSawg5E.js.map} +1 -1
  644. package/dist/setupTests.js +2 -2
  645. package/dist/setupTests.js.map +1 -1
  646. package/dist/storyComponents/ClipboardButton/ClipboardButton.d.ts +1 -1
  647. package/dist/storyComponents/ClipboardButton/ClipboardButton.js +1 -1
  648. package/dist/storyComponents/ClipboardButton/index.js +1 -1
  649. package/dist/storyComponents/Container/Container.d.ts +1 -1
  650. package/dist/storyComponents/Container/Container.js +1 -1
  651. package/dist/storyComponents/Container/index.js +1 -1
  652. package/dist/storybook__react.d.js +5 -5
  653. package/dist/storybook__react.d.js.map +1 -1
  654. package/dist/{test-Pa9Lwbsq.js → test-CpW02epT.js} +2 -2
  655. package/dist/{test-Pa9Lwbsq.js.map → test-CpW02epT.js.map} +1 -1
  656. package/dist/{test-utils-Cmn06m_x.js → test-utils-DcI4ZXle.js} +2 -2
  657. package/dist/{test-utils-Cmn06m_x.js.map → test-utils-DcI4ZXle.js.map} +1 -1
  658. package/package.json +28 -27
  659. package/dist/Lexical.prod-CqPLSi0R.js.map +0 -1
  660. package/dist/LexicalClipboard.prod-BVw_sFpo.js.map +0 -1
  661. package/dist/LexicalExtension.prod-CUQTgbur.js.map +0 -1
  662. package/dist/LexicalLink.prod-DMhcqD9x.js.map +0 -1
  663. package/dist/LexicalList.prod-eYlcb5Ao.js.map +0 -1
  664. package/dist/LexicalTable.prod-DlOxUQou.js.map +0 -1
  665. /package/dist/{chunk-3e0lkp8x.js → chunk-CWhphoD1.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"SortableProvider-8HYiBXJS.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-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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"}
@@ -27,4 +27,4 @@ import './assets/Spinner.css';var r = {
27
27
  //#endregion
28
28
  export { a as t };
29
29
 
30
- //# sourceMappingURL=Spinner-BpElTDIu.js.map
30
+ //# sourceMappingURL=Spinner-BmPjd2Bv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner-BpElTDIu.js","names":[],"sources":["../src/components/Spinner/Spinner.module.css","../src/components/Spinner/Spinner.tsx"],"sourcesContent":["@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.spinner-container {\n align-items: center;\n display: flex;\n justify-content: center;\n padding: 2rem;\n}\n\n.spinner {\n height: 2rem;\n width: 2rem;\n}\n\n.spinner::after {\n border: 0.25rem solid hsl(0deg 0% 0% / 10%);\n border-radius: 50%;\n content: \" \";\n display: block;\n height: 100%;\n transform-origin: 50% 50%;\n width: 100%;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .spinner::after {\n animation: spin 1s cubic-bezier(0.455, 0.03, 0.515, 0.955) infinite;\n border-left-color: var(--color-uva-black);\n }\n}\n","import { useEffect, useState } from 'react';\n\nimport styles from './Spinner.module.css';\n\nconst DEFAULT_DELAY_IN_MS = 250;\n\nexport interface SpinnerProps {\n /** The `aria-valuetext` of the spinner. */\n ariaValueText: string;\n /** Delay in milliseconds after which the spinner becomes visible. The default is `250`. */\n showAfterMs?: number;\n}\n\n/** Represents a component to display a spinner. */\nexport const Spinner = ({ ariaValueText, showAfterMs = DEFAULT_DELAY_IN_MS }: SpinnerProps) => {\n const [visible, setVisible] = useState(() => (showAfterMs === 0 ? true : false));\n\n useEffect(() => {\n if (showAfterMs === 0) {\n return;\n }\n const t = window.setTimeout(() => {\n setVisible(true);\n }, showAfterMs);\n\n return () => {\n window.clearTimeout(t);\n };\n });\n\n if (!visible) {\n return null;\n }\n\n return (\n <div className={styles['spinner-container']}>\n <div className={styles['spinner']} role=\"progressbar\" aria-label=\"Spinner\" aria-valuetext={ariaValueText}></div>\n </div>\n );\n};\n"],"mappings":";;;;;;GCIM,IAAsB,KAUf,KAAW,EAAE,kBAAe,iBAAc,QAAwC;CAC7F,IAAM,CAAC,GAAS,KAAc,QAAgB,MAAgB,EAAkB;CAmBhF,OAjBA,QAAgB;EACd,IAAI,MAAgB,GAClB;EAEF,IAAM,IAAI,OAAO,iBAAiB;GAChC,EAAW,GAAK;KACf,EAAY;EAEf,aAAa;GACX,OAAO,aAAa,EAAE;;GAExB,EAEG,IAKH,kBAAC,OAAD;EAAK,WAAW,EAAO;YACrB,kBAAC,OAAD;GAAK,WAAW,EAAO;GAAY,MAAK;GAAc,cAAW;GAAU,kBAAgB;GAAqB,CAAA;EAC5G,CAAA,GANC"}
1
+ {"version":3,"file":"Spinner-BmPjd2Bv.js","names":[],"sources":["../src/components/Spinner/Spinner.module.css","../src/components/Spinner/Spinner.tsx"],"sourcesContent":["@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.spinner-container {\n align-items: center;\n display: flex;\n justify-content: center;\n padding: 2rem;\n}\n\n.spinner {\n height: 2rem;\n width: 2rem;\n}\n\n.spinner::after {\n border: 0.25rem solid hsl(0deg 0% 0% / 10%);\n border-radius: 50%;\n content: \" \";\n display: block;\n height: 100%;\n transform-origin: 50% 50%;\n width: 100%;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .spinner::after {\n animation: spin 1s cubic-bezier(0.455, 0.03, 0.515, 0.955) infinite;\n border-left-color: var(--color-uva-black);\n }\n}\n","import { useEffect, useState } from 'react';\n\nimport styles from './Spinner.module.css';\n\nconst DEFAULT_DELAY_IN_MS = 250;\n\nexport interface SpinnerProps {\n /** The `aria-valuetext` of the spinner. */\n ariaValueText: string;\n /** Delay in milliseconds after which the spinner becomes visible. The default is `250`. */\n showAfterMs?: number;\n}\n\n/** Represents a component to display a spinner. */\nexport const Spinner = ({ ariaValueText, showAfterMs = DEFAULT_DELAY_IN_MS }: SpinnerProps) => {\n const [visible, setVisible] = useState(() => (showAfterMs === 0 ? true : false));\n\n useEffect(() => {\n if (showAfterMs === 0) {\n return;\n }\n const t = window.setTimeout(() => {\n setVisible(true);\n }, showAfterMs);\n\n return () => {\n window.clearTimeout(t);\n };\n });\n\n if (!visible) {\n return null;\n }\n\n return (\n <div className={styles['spinner-container']}>\n <div className={styles['spinner']} role=\"progressbar\" aria-label=\"Spinner\" aria-valuetext={ariaValueText}></div>\n </div>\n );\n};\n"],"mappings":";;;;;;GCIM,IAAsB,KAUf,KAAW,EAAE,kBAAe,iBAAc,QAAwC;CAC7F,IAAM,CAAC,GAAS,KAAc,QAAgB,MAAgB,CAAiB;CAmB/E,OAjBA,QAAgB;EACd,IAAI,MAAgB,GAClB;EAEF,IAAM,IAAI,OAAO,iBAAiB;GAChC,EAAW,EAAI;EACjB,GAAG,CAAW;EAEd,aAAa;GACX,OAAO,aAAa,CAAC;EACvB;CACF,CAAC,GAEI,IAKH,kBAAC,OAAD;EAAK,WAAW,EAAO;YACrB,kBAAC,OAAD;GAAK,WAAW,EAAO;GAAY,MAAK;GAAc,cAAW;GAAU,kBAAgB;EAAoB,CAAA;CAC5G,CAAA,IANE;AAQX"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BD2qMUU1.js";
1
+ import { t as e } from "./clsx-BWCAbrjV.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-DQDOF5-U.js.map
13
+ //# sourceMappingURL=StatusBage-CfEIuIPa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBage-DQDOF5-U.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,8BAA8B,CAAC;WAAG;CAAY,CAAA"}
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,4 +1,4 @@
1
- import { t as e } from "./clsx-BD2qMUU1.js";
1
+ import { t as e } from "./clsx-BWCAbrjV.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-DM7n3I4W.js.map
30
+ //# sourceMappingURL=StatusPill-CbJV4t-V.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusPill-DM7n3I4W.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;CACb;AAGD,SAAgB,EAAW,EAAE,WAAQ,aAAU,WAAW,YAA0B;CAClF,OACE,kBAAC,QAAD;EACE,WAAW,EACT,EAAO,gBACP,EAAO,gBAAgB,MACvB,MAAY,aAAa,EAAO,gBAAgB,KACjD;YALH,EAOI,MAAW,cAAc,MAAW,iBACpC,kBAAC,GAAD;GAAM,MAAM,EAAY;GAAU,OAAO;GAAQ,MAAM;GAAM,CAAA,EAE9D,EACI"}
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,6 +1,6 @@
1
- import { t as e } from "./clsx-BD2qMUU1.js";
1
+ import { t as e } from "./clsx-BWCAbrjV.js";
2
2
  import { Icon as t } from "./components/Icon/Icon.js";
3
- import { t as n } from "./LexicalComposerContext.prod-Ca-YN_fj.js";
3
+ import { t as n } from "./LexicalComposerContext.prod-y_BRxu3Z.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-D0IMQr3E.js.map
119
+ //# sourceMappingURL=TableCellContextMenu-9V8mnPmU.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableCellContextMenu-D0IMQr3E.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-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,7 +1,7 @@
1
- import { t as e } from "./LexicalComposerContext.prod-Ca-YN_fj.js";
2
- import { At as t, w as n } from "./Lexical.prod-CqPLSi0R.js";
3
- import { i as r, n as i } from "./LexicalUtils.prod-BqcriFWV.js";
4
- import { b as a, d as o, f as s, g as c, i as l, r as u, s as d, w as f, y as p } from "./LexicalTable.prod-DlOxUQou.js";
1
+ import { t as e } from "./LexicalComposerContext.prod-y_BRxu3Z.js";
2
+ import { At as t, w as n } from "./Lexical.prod-8zZnpGo4.js";
3
+ import { i as r, n as i } from "./LexicalUtils.prod-BWhWP8es.js";
4
+ import { b as a, d as o, f as s, g as c, i as l, r as u, s as d, w as f, y as p } from "./LexicalTable.prod-D_9Dr3kL.js";
5
5
  import { $createTableWrapperNode as m, TableWrapperNode as h } from "./components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js";
6
6
  import { getEditorContentWidth as g, getEditorParrentCellWidth as _, tableHasContent as v } from "./components/RteEditor/Plugins/TablePlugin/helpers.js";
7
7
  import { useCallback as y, useEffect as b, useLayoutEffect as x, useMemo as S, useRef as C, useState as w } from "react";
@@ -205,4 +205,4 @@ var L = () => {
205
205
  //#endregion
206
206
  export { j as n, L as t };
207
207
 
208
- //# sourceMappingURL=TableCellResizerPlugin-Bc5y-Qbx.js.map
208
+ //# sourceMappingURL=TableCellResizerPlugin-Djym940U.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableCellResizerPlugin-Bc5y-Qbx.js","names":["n","t","e","i","r","o"],"sources":["../node_modules/@lexical/react/useLexicalEditable.prod.mjs","../src/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.module.css","../src/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as n,useEffect as t,useMemo as i,useState as r,useRef as o}from\"react\";const c=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?n:t;function u(e){return{initialValueFn:()=>e.isEditable(),subscribe:n=>e.registerEditableListener(n)}}function a(){return function(n){const[t]=e(),u=i(()=>n(t),[t,n]),[a,l]=r(()=>u.initialValueFn()),d=o(a);return c(()=>{const{initialValueFn:e,subscribe:n}=u,t=e();return d.current!==t&&(d.current=t,l(t)),n(e=>{d.current=e,l(e)})},[u,n]),a}(u)}export{a as useLexicalEditable};\n","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n *\r\n */\n\n.table-cell-resizer__resizer {\n position: absolute;\n}\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\r\n/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * Modified from original to fit project needs wim jurriaans.\r\n *\r\n *\r\n */\r\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\r\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable';\r\nimport {\r\n $computeTableMapSkipCellCheck,\r\n $getTableNodeFromLexicalNodeOrThrow,\r\n $getTableRowIndexFromTableCellNode,\r\n $isTableCellNode,\r\n $isTableRowNode,\r\n TableNode,\r\n getDOMCellFromTarget,\r\n getTableElement,\r\n TableCellNode,\r\n} from '@lexical/table';\r\nimport { $getNearestNodeOfType, calculateZoomLevel } from '@lexical/utils';\r\nimport { $getNearestNodeFromDOMNode, isHTMLElement } from 'lexical';\r\nimport { createPortal } from 'react-dom';\r\n\r\nimport type { LexicalEditor } from 'lexical';\r\nimport type { TableDOMCell, TableMapType, TableRowNode } from '@lexical/table';\r\nimport type { JSX, MouseEventHandler, ReactPortal } from 'react';\r\n\r\nimport styles from './TableCellResizerPlugin.module.css';\r\n\r\nimport {\r\n getEditorContentWidth,\r\n getEditorParrentCellWidth,\r\n tableHasContent,\r\n} from 'components/RteEditor/Plugins/TablePlugin/helpers';\r\nimport { $createTableWrapperNode, TableWrapperNode } from 'components/RteEditor/nodes';\r\n\r\ntype MousePosition = {\r\n x: number;\r\n y: number;\r\n};\r\n\r\ntype MouseDraggingDirection = 'right' | 'bottom';\r\n\r\nconst MIN_ROW_HEIGHT = 33;\r\nconst MIN_COLUMN_WIDTH = 32;\r\nconst HALF = 2;\r\n\r\nfunction TableCellResizer({ editor }: { editor: LexicalEditor }): JSX.Element {\r\n const targetRef = useRef<HTMLElement | null>(null);\r\n const resizerRef = useRef<HTMLDivElement | null>(null);\r\n const tableRectRef = useRef<DOMRect | null>(null);\r\n\r\n const mouseStartPosRef = useRef<MousePosition | null>(null);\r\n const [mouseCurrentPos, updateMouseCurrentPos] = useState<MousePosition | null>(null);\r\n\r\n const [activeCell, updateActiveCell] = useState<TableDOMCell | null>(null);\r\n const [isMouseDown, updateIsMouseDown] = useState<boolean>(false);\r\n const [draggingDirection, updateDraggingDirection] = useState<MouseDraggingDirection | null>(null);\r\n\r\n const resetState = useCallback(() => {\r\n updateActiveCell(null);\r\n targetRef.current = null;\r\n updateDraggingDirection(null);\r\n mouseStartPosRef.current = null;\r\n tableRectRef.current = null;\r\n }, []);\r\n\r\n const isMouseDownOnEvent = (event: MouseEvent) => {\r\n return (event.buttons & 1) === 1;\r\n };\r\n\r\n useEffect(() => {\r\n return editor.registerNodeTransform(TableNode, (tableNode) => {\r\n // modification: set default column widths if not defined or table cells of imported tables has the width set\r\n if (!tableNode.getColWidths()) {\r\n const tableRows = tableNode.getChildren();\r\n const columnCount = tableNode.getColumnCount();\r\n const colWidths = new Array(columnCount).fill(undefined);\r\n\r\n const firstRow = tableRows[0] as TableRowNode;\r\n const cells = firstRow.getChildren();\r\n cells.forEach((cell, colIdx) => {\r\n const domCell = editor.getElementByKey(cell.getKey());\r\n if (domCell && domCell.style.width) {\r\n colWidths[colIdx] = parseInt(domCell.style.width, 10);\r\n domCell.style.width = '';\r\n } else if (tableHasContent(tableNode)) {\r\n const isNested = tableNode ? $getNearestNodeOfType(tableNode, TableCellNode) : null;\r\n\r\n const availableWidth = isNested\r\n ? getEditorParrentCellWidth(isNested, columnCount, editor)\r\n : getEditorContentWidth(editor);\r\n const newColWidth = availableWidth / columnCount;\r\n colWidths[colIdx] = Math.max(newColWidth, MIN_COLUMN_WIDTH);\r\n } else {\r\n colWidths[colIdx] = MIN_COLUMN_WIDTH;\r\n }\r\n });\r\n\r\n tableNode.setColWidths(colWidths);\r\n }\r\n\r\n // modification: wrap table node in a wrapper node if there is no wrapper node present\r\n if (tableNode && !(tableNode.getParent() instanceof TableWrapperNode)) {\r\n const wrapperNode = $createTableWrapperNode();\r\n tableNode.replace(wrapperNode);\r\n wrapperNode.append(tableNode);\r\n }\r\n\r\n return tableNode;\r\n });\r\n }, [editor]);\r\n\r\n useEffect(() => {\r\n const onMouseMove = (event: MouseEvent) => {\r\n const target = event.target;\r\n if (!isHTMLElement(target)) {\r\n return;\r\n }\r\n\r\n if (draggingDirection) {\r\n updateMouseCurrentPos({\r\n x: event.clientX,\r\n y: event.clientY,\r\n });\r\n return;\r\n }\r\n updateIsMouseDown(isMouseDownOnEvent(event));\r\n if (resizerRef.current && resizerRef.current.contains(target)) {\r\n return;\r\n }\r\n\r\n if (targetRef.current !== target) {\r\n targetRef.current = target;\r\n const cell = getDOMCellFromTarget(target);\r\n\r\n if (cell && activeCell !== cell) {\r\n editor.getEditorState().read(\r\n () => {\r\n const tableCellNode = $getNearestNodeFromDOMNode(cell.elem);\r\n if (!tableCellNode) {\r\n throw new Error('TableCellResizer: Table cell node not found.');\r\n }\r\n\r\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\r\n const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()));\r\n\r\n if (!tableElement) {\r\n throw new Error('TableCellResizer: Table element not found.');\r\n }\r\n\r\n targetRef.current = target;\r\n tableRectRef.current = tableElement.getBoundingClientRect();\r\n updateActiveCell(cell);\r\n },\r\n { editor }\r\n );\r\n } else if (cell == null) {\r\n resetState();\r\n }\r\n }\r\n };\r\n\r\n const onMouseDown = () => {\r\n updateIsMouseDown(true);\r\n };\r\n\r\n const onMouseUp = () => {\r\n updateIsMouseDown(false);\r\n };\r\n\r\n const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {\r\n prevRootElement?.removeEventListener('mousemove', onMouseMove);\r\n prevRootElement?.removeEventListener('mousedown', onMouseDown);\r\n prevRootElement?.removeEventListener('mouseup', onMouseUp);\r\n rootElement?.addEventListener('mousemove', onMouseMove);\r\n rootElement?.addEventListener('mousedown', onMouseDown);\r\n rootElement?.addEventListener('mouseup', onMouseUp);\r\n });\r\n\r\n return () => {\r\n removeRootListener();\r\n };\r\n }, [activeCell, draggingDirection, editor, resetState]);\r\n\r\n const isHeightChanging = (direction: MouseDraggingDirection) => {\r\n if (direction === 'bottom') {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const updateRowHeight = useCallback(\r\n (heightChange: number) => {\r\n if (!activeCell) {\r\n throw new Error('TableCellResizer: Expected active cell.');\r\n }\r\n\r\n editor.update(\r\n () => {\r\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);\r\n if (!$isTableCellNode(tableCellNode)) {\r\n throw new Error('TableCellResizer: Table cell node not found.');\r\n }\r\n\r\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\r\n\r\n const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode) + tableCellNode.getRowSpan() - 1;\r\n\r\n const tableRows = tableNode.getChildren();\r\n\r\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\r\n throw new Error('Expected table cell to be inside of table row.');\r\n }\r\n\r\n const tableRow = tableRows[tableRowIndex];\r\n\r\n if (!$isTableRowNode(tableRow)) {\r\n throw new Error('Expected table row');\r\n }\r\n\r\n let height = tableRow.getHeight();\r\n if (height === undefined) {\r\n const rowCells = tableRow.getChildren<TableCellNode>();\r\n height = Math.min(...rowCells.map((cell) => getCellNodeHeight(cell, editor) ?? Infinity));\r\n }\r\n\r\n const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT);\r\n tableRow.setHeight(newHeight);\r\n },\r\n { tag: 'skip-scroll-into-view' }\r\n );\r\n },\r\n [activeCell, editor]\r\n );\r\n\r\n const getCellNodeHeight = (cell: TableCellNode, activeEditor: LexicalEditor): number | undefined => {\r\n const domCellNode = activeEditor.getElementByKey(cell.getKey());\r\n return domCellNode?.clientHeight;\r\n };\r\n\r\n const getCellColumnIndex = (tableCellNode: TableCellNode, tableMap: TableMapType) => {\r\n for (let row = 0; row < tableMap.length; row++) {\r\n for (let column = 0; column < tableMap[row].length; column++) {\r\n if (tableMap[row][column].cell === tableCellNode) {\r\n return column;\r\n }\r\n }\r\n }\r\n return -1;\r\n };\r\n\r\n const updateColumnWidth = useCallback(\r\n (widthChange: number) => {\r\n if (!activeCell) {\r\n throw new Error('TableCellResizer: Expected active cell.');\r\n }\r\n editor.update(\r\n () => {\r\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);\r\n if (!$isTableCellNode(tableCellNode)) {\r\n throw new Error('TableCellResizer: Table cell node not found.');\r\n }\r\n\r\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\r\n const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null);\r\n const columnIndex = getCellColumnIndex(tableCellNode, tableMap);\r\n if (columnIndex === undefined) {\r\n throw new Error('TableCellResizer: Table column not found.');\r\n }\r\n\r\n const colWidths = tableNode.getColWidths();\r\n if (!colWidths) {\r\n return;\r\n }\r\n const width = colWidths[columnIndex];\r\n if (width === undefined) {\r\n return;\r\n }\r\n const newColWidths = [...colWidths];\r\n const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH);\r\n newColWidths[columnIndex] = newWidth;\r\n tableNode.setColWidths(newColWidths);\r\n\r\n // modification: when resizing a column, also resize the next column so the table doesn't overflow\r\n if (columnIndex < tableNode.getColumnCount() - 1) {\r\n const nextColWidths = tableNode.getColWidths();\r\n if (!nextColWidths) {\r\n return;\r\n }\r\n const newNextColWidths = [...nextColWidths];\r\n const newColumnIndex = columnIndex + 1;\r\n const newNextWidth = nextColWidths[newColumnIndex];\r\n const nextWidth = Math.max(newNextWidth - widthChange, MIN_COLUMN_WIDTH);\r\n newNextColWidths[newColumnIndex] = nextWidth;\r\n tableNode.setColWidths(newNextColWidths);\r\n }\r\n },\r\n { tag: 'skip-scroll-into-view' }\r\n );\r\n },\r\n [activeCell, editor]\r\n );\r\n\r\n const mouseUpHandler = useCallback(\r\n (direction: MouseDraggingDirection) => {\r\n const handler = (event: MouseEvent) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (!activeCell) {\r\n throw new Error('TableCellResizer: Expected active cell.');\r\n }\r\n\r\n if (mouseStartPosRef.current) {\r\n const { x, y } = mouseStartPosRef.current;\r\n\r\n if (activeCell === null) {\r\n return;\r\n }\r\n const zoom = calculateZoomLevel(event.target as Element);\r\n\r\n if (isHeightChanging(direction)) {\r\n const heightChange = (event.clientY - y) / zoom;\r\n updateRowHeight(heightChange);\r\n } else {\r\n const widthChange = (event.clientX - x) / zoom;\r\n updateColumnWidth(widthChange);\r\n }\r\n\r\n resetState();\r\n document.removeEventListener('mouseup', handler);\r\n }\r\n };\r\n return handler;\r\n },\r\n [activeCell, resetState, updateColumnWidth, updateRowHeight]\r\n );\r\n\r\n const toggleResize = useCallback(\r\n (direction: MouseDraggingDirection): MouseEventHandler<HTMLDivElement> =>\r\n (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (!activeCell) {\r\n throw new Error('TableCellResizer: Expected active cell.');\r\n }\r\n\r\n mouseStartPosRef.current = {\r\n x: event.clientX,\r\n y: event.clientY,\r\n };\r\n updateMouseCurrentPos(mouseStartPosRef.current);\r\n updateDraggingDirection(direction);\r\n\r\n document.addEventListener('mouseup', mouseUpHandler(direction));\r\n },\r\n [activeCell, mouseUpHandler]\r\n );\r\n\r\n const getResizers = useCallback(() => {\r\n if (activeCell) {\r\n const { height, width, top, left } = activeCell.elem.getBoundingClientRect();\r\n const zoom = calculateZoomLevel(activeCell.elem);\r\n const zoneWidth = 10; // Pixel width of the zone where you can drag the edge\r\n const styles = {\r\n bottom: {\r\n backgroundColor: 'none',\r\n cursor: 'ns-resize',\r\n height: `${zoneWidth}px`,\r\n left: `${window.pageXOffset + left}px`,\r\n top: `${window.pageYOffset + top + height - zoneWidth / HALF}px`,\r\n width: `${width}px`,\r\n zIndex: 5000,\r\n },\r\n right: {\r\n backgroundColor: 'none',\r\n cursor: 'ew-resize',\r\n height: `${height}px`,\r\n left: `${window.pageXOffset + left + width - zoneWidth / HALF}px`,\r\n top: `${window.pageYOffset + top}px`,\r\n width: `${zoneWidth}px`,\r\n zIndex: 5000,\r\n },\r\n };\r\n\r\n const tableRect = tableRectRef.current;\r\n\r\n if (draggingDirection && mouseCurrentPos && tableRect) {\r\n if (isHeightChanging(draggingDirection)) {\r\n styles[draggingDirection].left = `${window.pageXOffset + tableRect.left}px`;\r\n styles[draggingDirection].top = `${window.pageYOffset + mouseCurrentPos.y / zoom}px`;\r\n styles[draggingDirection].height = '3px';\r\n styles[draggingDirection].width = `${tableRect.width}px`;\r\n } else {\r\n styles[draggingDirection].top = `${window.pageYOffset + tableRect.top}px`;\r\n styles[draggingDirection].left = `${window.pageXOffset + mouseCurrentPos.x / zoom}px`;\r\n styles[draggingDirection].width = '3px';\r\n styles[draggingDirection].height = `${tableRect.height}px`;\r\n }\r\n\r\n styles[draggingDirection].backgroundColor = '#adf';\r\n }\r\n\r\n return styles;\r\n }\r\n\r\n return {\r\n bottom: null,\r\n left: null,\r\n right: null,\r\n top: null,\r\n };\r\n }, [activeCell, draggingDirection, mouseCurrentPos]);\r\n\r\n const resizerStyles = getResizers();\r\n\r\n return (\r\n <div ref={resizerRef}>\r\n {activeCell != null && !isMouseDown && (\r\n <>\r\n <div\r\n className={styles['table-cell-resizer__resizer']}\r\n style={resizerStyles.right || undefined}\r\n onMouseDown={toggleResize('right')}\r\n />\r\n <div\r\n className={styles['table-cell-resizer__resizer']}\r\n style={resizerStyles.bottom || undefined}\r\n onMouseDown={toggleResize('bottom')}\r\n />\r\n </>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport const TableCellResizerPlugin = (): null | ReactPortal => {\r\n const [editor] = useLexicalComposerContext();\r\n const isEditable = useLexicalEditable();\r\n\r\n return useMemo(\r\n () => (isEditable ? createPortal(<TableCellResizer editor={editor} />, document.body) : null),\r\n [editor, isEditable]\r\n );\r\n};\r\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"TableCellResizerPlugin-Djym940U.js","names":["n","t","e","i","r","o"],"sources":["../node_modules/@lexical/react/useLexicalEditable.prod.mjs","../src/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.module.css","../src/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as n,useEffect as t,useMemo as i,useState as r,useRef as o}from\"react\";const c=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?n:t;function u(e){return{initialValueFn:()=>e.isEditable(),subscribe:n=>e.registerEditableListener(n)}}function a(){return function(n){const[t]=e(),u=i(()=>n(t),[t,n]),[a,l]=r(()=>u.initialValueFn()),d=o(a);return c(()=>{const{initialValueFn:e,subscribe:n}=u,t=e();return d.current!==t&&(d.current=t,l(t)),n(e=>{d.current=e,l(e)})},[u,n]),a}(u)}export{a as useLexicalEditable};\n","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n *\r\n */\n\n.table-cell-resizer__resizer {\n position: absolute;\n}\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\r\n/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n * Modified from original to fit project needs wim jurriaans.\r\n *\r\n *\r\n */\r\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\r\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable';\r\nimport {\r\n $computeTableMapSkipCellCheck,\r\n $getTableNodeFromLexicalNodeOrThrow,\r\n $getTableRowIndexFromTableCellNode,\r\n $isTableCellNode,\r\n $isTableRowNode,\r\n TableNode,\r\n getDOMCellFromTarget,\r\n getTableElement,\r\n TableCellNode,\r\n} from '@lexical/table';\r\nimport { $getNearestNodeOfType, calculateZoomLevel } from '@lexical/utils';\r\nimport { $getNearestNodeFromDOMNode, isHTMLElement } from 'lexical';\r\nimport { createPortal } from 'react-dom';\r\n\r\nimport type { LexicalEditor } from 'lexical';\r\nimport type { TableDOMCell, TableMapType, TableRowNode } from '@lexical/table';\r\nimport type { JSX, MouseEventHandler, ReactPortal } from 'react';\r\n\r\nimport styles from './TableCellResizerPlugin.module.css';\r\n\r\nimport {\r\n getEditorContentWidth,\r\n getEditorParrentCellWidth,\r\n tableHasContent,\r\n} from 'components/RteEditor/Plugins/TablePlugin/helpers';\r\nimport { $createTableWrapperNode, TableWrapperNode } from 'components/RteEditor/nodes';\r\n\r\ntype MousePosition = {\r\n x: number;\r\n y: number;\r\n};\r\n\r\ntype MouseDraggingDirection = 'right' | 'bottom';\r\n\r\nconst MIN_ROW_HEIGHT = 33;\r\nconst MIN_COLUMN_WIDTH = 32;\r\nconst HALF = 2;\r\n\r\nfunction TableCellResizer({ editor }: { editor: LexicalEditor }): JSX.Element {\r\n const targetRef = useRef<HTMLElement | null>(null);\r\n const resizerRef = useRef<HTMLDivElement | null>(null);\r\n const tableRectRef = useRef<DOMRect | null>(null);\r\n\r\n const mouseStartPosRef = useRef<MousePosition | null>(null);\r\n const [mouseCurrentPos, updateMouseCurrentPos] = useState<MousePosition | null>(null);\r\n\r\n const [activeCell, updateActiveCell] = useState<TableDOMCell | null>(null);\r\n const [isMouseDown, updateIsMouseDown] = useState<boolean>(false);\r\n const [draggingDirection, updateDraggingDirection] = useState<MouseDraggingDirection | null>(null);\r\n\r\n const resetState = useCallback(() => {\r\n updateActiveCell(null);\r\n targetRef.current = null;\r\n updateDraggingDirection(null);\r\n mouseStartPosRef.current = null;\r\n tableRectRef.current = null;\r\n }, []);\r\n\r\n const isMouseDownOnEvent = (event: MouseEvent) => {\r\n return (event.buttons & 1) === 1;\r\n };\r\n\r\n useEffect(() => {\r\n return editor.registerNodeTransform(TableNode, (tableNode) => {\r\n // modification: set default column widths if not defined or table cells of imported tables has the width set\r\n if (!tableNode.getColWidths()) {\r\n const tableRows = tableNode.getChildren();\r\n const columnCount = tableNode.getColumnCount();\r\n const colWidths = new Array(columnCount).fill(undefined);\r\n\r\n const firstRow = tableRows[0] as TableRowNode;\r\n const cells = firstRow.getChildren();\r\n cells.forEach((cell, colIdx) => {\r\n const domCell = editor.getElementByKey(cell.getKey());\r\n if (domCell && domCell.style.width) {\r\n colWidths[colIdx] = parseInt(domCell.style.width, 10);\r\n domCell.style.width = '';\r\n } else if (tableHasContent(tableNode)) {\r\n const isNested = tableNode ? $getNearestNodeOfType(tableNode, TableCellNode) : null;\r\n\r\n const availableWidth = isNested\r\n ? getEditorParrentCellWidth(isNested, columnCount, editor)\r\n : getEditorContentWidth(editor);\r\n const newColWidth = availableWidth / columnCount;\r\n colWidths[colIdx] = Math.max(newColWidth, MIN_COLUMN_WIDTH);\r\n } else {\r\n colWidths[colIdx] = MIN_COLUMN_WIDTH;\r\n }\r\n });\r\n\r\n tableNode.setColWidths(colWidths);\r\n }\r\n\r\n // modification: wrap table node in a wrapper node if there is no wrapper node present\r\n if (tableNode && !(tableNode.getParent() instanceof TableWrapperNode)) {\r\n const wrapperNode = $createTableWrapperNode();\r\n tableNode.replace(wrapperNode);\r\n wrapperNode.append(tableNode);\r\n }\r\n\r\n return tableNode;\r\n });\r\n }, [editor]);\r\n\r\n useEffect(() => {\r\n const onMouseMove = (event: MouseEvent) => {\r\n const target = event.target;\r\n if (!isHTMLElement(target)) {\r\n return;\r\n }\r\n\r\n if (draggingDirection) {\r\n updateMouseCurrentPos({\r\n x: event.clientX,\r\n y: event.clientY,\r\n });\r\n return;\r\n }\r\n updateIsMouseDown(isMouseDownOnEvent(event));\r\n if (resizerRef.current && resizerRef.current.contains(target)) {\r\n return;\r\n }\r\n\r\n if (targetRef.current !== target) {\r\n targetRef.current = target;\r\n const cell = getDOMCellFromTarget(target);\r\n\r\n if (cell && activeCell !== cell) {\r\n editor.getEditorState().read(\r\n () => {\r\n const tableCellNode = $getNearestNodeFromDOMNode(cell.elem);\r\n if (!tableCellNode) {\r\n throw new Error('TableCellResizer: Table cell node not found.');\r\n }\r\n\r\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\r\n const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()));\r\n\r\n if (!tableElement) {\r\n throw new Error('TableCellResizer: Table element not found.');\r\n }\r\n\r\n targetRef.current = target;\r\n tableRectRef.current = tableElement.getBoundingClientRect();\r\n updateActiveCell(cell);\r\n },\r\n { editor }\r\n );\r\n } else if (cell == null) {\r\n resetState();\r\n }\r\n }\r\n };\r\n\r\n const onMouseDown = () => {\r\n updateIsMouseDown(true);\r\n };\r\n\r\n const onMouseUp = () => {\r\n updateIsMouseDown(false);\r\n };\r\n\r\n const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {\r\n prevRootElement?.removeEventListener('mousemove', onMouseMove);\r\n prevRootElement?.removeEventListener('mousedown', onMouseDown);\r\n prevRootElement?.removeEventListener('mouseup', onMouseUp);\r\n rootElement?.addEventListener('mousemove', onMouseMove);\r\n rootElement?.addEventListener('mousedown', onMouseDown);\r\n rootElement?.addEventListener('mouseup', onMouseUp);\r\n });\r\n\r\n return () => {\r\n removeRootListener();\r\n };\r\n }, [activeCell, draggingDirection, editor, resetState]);\r\n\r\n const isHeightChanging = (direction: MouseDraggingDirection) => {\r\n if (direction === 'bottom') {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const updateRowHeight = useCallback(\r\n (heightChange: number) => {\r\n if (!activeCell) {\r\n throw new Error('TableCellResizer: Expected active cell.');\r\n }\r\n\r\n editor.update(\r\n () => {\r\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);\r\n if (!$isTableCellNode(tableCellNode)) {\r\n throw new Error('TableCellResizer: Table cell node not found.');\r\n }\r\n\r\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\r\n\r\n const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode) + tableCellNode.getRowSpan() - 1;\r\n\r\n const tableRows = tableNode.getChildren();\r\n\r\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\r\n throw new Error('Expected table cell to be inside of table row.');\r\n }\r\n\r\n const tableRow = tableRows[tableRowIndex];\r\n\r\n if (!$isTableRowNode(tableRow)) {\r\n throw new Error('Expected table row');\r\n }\r\n\r\n let height = tableRow.getHeight();\r\n if (height === undefined) {\r\n const rowCells = tableRow.getChildren<TableCellNode>();\r\n height = Math.min(...rowCells.map((cell) => getCellNodeHeight(cell, editor) ?? Infinity));\r\n }\r\n\r\n const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT);\r\n tableRow.setHeight(newHeight);\r\n },\r\n { tag: 'skip-scroll-into-view' }\r\n );\r\n },\r\n [activeCell, editor]\r\n );\r\n\r\n const getCellNodeHeight = (cell: TableCellNode, activeEditor: LexicalEditor): number | undefined => {\r\n const domCellNode = activeEditor.getElementByKey(cell.getKey());\r\n return domCellNode?.clientHeight;\r\n };\r\n\r\n const getCellColumnIndex = (tableCellNode: TableCellNode, tableMap: TableMapType) => {\r\n for (let row = 0; row < tableMap.length; row++) {\r\n for (let column = 0; column < tableMap[row].length; column++) {\r\n if (tableMap[row][column].cell === tableCellNode) {\r\n return column;\r\n }\r\n }\r\n }\r\n return -1;\r\n };\r\n\r\n const updateColumnWidth = useCallback(\r\n (widthChange: number) => {\r\n if (!activeCell) {\r\n throw new Error('TableCellResizer: Expected active cell.');\r\n }\r\n editor.update(\r\n () => {\r\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);\r\n if (!$isTableCellNode(tableCellNode)) {\r\n throw new Error('TableCellResizer: Table cell node not found.');\r\n }\r\n\r\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\r\n const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null);\r\n const columnIndex = getCellColumnIndex(tableCellNode, tableMap);\r\n if (columnIndex === undefined) {\r\n throw new Error('TableCellResizer: Table column not found.');\r\n }\r\n\r\n const colWidths = tableNode.getColWidths();\r\n if (!colWidths) {\r\n return;\r\n }\r\n const width = colWidths[columnIndex];\r\n if (width === undefined) {\r\n return;\r\n }\r\n const newColWidths = [...colWidths];\r\n const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH);\r\n newColWidths[columnIndex] = newWidth;\r\n tableNode.setColWidths(newColWidths);\r\n\r\n // modification: when resizing a column, also resize the next column so the table doesn't overflow\r\n if (columnIndex < tableNode.getColumnCount() - 1) {\r\n const nextColWidths = tableNode.getColWidths();\r\n if (!nextColWidths) {\r\n return;\r\n }\r\n const newNextColWidths = [...nextColWidths];\r\n const newColumnIndex = columnIndex + 1;\r\n const newNextWidth = nextColWidths[newColumnIndex];\r\n const nextWidth = Math.max(newNextWidth - widthChange, MIN_COLUMN_WIDTH);\r\n newNextColWidths[newColumnIndex] = nextWidth;\r\n tableNode.setColWidths(newNextColWidths);\r\n }\r\n },\r\n { tag: 'skip-scroll-into-view' }\r\n );\r\n },\r\n [activeCell, editor]\r\n );\r\n\r\n const mouseUpHandler = useCallback(\r\n (direction: MouseDraggingDirection) => {\r\n const handler = (event: MouseEvent) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (!activeCell) {\r\n throw new Error('TableCellResizer: Expected active cell.');\r\n }\r\n\r\n if (mouseStartPosRef.current) {\r\n const { x, y } = mouseStartPosRef.current;\r\n\r\n if (activeCell === null) {\r\n return;\r\n }\r\n const zoom = calculateZoomLevel(event.target as Element);\r\n\r\n if (isHeightChanging(direction)) {\r\n const heightChange = (event.clientY - y) / zoom;\r\n updateRowHeight(heightChange);\r\n } else {\r\n const widthChange = (event.clientX - x) / zoom;\r\n updateColumnWidth(widthChange);\r\n }\r\n\r\n resetState();\r\n document.removeEventListener('mouseup', handler);\r\n }\r\n };\r\n return handler;\r\n },\r\n [activeCell, resetState, updateColumnWidth, updateRowHeight]\r\n );\r\n\r\n const toggleResize = useCallback(\r\n (direction: MouseDraggingDirection): MouseEventHandler<HTMLDivElement> =>\r\n (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (!activeCell) {\r\n throw new Error('TableCellResizer: Expected active cell.');\r\n }\r\n\r\n mouseStartPosRef.current = {\r\n x: event.clientX,\r\n y: event.clientY,\r\n };\r\n updateMouseCurrentPos(mouseStartPosRef.current);\r\n updateDraggingDirection(direction);\r\n\r\n document.addEventListener('mouseup', mouseUpHandler(direction));\r\n },\r\n [activeCell, mouseUpHandler]\r\n );\r\n\r\n const getResizers = useCallback(() => {\r\n if (activeCell) {\r\n const { height, width, top, left } = activeCell.elem.getBoundingClientRect();\r\n const zoom = calculateZoomLevel(activeCell.elem);\r\n const zoneWidth = 10; // Pixel width of the zone where you can drag the edge\r\n const styles = {\r\n bottom: {\r\n backgroundColor: 'none',\r\n cursor: 'ns-resize',\r\n height: `${zoneWidth}px`,\r\n left: `${window.pageXOffset + left}px`,\r\n top: `${window.pageYOffset + top + height - zoneWidth / HALF}px`,\r\n width: `${width}px`,\r\n zIndex: 5000,\r\n },\r\n right: {\r\n backgroundColor: 'none',\r\n cursor: 'ew-resize',\r\n height: `${height}px`,\r\n left: `${window.pageXOffset + left + width - zoneWidth / HALF}px`,\r\n top: `${window.pageYOffset + top}px`,\r\n width: `${zoneWidth}px`,\r\n zIndex: 5000,\r\n },\r\n };\r\n\r\n const tableRect = tableRectRef.current;\r\n\r\n if (draggingDirection && mouseCurrentPos && tableRect) {\r\n if (isHeightChanging(draggingDirection)) {\r\n styles[draggingDirection].left = `${window.pageXOffset + tableRect.left}px`;\r\n styles[draggingDirection].top = `${window.pageYOffset + mouseCurrentPos.y / zoom}px`;\r\n styles[draggingDirection].height = '3px';\r\n styles[draggingDirection].width = `${tableRect.width}px`;\r\n } else {\r\n styles[draggingDirection].top = `${window.pageYOffset + tableRect.top}px`;\r\n styles[draggingDirection].left = `${window.pageXOffset + mouseCurrentPos.x / zoom}px`;\r\n styles[draggingDirection].width = '3px';\r\n styles[draggingDirection].height = `${tableRect.height}px`;\r\n }\r\n\r\n styles[draggingDirection].backgroundColor = '#adf';\r\n }\r\n\r\n return styles;\r\n }\r\n\r\n return {\r\n bottom: null,\r\n left: null,\r\n right: null,\r\n top: null,\r\n };\r\n }, [activeCell, draggingDirection, mouseCurrentPos]);\r\n\r\n const resizerStyles = getResizers();\r\n\r\n return (\r\n <div ref={resizerRef}>\r\n {activeCell != null && !isMouseDown && (\r\n <>\r\n <div\r\n className={styles['table-cell-resizer__resizer']}\r\n style={resizerStyles.right || undefined}\r\n onMouseDown={toggleResize('right')}\r\n />\r\n <div\r\n className={styles['table-cell-resizer__resizer']}\r\n style={resizerStyles.bottom || undefined}\r\n onMouseDown={toggleResize('bottom')}\r\n />\r\n </>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport const TableCellResizerPlugin = (): null | ReactPortal => {\r\n const [editor] = useLexicalComposerContext();\r\n const isEditable = useLexicalEditable();\r\n\r\n return useMemo(\r\n () => (isEditable ? createPortal(<TableCellResizer editor={editor} />, document.body) : null),\r\n [editor, isEditable]\r\n );\r\n};\r\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BD2qMUU1.js";
1
+ import { t as e } from "./clsx-BWCAbrjV.js";
2
2
  import { useEffect as t, useRef as n, useState as r } from "react";
3
3
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
4
4
  import './assets/TextArea.css';var o = {
@@ -64,4 +64,4 @@ function s({ onChange: s, label: c, subLabel: l, maxCharacters: u = 0, heightAsT
64
64
  //#endregion
65
65
  export { s as t };
66
66
 
67
- //# sourceMappingURL=TextArea-CuASC9bX.js.map
67
+ //# sourceMappingURL=TextArea-GR2ZWwLh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea-CuASC9bX.js","names":[],"sources":["../src/components/TextArea/TextArea.module.css","../src/components/TextArea/TextArea.tsx"],"sourcesContent":[".text-area__wrapper {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.text-area__header {\n align-items: flex-end;\n display: flex;\n justify-content: space-between;\n}\n\n.text-area__label-wrapper {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.text-area__label {\n font-family: inherit;\n font-size: inherit;\n font-weight: var(--semibold);\n}\n\n.text-area__label.required::after {\n color: var(--color-red-600);\n content: \"\\2605\";\n font-size: 0.5rem;\n margin-left: 0.25rem;\n vertical-align: top;\n}\n\n.text-area__sub-label {\n color: var(--color-grey-700);\n font-size: var(--font-size-text-non-essential);\n}\n\n.text-area__word-count {\n color: var(--color-grey-600);\n font-size: var(--font-size-text-non-essential);\n}\n\n.text-area__word-count--alert {\n color: var(--color-red-600);\n font-weight: bold;\n}\n\n.text-area {\n border-radius: 0.5rem;\n font-family: inherit;\n font-size: inherit;\n min-height: 5.25rem;\n overflow: hidden;\n padding: 0.5rem;\n resize: none;\n white-space: pre-wrap;\n width: 100%;\n word-wrap: break-word;\n}\n\n.text-area--oneLine {\n max-height: 2.5rem;\n min-height: 2.5rem;\n}\n\n.text-area.not-valid {\n border-color: var(--color-red-600);\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { clsx } from 'clsx';\n\nimport styles from './TextArea.module.css';\n\nexport interface TextAreaProps {\n /** Returns entered values as trimmed string */\n onChange: (value: string) => void;\n /** The label for the text area */\n label?: string;\n /** Optional sub label for the text area */\n subLabel?: string;\n /** The max amount of allowed charecters in the text area */\n maxCharacters?: number;\n /** The max number of visible lines in the text area */\n heightAsTextField?: boolean;\n /** The default value for the text area */\n defaultValue?: string;\n /** `true` to show an asterisk to indicate an item is required; otherwise, `false`. */\n required?: boolean;\n /** `true` to color border red to show not valid; otherwise, `false`. */\n notValid?: boolean;\n}\n\nexport function TextArea({\n onChange,\n label,\n subLabel,\n maxCharacters = 0,\n heightAsTextField = false,\n defaultValue = '',\n required = false,\n notValid = false,\n}: TextAreaProps) {\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n const [characterCount, setCharacterCount] = useState(defaultValue.length);\n\n const handleInput = () => {\n if (textAreaRef.current) {\n textAreaRef.current.style.height = 'auto';\n textAreaRef.current.style.height = `${textAreaRef.current.scrollHeight}px`;\n\n setCharacterCount(textAreaRef.current.value.length);\n onChange(textAreaRef.current.value.trim());\n }\n };\n\n const autoResize = () => {\n const el = textAreaRef.current;\n if (!el) return;\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n };\n\n useEffect(() => {\n if (!heightAsTextField) {\n autoResize();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div className={styles['text-area__wrapper']}>\n {(label || maxCharacters > 0) && (\n <div className={styles['text-area__header']}>\n <span className={styles['text-area__label-wrapper']}>\n {label && (\n <span className={clsx(styles['text-area__label'], { [styles['required']]: required })}>{label}</span>\n )}\n {subLabel && <span className={styles['text-area__sub-label']}>{subLabel}</span>}\n </span>\n {maxCharacters > 0 && (\n <div className={styles['text-area__word-count']}>\n <span className={clsx({ [styles['text-area__word-count--alert']]: characterCount === maxCharacters })}>\n {characterCount}\n </span>\n &nbsp;/&nbsp;{maxCharacters}\n </div>\n )}\n </div>\n )}\n\n <textarea\n ref={textAreaRef}\n className={clsx(styles['text-area'], {\n [styles['not-valid']]: notValid,\n [styles['text-area--oneLine']]: heightAsTextField,\n })}\n maxLength={maxCharacters > 0 ? maxCharacters : undefined}\n onInput={handleInput}\n defaultValue={defaultValue}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;ACwBA,SAAgB,EAAS,EACvB,aACA,UACA,aACA,mBAAgB,GAChB,uBAAoB,IACpB,kBAAe,IACf,cAAW,IACX,cAAW,MACK;CAChB,IAAM,IAAc,EAA4B,KAAK,EAC/C,CAAC,GAAgB,KAAqB,EAAS,EAAa,OAAO,EAEnE,UAAoB;EACxB,AAAI,EAAY,YACd,EAAY,QAAQ,MAAM,SAAS,QACnC,EAAY,QAAQ,MAAM,SAAS,GAAG,EAAY,QAAQ,aAAa,KAEvE,EAAkB,EAAY,QAAQ,MAAM,OAAO,EACnD,EAAS,EAAY,QAAQ,MAAM,MAAM,CAAC;IAIxC,UAAmB;EACvB,IAAM,IAAK,EAAY;EAClB,MACL,EAAG,MAAM,SAAS,QAClB,EAAG,MAAM,SAAS,GAAG,EAAG,aAAa;;CAUvC,OAPA,QAAgB;EACd,AAAK,KACH,GAAY;IAGb,EAAE,CAAC,EAGJ,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,EACI,KAAS,IAAgB,MACzB,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB,CACE,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAxB,CACG,KACC,kBAAC,QAAD;KAAM,WAAW,EAAK,EAAO,qBAAqB,GAAG,EAAO,WAAc,GAAU,CAAC;eAAG;KAAa,CAAA,EAEtG,KAAY,kBAAC,QAAD;KAAM,WAAW,EAAO;eAA0B;KAAgB,CAAA,CAC1E;OACN,IAAgB,KACf,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB;KACE,kBAAC,QAAD;MAAM,WAAW,EAAK,GAAG,EAAO,kCAAkC,MAAmB,GAAe,CAAC;gBAClG;MACI,CAAA;;KACO;KACV;MAEJ;MAGR,kBAAC,YAAD;GACE,KAAK;GACL,WAAW,EAAK,EAAO,cAAc;KAClC,EAAO,eAAe;KACtB,EAAO,wBAAwB;IACjC,CAAC;GACF,WAAW,IAAgB,IAAI,IAAgB,KAAA;GAC/C,SAAS;GACK;GACd,CAAA,CACE"}
1
+ {"version":3,"file":"TextArea-GR2ZWwLh.js","names":[],"sources":["../src/components/TextArea/TextArea.module.css","../src/components/TextArea/TextArea.tsx"],"sourcesContent":[".text-area__wrapper {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.text-area__header {\n align-items: flex-end;\n display: flex;\n justify-content: space-between;\n}\n\n.text-area__label-wrapper {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.text-area__label {\n font-family: inherit;\n font-size: inherit;\n font-weight: var(--semibold);\n}\n\n.text-area__label.required::after {\n color: var(--color-red-600);\n content: \"\\2605\";\n font-size: 0.5rem;\n margin-left: 0.25rem;\n vertical-align: top;\n}\n\n.text-area__sub-label {\n color: var(--color-grey-700);\n font-size: var(--font-size-text-non-essential);\n}\n\n.text-area__word-count {\n color: var(--color-grey-600);\n font-size: var(--font-size-text-non-essential);\n}\n\n.text-area__word-count--alert {\n color: var(--color-red-600);\n font-weight: bold;\n}\n\n.text-area {\n border-radius: 0.5rem;\n font-family: inherit;\n font-size: inherit;\n min-height: 5.25rem;\n overflow: hidden;\n padding: 0.5rem;\n resize: none;\n white-space: pre-wrap;\n width: 100%;\n word-wrap: break-word;\n}\n\n.text-area--oneLine {\n max-height: 2.5rem;\n min-height: 2.5rem;\n}\n\n.text-area.not-valid {\n border-color: var(--color-red-600);\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { clsx } from 'clsx';\n\nimport styles from './TextArea.module.css';\n\nexport interface TextAreaProps {\n /** Returns entered values as trimmed string */\n onChange: (value: string) => void;\n /** The label for the text area */\n label?: string;\n /** Optional sub label for the text area */\n subLabel?: string;\n /** The max amount of allowed charecters in the text area */\n maxCharacters?: number;\n /** The max number of visible lines in the text area */\n heightAsTextField?: boolean;\n /** The default value for the text area */\n defaultValue?: string;\n /** `true` to show an asterisk to indicate an item is required; otherwise, `false`. */\n required?: boolean;\n /** `true` to color border red to show not valid; otherwise, `false`. */\n notValid?: boolean;\n}\n\nexport function TextArea({\n onChange,\n label,\n subLabel,\n maxCharacters = 0,\n heightAsTextField = false,\n defaultValue = '',\n required = false,\n notValid = false,\n}: TextAreaProps) {\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n const [characterCount, setCharacterCount] = useState(defaultValue.length);\n\n const handleInput = () => {\n if (textAreaRef.current) {\n textAreaRef.current.style.height = 'auto';\n textAreaRef.current.style.height = `${textAreaRef.current.scrollHeight}px`;\n\n setCharacterCount(textAreaRef.current.value.length);\n onChange(textAreaRef.current.value.trim());\n }\n };\n\n const autoResize = () => {\n const el = textAreaRef.current;\n if (!el) return;\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n };\n\n useEffect(() => {\n if (!heightAsTextField) {\n autoResize();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div className={styles['text-area__wrapper']}>\n {(label || maxCharacters > 0) && (\n <div className={styles['text-area__header']}>\n <span className={styles['text-area__label-wrapper']}>\n {label && (\n <span className={clsx(styles['text-area__label'], { [styles['required']]: required })}>{label}</span>\n )}\n {subLabel && <span className={styles['text-area__sub-label']}>{subLabel}</span>}\n </span>\n {maxCharacters > 0 && (\n <div className={styles['text-area__word-count']}>\n <span className={clsx({ [styles['text-area__word-count--alert']]: characterCount === maxCharacters })}>\n {characterCount}\n </span>\n &nbsp;/&nbsp;{maxCharacters}\n </div>\n )}\n </div>\n )}\n\n <textarea\n ref={textAreaRef}\n className={clsx(styles['text-area'], {\n [styles['not-valid']]: notValid,\n [styles['text-area--oneLine']]: heightAsTextField,\n })}\n maxLength={maxCharacters > 0 ? maxCharacters : undefined}\n onInput={handleInput}\n defaultValue={defaultValue}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;ACwBA,SAAgB,EAAS,EACvB,aACA,UACA,aACA,mBAAgB,GAChB,uBAAoB,IACpB,kBAAe,IACf,cAAW,IACX,cAAW,MACK;CAChB,IAAM,IAAc,EAA4B,IAAI,GAC9C,CAAC,GAAgB,KAAqB,EAAS,EAAa,MAAM,GAElE,UAAoB;EACxB,AAAI,EAAY,YACd,EAAY,QAAQ,MAAM,SAAS,QACnC,EAAY,QAAQ,MAAM,SAAS,GAAG,EAAY,QAAQ,aAAa,KAEvE,EAAkB,EAAY,QAAQ,MAAM,MAAM,GAClD,EAAS,EAAY,QAAQ,MAAM,KAAK,CAAC;CAE7C,GAEM,UAAmB;EACvB,IAAM,IAAK,EAAY;EAClB,MACL,EAAG,MAAM,SAAS,QAClB,EAAG,MAAM,SAAS,GAAG,EAAG,aAAa;CACvC;CASA,OAPA,QAAgB;EACd,AAAK,KACH,EAAW;CAGf,GAAG,CAAC,CAAC,GAGH,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,EACI,KAAS,IAAgB,MACzB,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB,CACE,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAxB,CACG,KACC,kBAAC,QAAD;KAAM,WAAW,EAAK,EAAO,qBAAqB,GAAG,EAAO,WAAc,EAAS,CAAC;eAAI;IAAY,CAAA,GAErG,KAAY,kBAAC,QAAD;KAAM,WAAW,EAAO;eAA0B;IAAe,CAAA,CAC1E;OACL,IAAgB,KACf,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB;KACE,kBAAC,QAAD;MAAM,WAAW,EAAK,GAAG,EAAO,kCAAkC,MAAmB,EAAc,CAAC;gBACjG;KACG,CAAA;KAAC;KACO;IACX;KAEJ;MAGP,kBAAC,YAAD;GACE,KAAK;GACL,WAAW,EAAK,EAAO,cAAc;KAClC,EAAO,eAAe;KACtB,EAAO,wBAAwB;GAClC,CAAC;GACD,WAAW,IAAgB,IAAI,IAAgB,KAAA;GAC/C,SAAS;GACK;EACf,CAAA,CACE;;AAET"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BD2qMUU1.js";
1
+ import { t as e } from "./clsx-BWCAbrjV.js";
2
2
  import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
3
  import './assets/ToggleSwitch.css';//#region src/components/ToggleSwitch/ToggleSwitch.module.css
4
4
  var r = {
@@ -48,4 +48,4 @@ function a({ label: a, labelPosition: o = "after", labelVisible: s = !0, loading
48
48
  //#endregion
49
49
  export { a as t };
50
50
 
51
- //# sourceMappingURL=ToggleSwitch-C7z7JVtx.js.map
51
+ //# sourceMappingURL=ToggleSwitch-b54K58vY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleSwitch-C7z7JVtx.js","names":[],"sources":["../src/components/ToggleSwitch/ToggleSwitch.module.css","../src/components/ToggleSwitch/ToggleSwitch.tsx"],"sourcesContent":[".toggle-switch {\n align-items: center;\n cursor: pointer;\n display: inline-flex;\n gap: 1ch;\n user-select: none;\n}\n\n.toggle-switch__visible {\n align-items: center;\n background-color: var(--color-uva-white);\n border: 1px solid var(--color-uva-black);\n border-radius: 0.75rem;\n box-shadow:\n 0 1px 1px hsla(0deg 0% 0% / 6%),\n 0 1px 2px hsl(0deg 0% 0% / 10%);\n display: flex;\n height: 1.5rem;\n outline: 0.125rem dotted transparent;\n outline-offset: 0.125rem;\n padding: 0.25rem;\n transition: background-color 150ms;\n width: 3.125rem;\n}\n\n:focus-visible + .toggle-switch__visible {\n outline-color: var(--color-navy-600);\n}\n\n:checked + .toggle-switch__visible {\n background-color: var(--color-forest-600);\n}\n\n.toggle-switch__visible::before {\n background-color: var(--color-grey-300);\n border: 1px solid var(--color-uva-black);\n border-radius: 0.75rem;\n content: \"\";\n display: inline-block;\n height: 1rem;\n min-width: 1rem;\n transform: translateX(-0.1rem);\n transition:\n background-color 150ms,\n transform 150ms,\n width 150ms;\n}\n\n:checked + .toggle-switch__visible::before {\n background-color: var(--color-uva-white);\n transform: translateX(1.6rem);\n}\n\n.toggle-switch--disabled .toggle-switch__visible::before {\n background-color: hsl(0deg 0% 0% / 10%);\n border-color: hsl(0deg 0% 0% / 10%);\n}\n\n:checked:active + .toggle-switch__visible::before {\n transform: translateX(1.25rem);\n}\n\n.toggle-switch--disabled,\n.toggle-switch--loading {\n pointer-events: none;\n}\n\n.toggle-switch--disabled .toggle-switch__visible {\n background-color: var(--color-grey-300);\n border-color: hsl(0deg 0% 0% / 10%);\n box-shadow: none;\n}\n\n.toggle-switch--visually-hidden {\n border: 0;\n clip: rect(0, 0, 0, 0);\n clip-path: inset(50%);\n height: 1px;\n margin: 0 -1px -1px 0;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n\n.toggle-switch--disabled-label {\n color: var(--color-grey-700);\n}\n\n.toggle-switch--loading-cursor {\n cursor: wait;\n}\n\n.toggle-switch--extra-left-gap {\n margin-left: 0.5rem;\n}\n","import classNames from 'clsx';\n\nimport type { InputHTMLAttributes, ReactNode } from 'react';\n\nimport styles from './ToggleSwitch.module.css';\n\nexport interface ToggleSwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'style' | 'className'> {\n /** The label for the toggle switch. */\n label: string;\n /** Boolean value if label should be visible. */\n labelVisible?: boolean;\n /** Selection for label placement compared to toggle switch. */\n labelPosition?: 'before' | 'after';\n /** Boolean value to be used if the toggle mutates. If true the toggle is disabled in a loading state. */\n loading?: boolean;\n /** Boolean value if extra gap is needed on left of component. */\n extraLeftGap?: boolean;\n}\n\nfunction ConditionalWrapper({\n condition,\n wrapper,\n children,\n}: {\n condition: boolean;\n wrapper: (children: ReactNode) => ReactNode;\n children: ReactNode;\n}) {\n return condition ? wrapper(children) : children;\n}\n\n/** Represents a component for a toggle switch. */\nexport function ToggleSwitch({\n label,\n labelPosition = 'after',\n labelVisible = true,\n loading = false,\n extraLeftGap,\n ...restProps\n}: ToggleSwitchProps) {\n const labelComponent = (\n <span\n className={classNames(\n { [styles['toggle-switch--visually-hidden']]: !labelVisible },\n { [styles['toggle-switch--disabled-label']]: restProps.disabled }\n )}\n >\n {label}\n </span>\n );\n\n return (\n <ConditionalWrapper\n condition={loading}\n wrapper={(children) => <div className={styles['toggle-switch--loading-cursor']}>{children}</div>}\n >\n <label\n className={classNames(\n styles['toggle-switch'],\n { [styles['toggle-switch--disabled']]: restProps.disabled },\n { [styles['toggle-switch--loading']]: loading },\n { [styles['toggle-switch--extra-left-gap']]: extraLeftGap }\n )}\n >\n {labelPosition === 'before' && labelComponent}\n <input className={styles['toggle-switch--visually-hidden']} {...restProps} type=\"checkbox\" />\n <span className={styles['toggle-switch__visible']} title={!labelVisible ? label : ''} />\n {labelPosition === 'after' && labelComponent}\n </label>\n </ConditionalWrapper>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;ACmBA,SAAS,EAAmB,EAC1B,cACA,YACA,eAKC;CACD,OAAO,IAAY,EAAQ,EAAS,GAAG;;AAIzC,SAAgB,EAAa,EAC3B,UACA,mBAAgB,SAChB,kBAAe,IACf,aAAU,IACV,iBACA,GAAG,KACiB;CACpB,IAAM,IACJ,kBAAC,QAAD;EACE,WAAW,EACT,GAAG,EAAO,oCAAoC,CAAC,GAAc,EAC7D,GAAG,EAAO,mCAAmC,EAAU,UAAU,CAClE;YAEA;EACI,CAAA;CAGT,OACE,kBAAC,GAAD;EACE,WAAW;EACX,UAAU,MAAa,kBAAC,OAAD;GAAK,WAAW,EAAO;GAAmC;GAAe,CAAA;YAEhG,kBAAC,SAAD;GACE,WAAW,EACT,EAAO,kBACP,GAAG,EAAO,6BAA6B,EAAU,UAAU,EAC3D,GAAG,EAAO,4BAA4B,GAAS,EAC/C,GAAG,EAAO,mCAAmC,GAAc,CAC5D;aANH;IAQG,MAAkB,YAAY;IAC/B,kBAAC,SAAD;KAAO,WAAW,EAAO;KAAmC,GAAI;KAAW,MAAK;KAAa,CAAA;IAC7F,kBAAC,QAAD;KAAM,WAAW,EAAO;KAA2B,OAAQ,IAAuB,KAAR;KAAc,CAAA;IACvF,MAAkB,WAAW;IACxB;;EACW,CAAA"}
1
+ {"version":3,"file":"ToggleSwitch-b54K58vY.js","names":[],"sources":["../src/components/ToggleSwitch/ToggleSwitch.module.css","../src/components/ToggleSwitch/ToggleSwitch.tsx"],"sourcesContent":[".toggle-switch {\n align-items: center;\n cursor: pointer;\n display: inline-flex;\n gap: 1ch;\n user-select: none;\n}\n\n.toggle-switch__visible {\n align-items: center;\n background-color: var(--color-uva-white);\n border: 1px solid var(--color-uva-black);\n border-radius: 0.75rem;\n box-shadow:\n 0 1px 1px hsla(0deg 0% 0% / 6%),\n 0 1px 2px hsl(0deg 0% 0% / 10%);\n display: flex;\n height: 1.5rem;\n outline: 0.125rem dotted transparent;\n outline-offset: 0.125rem;\n padding: 0.25rem;\n transition: background-color 150ms;\n width: 3.125rem;\n}\n\n:focus-visible + .toggle-switch__visible {\n outline-color: var(--color-navy-600);\n}\n\n:checked + .toggle-switch__visible {\n background-color: var(--color-forest-600);\n}\n\n.toggle-switch__visible::before {\n background-color: var(--color-grey-300);\n border: 1px solid var(--color-uva-black);\n border-radius: 0.75rem;\n content: \"\";\n display: inline-block;\n height: 1rem;\n min-width: 1rem;\n transform: translateX(-0.1rem);\n transition:\n background-color 150ms,\n transform 150ms,\n width 150ms;\n}\n\n:checked + .toggle-switch__visible::before {\n background-color: var(--color-uva-white);\n transform: translateX(1.6rem);\n}\n\n.toggle-switch--disabled .toggle-switch__visible::before {\n background-color: hsl(0deg 0% 0% / 10%);\n border-color: hsl(0deg 0% 0% / 10%);\n}\n\n:checked:active + .toggle-switch__visible::before {\n transform: translateX(1.25rem);\n}\n\n.toggle-switch--disabled,\n.toggle-switch--loading {\n pointer-events: none;\n}\n\n.toggle-switch--disabled .toggle-switch__visible {\n background-color: var(--color-grey-300);\n border-color: hsl(0deg 0% 0% / 10%);\n box-shadow: none;\n}\n\n.toggle-switch--visually-hidden {\n border: 0;\n clip: rect(0, 0, 0, 0);\n clip-path: inset(50%);\n height: 1px;\n margin: 0 -1px -1px 0;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n\n.toggle-switch--disabled-label {\n color: var(--color-grey-700);\n}\n\n.toggle-switch--loading-cursor {\n cursor: wait;\n}\n\n.toggle-switch--extra-left-gap {\n margin-left: 0.5rem;\n}\n","import classNames from 'clsx';\n\nimport type { InputHTMLAttributes, ReactNode } from 'react';\n\nimport styles from './ToggleSwitch.module.css';\n\nexport interface ToggleSwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'style' | 'className'> {\n /** The label for the toggle switch. */\n label: string;\n /** Boolean value if label should be visible. */\n labelVisible?: boolean;\n /** Selection for label placement compared to toggle switch. */\n labelPosition?: 'before' | 'after';\n /** Boolean value to be used if the toggle mutates. If true the toggle is disabled in a loading state. */\n loading?: boolean;\n /** Boolean value if extra gap is needed on left of component. */\n extraLeftGap?: boolean;\n}\n\nfunction ConditionalWrapper({\n condition,\n wrapper,\n children,\n}: {\n condition: boolean;\n wrapper: (children: ReactNode) => ReactNode;\n children: ReactNode;\n}) {\n return condition ? wrapper(children) : children;\n}\n\n/** Represents a component for a toggle switch. */\nexport function ToggleSwitch({\n label,\n labelPosition = 'after',\n labelVisible = true,\n loading = false,\n extraLeftGap,\n ...restProps\n}: ToggleSwitchProps) {\n const labelComponent = (\n <span\n className={classNames(\n { [styles['toggle-switch--visually-hidden']]: !labelVisible },\n { [styles['toggle-switch--disabled-label']]: restProps.disabled }\n )}\n >\n {label}\n </span>\n );\n\n return (\n <ConditionalWrapper\n condition={loading}\n wrapper={(children) => <div className={styles['toggle-switch--loading-cursor']}>{children}</div>}\n >\n <label\n className={classNames(\n styles['toggle-switch'],\n { [styles['toggle-switch--disabled']]: restProps.disabled },\n { [styles['toggle-switch--loading']]: loading },\n { [styles['toggle-switch--extra-left-gap']]: extraLeftGap }\n )}\n >\n {labelPosition === 'before' && labelComponent}\n <input className={styles['toggle-switch--visually-hidden']} {...restProps} type=\"checkbox\" />\n <span className={styles['toggle-switch__visible']} title={!labelVisible ? label : ''} />\n {labelPosition === 'after' && labelComponent}\n </label>\n </ConditionalWrapper>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;ACmBA,SAAS,EAAmB,EAC1B,cACA,YACA,eAKC;CACD,OAAO,IAAY,EAAQ,CAAQ,IAAI;AACzC;AAGA,SAAgB,EAAa,EAC3B,UACA,mBAAgB,SAChB,kBAAe,IACf,aAAU,IACV,iBACA,GAAG,KACiB;CACpB,IAAM,IACJ,kBAAC,QAAD;EACE,WAAW,EACT,GAAG,EAAO,oCAAoC,CAAC,EAAa,GAC5D,GAAG,EAAO,mCAAmC,EAAU,SAAS,CAClE;YAEC;CACG,CAAA;CAGR,OACE,kBAAC,GAAD;EACE,WAAW;EACX,UAAU,MAAa,kBAAC,OAAD;GAAK,WAAW,EAAO;GAAmC;EAAc,CAAA;YAE/F,kBAAC,SAAD;GACE,WAAW,EACT,EAAO,kBACP,GAAG,EAAO,6BAA6B,EAAU,SAAS,GAC1D,GAAG,EAAO,4BAA4B,EAAQ,GAC9C,GAAG,EAAO,mCAAmC,EAAa,CAC5D;aANF;IAQG,MAAkB,YAAY;IAC/B,kBAAC,SAAD;KAAO,WAAW,EAAO;KAAmC,GAAI;KAAW,MAAK;IAAY,CAAA;IAC5F,kBAAC,QAAD;KAAM,WAAW,EAAO;KAA2B,OAAQ,IAAuB,KAAR;IAAa,CAAA;IACtF,MAAkB,WAAW;GACzB;;CACW,CAAA;AAExB"}
@@ -76,4 +76,4 @@ function s({ element: s, id: c, text: l, size: u = "medium", openUnderTrigger: d
76
76
  //#endregion
77
77
  export { s as t };
78
78
 
79
- //# sourceMappingURL=Tooltip-D27p9kh4.js.map
79
+ //# sourceMappingURL=Tooltip-DvkGwn4j.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip-D27p9kh4.js","names":[],"sources":["../src/components/Tooltip/Tooltip.module.css","../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":[".tooltip-container {\n align-items: flex-end;\n cursor: help;\n display: flex;\n position: relative;\n}\n\n.tooltip_small,\n.tooltip_medium,\n.tooltip_large {\n background-color: var(--color-grey-700);\n border-radius: 0.5rem;\n color: var(--color-uva-white);\n font-weight: 400;\n padding: 0.5rem;\n position: fixed;\n text-align: center;\n transform: translate(-50%, -50%);\n white-space: normal;\n z-index: 10;\n}\n\n.tooltip_small {\n height: 4rem;\n width: 14.5rem;\n}\n\n.tooltip_medium {\n height: 5.5rem;\n width: 20rem;\n}\n\n.tooltip_large {\n height: 5.5rem;\n width: 24.5rem;\n}\n\n.tooltip_small::before,\n.tooltip_medium::before,\n.tooltip_large::before {\n border: 0.5rem solid transparent;\n border-top-color: var(--color-grey-700);\n content: \"\";\n height: 0;\n position: absolute;\n width: 0;\n}\n\n.tooltip_small::before {\n right: 1rem;\n top: 4rem;\n}\n\n.tooltip_medium::before {\n right: 3rem;\n top: 5.5rem;\n}\n\n.tooltip_large::before {\n right: 4rem;\n top: 5.5rem;\n}\n\n.tooltip_under-trigger {\n background-color: var(--color-grey-700);\n border-radius: 0.5rem;\n color: var(--color-uva-white);\n font-weight: 400;\n max-width: calc(100vw - 2rem);\n padding: 0.25rem 1rem;\n position: fixed;\n right: 1rem;\n top: 3.5rem;\n}\n\n.tooltip_under-trigger::before {\n border-bottom: 0.5rem solid var(--color-grey-700);\n border-left: 0.5rem solid transparent;\n border-right: 0.5rem solid transparent;\n content: \"\";\n height: 0;\n position: absolute;\n right: 3.5rem;\n top: -0.5rem;\n width: 0;\n}\n\n@media (min-width: 50rem) {\n .tooltip_under-trigger {\n right: 0.5rem;\n }\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { ReactNode } from 'react';\n\nimport styles from './Tooltip.module.css';\n\nexport interface TooltipProps {\n /** The element which triggers the tooltip on hover. */\n element: ReactNode;\n /** The id of the tooltip element. */\n id: string;\n /** The contents of the tooltip. */\n text: string;\n /** The size of the tooltip. */\n size?: 'small' | 'medium' | 'large';\n /** <span style=\"color: red\">**Obsolete**</span>. Used by Lens only, and should be refactored */\n openUnderTrigger?: boolean;\n}\n\n/** Represents a component for a custom tooltip. */\nexport function Tooltip({ element, id, text, size = 'medium', openUnderTrigger = false }: TooltipProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLSpanElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n\n /* eslint-disable @typescript-eslint/no-magic-numbers */\n const topOffset = (size === 'small' && 20) || (size === 'large' && 35) || 27;\n const leftOffset = (size === 'small' && 25) || (size === 'large' && 70) || 47;\n /* eslint-enable @typescript-eslint/no-magic-numbers */\n\n const calculatePosition = useCallback(() => {\n if (containerRef.current && tooltipRef.current) {\n const triggerRect = containerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n const scrollY = window.scrollY;\n const scrollX = window.scrollX;\n let top = triggerRect.top + scrollY + topOffset - tooltipRect.height;\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n const left = triggerRect.left + scrollX + leftOffset + (triggerRect.width - tooltipRect.width) / 2;\n\n // Adjust top position to account for page scrolling\n top -= scrollY;\n\n // Position tooltip below if it would be above the viewport\n if (top < 0) {\n top = triggerRect.bottom + scrollY;\n }\n\n setPosition({ top, left });\n }\n }, [leftOffset, topOffset]);\n\n const onKeyUp = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsOpen(false);\n }\n },\n [setIsOpen]\n );\n\n function show() {\n setIsOpen(true);\n }\n\n function hide() {\n setIsOpen(false);\n }\n\n function toggle() {\n if (isOpen) setIsOpen(false);\n else setIsOpen(true);\n }\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const tooltipContainerRef = containerRef.current;\n\n tooltipContainerRef.addEventListener('keyup', onKeyUp, true);\n\n return () => {\n tooltipContainerRef.removeEventListener('keyup', onKeyUp, true);\n };\n }, [onKeyUp]);\n\n useEffect(() => {\n calculatePosition();\n window.addEventListener('resize', calculatePosition);\n return () => {\n window.removeEventListener('resize', calculatePosition);\n };\n }, [calculatePosition]);\n\n useEffect(() => {\n // Recalculate position when isOpen changes\n if (isOpen && !openUnderTrigger) {\n calculatePosition();\n }\n }, [isOpen, openUnderTrigger, calculatePosition]);\n\n return (\n <div\n className={styles['tooltip-container']}\n onBlur={hide}\n onFocus={show}\n onMouseEnter={show}\n onMouseLeave={hide}\n onMouseUp={toggle}\n ref={containerRef}\n role=\"button\"\n tabIndex={-1}\n >\n <div aria-describedby={isOpen ? id : undefined}>{element}</div>\n {isOpen && (\n <span\n ref={tooltipRef}\n className={openUnderTrigger ? styles['tooltip_under-trigger'] : styles[`tooltip_${size}`]}\n id={id}\n role=\"tooltip\"\n style={openUnderTrigger ? {} : { top: position.top, left: position.left }}\n >\n {text}\n </span>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;ACoBA,SAAgB,EAAQ,EAAE,YAAS,OAAI,SAAM,UAAO,UAAU,sBAAmB,MAAuB;CACtG,IAAM,IAAe,EAAuB,KAAK,EAC3C,IAAa,EAAwB,KAAK,EAC1C,CAAC,GAAQ,KAAa,EAAS,GAAM,EACrC,CAAC,GAAU,KAAe,EAAS;EAAE,KAAK;EAAG,MAAM;EAAG,CAAC,EAGvD,IAAa,MAAS,WAAW,MAAQ,MAAS,WAAW,MAAO,IACpE,IAAc,MAAS,WAAW,MAAQ,MAAS,WAAW,MAAO,IAGrE,IAAoB,QAAkB;EAC1C,IAAI,EAAa,WAAW,EAAW,SAAS;GAC9C,IAAM,IAAc,EAAa,QAAQ,uBAAuB,EAC1D,IAAc,EAAW,QAAQ,uBAAuB,EACxD,IAAU,OAAO,SACjB,IAAU,OAAO,SACnB,IAAM,EAAY,MAAM,IAAU,IAAY,EAAY,QAExD,IAAO,EAAY,OAAO,IAAU,KAAc,EAAY,QAAQ,EAAY,SAAS;GAUjG,AAPA,KAAO,GAGH,IAAM,MACR,IAAM,EAAY,SAAS,IAG7B,EAAY;IAAE;IAAK;IAAM,CAAC;;IAE3B,CAAC,GAAY,EAAU,CAAC,EAErB,IAAU,GACb,MAAyB;EACxB,AAAI,EAAM,QAAQ,YAChB,EAAU,GAAM;IAGpB,CAAC,EAAU,CACZ;CAED,SAAS,IAAO;EACd,EAAU,GAAK;;CAGjB,SAAS,IAAO;EACd,EAAU,GAAM;;CAGlB,SAAS,IAAS;EAChB,AAAY,EAAR,GACgB;;CA8BtB,OA3BA,QAAgB;EACd,IAAI,CAAC,EAAa,SAAS;EAE3B,IAAM,IAAsB,EAAa;EAIzC,OAFA,EAAoB,iBAAiB,SAAS,GAAS,GAAK,QAE/C;GACX,EAAoB,oBAAoB,SAAS,GAAS,GAAK;;IAEhE,CAAC,EAAQ,CAAC,EAEb,SACE,GAAmB,EACnB,OAAO,iBAAiB,UAAU,EAAkB,QACvC;EACX,OAAO,oBAAoB,UAAU,EAAkB;KAExD,CAAC,EAAkB,CAAC,EAEvB,QAAgB;EAEd,AAAI,KAAU,CAAC,KACb,GAAmB;IAEpB;EAAC;EAAQ;EAAkB;EAAkB,CAAC,EAG/C,kBAAC,OAAD;EACE,WAAW,EAAO;EAClB,QAAQ;EACR,SAAS;EACT,cAAc;EACd,cAAc;EACd,WAAW;EACX,KAAK;EACL,MAAK;EACL,UAAU;YATZ,CAWE,kBAAC,OAAD;GAAK,oBAAkB,IAAS,IAAK,KAAA;aAAY;GAAc,CAAA,EAC9D,KACC,kBAAC,QAAD;GACE,KAAK;GACL,WAAW,IAAmB,EAAO,2BAA2B,EAAO,WAAW;GAC9E;GACJ,MAAK;GACL,OAAO,IAAmB,EAAE,GAAG;IAAE,KAAK,EAAS;IAAK,MAAM,EAAS;IAAM;aAExE;GACI,CAAA,CAEL"}
1
+ {"version":3,"file":"Tooltip-DvkGwn4j.js","names":[],"sources":["../src/components/Tooltip/Tooltip.module.css","../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":[".tooltip-container {\n align-items: flex-end;\n cursor: help;\n display: flex;\n position: relative;\n}\n\n.tooltip_small,\n.tooltip_medium,\n.tooltip_large {\n background-color: var(--color-grey-700);\n border-radius: 0.5rem;\n color: var(--color-uva-white);\n font-weight: 400;\n padding: 0.5rem;\n position: fixed;\n text-align: center;\n transform: translate(-50%, -50%);\n white-space: normal;\n z-index: 10;\n}\n\n.tooltip_small {\n height: 4rem;\n width: 14.5rem;\n}\n\n.tooltip_medium {\n height: 5.5rem;\n width: 20rem;\n}\n\n.tooltip_large {\n height: 5.5rem;\n width: 24.5rem;\n}\n\n.tooltip_small::before,\n.tooltip_medium::before,\n.tooltip_large::before {\n border: 0.5rem solid transparent;\n border-top-color: var(--color-grey-700);\n content: \"\";\n height: 0;\n position: absolute;\n width: 0;\n}\n\n.tooltip_small::before {\n right: 1rem;\n top: 4rem;\n}\n\n.tooltip_medium::before {\n right: 3rem;\n top: 5.5rem;\n}\n\n.tooltip_large::before {\n right: 4rem;\n top: 5.5rem;\n}\n\n.tooltip_under-trigger {\n background-color: var(--color-grey-700);\n border-radius: 0.5rem;\n color: var(--color-uva-white);\n font-weight: 400;\n max-width: calc(100vw - 2rem);\n padding: 0.25rem 1rem;\n position: fixed;\n right: 1rem;\n top: 3.5rem;\n}\n\n.tooltip_under-trigger::before {\n border-bottom: 0.5rem solid var(--color-grey-700);\n border-left: 0.5rem solid transparent;\n border-right: 0.5rem solid transparent;\n content: \"\";\n height: 0;\n position: absolute;\n right: 3.5rem;\n top: -0.5rem;\n width: 0;\n}\n\n@media (min-width: 50rem) {\n .tooltip_under-trigger {\n right: 0.5rem;\n }\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { ReactNode } from 'react';\n\nimport styles from './Tooltip.module.css';\n\nexport interface TooltipProps {\n /** The element which triggers the tooltip on hover. */\n element: ReactNode;\n /** The id of the tooltip element. */\n id: string;\n /** The contents of the tooltip. */\n text: string;\n /** The size of the tooltip. */\n size?: 'small' | 'medium' | 'large';\n /** <span style=\"color: red\">**Obsolete**</span>. Used by Lens only, and should be refactored */\n openUnderTrigger?: boolean;\n}\n\n/** Represents a component for a custom tooltip. */\nexport function Tooltip({ element, id, text, size = 'medium', openUnderTrigger = false }: TooltipProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLSpanElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n\n /* eslint-disable @typescript-eslint/no-magic-numbers */\n const topOffset = (size === 'small' && 20) || (size === 'large' && 35) || 27;\n const leftOffset = (size === 'small' && 25) || (size === 'large' && 70) || 47;\n /* eslint-enable @typescript-eslint/no-magic-numbers */\n\n const calculatePosition = useCallback(() => {\n if (containerRef.current && tooltipRef.current) {\n const triggerRect = containerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n const scrollY = window.scrollY;\n const scrollX = window.scrollX;\n let top = triggerRect.top + scrollY + topOffset - tooltipRect.height;\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n const left = triggerRect.left + scrollX + leftOffset + (triggerRect.width - tooltipRect.width) / 2;\n\n // Adjust top position to account for page scrolling\n top -= scrollY;\n\n // Position tooltip below if it would be above the viewport\n if (top < 0) {\n top = triggerRect.bottom + scrollY;\n }\n\n setPosition({ top, left });\n }\n }, [leftOffset, topOffset]);\n\n const onKeyUp = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsOpen(false);\n }\n },\n [setIsOpen]\n );\n\n function show() {\n setIsOpen(true);\n }\n\n function hide() {\n setIsOpen(false);\n }\n\n function toggle() {\n if (isOpen) setIsOpen(false);\n else setIsOpen(true);\n }\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const tooltipContainerRef = containerRef.current;\n\n tooltipContainerRef.addEventListener('keyup', onKeyUp, true);\n\n return () => {\n tooltipContainerRef.removeEventListener('keyup', onKeyUp, true);\n };\n }, [onKeyUp]);\n\n useEffect(() => {\n calculatePosition();\n window.addEventListener('resize', calculatePosition);\n return () => {\n window.removeEventListener('resize', calculatePosition);\n };\n }, [calculatePosition]);\n\n useEffect(() => {\n // Recalculate position when isOpen changes\n if (isOpen && !openUnderTrigger) {\n calculatePosition();\n }\n }, [isOpen, openUnderTrigger, calculatePosition]);\n\n return (\n <div\n className={styles['tooltip-container']}\n onBlur={hide}\n onFocus={show}\n onMouseEnter={show}\n onMouseLeave={hide}\n onMouseUp={toggle}\n ref={containerRef}\n role=\"button\"\n tabIndex={-1}\n >\n <div aria-describedby={isOpen ? id : undefined}>{element}</div>\n {isOpen && (\n <span\n ref={tooltipRef}\n className={openUnderTrigger ? styles['tooltip_under-trigger'] : styles[`tooltip_${size}`]}\n id={id}\n role=\"tooltip\"\n style={openUnderTrigger ? {} : { top: position.top, left: position.left }}\n >\n {text}\n </span>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;ACoBA,SAAgB,EAAQ,EAAE,YAAS,OAAI,SAAM,UAAO,UAAU,sBAAmB,MAAuB;CACtG,IAAM,IAAe,EAAuB,IAAI,GAC1C,IAAa,EAAwB,IAAI,GACzC,CAAC,GAAQ,KAAa,EAAS,EAAK,GACpC,CAAC,GAAU,KAAe,EAAS;EAAE,KAAK;EAAG,MAAM;CAAE,CAAC,GAGtD,IAAa,MAAS,WAAW,MAAQ,MAAS,WAAW,MAAO,IACpE,IAAc,MAAS,WAAW,MAAQ,MAAS,WAAW,MAAO,IAGrE,IAAoB,QAAkB;EAC1C,IAAI,EAAa,WAAW,EAAW,SAAS;GAC9C,IAAM,IAAc,EAAa,QAAQ,sBAAsB,GACzD,IAAc,EAAW,QAAQ,sBAAsB,GACvD,IAAU,OAAO,SACjB,IAAU,OAAO,SACnB,IAAM,EAAY,MAAM,IAAU,IAAY,EAAY,QAExD,IAAO,EAAY,OAAO,IAAU,KAAc,EAAY,QAAQ,EAAY,SAAS;GAUjG,AAPA,KAAO,GAGH,IAAM,MACR,IAAM,EAAY,SAAS,IAG7B,EAAY;IAAE;IAAK;GAAK,CAAC;EAC3B;CACF,GAAG,CAAC,GAAY,CAAS,CAAC,GAEpB,IAAU,GACb,MAAyB;EACxB,AAAI,EAAM,QAAQ,YAChB,EAAU,EAAK;CAEnB,GACA,CAAC,CAAS,CACZ;CAEA,SAAS,IAAO;EACd,EAAU,EAAI;CAChB;CAEA,SAAS,IAAO;EACd,EAAU,EAAK;CACjB;CAEA,SAAS,IAAS;EAChB,AAAY,EAAR,EACe;CACrB;CA6BA,OA3BA,QAAgB;EACd,IAAI,CAAC,EAAa,SAAS;EAE3B,IAAM,IAAsB,EAAa;EAIzC,OAFA,EAAoB,iBAAiB,SAAS,GAAS,EAAI,SAE9C;GACX,EAAoB,oBAAoB,SAAS,GAAS,EAAI;EAChE;CACF,GAAG,CAAC,CAAO,CAAC,GAEZ,SACE,EAAkB,GAClB,OAAO,iBAAiB,UAAU,CAAiB,SACtC;EACX,OAAO,oBAAoB,UAAU,CAAiB;CACxD,IACC,CAAC,CAAiB,CAAC,GAEtB,QAAgB;EAEd,AAAI,KAAU,CAAC,KACb,EAAkB;CAEtB,GAAG;EAAC;EAAQ;EAAkB;CAAiB,CAAC,GAG9C,kBAAC,OAAD;EACE,WAAW,EAAO;EAClB,QAAQ;EACR,SAAS;EACT,cAAc;EACd,cAAc;EACd,WAAW;EACX,KAAK;EACL,MAAK;EACL,UAAU;YATZ,CAWE,kBAAC,OAAD;GAAK,oBAAkB,IAAS,IAAK,KAAA;aAAY;EAAa,CAAA,GAC7D,KACC,kBAAC,QAAD;GACE,KAAK;GACL,WAAW,IAAmB,EAAO,2BAA2B,EAAO,WAAW;GAC9E;GACJ,MAAK;GACL,OAAO,IAAmB,CAAC,IAAI;IAAE,KAAK,EAAS;IAAK,MAAM,EAAS;GAAK;aAEvE;EACG,CAAA,CAEL;;AAET"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BD2qMUU1.js";
1
+ import { t as e } from "./clsx-BWCAbrjV.js";
2
2
  import { Icon as t } from "./components/Icon/Icon.js";
3
3
  import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
4
4
  import './assets/VarIndicator.css';//#region src/components/VarIndicator/VarIndicator.module.css
@@ -47,4 +47,4 @@ var a = {
47
47
  //#endregion
48
48
  export { s as t };
49
49
 
50
- //# sourceMappingURL=VarIndicator-C-GueOZD.js.map
50
+ //# sourceMappingURL=VarIndicator-DoMWwSUm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VarIndicator-C-GueOZD.js","names":[],"sources":["../src/components/VarIndicator/VarIndicator.module.css","../src/components/VarIndicator/VarIndicator.tsx"],"sourcesContent":["/* \n TODO: if the right semantic names are available we put them in the tokens file.\n It is also an attempt (test) to give tokens semantic names for feature benefits\n*/\n\n:root {\n /* Semantic names */\n --color-active: var(--color-forest-700);\n --color-background-active: var(--color-forest-100);\n --color-background-active-hover: var(--color-forest-200);\n --color-background-draft: var(--color-navy-100);\n --color-background-draft-hover: var(--color-navy-200);\n --color-background-submitted: var(--color-orange-100);\n --color-background-submitted-hover: var(--color-orange-200);\n --color-border-active: var(--color-forest-700);\n --color-border-draft: var(--color-navy-600);\n --color-border-submitted: var(--color-orange-900);\n --color-draft: var(--color-navy-600);\n --color-draft-hover: var(--color-uva-white);\n --color-label: var(--color-uva-black);\n --color-submitted: var(--color-orange-900);\n --color-submitted-hover: var(--color-uva-white);\n /* Global vars */\n --border-radius-var-indicator: 0.25rem;\n}\n\n.var-indicator__container {\n align-items: center;\n appearance: none;\n border: 1px solid;\n border-radius: var(--border-radius-var-indicator);\n cursor: pointer;\n display: inline-flex;\n font-family: inherit;\n font-size: var(--font-size-default);\n font-weight: var(--semibold);\n gap: 0.375rem;\n height: 2rem;\n justify-content: center;\n line-height: inherit;\n margin: 0;\n padding: 0 0.75rem 0 0.5rem;\n white-space: nowrap;\n}\n\n.var-indicator__label {\n color: var(--color-label);\n}\n\n.var-indicator__step-container {\n align-items: center;\n display: inline-flex;\n height: 100%;\n justify-content: flex-start;\n}\n\n.var-indicator__step-container > svg {\n margin: 0 -0.5rem;\n}\n\n.var-indicator__container--compact {\n padding: 0;\n position: relative;\n width: 2rem;\n}\n\n.var-indicator__container--compact > svg {\n margin: 0;\n}\n\n.var-indicator__container--compact-flyover-wrapper {\n display: none;\n height: 2rem;\n position: absolute;\n right: -1px;\n top: -1px;\n width: auto;\n z-index: 1;\n}\n\n.var-indicator__container--compact:hover .var-indicator__container--compact-flyover-wrapper {\n display: flex;\n}\n\n.var-indicator__container--draft,\n.var-indicator__container--rejected,\n.var-indicator__container--draft .var-indicator__container--compact-flyover-wrapper,\n.var-indicator__container--rejected .var-indicator__container--compact-flyover-wrapper {\n background-color: var(--color-background-draft);\n border-color: var(--color-border-draft);\n color: var(--color-draft);\n}\n\n.var-indicator__container--draft:hover,\n.var-indicator__container--rejected:hover,\n.var-indicator__container--draft:hover .var-indicator__container--compact-flyover-wrapper,\n.var-indicator__container--rejected:hover .var-indicator__container--compact-flyover-wrapper {\n background-color: var(--color-background-draft-hover);\n}\n\n.var-indicator__container--submitted,\n.var-indicator__container--submitted .var-indicator__container--compact-flyover-wrapper {\n background-color: var(--color-background-submitted);\n border-color: var(--color-border-submitted);\n color: var(--color-submitted);\n}\n\n.var-indicator__container--submitted:hover,\n.var-indicator__container--submitted:hover .var-indicator__container--compact-flyover-wrapper {\n background-color: var(--color-background-submitted-hover);\n}\n\n.var-indicator__container--active,\n.var-indicator__container--active .var-indicator__container--compact-flyover-wrapper {\n background-color: var(--color-background-active);\n border-color: var(--color-border-active);\n color: var(--color-active);\n}\n\n.var-indicator__container--active:hover,\n.var-indicator__container--active:hover .var-indicator__container--compact-flyover-wrapper {\n background-color: var(--color-background-active-hover);\n}\n","import { clsx } from 'clsx';\n\nimport type { IconProps } from 'components/Icon';\n\nimport styles from './VarIndicator.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport type StatusType = 'DRAFT' | 'REJECTED' | 'SUBMITTED' | 'ACTIVE';\n\nexport interface VarIndicatorProps {\n /** Label on the indicator */\n label: Record<StatusType, string>;\n /** Status type 'DRAFT' | 'REJECTED' | 'SUBMITTED' | 'ACTIVE' */\n variant?: StatusType;\n /** Maximum number of steps if variant is 'SUBMITTED' */\n maxSteps?: number;\n /** Current step if variant is 'SUBMITTED' */\n currentStep?: number;\n /** If set shows compact view and opens to the left on hover */\n isCompact?: boolean;\n onClick?: () => void;\n}\n\nconst ICON_NAMES = {\n DRAFT: 'CircleLarge',\n REJECTED: 'CircleLarge',\n SUBMITTED: 'CircleLargeDotted',\n ACTIVE: 'SignalActive',\n};\n\nexport const VarIndicator = ({\n label,\n variant = 'DRAFT',\n maxSteps,\n currentStep = 1,\n isCompact,\n onClick,\n}: VarIndicatorProps) => {\n const IndicatorContent = () => (\n <>\n <Icon name={ICON_NAMES[variant] as IconProps['name']} size={16} />\n <span className={styles['var-indicator__label']}>{label[`${variant}`]}</span>\n {maxSteps &&\n maxSteps > 0 &&\n variant === 'SUBMITTED' &&\n Array.from({ length: maxSteps }, (_, idx) => idx + 1).map((step) => (\n <div key={step} className={styles['var-indicator__step-container']}>\n <Icon name={step <= currentStep ? 'CircleSmallFilled' : 'CircleSmall'} />\n </div>\n ))}\n </>\n );\n\n return (\n <button\n className={clsx(\n styles['var-indicator__container'],\n styles[`var-indicator__container--${variant.toLowerCase()}`],\n {\n [styles['var-indicator__container--compact']]: isCompact,\n }\n )}\n onClick={onClick}\n >\n {isCompact ? (\n <>\n <Icon name={ICON_NAMES[variant] as IconProps['name']} size={16} />\n <div\n className={clsx(\n styles['var-indicator__container'],\n styles['var-indicator__container--compact-flyover-wrapper']\n )}\n >\n <IndicatorContent />\n </div>\n </>\n ) : (\n <IndicatorContent />\n )}\n </button>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;GCwBM,IAAa;CACjB,OAAO;CACP,UAAU;CACV,WAAW;CACX,QAAQ;CACT,EAEY,KAAgB,EAC3B,UACA,aAAU,SACV,aACA,iBAAc,GACd,cACA,iBACuB;CACvB,IAAM,UACJ,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAM,MAAM,EAAW;GAA+B,MAAM;GAAM,CAAA;EAClE,kBAAC,QAAD;GAAM,WAAW,EAAO;aAA0B,EAAM,GAAG;GAAkB,CAAA;EAC5E,KACC,IAAW,KACX,MAAY,eACZ,MAAM,KAAK,EAAE,QAAQ,GAAU,GAAG,GAAG,MAAQ,IAAM,EAAE,CAAC,KAAK,MACzD,kBAAC,OAAD;GAAgB,WAAW,EAAO;aAChC,kBAAC,GAAD,EAAM,MAAM,KAAQ,IAAc,sBAAsB,eAAiB,CAAA;GACrE,EAFI,EAEJ,CACN;EACH,EAAA,CAAA;CAGL,OACE,kBAAC,UAAD;EACE,WAAW,EACT,EAAO,6BACP,EAAO,6BAA6B,EAAQ,aAAa,KACzD,GACG,EAAO,uCAAuC,GAChD,CACF;EACQ;YAER,IACC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GAAM,MAAM,EAAW;GAA+B,MAAM;GAAM,CAAA,EAClE,kBAAC,OAAD;GACE,WAAW,EACT,EAAO,6BACP,EAAO,qDACR;aAED,kBAAC,GAAD,EAAoB,CAAA;GAChB,CAAA,CACL,EAAA,CAAA,GAEH,kBAAC,GAAD,EAAoB,CAAA;EAEf,CAAA"}
1
+ {"version":3,"file":"VarIndicator-DoMWwSUm.js","names":[],"sources":["../src/components/VarIndicator/VarIndicator.module.css","../src/components/VarIndicator/VarIndicator.tsx"],"sourcesContent":["/* \n TODO: if the right semantic names are available we put them in the tokens file.\n It is also an attempt (test) to give tokens semantic names for feature benefits\n*/\n\n:root {\n /* Semantic names */\n --color-active: var(--color-forest-700);\n --color-background-active: var(--color-forest-100);\n --color-background-active-hover: var(--color-forest-200);\n --color-background-draft: var(--color-navy-100);\n --color-background-draft-hover: var(--color-navy-200);\n --color-background-submitted: var(--color-orange-100);\n --color-background-submitted-hover: var(--color-orange-200);\n --color-border-active: var(--color-forest-700);\n --color-border-draft: var(--color-navy-600);\n --color-border-submitted: var(--color-orange-900);\n --color-draft: var(--color-navy-600);\n --color-draft-hover: var(--color-uva-white);\n --color-label: var(--color-uva-black);\n --color-submitted: var(--color-orange-900);\n --color-submitted-hover: var(--color-uva-white);\n /* Global vars */\n --border-radius-var-indicator: 0.25rem;\n}\n\n.var-indicator__container {\n align-items: center;\n appearance: none;\n border: 1px solid;\n border-radius: var(--border-radius-var-indicator);\n cursor: pointer;\n display: inline-flex;\n font-family: inherit;\n font-size: var(--font-size-default);\n font-weight: var(--semibold);\n gap: 0.375rem;\n height: 2rem;\n justify-content: center;\n line-height: inherit;\n margin: 0;\n padding: 0 0.75rem 0 0.5rem;\n white-space: nowrap;\n}\n\n.var-indicator__label {\n color: var(--color-label);\n}\n\n.var-indicator__step-container {\n align-items: center;\n display: inline-flex;\n height: 100%;\n justify-content: flex-start;\n}\n\n.var-indicator__step-container > svg {\n margin: 0 -0.5rem;\n}\n\n.var-indicator__container--compact {\n padding: 0;\n position: relative;\n width: 2rem;\n}\n\n.var-indicator__container--compact > svg {\n margin: 0;\n}\n\n.var-indicator__container--compact-flyover-wrapper {\n display: none;\n height: 2rem;\n position: absolute;\n right: -1px;\n top: -1px;\n width: auto;\n z-index: 1;\n}\n\n.var-indicator__container--compact:hover .var-indicator__container--compact-flyover-wrapper {\n display: flex;\n}\n\n.var-indicator__container--draft,\n.var-indicator__container--rejected,\n.var-indicator__container--draft .var-indicator__container--compact-flyover-wrapper,\n.var-indicator__container--rejected .var-indicator__container--compact-flyover-wrapper {\n background-color: var(--color-background-draft);\n border-color: var(--color-border-draft);\n color: var(--color-draft);\n}\n\n.var-indicator__container--draft:hover,\n.var-indicator__container--rejected:hover,\n.var-indicator__container--draft:hover .var-indicator__container--compact-flyover-wrapper,\n.var-indicator__container--rejected:hover .var-indicator__container--compact-flyover-wrapper {\n background-color: var(--color-background-draft-hover);\n}\n\n.var-indicator__container--submitted,\n.var-indicator__container--submitted .var-indicator__container--compact-flyover-wrapper {\n background-color: var(--color-background-submitted);\n border-color: var(--color-border-submitted);\n color: var(--color-submitted);\n}\n\n.var-indicator__container--submitted:hover,\n.var-indicator__container--submitted:hover .var-indicator__container--compact-flyover-wrapper {\n background-color: var(--color-background-submitted-hover);\n}\n\n.var-indicator__container--active,\n.var-indicator__container--active .var-indicator__container--compact-flyover-wrapper {\n background-color: var(--color-background-active);\n border-color: var(--color-border-active);\n color: var(--color-active);\n}\n\n.var-indicator__container--active:hover,\n.var-indicator__container--active:hover .var-indicator__container--compact-flyover-wrapper {\n background-color: var(--color-background-active-hover);\n}\n","import { clsx } from 'clsx';\n\nimport type { IconProps } from 'components/Icon';\n\nimport styles from './VarIndicator.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport type StatusType = 'DRAFT' | 'REJECTED' | 'SUBMITTED' | 'ACTIVE';\n\nexport interface VarIndicatorProps {\n /** Label on the indicator */\n label: Record<StatusType, string>;\n /** Status type 'DRAFT' | 'REJECTED' | 'SUBMITTED' | 'ACTIVE' */\n variant?: StatusType;\n /** Maximum number of steps if variant is 'SUBMITTED' */\n maxSteps?: number;\n /** Current step if variant is 'SUBMITTED' */\n currentStep?: number;\n /** If set shows compact view and opens to the left on hover */\n isCompact?: boolean;\n onClick?: () => void;\n}\n\nconst ICON_NAMES = {\n DRAFT: 'CircleLarge',\n REJECTED: 'CircleLarge',\n SUBMITTED: 'CircleLargeDotted',\n ACTIVE: 'SignalActive',\n};\n\nexport const VarIndicator = ({\n label,\n variant = 'DRAFT',\n maxSteps,\n currentStep = 1,\n isCompact,\n onClick,\n}: VarIndicatorProps) => {\n const IndicatorContent = () => (\n <>\n <Icon name={ICON_NAMES[variant] as IconProps['name']} size={16} />\n <span className={styles['var-indicator__label']}>{label[`${variant}`]}</span>\n {maxSteps &&\n maxSteps > 0 &&\n variant === 'SUBMITTED' &&\n Array.from({ length: maxSteps }, (_, idx) => idx + 1).map((step) => (\n <div key={step} className={styles['var-indicator__step-container']}>\n <Icon name={step <= currentStep ? 'CircleSmallFilled' : 'CircleSmall'} />\n </div>\n ))}\n </>\n );\n\n return (\n <button\n className={clsx(\n styles['var-indicator__container'],\n styles[`var-indicator__container--${variant.toLowerCase()}`],\n {\n [styles['var-indicator__container--compact']]: isCompact,\n }\n )}\n onClick={onClick}\n >\n {isCompact ? (\n <>\n <Icon name={ICON_NAMES[variant] as IconProps['name']} size={16} />\n <div\n className={clsx(\n styles['var-indicator__container'],\n styles['var-indicator__container--compact-flyover-wrapper']\n )}\n >\n <IndicatorContent />\n </div>\n </>\n ) : (\n <IndicatorContent />\n )}\n </button>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;GCwBM,IAAa;CACjB,OAAO;CACP,UAAU;CACV,WAAW;CACX,QAAQ;AACV,GAEa,KAAgB,EAC3B,UACA,aAAU,SACV,aACA,iBAAc,GACd,cACA,iBACuB;CACvB,IAAM,UACJ,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GAAM,MAAM,EAAW;GAA+B,MAAM;EAAK,CAAA;EACjE,kBAAC,QAAD;GAAM,WAAW,EAAO;aAA0B,EAAM,GAAG;EAAiB,CAAA;EAC3E,KACC,IAAW,KACX,MAAY,eACZ,MAAM,KAAK,EAAE,QAAQ,EAAS,IAAI,GAAG,MAAQ,IAAM,CAAC,EAAE,KAAK,MACzD,kBAAC,OAAD;GAAgB,WAAW,EAAO;aAChC,kBAAC,GAAD,EAAM,MAAM,KAAQ,IAAc,sBAAsB,cAAgB,CAAA;EACrE,GAFK,CAEL,CACN;CACH,EAAA,CAAA;CAGJ,OACE,kBAAC,UAAD;EACE,WAAW,EACT,EAAO,6BACP,EAAO,6BAA6B,EAAQ,YAAY,MACxD,GACG,EAAO,uCAAuC,EACjD,CACF;EACS;YAER,IACC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GAAM,MAAM,EAAW;GAA+B,MAAM;EAAK,CAAA,GACjE,kBAAC,OAAD;GACE,WAAW,EACT,EAAO,6BACP,EAAO,oDACT;aAEA,kBAAC,GAAD,CAAmB,CAAA;EAChB,CAAA,CACL,EAAA,CAAA,IAEF,kBAAC,GAAD,CAAmB,CAAA;CAEf,CAAA;AAEZ"}
@@ -15,4 +15,4 @@ var e = {
15
15
  //#endregion
16
16
  export { e as t };
17
17
 
18
- //# sourceMappingURL=WeekSelector.module-BLPrVYgn.js.map
18
+ //# sourceMappingURL=WeekSelector.module-DuEbNvok.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WeekSelector.module-BLPrVYgn.js","names":[],"sources":["../src/components/WeekSelector/WeekSelector.module.css"],"sourcesContent":[".week-selector {\n position: relative;\n}\n\n.week-selector-button {\n align-items: center;\n background-color: var(--color-uva-white);\n border: 1px solid var(--color-grey-700);\n border-radius: 0.25rem;\n color: var(--color-uva-black);\n cursor: pointer;\n display: flex;\n font-family: inherit;\n font-size: inherit;\n height: 2.75rem;\n justify-content: space-between;\n min-width: 8rem;\n padding: 0 0.75rem 0 1rem;\n}\n\n.week-selector-button:focus-visible {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n}\n\n.week-selector-option-container {\n background-color: var(--color-uva-white);\n border: 1px solid var(--color-grey-400);\n border-radius: 0.25rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n inset: 100% auto auto 0;\n padding: 1.5rem;\n position: absolute;\n width: max-content;\n z-index: 10;\n}\n\n.week-selector-option-header {\n color: var(--color-uva-black);\n font-family: inherit;\n font-size: var(--font-size-default);\n font-weight: var(--semibold);\n margin: 0;\n}\n\n.week-selector-option-table {\n display: flex;\n gap: 1.5rem;\n}\n\n.week-selector-option-table-labels,\n.week-selector-option-week-grid {\n display: flex;\n flex-direction: column;\n font-family: inherit;\n gap: 0.5rem;\n min-width: max-content;\n padding: 0.5rem 0;\n}\n\n.week-selector-option-table-label {\n color: var(--color-uva-black);\n font-weight: var(--semibold);\n line-height: 2.25rem;\n}\n\n.week-selector-option-week-grid {\n border: 1px solid var(--color-grey-700);\n border-radius: 0.5rem;\n max-width: max-content;\n padding: 0.5rem;\n width: 100%;\n}\n\n.week-selector-option-week-row {\n display: flex;\n gap: 0.25rem;\n}\n\n.week-selector-option-week {\n align-items: center;\n background-color: var(--color-uva-white);\n border: none;\n border-radius: 0.25rem;\n color: var(--color-uva-black);\n cursor: pointer;\n display: flex;\n height: 2.25rem;\n justify-content: center;\n width: 2.25rem;\n}\n\n.week-selector-option-week:disabled {\n background-color: var(--color-grey-400);\n color: var(--color-grey-700);\n}\n\n.week-selector-option-week:disabled:active {\n background-color: var(--color-grey-500);\n color: var(--color-grey-00);\n font-weight: var(--semibold);\n}\n\n.week-selector-option-week:disabled:hover {\n cursor: not-allowed;\n}\n\n.week-selector-option-week:hover {\n background-color: var(--color-grey-300);\n}\n\n.week-selector-option-week--selected,\n.week-selector-option-week--selected:hover {\n background-color: var(--color-navy-600);\n color: var(--color-uva-white);\n}\n\n.week-selector-option-week:focus-visible {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"WeekSelector.module-DuEbNvok.js","names":[],"sources":["../src/components/WeekSelector/WeekSelector.module.css"],"sourcesContent":[".week-selector {\n position: relative;\n}\n\n.week-selector-button {\n align-items: center;\n background-color: var(--color-uva-white);\n border: 1px solid var(--color-grey-700);\n border-radius: 0.25rem;\n color: var(--color-uva-black);\n cursor: pointer;\n display: flex;\n font-family: inherit;\n font-size: inherit;\n height: 2.75rem;\n justify-content: space-between;\n min-width: 8rem;\n padding: 0 0.75rem 0 1rem;\n}\n\n.week-selector-button:focus-visible {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n}\n\n.week-selector-option-container {\n background-color: var(--color-uva-white);\n border: 1px solid var(--color-grey-400);\n border-radius: 0.25rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n inset: 100% auto auto 0;\n padding: 1.5rem;\n position: absolute;\n width: max-content;\n z-index: 10;\n}\n\n.week-selector-option-header {\n color: var(--color-uva-black);\n font-family: inherit;\n font-size: var(--font-size-default);\n font-weight: var(--semibold);\n margin: 0;\n}\n\n.week-selector-option-table {\n display: flex;\n gap: 1.5rem;\n}\n\n.week-selector-option-table-labels,\n.week-selector-option-week-grid {\n display: flex;\n flex-direction: column;\n font-family: inherit;\n gap: 0.5rem;\n min-width: max-content;\n padding: 0.5rem 0;\n}\n\n.week-selector-option-table-label {\n color: var(--color-uva-black);\n font-weight: var(--semibold);\n line-height: 2.25rem;\n}\n\n.week-selector-option-week-grid {\n border: 1px solid var(--color-grey-700);\n border-radius: 0.5rem;\n max-width: max-content;\n padding: 0.5rem;\n width: 100%;\n}\n\n.week-selector-option-week-row {\n display: flex;\n gap: 0.25rem;\n}\n\n.week-selector-option-week {\n align-items: center;\n background-color: var(--color-uva-white);\n border: none;\n border-radius: 0.25rem;\n color: var(--color-uva-black);\n cursor: pointer;\n display: flex;\n height: 2.25rem;\n justify-content: center;\n width: 2.25rem;\n}\n\n.week-selector-option-week:disabled {\n background-color: var(--color-grey-400);\n color: var(--color-grey-700);\n}\n\n.week-selector-option-week:disabled:active {\n background-color: var(--color-grey-500);\n color: var(--color-grey-00);\n font-weight: var(--semibold);\n}\n\n.week-selector-option-week:disabled:hover {\n cursor: not-allowed;\n}\n\n.week-selector-option-week:hover {\n background-color: var(--color-grey-300);\n}\n\n.week-selector-option-week--selected,\n.week-selector-option-week--selected:hover {\n background-color: var(--color-navy-600);\n color: var(--color-uva-white);\n}\n\n.week-selector-option-week:focus-visible {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"svgrMock.js","names":[],"sources":["../../src/__mocks__/svgrMock.tsx"],"sourcesContent":["import { forwardRef } from 'react';\n\nconst SvgrMock = forwardRef<HTMLSpanElement>((props, ref) => <span ref={ref} {...props} />);\nSvgrMock.displayName = 'SvgrMock';\n\nexport const ReactComponent = SvgrMock;\n// eslint-disable-next-line import/no-default-export\nexport default SvgrMock;\n"],"mappings":";;;AAEA,IAAM,IAAW,GAA6B,GAAO,MAAQ,kBAAC,QAAD;CAAW;CAAK,GAAI;CAAS,CAAA,CAAC;AAC3F,EAAS,cAAc;AAEvB,IAAa,IAAiB"}
1
+ {"version":3,"file":"svgrMock.js","names":[],"sources":["../../src/__mocks__/svgrMock.tsx"],"sourcesContent":["import { forwardRef } from 'react';\n\nconst SvgrMock = forwardRef<HTMLSpanElement>((props, ref) => <span ref={ref} {...props} />);\nSvgrMock.displayName = 'SvgrMock';\n\nexport const ReactComponent = SvgrMock;\n// eslint-disable-next-line import/no-default-export\nexport default SvgrMock;\n"],"mappings":";;;AAEA,IAAM,IAAW,GAA6B,GAAO,MAAQ,kBAAC,QAAD;CAAW;CAAK,GAAI;AAAQ,CAAA,CAAC;AAC1F,EAAS,cAAc;AAEvB,IAAa,IAAiB"}