@uva-glass/component-library 3.55.3 → 3.55.5

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 (253) hide show
  1. package/dist/{Accordion-BpnBHYIx.js → Accordion-DvblEUVu.js} +16 -17
  2. package/dist/{Accordion-BpnBHYIx.js.map → Accordion-DvblEUVu.js.map} +1 -1
  3. package/dist/{AddCatalogueLinkForm-Cy6fPNvN.js → AddCatalogueLinkForm-rph4K9P0.js} +24 -25
  4. package/dist/{AddCatalogueLinkForm-Cy6fPNvN.js.map → AddCatalogueLinkForm-rph4K9P0.js.map} +1 -1
  5. package/dist/{CheckboxButtonBar-CalU0IYK.js → CheckboxButtonBar-5UMIFMKH.js} +2 -2
  6. package/dist/{CheckboxButtonBar-CalU0IYK.js.map → CheckboxButtonBar-5UMIFMKH.js.map} +1 -1
  7. package/dist/{ControlsButton-zemVxTlg.js → ControlsButton-B1XRpMUM.js} +15 -16
  8. package/dist/{ControlsButton-zemVxTlg.js.map → ControlsButton-B1XRpMUM.js.map} +1 -1
  9. package/dist/{Drawer-Ggofac6y.js → Drawer-e7UFHVg9.js} +29 -30
  10. package/dist/{Drawer-Ggofac6y.js.map → Drawer-e7UFHVg9.js.map} +1 -1
  11. package/dist/{FieldHint-D0HtbTnt.js → FieldHint-fxnEOsVZ.js} +2 -2
  12. package/dist/{FieldHint-D0HtbTnt.js.map → FieldHint-fxnEOsVZ.js.map} +1 -1
  13. package/dist/Fieldset-0LFsZ3Mz.js +22 -0
  14. package/dist/{Fieldset-CoNu_Owa.js.map → Fieldset-0LFsZ3Mz.js.map} +1 -1
  15. package/dist/{Lexical.prod-DIglXatJ.js → Lexical.prod-sbwgNRjw.js} +575 -568
  16. package/dist/Lexical.prod-sbwgNRjw.js.map +1 -0
  17. package/dist/{LexicalClipboard.prod-Bnzu0sh_.js → LexicalClipboard.prod-DdImsyd1.js} +82 -82
  18. package/dist/{LexicalClipboard.prod-Bnzu0sh_.js.map → LexicalClipboard.prod-DdImsyd1.js.map} +1 -1
  19. package/dist/{LexicalExtension.prod-COPHoPpX.js → LexicalExtension.prod-jTSDl1mh.js} +208 -198
  20. package/dist/LexicalExtension.prod-jTSDl1mh.js.map +1 -0
  21. package/dist/{LexicalLink.prod-Bf9JUdMv.js → LexicalLink.prod-BKLNLyu8.js} +155 -149
  22. package/dist/LexicalLink.prod-BKLNLyu8.js.map +1 -0
  23. package/dist/{LexicalList.prod-DRz8vsM9.js → LexicalList.prod-DEtc4lSr.js} +222 -222
  24. package/dist/{LexicalList.prod-DRz8vsM9.js.map → LexicalList.prod-DEtc4lSr.js.map} +1 -1
  25. package/dist/{LexicalTable.prod-D16GW-aZ.js → LexicalTable.prod-CpIPDW6z.js} +436 -428
  26. package/dist/LexicalTable.prod-CpIPDW6z.js.map +1 -0
  27. package/dist/LexicalUtils.prod-DjjGkphN.js +360 -0
  28. package/dist/LexicalUtils.prod-DjjGkphN.js.map +1 -0
  29. package/dist/{LinkContextMenu-m_CGQEiX.js → LinkContextMenu-CTkNPiIW.js} +2 -2
  30. package/dist/{LinkContextMenu-m_CGQEiX.js.map → LinkContextMenu-CTkNPiIW.js.map} +1 -1
  31. package/dist/{ModalDialog-HUkDdAJ-.js → ModalDialog-N50NGnd4.js} +2 -2
  32. package/dist/{ModalDialog-HUkDdAJ-.js.map → ModalDialog-N50NGnd4.js.map} +1 -1
  33. package/dist/{PageOverlay-D_wG2oie.js → PageOverlay-S4xsqJha.js} +2 -2
  34. package/dist/{PageOverlay-D_wG2oie.js.map → PageOverlay-S4xsqJha.js.map} +1 -1
  35. package/dist/{PasteHandlerPlugin-DjD1wryY.js → PasteHandlerPlugin-YpQruA-w.js} +4 -4
  36. package/dist/{PasteHandlerPlugin-DjD1wryY.js.map → PasteHandlerPlugin-YpQruA-w.js.map} +1 -1
  37. package/dist/{RteEditor.module-Jk80F1FA.js → RteEditor.module-BJLUYSpf.js} +9 -10
  38. package/dist/{RteEditor.module-Jk80F1FA.js.map → RteEditor.module-BJLUYSpf.js.map} +1 -1
  39. package/dist/{Sortable.module-BTUOSbOU.js → Sortable.module-8SoaHfuE.js} +6 -7
  40. package/dist/{Sortable.module-BTUOSbOU.js.map → Sortable.module-8SoaHfuE.js.map} +1 -1
  41. package/dist/{SortableProvider-Dc7hwkb5.js → SortableProvider-8HYiBXJS.js} +2 -2
  42. package/dist/{SortableProvider-Dc7hwkb5.js.map → SortableProvider-8HYiBXJS.js.map} +1 -1
  43. package/dist/Spinner-BpElTDIu.js +30 -0
  44. package/dist/{Spinner-D8tWqg9j.js.map → Spinner-BpElTDIu.js.map} +1 -1
  45. package/dist/{TableCellResizerPlugin-CgYsYsuY.js → TableCellResizerPlugin-Ceof6StD.js} +17 -17
  46. package/dist/{TableCellResizerPlugin-CgYsYsuY.js.map → TableCellResizerPlugin-Ceof6StD.js.map} +1 -1
  47. package/dist/{TextArea-DqKIpOfT.js → TextArea-CuASC9bX.js} +16 -17
  48. package/dist/{TextArea-DqKIpOfT.js.map → TextArea-CuASC9bX.js.map} +1 -1
  49. package/dist/{Tooltip-BzB3jznk.js → Tooltip-D27p9kh4.js} +13 -14
  50. package/dist/{Tooltip-BzB3jznk.js.map → Tooltip-D27p9kh4.js.map} +1 -1
  51. package/dist/{chunk-SZQXB3JV-D0XG4Tlp.js → chunk-SZQXB3JV-KiB8lSa9.js} +5 -5
  52. package/dist/{chunk-SZQXB3JV-D0XG4Tlp.js.map → chunk-SZQXB3JV-KiB8lSa9.js.map} +1 -1
  53. package/dist/{client-UU-mS47K.js → client-CHQ7u_QI.js} +9 -9
  54. package/dist/{client-UU-mS47K.js.map → client-CHQ7u_QI.js.map} +1 -1
  55. package/dist/components/Accordion/Accordion.js +1 -1
  56. package/dist/components/Accordion/Accordion.stories.js +1 -1
  57. package/dist/components/Accordion/Accordion.test.js +4 -7
  58. package/dist/components/Accordion/Accordion.test.js.map +1 -1
  59. package/dist/components/Accordion/index.js +1 -1
  60. package/dist/components/AccordionCard/AccordionCard.test.js +3 -6
  61. package/dist/components/AccordionCard/AccordionCard.test.js.map +1 -1
  62. package/dist/components/ActionList/ActionList.test.js +3 -6
  63. package/dist/components/ActionList/ActionList.test.js.map +1 -1
  64. package/dist/components/AppStatusBar/AppStatusBar.test.js +2 -5
  65. package/dist/components/AppStatusBar/AppStatusBar.test.js.map +1 -1
  66. package/dist/components/Attention/Attention.test.js +2 -5
  67. package/dist/components/Attention/Attention.test.js.map +1 -1
  68. package/dist/components/Backdrop/Backdrop.test.js +2 -5
  69. package/dist/components/Backdrop/Backdrop.test.js.map +1 -1
  70. package/dist/components/Buttons/Button.stories.js +1 -1
  71. package/dist/components/Buttons/Button.test.js +2 -5
  72. package/dist/components/Buttons/Button.test.js.map +1 -1
  73. package/dist/components/Buttons/LinkButton.stories.js +1 -1
  74. package/dist/components/Buttons/LinkButton.test.js +2 -5
  75. package/dist/components/Buttons/LinkButton.test.js.map +1 -1
  76. package/dist/components/Buttons/MenuButton.stories.js +1 -1
  77. package/dist/components/Buttons/MenuButton.test.js +2 -5
  78. package/dist/components/Buttons/MenuButton.test.js.map +1 -1
  79. package/dist/components/Card/Card.test.js +2 -5
  80. package/dist/components/Card/Card.test.js.map +1 -1
  81. package/dist/components/Checkbox/Checkbox.stories.js +1 -1
  82. package/dist/components/Checkbox/Checkbox.test.js +3 -6
  83. package/dist/components/Checkbox/Checkbox.test.js.map +1 -1
  84. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.js +1 -1
  85. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js +2 -2
  86. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js +3 -6
  87. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js.map +1 -1
  88. package/dist/components/CheckboxButtonBar/index.js +1 -1
  89. package/dist/components/CheckboxTree/CheckboxTree.js +1 -2
  90. package/dist/components/CheckboxTree/CheckboxTree.stories.js +3 -4
  91. package/dist/components/CheckboxTree/CheckboxTree.stories.js.map +1 -1
  92. package/dist/components/CheckboxTree/index.js +1 -2
  93. package/dist/components/Chip/Chip.stories.js +1 -1
  94. package/dist/components/ControlsButton/ControlsButton.js +1 -1
  95. package/dist/components/ControlsButton/ControlsButton.stories.js +2 -2
  96. package/dist/components/ControlsButton/index.js +1 -1
  97. package/dist/components/Drawer/Drawer.js +1 -1
  98. package/dist/components/Drawer/Drawer.stories.js +2 -2
  99. package/dist/components/Drawer/index.js +1 -1
  100. package/dist/components/FeedbackBar/FeedbackBar.test.js +2 -5
  101. package/dist/components/FeedbackBar/FeedbackBar.test.js.map +1 -1
  102. package/dist/components/FieldHint/FieldHint.js +1 -1
  103. package/dist/components/FieldHint/FieldHint.stories.js +1 -1
  104. package/dist/components/FieldHint/index.js +1 -1
  105. package/dist/components/Fieldset/Fieldset.js +1 -1
  106. package/dist/components/Fieldset/Fieldset.stories.js +1 -1
  107. package/dist/components/Fieldset/index.js +1 -1
  108. package/dist/components/FormInput/FormInput.js +1 -2
  109. package/dist/components/FormInput/FormInput.stories.js +2 -3
  110. package/dist/components/FormInput/FormInput.stories.js.map +1 -1
  111. package/dist/components/FormInput/index.js +1 -2
  112. package/dist/components/IconButton/IconButton.stories.js +6 -7
  113. package/dist/components/IconButton/IconButton.stories.js.map +1 -1
  114. package/dist/components/InputField/InputField.stories.js +1 -3
  115. package/dist/components/InputField/InputField.stories.js.map +1 -1
  116. package/dist/components/Label/Label.test.js +2 -5
  117. package/dist/components/Label/Label.test.js.map +1 -1
  118. package/dist/components/MetaDataBar/MetaDataBar.test.js +1 -4
  119. package/dist/components/MetaDataBar/MetaDataBar.test.js.map +1 -1
  120. package/dist/components/ModalDialog/ModalDialog.js +1 -1
  121. package/dist/components/ModalDialog/ModalDialog.stories.js +2 -2
  122. package/dist/components/ModalDialog/index.js +1 -1
  123. package/dist/components/MultiSelect/MultiSelect.js +1 -2
  124. package/dist/components/MultiSelect/MultiSelect.stories.js +2 -3
  125. package/dist/components/MultiSelect/MultiSelect.stories.js.map +1 -1
  126. package/dist/components/MultiSelect/components/MultiSelectHeader.js +1 -2
  127. package/dist/components/MultiSelect/index.js +1 -2
  128. package/dist/components/MultiSelectBox/MultiSelectBox.stories.js +1 -1
  129. package/dist/components/MultiSelectBox/MultiSelectBox.test.js +2 -5
  130. package/dist/components/MultiSelectBox/MultiSelectBox.test.js.map +1 -1
  131. package/dist/components/Notification/Notification.stories.js +1 -1
  132. package/dist/components/Notification/Notification.test.js +2 -5
  133. package/dist/components/Notification/Notification.test.js.map +1 -1
  134. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js +6 -7
  135. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js.map +1 -1
  136. package/dist/components/PageOverlay/PageOverlay.js +1 -1
  137. package/dist/components/PageOverlay/PageOverlay.stories.js +1 -1
  138. package/dist/components/PageOverlay/index.js +1 -1
  139. package/dist/components/PeriodSelector/PeriodSelector.js +1 -2
  140. package/dist/components/PeriodSelector/PeriodSelector.stories.js +2 -3
  141. package/dist/components/PeriodSelector/PeriodSelector.stories.js.map +1 -1
  142. package/dist/components/PeriodSelector/index.js +1 -2
  143. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js +0 -2
  144. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js.map +1 -1
  145. package/dist/components/RadioGroup/RadioGroup.stories.js +1 -1
  146. package/dist/components/RadioGroup/Radiogroup.test.js +2 -5
  147. package/dist/components/RadioGroup/Radiogroup.test.js.map +1 -1
  148. package/dist/components/RadioTabSelector/RadioTabSelector.js +1 -2
  149. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js +2 -3
  150. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js.map +1 -1
  151. package/dist/components/RadioTabSelector/index.js +1 -2
  152. package/dist/components/RteEditor/EditorHeader/EditorHeader.js +1 -2
  153. package/dist/components/RteEditor/EditorHeader/index.js +1 -2
  154. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +2 -2
  155. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.js +1 -1
  156. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.js +1 -1
  157. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js +30 -30
  158. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +1 -2
  159. package/dist/components/RteEditor/Plugins/HistoryPlugin/index.js +1 -2
  160. package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +1 -2
  161. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js +1 -1
  162. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +1 -2
  163. package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +1 -1
  164. package/dist/components/RteEditor/Plugins/LinkPlugin/index.js +1 -2
  165. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +6 -6
  166. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +1 -1
  167. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/index.js +1 -1
  168. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.js +1 -1
  169. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/index.js +1 -1
  170. package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +1 -2
  171. package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +1 -2
  172. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +16 -16
  173. package/dist/components/RteEditor/Plugins/TablePlugin/index.js +1 -2
  174. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +1 -2
  175. package/dist/components/RteEditor/Plugins/ToolbarPlugin/index.js +1 -2
  176. package/dist/components/RteEditor/Plugins/index.js +3 -3
  177. package/dist/components/RteEditor/RteEditor.js +1 -2
  178. package/dist/components/RteEditor/RteEditor.stories.js +1 -2
  179. package/dist/components/RteEditor/RteEditor.stories.js.map +1 -1
  180. package/dist/components/RteEditor/UvaTheme/UvaTheme.js +1 -1
  181. package/dist/components/RteEditor/helpers.js +5 -5
  182. package/dist/components/RteEditor/index.js +1 -2
  183. package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js +14 -14
  184. package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js +19 -19
  185. package/dist/components/SelectListbox/SelectListBox.stories.js +1 -1
  186. package/dist/components/Sortable/Sortable.js +1 -1
  187. package/dist/components/Sortable/Sortable.stories.js +1 -1
  188. package/dist/components/Sortable/SortableProvider.js +1 -1
  189. package/dist/components/Sortable/components/SortableContainer.js +1 -1
  190. package/dist/components/Sortable/components/SortableHandle.js +1 -1
  191. package/dist/components/Sortable/components/SortableItem.js +2 -2
  192. package/dist/components/Spinner/Spinner.js +1 -1
  193. package/dist/components/Spinner/Spinner.stories.js +1 -1
  194. package/dist/components/Spinner/index.js +1 -1
  195. package/dist/components/StatusBadge/StatusBadge.test.js +2 -5
  196. package/dist/components/StatusBadge/StatusBadge.test.js.map +1 -1
  197. package/dist/components/TextArea/TextArea.js +1 -1
  198. package/dist/components/TextArea/TextArea.stories.js +2 -2
  199. package/dist/components/TextArea/TextArea.test.js +4 -7
  200. package/dist/components/TextArea/TextArea.test.js.map +1 -1
  201. package/dist/components/TextArea/index.js +1 -1
  202. package/dist/components/ToggleSwitch/ToggleSwitch.stories.js +1 -1
  203. package/dist/components/Tooltip/Tooltip.js +1 -1
  204. package/dist/components/Tooltip/Tooltip.stories.js +1 -1
  205. package/dist/components/Tooltip/index.js +1 -1
  206. package/dist/components/VarIndicator/VarIndicator.stories.js +1 -1
  207. package/dist/components/VarIndicator/VarIndicator.test.js +3 -6
  208. package/dist/components/VarIndicator/VarIndicator.test.js.map +1 -1
  209. package/dist/components/index.js +12 -13
  210. package/dist/{components-C4MCdrDH.js → components-DAwjkky5.js} +436 -436
  211. package/dist/components-DAwjkky5.js.map +1 -0
  212. package/dist/{dist-2TKCXdYZ.js → dist-BIkFjHck.js} +181 -181
  213. package/dist/{dist-2TKCXdYZ.js.map → dist-BIkFjHck.js.map} +1 -1
  214. package/dist/{esm-UNe_gmRA.js → esm-ipAmzhQq.js} +4 -4
  215. package/dist/{esm-UNe_gmRA.js.map → esm-ipAmzhQq.js.map} +1 -1
  216. package/dist/{helpers-BBSxTGRl.js → helpers-MNJmfDe_.js} +7 -7
  217. package/dist/{helpers-BBSxTGRl.js.map → helpers-MNJmfDe_.js.map} +1 -1
  218. package/dist/index.js +12 -13
  219. package/dist/{react-18-CRbkdI-3.js → react-18-Dwpebadr.js} +2 -2
  220. package/dist/{react-18-CRbkdI-3.js.map → react-18-Dwpebadr.js.map} +1 -1
  221. package/dist/{react.esm-CzIhAqlo.js → react.esm-R7eBXTUI.js} +587 -587
  222. package/dist/{react.esm-CzIhAqlo.js.map → react.esm-R7eBXTUI.js.map} +1 -1
  223. package/dist/setupTests.js +1 -2
  224. package/dist/setupTests.js.map +1 -1
  225. package/dist/storybook__react.d.js +97 -97
  226. package/dist/storybook__react.d.js.map +1 -1
  227. package/dist/{test-DQruvi8i.js → test-Cr_l59hN.js} +12 -10
  228. package/dist/{test-DQruvi8i.js.map → test-Cr_l59hN.js.map} +1 -1
  229. package/package.json +27 -27
  230. package/dist/Fieldset-CoNu_Owa.js +0 -23
  231. package/dist/Lexical.prod-DIglXatJ.js.map +0 -1
  232. package/dist/LexicalExtension.prod-COPHoPpX.js.map +0 -1
  233. package/dist/LexicalLink.prod-Bf9JUdMv.js.map +0 -1
  234. package/dist/LexicalTable.prod-D16GW-aZ.js.map +0 -1
  235. package/dist/LexicalUtils.prod-BBTLliac.js +0 -360
  236. package/dist/LexicalUtils.prod-BBTLliac.js.map +0 -1
  237. package/dist/Spinner-D8tWqg9j.js +0 -31
  238. package/dist/components-C4MCdrDH.js.map +0 -1
  239. /package/dist/assets/favicon/{android-chrome-192x192.png → src/assets/favicon/android-chrome-192x192.png} +0 -0
  240. /package/dist/assets/favicon/{android-chrome-512x512.png → src/assets/favicon/android-chrome-512x512.png} +0 -0
  241. /package/dist/assets/favicon/{apple-touch-icon.png → src/assets/favicon/apple-touch-icon.png} +0 -0
  242. /package/dist/assets/favicon/{favicon-16x16.png → src/assets/favicon/favicon-16x16.png} +0 -0
  243. /package/dist/assets/favicon/{favicon-32x32.png → src/assets/favicon/favicon-32x32.png} +0 -0
  244. /package/dist/assets/favicon/{favicon.ico → src/assets/favicon/favicon.ico} +0 -0
  245. /package/dist/assets/favicon/{favicon.svg → src/assets/favicon/favicon.svg} +0 -0
  246. /package/dist/assets/favicon/{site.webmanifest → src/assets/favicon/site.webmanifest} +0 -0
  247. /package/dist/assets/fonts/{SourceSans3-Regular.otf.woff → src/assets/fonts/SourceSans3-Regular.otf.woff} +0 -0
  248. /package/dist/assets/fonts/{SourceSans3-Regular.otf.woff2 → src/assets/fonts/SourceSans3-Regular.otf.woff2} +0 -0
  249. /package/dist/assets/fonts/{SourceSans3-Semibold.otf.woff → src/assets/fonts/SourceSans3-Semibold.otf.woff} +0 -0
  250. /package/dist/assets/fonts/{SourceSans3-Semibold.otf.woff2 → src/assets/fonts/SourceSans3-Semibold.otf.woff2} +0 -0
  251. /package/dist/assets/{fonts.css → src/css/fonts.css} +0 -0
  252. /package/dist/assets/{globals.css → src/css/globals.css} +0 -0
  253. /package/dist/assets/{variables.css → src/css/variables.css} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"TableCellResizerPlugin-CgYsYsuY.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-Ceof6StD.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,13 +1,12 @@
1
1
  import { t as e } from "./clsx-BD2qMUU1.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
- import './assets/TextArea.css';//#region src/components/TextArea/TextArea.module.css
5
- var o = "_required_19dqk_25", s = {
4
+ import './assets/TextArea.css';var o = {
6
5
  "text-area__wrapper": "_text-area__wrapper_19dqk_1",
7
6
  "text-area__header": "_text-area__header_19dqk_7",
8
7
  "text-area__label-wrapper": "_text-area__label-wrapper_19dqk_13",
9
8
  "text-area__label": "_text-area__label_19dqk_13",
10
- required: o,
9
+ required: "_required_19dqk_25",
11
10
  "text-area__sub-label": "_text-area__sub-label_19dqk_33",
12
11
  "text-area__word-count": "_text-area__word-count_19dqk_38",
13
12
  "text-area__word-count--alert": "_text-area__word-count--alert_19dqk_43",
@@ -17,9 +16,9 @@ var o = "_required_19dqk_25", s = {
17
16
  };
18
17
  //#endregion
19
18
  //#region src/components/TextArea/TextArea.tsx
20
- function c({ onChange: o, label: c, subLabel: l, maxCharacters: u = 0, heightAsTextField: d = !1, defaultValue: f = "", required: p = !1, notValid: m = !1 }) {
19
+ function s({ onChange: s, label: c, subLabel: l, maxCharacters: u = 0, heightAsTextField: d = !1, defaultValue: f = "", required: p = !1, notValid: m = !1 }) {
21
20
  let h = n(null), [g, _] = r(f.length), v = () => {
22
- h.current && (h.current.style.height = "auto", h.current.style.height = `${h.current.scrollHeight}px`, _(h.current.value.length), o(h.current.value.trim()));
21
+ h.current && (h.current.style.height = "auto", h.current.style.height = `${h.current.scrollHeight}px`, _(h.current.value.length), s(h.current.value.trim()));
23
22
  }, y = () => {
24
23
  let e = h.current;
25
24
  e && (e.style.height = "auto", e.style.height = `${e.scrollHeight}px`);
@@ -27,23 +26,23 @@ function c({ onChange: o, label: c, subLabel: l, maxCharacters: u = 0, heightAsT
27
26
  return t(() => {
28
27
  d || y();
29
28
  }, []), /* @__PURE__ */ a("div", {
30
- className: s["text-area__wrapper"],
29
+ className: o["text-area__wrapper"],
31
30
  children: [(c || u > 0) && /* @__PURE__ */ a("div", {
32
- className: s["text-area__header"],
31
+ className: o["text-area__header"],
33
32
  children: [/* @__PURE__ */ a("span", {
34
- className: s["text-area__label-wrapper"],
33
+ className: o["text-area__label-wrapper"],
35
34
  children: [c && /* @__PURE__ */ i("span", {
36
- className: e(s["text-area__label"], { [s.required]: p }),
35
+ className: e(o["text-area__label"], { [o.required]: p }),
37
36
  children: c
38
37
  }), l && /* @__PURE__ */ i("span", {
39
- className: s["text-area__sub-label"],
38
+ className: o["text-area__sub-label"],
40
39
  children: l
41
40
  })]
42
41
  }), u > 0 && /* @__PURE__ */ a("div", {
43
- className: s["text-area__word-count"],
42
+ className: o["text-area__word-count"],
44
43
  children: [
45
44
  /* @__PURE__ */ i("span", {
46
- className: e({ [s["text-area__word-count--alert"]]: g === u }),
45
+ className: e({ [o["text-area__word-count--alert"]]: g === u }),
47
46
  children: g
48
47
  }),
49
48
  "\xA0/\xA0",
@@ -52,9 +51,9 @@ function c({ onChange: o, label: c, subLabel: l, maxCharacters: u = 0, heightAsT
52
51
  })]
53
52
  }), /* @__PURE__ */ i("textarea", {
54
53
  ref: h,
55
- className: e(s["text-area"], {
56
- [s["not-valid"]]: m,
57
- [s["text-area--oneLine"]]: d
54
+ className: e(o["text-area"], {
55
+ [o["not-valid"]]: m,
56
+ [o["text-area--oneLine"]]: d
58
57
  }),
59
58
  maxLength: u > 0 ? u : void 0,
60
59
  onInput: v,
@@ -63,6 +62,6 @@ function c({ onChange: o, label: c, subLabel: l, maxCharacters: u = 0, heightAsT
63
62
  });
64
63
  }
65
64
  //#endregion
66
- export { c as t };
65
+ export { s as t };
67
66
 
68
- //# sourceMappingURL=TextArea-DqKIpOfT.js.map
67
+ //# sourceMappingURL=TextArea-CuASC9bX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea-DqKIpOfT.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;AACxB,EAAI,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;AAClB,QACL,EAAG,MAAM,SAAS,QAClB,EAAG,MAAM,SAAS,GAAG,EAAG,aAAa;;AAUvC,QAPA,QAAgB;AACd,EAAK,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-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;AACxB,EAAI,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;AAClB,QACL,EAAG,MAAM,SAAS,QAClB,EAAG,MAAM,SAAS,GAAG,EAAG,aAAa;;AAUvC,QAPA,QAAgB;AACd,EAAK,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,16 +1,15 @@
1
1
  import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
2
2
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
3
- import './assets/Tooltip.css';//#region src/components/Tooltip/Tooltip.module.css
4
- var o = "_tooltip_small_zy1z9_8", s = "_tooltip_medium_zy1z9_9", c = "_tooltip_large_zy1z9_10", l = {
3
+ import './assets/Tooltip.css';var o = {
5
4
  "tooltip-container": "_tooltip-container_zy1z9_1",
6
- tooltip_small: o,
7
- tooltip_medium: s,
8
- tooltip_large: c,
5
+ tooltip_small: "_tooltip_small_zy1z9_8",
6
+ tooltip_medium: "_tooltip_medium_zy1z9_9",
7
+ tooltip_large: "_tooltip_large_zy1z9_10",
9
8
  "tooltip_under-trigger": "_tooltip_under-trigger_zy1z9_64"
10
9
  };
11
10
  //#endregion
12
11
  //#region src/components/Tooltip/Tooltip.tsx
13
- function u({ element: o, id: s, text: c, size: u = "medium", openUnderTrigger: d = !1 }) {
12
+ function s({ element: s, id: c, text: l, size: u = "medium", openUnderTrigger: d = !1 }) {
14
13
  let f = n(null), p = n(null), [m, h] = r(!1), [g, _] = r({
15
14
  top: 0,
16
15
  left: 0
@@ -49,7 +48,7 @@ function u({ element: o, id: s, text: c, size: u = "medium", openUnderTrigger: d
49
48
  d,
50
49
  b
51
50
  ]), /* @__PURE__ */ a("div", {
52
- className: l["tooltip-container"],
51
+ className: o["tooltip-container"],
53
52
  onBlur: C,
54
53
  onFocus: S,
55
54
  onMouseEnter: S,
@@ -59,22 +58,22 @@ function u({ element: o, id: s, text: c, size: u = "medium", openUnderTrigger: d
59
58
  role: "button",
60
59
  tabIndex: -1,
61
60
  children: [/* @__PURE__ */ i("div", {
62
- "aria-describedby": m ? s : void 0,
63
- children: o
61
+ "aria-describedby": m ? c : void 0,
62
+ children: s
64
63
  }), m && /* @__PURE__ */ i("span", {
65
64
  ref: p,
66
- className: d ? l["tooltip_under-trigger"] : l[`tooltip_${u}`],
67
- id: s,
65
+ className: d ? o["tooltip_under-trigger"] : o[`tooltip_${u}`],
66
+ id: c,
68
67
  role: "tooltip",
69
68
  style: d ? {} : {
70
69
  top: g.top,
71
70
  left: g.left
72
71
  },
73
- children: c
72
+ children: l
74
73
  })]
75
74
  });
76
75
  }
77
76
  //#endregion
78
- export { u as t };
77
+ export { s as t };
79
78
 
80
- //# sourceMappingURL=Tooltip-BzB3jznk.js.map
79
+ //# sourceMappingURL=Tooltip-D27p9kh4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip-BzB3jznk.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;AAC1C,MAAI,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;AAUjG,GAPA,KAAO,GAGH,IAAM,MACR,IAAM,EAAY,SAAS,IAG7B,EAAY;IAAE;IAAK;IAAM,CAAC;;IAE3B,CAAC,GAAY,EAAU,CAAC,EAErB,IAAU,GACb,MAAyB;AACxB,EAAI,EAAM,QAAQ,YAChB,EAAU,GAAM;IAGpB,CAAC,EAAU,CACZ;CAED,SAAS,IAAO;AACd,IAAU,GAAK;;CAGjB,SAAS,IAAO;AACd,IAAU,GAAM;;CAGlB,SAAS,IAAS;AAChB,EAAY,EAAR,GACgB;;AA8BtB,QA3BA,QAAgB;AACd,MAAI,CAAC,EAAa,QAAS;EAE3B,IAAM,IAAsB,EAAa;AAIzC,SAFA,EAAoB,iBAAiB,SAAS,GAAS,GAAK,QAE/C;AACX,KAAoB,oBAAoB,SAAS,GAAS,GAAK;;IAEhE,CAAC,EAAQ,CAAC,EAEb,SACE,GAAmB,EACnB,OAAO,iBAAiB,UAAU,EAAkB,QACvC;AACX,SAAO,oBAAoB,UAAU,EAAkB;KAExD,CAAC,EAAkB,CAAC,EAEvB,QAAgB;AAEd,EAAI,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-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;AAC1C,MAAI,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;AAUjG,GAPA,KAAO,GAGH,IAAM,MACR,IAAM,EAAY,SAAS,IAG7B,EAAY;IAAE;IAAK;IAAM,CAAC;;IAE3B,CAAC,GAAY,EAAU,CAAC,EAErB,IAAU,GACb,MAAyB;AACxB,EAAI,EAAM,QAAQ,YAChB,EAAU,GAAM;IAGpB,CAAC,EAAU,CACZ;CAED,SAAS,IAAO;AACd,IAAU,GAAK;;CAGjB,SAAS,IAAO;AACd,IAAU,GAAM;;CAGlB,SAAS,IAAS;AAChB,EAAY,EAAR,GACgB;;AA8BtB,QA3BA,QAAgB;AACd,MAAI,CAAC,EAAa,QAAS;EAE3B,IAAM,IAAsB,EAAa;AAIzC,SAFA,EAAoB,iBAAiB,SAAS,GAAS,GAAK,QAE/C;AACX,KAAoB,oBAAoB,SAAS,GAAS,GAAK;;IAEhE,CAAC,EAAQ,CAAC,EAEb,SACE,GAAmB,EACnB,OAAO,iBAAiB,UAAU,EAAkB,QACvC;AACX,SAAO,oBAAoB,UAAU,EAAkB;KAExD,CAAC,EAAkB,CAAC,EAEvB,QAAgB;AAEd,EAAI,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,4 +1,4 @@
1
- import { B as e, D as t, I as n, L as r, N as i, R as a, V as o, a as s, i as c, r as l, u, z as d } from "./test-DQruvi8i.js";
1
+ import { B as e, D as t, I as n, L as r, N as i, R as a, V as o, a as s, i as c, r as l, u, z as d } from "./test-Cr_l59hN.js";
2
2
  function f(e) {
3
3
  return [e, ...e.querySelectorAll("*")].reduce((e, t) => ("shadowRoot" in t && t.shadowRoot && e.push(t.shadowRoot, ...f(t.shadowRoot)), e), []);
4
4
  }
@@ -7226,7 +7226,7 @@ function Ti() {
7226
7226
  var Ei = Ti;
7227
7227
  function Di(e) {
7228
7228
  var t = this.has(e) && delete this.__data__[e];
7229
- return this.size -= t ? 1 : 0, t;
7229
+ return this.size -= +!!t, t;
7230
7230
  }
7231
7231
  var Oi = Di, ki = "__lodash_hash_undefined__", Ai = Object.prototype.hasOwnProperty;
7232
7232
  function ji(e) {
@@ -7245,7 +7245,7 @@ function Pi(e) {
7245
7245
  var Fi = Pi, Ii = "__lodash_hash_undefined__";
7246
7246
  function Li(e, t) {
7247
7247
  var n = this.__data__;
7248
- return this.size += this.has(e) ? 0 : 1, n[e] = wi && t === void 0 ? Ii : t, this;
7248
+ return this.size += +!this.has(e), n[e] = wi && t === void 0 ? Ii : t, this;
7249
7249
  }
7250
7250
  var Ri = Li;
7251
7251
  function zi(e) {
@@ -7314,7 +7314,7 @@ function sa(e, t) {
7314
7314
  var ca = sa;
7315
7315
  function la(e) {
7316
7316
  var t = ca(this, e).delete(e);
7317
- return this.size -= t ? 1 : 0, t;
7317
+ return this.size -= +!!t, t;
7318
7318
  }
7319
7319
  var ua = la;
7320
7320
  function da(e) {
@@ -8445,4 +8445,4 @@ async function xs(e, t) {
8445
8445
  //#endregion
8446
8446
  export { p as _, Uo as a, Me as c, Qt as d, Xt as f, St as g, Ct as h, Wo as i, q as l, Fe as m, $o as n, Ja as o, Ie as p, xs as r, rn as s, fs as t, en as u };
8447
8447
 
8448
- //# sourceMappingURL=chunk-SZQXB3JV-D0XG4Tlp.js.map
8448
+ //# sourceMappingURL=chunk-SZQXB3JV-KiB8lSa9.js.map