@uva-glass/component-library 3.52.10 → 3.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/{Lexical.prod-sd_e2sqT.js → Lexical.prod-DH2XfwvA.js} +58 -58
  2. package/dist/{Lexical.prod-sd_e2sqT.js.map → Lexical.prod-DH2XfwvA.js.map} +1 -1
  3. package/dist/{LexicalClipboard.prod-Co2PF1UJ.js → LexicalClipboard.prod-DTuNvXAS.js} +22 -22
  4. package/dist/{LexicalClipboard.prod-Co2PF1UJ.js.map → LexicalClipboard.prod-DTuNvXAS.js.map} +1 -1
  5. package/dist/{LexicalLink.prod-BCE6Bg2N.js → LexicalLink.prod-BV5Y2RYj.js} +8 -9
  6. package/dist/{LexicalLink.prod-BCE6Bg2N.js.map → LexicalLink.prod-BV5Y2RYj.js.map} +1 -1
  7. package/dist/{LexicalList.prod-CIB0K0ja.js → LexicalList.prod-DA9du3qx.js} +4 -4
  8. package/dist/{LexicalList.prod-CIB0K0ja.js.map → LexicalList.prod-DA9du3qx.js.map} +1 -1
  9. package/dist/{LexicalSelection.prod-CCmcTP6S.js → LexicalSelection.prod-mQk00-U_.js} +2 -2
  10. package/dist/{LexicalSelection.prod-CCmcTP6S.js.map → LexicalSelection.prod-mQk00-U_.js.map} +1 -1
  11. package/dist/{LexicalTable.prod-Oa2YPHLl.js → LexicalTable.prod-RGq0GKAR.js} +4 -4
  12. package/dist/{LexicalTable.prod-Oa2YPHLl.js.map → LexicalTable.prod-RGq0GKAR.js.map} +1 -1
  13. package/dist/{LexicalUtils.prod-CjKjgnmx.js → LexicalUtils.prod-DU4QwthB.js} +2 -2
  14. package/dist/{LexicalUtils.prod-CjKjgnmx.js.map → LexicalUtils.prod-DU4QwthB.js.map} +1 -1
  15. package/dist/RteEditor.module-DaBh86FK.js +41 -0
  16. package/dist/RteEditor.module-DaBh86FK.js.map +1 -0
  17. package/dist/{TableCellResizerPlugin-DATbSzfg.js → TableCellResizerPlugin-DRwI83s2.js} +4 -4
  18. package/dist/{TableCellResizerPlugin-DATbSzfg.js.map → TableCellResizerPlugin-DRwI83s2.js.map} +1 -1
  19. package/dist/{TablePlugin-CqCjNBW_.js → TablePlugin-DmE96vN7.js} +20 -20
  20. package/dist/{TablePlugin-CqCjNBW_.js.map → TablePlugin-DmE96vN7.js.map} +1 -1
  21. package/dist/assets/AddCatalogueLinkForm.css +1 -0
  22. package/dist/assets/Flyout.css +1 -1
  23. package/dist/assets/RteEditor.css +1 -1
  24. package/dist/assets/variables.css +72 -72
  25. package/dist/chunk-SS2NHR7W-qmI2h7CJ.js +4507 -0
  26. package/dist/chunk-SS2NHR7W-qmI2h7CJ.js.map +1 -0
  27. package/dist/{client-CFLMKOFW.js → client-D4oO7Spw.js} +11 -11
  28. package/dist/{client-CFLMKOFW.js.map → client-D4oO7Spw.js.map} +1 -1
  29. package/dist/components/Accordion/Accordion.test.js +2 -2
  30. package/dist/components/AccordionCard/AccordionCard.test.js +2 -2
  31. package/dist/components/ActionList/ActionList.test.js +2 -2
  32. package/dist/components/AppStatusBar/AppStatusBar.test.js +1 -1
  33. package/dist/components/Attention/Attention.test.js +1 -1
  34. package/dist/components/Backdrop/Backdrop.test.js +1 -1
  35. package/dist/components/Buttons/Button.stories.js +1 -1
  36. package/dist/components/Buttons/Button.test.js +1 -1
  37. package/dist/components/Buttons/LinkButton.stories.js +1 -1
  38. package/dist/components/Buttons/LinkButton.test.js +1 -1
  39. package/dist/components/Buttons/MenuButton.stories.js +1 -1
  40. package/dist/components/Buttons/MenuButton.test.js +1 -1
  41. package/dist/components/Card/Card.test.js +1 -1
  42. package/dist/components/Checkbox/Checkbox.stories.js +1 -1
  43. package/dist/components/Checkbox/Checkbox.test.js +2 -2
  44. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js +1 -1
  45. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js +1 -1
  46. package/dist/components/CheckboxTree/CheckboxTree.js +1 -1
  47. package/dist/components/CheckboxTree/CheckboxTree.stories.js +111 -55
  48. package/dist/components/CheckboxTree/CheckboxTree.stories.js.map +1 -1
  49. package/dist/components/Chip/Chip.stories.js +1 -1
  50. package/dist/components/ControlsButton/ControlsButton.stories.js +1 -1
  51. package/dist/components/Drawer/Drawer.stories.js +1 -1
  52. package/dist/components/FeedbackBar/FeedbackBar.test.js +1 -1
  53. package/dist/components/FormInput/FormInput.d.ts +3 -1
  54. package/dist/components/FormInput/FormInput.js +26 -24
  55. package/dist/components/FormInput/FormInput.js.map +1 -1
  56. package/dist/components/FormInput/FormInput.stories.js +1 -1
  57. package/dist/components/IconButton/IconButton.stories.js +1 -1
  58. package/dist/components/InputField/InputField.stories.js +2 -2
  59. package/dist/components/Label/Label.test.js +1 -1
  60. package/dist/components/MetaDataBar/MetaDataBar.test.js +1 -1
  61. package/dist/components/ModalDialog/ModalDialog.stories.js +1 -1
  62. package/dist/components/MultiSelect/MultiSelect.js +1 -1
  63. package/dist/components/MultiSelect/MultiSelect.stories.js +2 -2
  64. package/dist/components/MultiSelect/components/MultiSelectHeader.js +1 -1
  65. package/dist/components/MultiSelect/index.js +1 -1
  66. package/dist/components/MultiSelectBox/MultiSelectBox.stories.js +1 -1
  67. package/dist/components/MultiSelectBox/MultiSelectBox.test.js +1 -1
  68. package/dist/components/Notification/Notification.stories.js +1 -1
  69. package/dist/components/Notification/Notification.test.js +1 -1
  70. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js +1 -1
  71. package/dist/components/PeriodSelector/PeriodSelector.js +1 -1
  72. package/dist/components/PeriodSelector/PeriodSelector.stories.js +1 -1
  73. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js +1 -1
  74. package/dist/components/RadioGroup/RadioGroup.stories.js +1 -1
  75. package/dist/components/RadioGroup/Radiogroup.test.js +1 -1
  76. package/dist/components/RadioTabSelector/RadioTabSelector.js +1 -1
  77. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js +1 -1
  78. package/dist/components/RteEditor/EditorHeader/EditorHeader.js +1 -1
  79. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +2 -2
  80. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.d.ts +22 -0
  81. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.js +108 -0
  82. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.js.map +1 -0
  83. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.d.ts +1 -0
  84. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.js +5 -0
  85. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.js.map +1 -0
  86. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.d.ts +8 -0
  87. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js +182 -0
  88. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js.map +1 -0
  89. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/index.d.ts +1 -0
  90. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/index.js +5 -0
  91. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/index.js.map +1 -0
  92. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +8 -8
  93. package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +2 -2
  94. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.d.ts +0 -2
  95. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +112 -132
  96. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js.map +1 -1
  97. package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +1 -1
  98. package/dist/components/RteEditor/Plugins/LinkPlugin/index.js +2 -3
  99. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +52 -57
  100. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js.map +1 -1
  101. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +3 -3
  102. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.js +4 -4
  103. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/index.js +1 -1
  104. package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +2 -2
  105. package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +6 -6
  106. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +24 -23
  107. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js.map +1 -1
  108. package/dist/components/RteEditor/Plugins/TablePlugin/index.js +1 -1
  109. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.d.ts +4 -1
  110. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +65 -52
  111. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js.map +1 -1
  112. package/dist/components/RteEditor/Plugins/index.js +8 -9
  113. package/dist/components/RteEditor/Providers/LanguageProvider.d.ts +2 -2
  114. package/dist/components/RteEditor/Providers/LanguageProvider.js +4 -4
  115. package/dist/components/RteEditor/Providers/LanguageProvider.js.map +1 -1
  116. package/dist/components/RteEditor/RteEditor.d.ts +8 -3
  117. package/dist/components/RteEditor/RteEditor.js +334 -309
  118. package/dist/components/RteEditor/RteEditor.js.map +1 -1
  119. package/dist/components/RteEditor/RteEditor.stories.js +69 -33
  120. package/dist/components/RteEditor/RteEditor.stories.js.map +1 -1
  121. package/dist/components/RteEditor/UvaTheme/UvaTheme.d.ts +1 -0
  122. package/dist/components/RteEditor/UvaTheme/UvaTheme.js +3 -2
  123. package/dist/components/RteEditor/UvaTheme/UvaTheme.js.map +1 -1
  124. package/dist/components/RteEditor/helpers.js +26 -23
  125. package/dist/components/RteEditor/helpers.js.map +1 -1
  126. package/dist/components/RteEditor/hooks/components/Flyout.js +6 -16
  127. package/dist/components/RteEditor/hooks/components/Flyout.js.map +1 -1
  128. package/dist/components/RteEditor/hooks/useTranslation.d.ts +39 -1
  129. package/dist/components/RteEditor/hooks/useTranslation.js +6 -6
  130. package/dist/components/RteEditor/hooks/useTranslation.js.map +1 -1
  131. package/dist/components/RteEditor/mockCatalogueSearchData.d.ts +18 -0
  132. package/dist/components/RteEditor/mockCatalogueSearchData.js +485 -0
  133. package/dist/components/RteEditor/mockCatalogueSearchData.js.map +1 -0
  134. package/dist/components/RteEditor/mockRteContent.d.ts +1 -1
  135. package/dist/components/RteEditor/mockRteContent.js +8 -6
  136. package/dist/components/RteEditor/mockRteContent.js.map +1 -1
  137. package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.d.ts +29 -0
  138. package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js +126 -0
  139. package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js.map +1 -0
  140. package/dist/components/RteEditor/nodes/CourseCatalogueNode/index.d.ts +1 -0
  141. package/dist/components/RteEditor/nodes/CourseCatalogueNode/index.js +11 -0
  142. package/dist/components/RteEditor/nodes/CourseCatalogueNode/index.js.map +1 -0
  143. package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js +58 -52
  144. package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js.map +1 -1
  145. package/dist/components/RteEditor/nodes/index.d.ts +1 -0
  146. package/dist/components/RteEditor/nodes/index.js +14 -6
  147. package/dist/components/RteEditor/nodes/index.js.map +1 -1
  148. package/dist/components/RteEditor/translations.d.ts +41 -3
  149. package/dist/components/RteEditor/translations.js +44 -6
  150. package/dist/components/RteEditor/translations.js.map +1 -1
  151. package/dist/components/SelectListbox/SelectListBox.stories.js +1 -1
  152. package/dist/components/Sortable/Sortable.stories.js +1 -1
  153. package/dist/components/StatusBadge/StatusBadge.test.js +1 -1
  154. package/dist/components/TextArea/TextArea.stories.js +1 -1
  155. package/dist/components/TextArea/TextArea.test.js +2 -2
  156. package/dist/components/ToggleSwitch/ToggleSwitch.stories.js +1 -1
  157. package/dist/components/VarIndicator/VarIndicator.stories.js +1 -1
  158. package/dist/components/VarIndicator/VarIndicator.test.js +2 -2
  159. package/dist/components/index.js +1 -1
  160. package/dist/{index-DRQMriwT.js → index-B4NxQN5d.js} +8668 -10004
  161. package/dist/index-B4NxQN5d.js.map +1 -0
  162. package/dist/{index-BKK3EWVW.js → index-ZQcmo1D_.js} +2 -2
  163. package/dist/{index-BKK3EWVW.js.map → index-ZQcmo1D_.js.map} +1 -1
  164. package/dist/index.js +1 -1
  165. package/dist/react-18-BczhA0zC.js +41 -0
  166. package/dist/react-18-BczhA0zC.js.map +1 -0
  167. package/dist/{react.esm-BjO203QT.js → react.esm-BDo_tPxu.js} +2 -2
  168. package/dist/{react.esm-BjO203QT.js.map → react.esm-BDo_tPxu.js.map} +1 -1
  169. package/dist/storybook__react.d.js +4252 -4509
  170. package/dist/storybook__react.d.js.map +1 -1
  171. package/package.json +19 -19
  172. package/dist/RteEditor.module-CUi7Vqe8.js +0 -37
  173. package/dist/RteEditor.module-CUi7Vqe8.js.map +0 -1
  174. package/dist/chunk-HERDX7MO-DaYu-eWo.js +0 -11320
  175. package/dist/chunk-HERDX7MO-DaYu-eWo.js.map +0 -1
  176. package/dist/index-DRQMriwT.js.map +0 -1
  177. package/dist/react-18-C6foUf2n.js +0 -42
  178. package/dist/react-18-C6foUf2n.js.map +0 -1
@@ -1,89 +1,84 @@
1
- import { jsx as d } from "react/jsx-runtime";
2
- import { o as y } from "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
3
- import { k as f, x as C, S as N, o as P, d as b, h as x } from "../../../../LexicalList.prod-CIB0K0ja.js";
1
+ import { jsx as f } from "react/jsx-runtime";
2
+ import { o as x } from "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
3
+ import { k as b, x as _, S as v, o as D, d as N, h as I, l as P } from "../../../../LexicalList.prod-DA9du3qx.js";
4
4
  import { useState as p, useEffect as k } from "react";
5
- import { c as D } from "../../../../clsx-OuTLNxxd.js";
6
- import { as as I, K as z, Y as O, b as v, y as K, z as U } from "../../../../Lexical.prod-sd_e2sqT.js";
7
- import { Icon as w } from "../../../Icon/Icon.js";
8
- import { s as l } from "../../../../RteEditor.module-CUi7Vqe8.js";
9
- import { useTranslation as B } from "../../hooks/useTranslation.js";
10
- const E = {
5
+ import { c as w } from "../../../../clsx-OuTLNxxd.js";
6
+ import { at as z, K as O, Y as U, b as K, y as S, z as B } from "../../../../Lexical.prod-DH2XfwvA.js";
7
+ import { w as E } from "../../../../LexicalUtils.prod-DU4QwthB.js";
8
+ import { Icon as Y } from "../../../Icon/Icon.js";
9
+ import { s as n } from "../../../../RteEditor.module-DaBh86FK.js";
10
+ import { useTranslation as $ } from "../../hooks/useTranslation.js";
11
+ const j = {
11
12
  bullet: "BulletList",
12
13
  number: "NumberedList"
13
- }, Y = ["bullet", "number"], Q = () => {
14
- const u = B(), [e] = y(), [h, a] = p(null), [m, g] = p(!1), [c, L] = p(!1), S = (t) => {
15
- t === "number" && h !== "number" ? (e.dispatchCommand(C, void 0), a("number")) : t === "bullet" && h !== "bullet" ? (e.dispatchCommand(N, void 0), a("bullet")) : (e.dispatchCommand(f, void 0), a(null));
14
+ }, M = ["bullet", "number"], W = () => {
15
+ const m = $(), [e] = x(), [h, s] = p(null), [u, g] = p(!1), [c, L] = p(!1), y = (t) => {
16
+ t === "number" && h !== "number" ? (e.dispatchCommand(_, void 0), s("number")) : t === "bullet" && h !== "bullet" ? (e.dispatchCommand(v, void 0), s("bullet")) : (e.dispatchCommand(b, void 0), s(null));
16
17
  };
17
18
  return k(() => {
18
19
  const t = e.registerCommand(
19
- I,
20
- (o) => o.ctrlKey && o.shiftKey && o.code === "Digit7" ? (o.preventDefault(), c ? e.dispatchCommand(f, void 0) : e.dispatchCommand(C, void 0), !0) : o.ctrlKey && o.shiftKey && o.code === "Digit8" ? (o.preventDefault(), m ? e.dispatchCommand(f, void 0) : e.dispatchCommand(N, void 0), !0) : !1,
21
- z
20
+ z,
21
+ (o) => o.ctrlKey && o.shiftKey && o.code === "Digit7" ? (o.preventDefault(), c ? e.dispatchCommand(b, void 0) : e.dispatchCommand(_, void 0), !0) : o.ctrlKey && o.shiftKey && o.code === "Digit8" ? (o.preventDefault(), u ? e.dispatchCommand(b, void 0) : e.dispatchCommand(v, void 0), !0) : !1,
22
+ O
22
23
  );
23
24
  return () => {
24
25
  t();
25
26
  };
26
- }, [e, c, m]), k(() => {
27
- e.registerCommand(
28
- O,
29
- (o) => (o.preventDefault(), e.update(() => {
30
- const n = v();
31
- if (!K(n))
27
+ }, [e, c, u]), k(() => {
28
+ const t = e.registerCommand(
29
+ U,
30
+ (d) => (d.preventDefault(), e.update(() => {
31
+ const i = K();
32
+ if (!S(i))
32
33
  return;
33
- const r = n.anchor.getNode(), i = r.getParent();
34
- if (!P(i))
34
+ const l = i.anchor.getNode(), a = l.getParent();
35
+ if (!D(a))
35
36
  return;
36
- const s = i.getParent();
37
- if (b(s)) {
38
- const _ = x(b(s) ? s.getListType() : "bullet");
39
- i.append(_), _.append(r);
37
+ const r = a.getParent();
38
+ if (N(r)) {
39
+ const C = I(N(r) ? r.getListType() : "bullet");
40
+ a.append(C), C.append(l);
40
41
  }
41
42
  }), !0),
42
- U
43
- );
44
- const t = e.registerUpdateListener(({ editorState: o }) => {
45
- o.read(() => {
46
- const n = v();
47
- if (K(n)) {
48
- let r = n.anchor.getNode();
49
- for (; r !== null; ) {
50
- if (b(r)) {
51
- const s = r.getTag();
52
- g(s === "ul"), L(s === "ol"), s === "ul" && a("bullet"), s === "ol" && a("number");
53
- return;
54
- }
55
- const i = r.getParent();
56
- if (i === null) break;
57
- r = i;
43
+ B
44
+ ), o = e.registerUpdateListener(({ editorState: d }) => {
45
+ d.read(() => {
46
+ const i = K();
47
+ if (S(i)) {
48
+ const l = i.anchor.getNode(), a = E(l, P);
49
+ if (a) {
50
+ const r = a.getTag();
51
+ g(r === "ul"), L(r === "ol"), r === "ul" && s("bullet"), r === "ol" && s("number");
52
+ return;
58
53
  }
59
- g(!1), L(!1), a(null);
54
+ g(!1), L(!1), s(null);
60
55
  }
61
56
  return !1;
62
57
  });
63
58
  });
64
59
  return () => {
65
- t();
60
+ o(), t();
66
61
  };
67
- }, [e]), /* @__PURE__ */ d("div", { className: l["editor__toolbar-button-group"], children: Y.map((t) => /* @__PURE__ */ d(
62
+ }, [e]), /* @__PURE__ */ f("div", { className: n["editor__toolbar-button-group"], children: M.map((t) => /* @__PURE__ */ f(
68
63
  "button",
69
64
  {
70
- onClick: () => S(t),
71
- title: u.format[`${t}Tooltip`],
72
- className: D(
73
- l["editor__toolbar-button"],
74
- l[`editor__toolbar-button--${t}`],
75
- t === "bullet" && m && l["editor__toolbar-button--active"],
76
- t === "number" && c && l["editor__toolbar-button--active"]
65
+ onClick: () => y(t),
66
+ title: m.format[`${t}Tooltip`],
67
+ className: w(
68
+ n["editor__toolbar-button"],
69
+ n[`editor__toolbar-button--${t}`],
70
+ t === "bullet" && u && n["editor__toolbar-button--active"],
71
+ t === "number" && c && n["editor__toolbar-button--active"]
77
72
  ),
78
- "aria-label": u.aria.labels[t],
79
- "aria-keyshortcuts": u.aria.keyshortcuts[t],
73
+ "aria-label": m.aria.labels[t],
74
+ "aria-keyshortcuts": m.aria.keyshortcuts[t],
80
75
  type: "button",
81
- children: /* @__PURE__ */ d(w, { name: E[t], size: 24 })
76
+ children: /* @__PURE__ */ f(Y, { name: j[t], size: 24 })
82
77
  },
83
78
  t
84
79
  )) });
85
80
  };
86
81
  export {
87
- Q as ListPlugin
82
+ W as ListPlugin
88
83
  };
89
84
  //# sourceMappingURL=ListPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListPlugin.js","sources":["../../../../../src/components/RteEditor/Plugins/ListPlugin/ListPlugin.tsx"],"sourcesContent":["import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport {\n $createListNode,\n $isListItemNode,\n $isListNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n REMOVE_LIST_COMMAND,\n} from '@lexical/list';\nimport { useEffect, useState } from 'react';\nimport { clsx } from 'clsx';\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n COMMAND_PRIORITY_LOW,\n KEY_DOWN_COMMAND,\n KEY_TAB_COMMAND,\n} from 'lexical';\n\nimport type { ElementNode, RangeSelection } from 'lexical';\n\nimport { Icon } from 'components/Icon';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\ntype ListTypesType = 'bullet' | 'number' | null;\nconst LIST_TYPE_ICONS = {\n bullet: 'BulletList',\n number: 'NumberedList',\n};\n\nconst ListTypes = ['bullet', 'number'];\n\nexport const ListPlugin = () => {\n const t = useTranslation();\n const [editor] = useLexicalComposerContext();\n const [blockType, setBlockType] = useState<ListTypesType>(null);\n const [isUList, setIsUList] = useState<boolean>(false);\n const [isOList, setIsOList] = useState<boolean>(false);\n\n const formatList = (listType: ListTypesType): void => {\n if (listType === 'number' && blockType !== 'number') {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n setBlockType('number');\n } else if (listType === 'bullet' && blockType !== 'bullet') {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n setBlockType('bullet');\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n setBlockType(null);\n }\n };\n\n useEffect(() => {\n const removeKeyboardShortcut = editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit7') {\n event.preventDefault();\n if (isOList) {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n }\n return true;\n }\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit8') {\n event.preventDefault();\n if (isUList) {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n }\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_EDITOR\n );\n\n return () => {\n removeKeyboardShortcut();\n };\n }, [editor, isOList, isUList]);\n\n useEffect(() => {\n editor.registerCommand(\n KEY_TAB_COMMAND,\n (event) => {\n event.preventDefault();\n editor.update(() => {\n const selection = $getSelection() as RangeSelection;\n if (!$isRangeSelection(selection)) {\n return;\n }\n\n const currentNode = selection.anchor.getNode();\n const parent = currentNode.getParent();\n if (!$isListItemNode(parent)) {\n return;\n }\n\n const listParent = parent.getParent();\n if ($isListNode(listParent)) {\n const newList = $createListNode($isListNode(listParent) ? listParent.getListType() : 'bullet');\n parent.append(newList);\n newList.append(currentNode);\n }\n });\n return true;\n },\n COMMAND_PRIORITY_LOW\n );\n\n const removeStatusListener = editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n let anchorNode = selection.anchor.getNode() as ElementNode;\n while (anchorNode !== null) {\n if ($isListNode(anchorNode)) {\n const tag = anchorNode.getTag();\n setIsUList(tag === 'ul');\n setIsOList(tag === 'ol');\n if (tag === 'ul') {\n setBlockType('bullet');\n }\n if (tag === 'ol') {\n setBlockType('number');\n }\n return;\n }\n const parentNode = anchorNode.getParent();\n if (parentNode === null) break;\n anchorNode = parentNode;\n }\n setIsUList(false);\n setIsOList(false);\n setBlockType(null);\n }\n return false;\n });\n });\n\n return () => {\n removeStatusListener();\n };\n }, [editor]);\n\n return (\n <div className={styles['editor__toolbar-button-group']}>\n {ListTypes.map((listType) => (\n <button\n onClick={() => formatList(listType as ListTypesType)}\n key={listType}\n title={t.format[`${listType}Tooltip` as keyof typeof t.format]}\n className={clsx(\n styles['editor__toolbar-button'],\n styles[`editor__toolbar-button--${listType}`],\n listType === 'bullet' && isUList && styles['editor__toolbar-button--active'],\n listType === 'number' && isOList && styles['editor__toolbar-button--active']\n )}\n aria-label={t.aria.labels[listType as keyof typeof t.aria.labels]}\n aria-keyshortcuts={t.aria.keyshortcuts[listType as keyof typeof t.aria.keyshortcuts]}\n type=\"button\"\n >\n <Icon name={LIST_TYPE_ICONS[listType as keyof typeof Icon]} size={24} />\n </button>\n ))}\n </div>\n );\n};\n"],"names":["LIST_TYPE_ICONS","ListTypes","ListPlugin","t","useTranslation","editor","useLexicalComposerContext","blockType","setBlockType","useState","isUList","setIsUList","isOList","setIsOList","formatList","listType","INSERT_ORDERED_LIST_COMMAND","INSERT_UNORDERED_LIST_COMMAND","REMOVE_LIST_COMMAND","useEffect","removeKeyboardShortcut","KEY_DOWN_COMMAND","event","COMMAND_PRIORITY_EDITOR","KEY_TAB_COMMAND","selection","$getSelection","$isRangeSelection","currentNode","parent","$isListItemNode","listParent","$isListNode","newList","$createListNode","COMMAND_PRIORITY_LOW","removeStatusListener","editorState","anchorNode","tag","parentNode","jsx","styles","clsx","Icon"],"mappings":";;;;;;;;;AA2BA,MAAMA,IAAkB;AAAA,EACtB,QAAQ;AAAA,EACR,QAAQ;AACV,GAEMC,IAAY,CAAC,UAAU,QAAQ,GAExBC,IAAa,MAAM;AAC9B,QAAMC,IAAIC,EAAA,GACJ,CAACC,CAAM,IAAIC,EAAA,GACX,CAACC,GAAWC,CAAY,IAAIC,EAAwB,IAAI,GACxD,CAACC,GAASC,CAAU,IAAIF,EAAkB,EAAK,GAC/C,CAACG,GAASC,CAAU,IAAIJ,EAAkB,EAAK,GAE/CK,IAAa,CAACC,MAAkC;AACpD,IAAIA,MAAa,YAAYR,MAAc,YACzCF,EAAO,gBAAgBW,GAA6B,MAAS,GAC7DR,EAAa,QAAQ,KACZO,MAAa,YAAYR,MAAc,YAChDF,EAAO,gBAAgBY,GAA+B,MAAS,GAC/DT,EAAa,QAAQ,MAErBH,EAAO,gBAAgBa,GAAqB,MAAS,GACrDV,EAAa,IAAI;AAAA,EAErB;AAEA,SAAAW,EAAU,MAAM;AACd,UAAMC,IAAyBf,EAAO;AAAA,MACpCgB;AAAAA,MACA,CAACC,MACKA,EAAM,WAAWA,EAAM,YAAYA,EAAM,SAAS,YACpDA,EAAM,eAAA,GACFV,IACFP,EAAO,gBAAgBa,GAAqB,MAAS,IAErDb,EAAO,gBAAgBW,GAA6B,MAAS,GAExD,MAELM,EAAM,WAAWA,EAAM,YAAYA,EAAM,SAAS,YACpDA,EAAM,eAAA,GACFZ,IACFL,EAAO,gBAAgBa,GAAqB,MAAS,IAErDb,EAAO,gBAAgBY,GAA+B,MAAS,GAE1D,MAEF;AAAA,MAETM;AAAAA,IAAA;AAGF,WAAO,MAAM;AACX,MAAAH,EAAA;AAAA,IACF;AAAA,EACF,GAAG,CAACf,GAAQO,GAASF,CAAO,CAAC,GAE7BS,EAAU,MAAM;AACd,IAAAd,EAAO;AAAA,MACLmB;AAAAA,MACA,CAACF,OACCA,EAAM,eAAA,GACNjB,EAAO,OAAO,MAAM;AAClB,cAAMoB,IAAYC,EAAA;AAClB,YAAI,CAACC,EAAkBF,CAAS;AAC9B;AAGF,cAAMG,IAAcH,EAAU,OAAO,QAAA,GAC/BI,IAASD,EAAY,UAAA;AAC3B,YAAI,CAACE,EAAgBD,CAAM;AACzB;AAGF,cAAME,IAAaF,EAAO,UAAA;AAC1B,YAAIG,EAAYD,CAAU,GAAG;AAC3B,gBAAME,IAAUC,EAAgBF,EAAYD,CAAU,IAAIA,EAAW,YAAA,IAAgB,QAAQ;AAC7F,UAAAF,EAAO,OAAOI,CAAO,GACrBA,EAAQ,OAAOL,CAAW;AAAA,QAC5B;AAAA,MACF,CAAC,GACM;AAAA,MAETO;AAAAA,IAAA;AAGF,UAAMC,IAAuB/B,EAAO,uBAAuB,CAAC,EAAE,aAAAgC,QAAkB;AAC9E,MAAAA,EAAY,KAAK,MAAM;AACrB,cAAMZ,IAAYC,EAAA;AAClB,YAAIC,EAAkBF,CAAS,GAAG;AAChC,cAAIa,IAAab,EAAU,OAAO,QAAA;AAClC,iBAAOa,MAAe,QAAM;AAC1B,gBAAIN,EAAYM,CAAU,GAAG;AAC3B,oBAAMC,IAAMD,EAAW,OAAA;AACvB,cAAA3B,EAAW4B,MAAQ,IAAI,GACvB1B,EAAW0B,MAAQ,IAAI,GACnBA,MAAQ,QACV/B,EAAa,QAAQ,GAEnB+B,MAAQ,QACV/B,EAAa,QAAQ;AAEvB;AAAA,YACF;AACA,kBAAMgC,IAAaF,EAAW,UAAA;AAC9B,gBAAIE,MAAe,KAAM;AACzB,YAAAF,IAAaE;AAAA,UACf;AACA,UAAA7B,EAAW,EAAK,GAChBE,EAAW,EAAK,GAChBL,EAAa,IAAI;AAAA,QACnB;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH,CAAC;AAED,WAAO,MAAM;AACX,MAAA4B,EAAA;AAAA,IACF;AAAA,EACF,GAAG,CAAC/B,CAAM,CAAC,GAGT,gBAAAoC,EAAC,SAAI,WAAWC,EAAO,8BAA8B,GAClD,UAAAzC,EAAU,IAAI,CAACc,MACd,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,MAAM3B,EAAWC,CAAyB;AAAA,MAEnD,OAAOZ,EAAE,OAAO,GAAGY,CAAQ,SAAkC;AAAA,MAC7D,WAAW4B;AAAA,QACTD,EAAO,wBAAwB;AAAA,QAC/BA,EAAO,2BAA2B3B,CAAQ,EAAE;AAAA,QAC5CA,MAAa,YAAYL,KAAWgC,EAAO,gCAAgC;AAAA,QAC3E3B,MAAa,YAAYH,KAAW8B,EAAO,gCAAgC;AAAA,MAAA;AAAA,MAE7E,cAAYvC,EAAE,KAAK,OAAOY,CAAsC;AAAA,MAChE,qBAAmBZ,EAAE,KAAK,aAAaY,CAA4C;AAAA,MACnF,MAAK;AAAA,MAEL,4BAAC6B,GAAA,EAAK,MAAM5C,EAAgBe,CAA6B,GAAG,MAAM,GAAA,CAAI;AAAA,IAAA;AAAA,IAZjEA;AAAA,EAAA,CAcR,GACH;AAEJ;"}
1
+ {"version":3,"file":"ListPlugin.js","sources":["../../../../../src/components/RteEditor/Plugins/ListPlugin/ListPlugin.tsx"],"sourcesContent":["import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport {\n $createListNode,\n $isListItemNode,\n $isListNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n ListNode,\n REMOVE_LIST_COMMAND,\n} from '@lexical/list';\nimport { useEffect, useState } from 'react';\nimport { clsx } from 'clsx';\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n COMMAND_PRIORITY_LOW,\n KEY_DOWN_COMMAND,\n KEY_TAB_COMMAND,\n} from 'lexical';\nimport { $getNearestNodeOfType } from '@lexical/utils';\n\nimport type { RangeSelection } from 'lexical';\n\nimport { Icon } from 'components/Icon';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\ntype ListTypesType = 'bullet' | 'number' | null;\nconst LIST_TYPE_ICONS = {\n bullet: 'BulletList',\n number: 'NumberedList',\n};\n\nconst ListTypes = ['bullet', 'number'];\n\nexport const ListPlugin = () => {\n const t = useTranslation();\n const [editor] = useLexicalComposerContext();\n const [blockType, setBlockType] = useState<ListTypesType>(null);\n const [isUList, setIsUList] = useState<boolean>(false);\n const [isOList, setIsOList] = useState<boolean>(false);\n\n const formatList = (listType: ListTypesType): void => {\n if (listType === 'number' && blockType !== 'number') {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n setBlockType('number');\n } else if (listType === 'bullet' && blockType !== 'bullet') {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n setBlockType('bullet');\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n setBlockType(null);\n }\n };\n\n useEffect(() => {\n const removeKeyboardShortcut = editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit7') {\n event.preventDefault();\n if (isOList) {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n }\n return true;\n }\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit8') {\n event.preventDefault();\n if (isUList) {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n }\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_EDITOR\n );\n\n return () => {\n removeKeyboardShortcut();\n };\n }, [editor, isOList, isUList]);\n\n useEffect(() => {\n const removeTabCommand = editor.registerCommand(\n KEY_TAB_COMMAND,\n (event) => {\n event.preventDefault();\n editor.update(() => {\n const selection = $getSelection() as RangeSelection;\n if (!$isRangeSelection(selection)) {\n return;\n }\n\n const currentNode = selection.anchor.getNode();\n const parent = currentNode.getParent();\n if (!$isListItemNode(parent)) {\n return;\n }\n\n const listParent = parent.getParent();\n if ($isListNode(listParent)) {\n const newList = $createListNode($isListNode(listParent) ? listParent.getListType() : 'bullet');\n parent.append(newList);\n newList.append(currentNode);\n }\n });\n return true;\n },\n COMMAND_PRIORITY_LOW\n );\n\n const removeStatusListener = editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n const listNode = $getNearestNodeOfType(anchorNode, ListNode);\n if (listNode) {\n const tag = listNode.getTag();\n setIsUList(tag === 'ul');\n setIsOList(tag === 'ol');\n if (tag === 'ul') {\n setBlockType('bullet');\n }\n if (tag === 'ol') {\n setBlockType('number');\n }\n return;\n }\n setIsUList(false);\n setIsOList(false);\n setBlockType(null);\n }\n return false;\n });\n });\n\n return () => {\n removeStatusListener();\n removeTabCommand();\n };\n }, [editor]);\n\n return (\n <div className={styles['editor__toolbar-button-group']}>\n {ListTypes.map((listType) => (\n <button\n onClick={() => formatList(listType as ListTypesType)}\n key={listType}\n title={t.format[`${listType}Tooltip` as keyof typeof t.format]}\n className={clsx(\n styles['editor__toolbar-button'],\n styles[`editor__toolbar-button--${listType}`],\n listType === 'bullet' && isUList && styles['editor__toolbar-button--active'],\n listType === 'number' && isOList && styles['editor__toolbar-button--active']\n )}\n aria-label={t.aria.labels[listType as keyof typeof t.aria.labels]}\n aria-keyshortcuts={t.aria.keyshortcuts[listType as keyof typeof t.aria.keyshortcuts]}\n type=\"button\"\n >\n <Icon name={LIST_TYPE_ICONS[listType as keyof typeof Icon]} size={24} />\n </button>\n ))}\n </div>\n );\n};\n"],"names":["LIST_TYPE_ICONS","ListTypes","ListPlugin","t","useTranslation","editor","useLexicalComposerContext","blockType","setBlockType","useState","isUList","setIsUList","isOList","setIsOList","formatList","listType","INSERT_ORDERED_LIST_COMMAND","INSERT_UNORDERED_LIST_COMMAND","REMOVE_LIST_COMMAND","useEffect","removeKeyboardShortcut","KEY_DOWN_COMMAND","event","COMMAND_PRIORITY_EDITOR","removeTabCommand","KEY_TAB_COMMAND","selection","$getSelection","$isRangeSelection","currentNode","parent","$isListItemNode","listParent","$isListNode","newList","$createListNode","COMMAND_PRIORITY_LOW","removeStatusListener","editorState","anchorNode","listNode","$getNearestNodeOfType","ListNode","tag","jsx","styles","clsx","Icon"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { o as m } from "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
2
2
  import { useEffect as c } from "react";
3
- import { ad as f, ae as p, b as d } from "../../../../Lexical.prod-sd_e2sqT.js";
4
- import { L as i } from "../../../../LexicalUtils.prod-CjKjgnmx.js";
5
- import { R as u } from "../../../../LexicalClipboard.prod-Co2PF1UJ.js";
3
+ import { ad as f, ae as p, b as d } from "../../../../Lexical.prod-DH2XfwvA.js";
4
+ import { L as i } from "../../../../LexicalUtils.prod-DU4QwthB.js";
5
+ import { R as u } from "../../../../LexicalClipboard.prod-DTuNvXAS.js";
6
6
  import { d as D } from "../../../../index-yEhaxKq-.js";
7
7
  const L = () => {
8
8
  const [e] = m(), l = (t) => {
@@ -1,10 +1,10 @@
1
1
  import "react/jsx-runtime";
2
2
  import "react";
3
3
  import "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
4
- import { T as b } from "../../../../TableCellResizerPlugin-DATbSzfg.js";
5
- import "../../../../LexicalTable.prod-Oa2YPHLl.js";
6
- import "../../../../LexicalUtils.prod-CjKjgnmx.js";
7
- import "../../../../Lexical.prod-sd_e2sqT.js";
4
+ import { T as b } from "../../../../TableCellResizerPlugin-DRwI83s2.js";
5
+ import "../../../../LexicalTable.prod-RGq0GKAR.js";
6
+ import "../../../../LexicalUtils.prod-DU4QwthB.js";
7
+ import "../../../../Lexical.prod-DH2XfwvA.js";
8
8
  import "react-dom";
9
9
  import "../TablePlugin/helpers.js";
10
10
  import "../../nodes/TableWrapperNode/TableWrapperNode.js";
@@ -1,4 +1,4 @@
1
- import { T as r } from "../../../../TableCellResizerPlugin-DATbSzfg.js";
1
+ import { T as r } from "../../../../TableCellResizerPlugin-DRwI83s2.js";
2
2
  export {
3
3
  r as TableCellResizerPlugin
4
4
  };
@@ -1,6 +1,6 @@
1
1
  import "react/jsx-runtime";
2
2
  import "react";
3
- import { b as G } from "../../../../TablePlugin-CqCjNBW_.js";
3
+ import { b as G } from "../../../../TablePlugin-DmE96vN7.js";
4
4
  import "../../../Accordion/Accordion.js";
5
5
  import "../../../Buttons/Button.js";
6
6
  import "../../../Buttons/LinkButton.js";
@@ -19,11 +19,11 @@ import "../../../InputField/InputField.js";
19
19
  import "react-router";
20
20
  import "../../helpers.js";
21
21
  import "../../hooks/useTranslation.js";
22
+ import "../../Providers/LanguageProvider.js";
22
23
  import "../LinkPlugin/LinkContextMenu/LinkContextMenu.js";
23
24
  import "../../hooks/components/Flyout.js";
24
25
  import "react-dom";
25
26
  import "../../../../index-yEhaxKq-.js";
26
- import "../../Providers/LanguageProvider.js";
27
27
  import "../../../SearchField/SearchField.js";
28
28
  import "../../../SelectListbox/SelectListbox.js";
29
29
  import "../../../SelectListbox/SelectProvider.js";
@@ -1,11 +1,11 @@
1
1
  import "react/jsx-runtime";
2
2
  import "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
3
3
  import "../../../../clsx-OuTLNxxd.js";
4
- import "../../../../LexicalTable.prod-Oa2YPHLl.js";
5
- import "../../../../Lexical.prod-sd_e2sqT.js";
6
- import "../../../../LexicalUtils.prod-CjKjgnmx.js";
4
+ import "../../../../LexicalTable.prod-RGq0GKAR.js";
5
+ import "../../../../Lexical.prod-DH2XfwvA.js";
6
+ import "../../../../LexicalUtils.prod-DU4QwthB.js";
7
7
  import "react";
8
- import { T as L } from "../../../../TablePlugin-CqCjNBW_.js";
8
+ import { T as L } from "../../../../TablePlugin-DmE96vN7.js";
9
9
  import "./helpers.js";
10
10
  import "../../nodes/TableWrapperNode/TableWrapperNode.js";
11
11
  import "../../hooks/useFlyout.js";
@@ -24,12 +24,12 @@ import "../../../IconButton/IconButton.js";
24
24
  import "../../../Input/Input.js";
25
25
  import "../../../InputField/InputField.js";
26
26
  import "react-router";
27
- import "../../../../RteEditor.module-CUi7Vqe8.js";
27
+ import "../../../../RteEditor.module-DaBh86FK.js";
28
28
  import "../../hooks/useTranslation.js";
29
+ import "../../Providers/LanguageProvider.js";
29
30
  import "../LinkPlugin/LinkContextMenu/LinkContextMenu.js";
30
31
  import "react-dom";
31
32
  import "../../../../index-yEhaxKq-.js";
32
- import "../../Providers/LanguageProvider.js";
33
33
  import "../../../SearchField/SearchField.js";
34
34
  import "../../../SelectListbox/SelectListbox.js";
35
35
  import "../../../SelectListbox/SelectProvider.js";
@@ -1,7 +1,8 @@
1
- import { Q as T, O as i, D as w, l as p, U as u, I as b, Z as E, P as D, M as g, j as I, L as R, F as x } from "../../../../LexicalTable.prod-Oa2YPHLl.js";
2
- import { L } from "../../../../Lexical.prod-sd_e2sqT.js";
1
+ import { Q as p, O as i, D as w, l as T, U as u, I as b, Z as E, P as D, M as g, j as I, L as R, F as x } from "../../../../LexicalTable.prod-RGq0GKAR.js";
2
+ import { L } from "../../../../Lexical.prod-DH2XfwvA.js";
3
3
  import { TableWrapperNode as S } from "../../nodes/TableWrapperNode/TableWrapperNode.js";
4
- const y = 32, a = 48, N = 1, P = 200, v = 320, M = (t, e) => {
4
+ import "react";
5
+ const P = 32, a = 48, N = 1, v = 200, M = 320, H = (t, e) => {
5
6
  const n = R(0, 0, !1);
6
7
  for (let o = 0; o < t; o++) {
7
8
  const r = g();
@@ -12,26 +13,26 @@ const y = 32, a = 48, N = 1, P = 200, v = 320, M = (t, e) => {
12
13
  n.append(r);
13
14
  }
14
15
  return n;
15
- }, H = (t) => {
16
+ }, U = (t) => {
16
17
  const e = D(t), n = e.getNextSibling() || e.getPreviousSibling(), o = e.getParentOrThrow();
17
18
  if (o.getChildrenSize() > 1 ? e.remove() : o.remove(), n !== null) {
18
19
  const r = n.getFirstDescendant();
19
20
  r && r.select();
20
21
  }
21
22
  }, W = (t) => {
22
- const e = T(t);
23
+ const e = p(t);
23
24
  if (!e)
24
25
  throw new Error("Selected node is not a TableCellNode");
25
26
  const n = e.getParent();
26
27
  n instanceof S ? n.remove() : e.remove();
27
- }, U = (t, e) => {
28
+ }, B = (t, e) => {
28
29
  if (!i(t))
29
30
  throw new Error("Selected node is not a TableCellNode");
30
31
  const n = g();
31
32
  I(e === "insertRowBelow");
32
33
  const o = n.getFirstDescendant();
33
34
  o && o.select();
34
- }, B = (t, e) => {
35
+ }, A = (t, e) => {
35
36
  if (!i(t))
36
37
  throw new Error("Selected node is not a TableCellNode");
37
38
  const n = w(t);
@@ -48,22 +49,22 @@ const y = 32, a = 48, N = 1, P = 200, v = 320, M = (t, e) => {
48
49
  n.setColWidths(C), o = e === "insertColumnLeft" ? o : o + 1;
49
50
  const f = r[s].getChildren()[o];
50
51
  f && f.select();
51
- }, A = (t) => {
52
+ }, j = (t) => {
52
53
  if (!i(t))
53
54
  throw new Error("Selected node is not a TableCellNode");
54
- (w(t).getFirstChild()?.getChildrenSize() || 0) === 1 ? W(t) : p();
55
- }, j = (t) => {
55
+ (w(t).getFirstChild()?.getChildrenSize() || 0) === 1 ? W(t) : T();
56
+ }, z = (t) => {
56
57
  const e = t.getRootElement();
57
58
  if (!e || typeof window > "u") return 0;
58
59
  const n = e.getBoundingClientRect(), o = window.getComputedStyle(e), r = parseFloat(o.paddingLeft || "0") + parseFloat(o.paddingRight || "0") + a;
59
60
  return Math.max(0, n.width - r);
60
- }, z = (t, e, n) => {
61
+ }, K = (t, e, n) => {
61
62
  if (!t) return 0;
62
63
  const o = n.getElementByKey(t.getKey());
63
64
  if (!o) return 0;
64
65
  const r = window.getComputedStyle(o);
65
66
  return parseInt(r.width) - e * N - 1;
66
- }, K = (t) => {
67
+ }, Q = (t) => {
67
68
  const e = t.getChildren();
68
69
  for (const n of e) {
69
70
  const o = n.getChildren();
@@ -76,17 +77,17 @@ const y = 32, a = 48, N = 1, P = 200, v = 320, M = (t, e) => {
76
77
  export {
77
78
  N as BORDER_WIDTHS,
78
79
  a as DEFAULT_COL_WIDTH,
79
- v as DEFAULT_EDITOR_WIDTH,
80
- y as MIN_COLUMN_WIDTH,
81
- P as PREVENT_OPEN_DELAY,
82
- M as createTable,
83
- A as deleteColumn,
84
- H as deleteRow,
80
+ M as DEFAULT_EDITOR_WIDTH,
81
+ P as MIN_COLUMN_WIDTH,
82
+ v as PREVENT_OPEN_DELAY,
83
+ H as createTable,
84
+ j as deleteColumn,
85
+ U as deleteRow,
85
86
  W as deleteTable,
86
- j as getEditorContentWidth,
87
- z as getEditorParrentCellWidth,
88
- B as insertColumn,
89
- U as insertRow,
90
- K as tableHasContent
87
+ z as getEditorContentWidth,
88
+ K as getEditorParrentCellWidth,
89
+ A as insertColumn,
90
+ B as insertRow,
91
+ Q as tableHasContent
91
92
  };
92
93
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../src/components/RteEditor/Plugins/TablePlugin/helpers.ts"],"sourcesContent":["import {\n $createTableNodeWithDimensions,\n $createTableRowNode,\n $createTableCellNode,\n $deleteTableColumnAtSelection,\n $isTableCellNode,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowNodeFromTableCellNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $getTableColumnIndexFromTableCellNode,\n $insertTableColumnAtSelection,\n $insertTableRowAtSelection,\n $findTableNode,\n} from '@lexical/table';\nimport { $createParagraphNode } from 'lexical';\n\nimport type { TableCellNode, TableNode, TableRowNode } from '@lexical/table';\nimport type { TextNode, ElementNode, LexicalEditor } from 'lexical';\n\nimport { TableWrapperNode } from 'components/RteEditor/nodes';\n\nexport const MIN_COLUMN_WIDTH = 32;\nexport const DEFAULT_COL_WIDTH = 48;\nexport const BORDER_WIDTHS = 1;\nexport const PREVENT_OPEN_DELAY = 200;\nexport const DEFAULT_EDITOR_WIDTH = 320;\n\nexport const createTable = (nrOfRows: number, nrOfColumns: number): ElementNode => {\n const tableNode = $createTableNodeWithDimensions(0, 0, false);\n for (let rowIndex = 0; rowIndex < nrOfRows; rowIndex++) {\n const rowNode = $createTableRowNode();\n for (let colIndex = 0; colIndex < nrOfColumns; colIndex++) {\n const cellNode = $createTableCellNode(0, undefined, undefined);\n cellNode.append($createParagraphNode());\n rowNode.append(cellNode);\n }\n tableNode.append(rowNode);\n }\n return tableNode;\n};\n\nexport const deleteRow = (selectedNode: ElementNode) => {\n const currentRow = $getTableRowNodeFromTableCellNodeOrThrow(selectedNode);\n const nextRow = currentRow.getNextSibling() || currentRow.getPreviousSibling();\n const currentTable = currentRow.getParentOrThrow();\n currentTable.getChildrenSize() > 1 ? currentRow.remove() : currentTable.remove();\n\n if (nextRow !== null) {\n const firstDescendant = (nextRow as ElementNode).getFirstDescendant();\n if (firstDescendant) {\n (firstDescendant as TextNode).select();\n }\n }\n};\n\nexport const deleteTable = (selectedNode: ElementNode) => {\n const tableNode = $findTableNode(selectedNode);\n if (!tableNode) {\n throw new Error('Selected node is not a TableCellNode');\n }\n\n const wrapperNode = tableNode.getParent();\n if (wrapperNode instanceof TableWrapperNode) {\n wrapperNode.remove();\n } else {\n tableNode.remove();\n }\n};\n\nexport const insertRow = (selectedNode: ElementNode, position: 'insertRowAbove' | 'insertRowBelow') => {\n if (!$isTableCellNode(selectedNode)) {\n throw new Error('Selected node is not a TableCellNode');\n }\n const newRow = $createTableRowNode();\n\n $insertTableRowAtSelection(position === 'insertRowBelow');\n\n const firstDescendant = newRow.getFirstDescendant();\n if (firstDescendant) {\n (firstDescendant as TextNode).select();\n }\n};\n\nexport const insertColumn = (selectedNode: ElementNode, position: 'insertColumnLeft' | 'insertColumnRight') => {\n if (!$isTableCellNode(selectedNode)) {\n throw new Error('Selected node is not a TableCellNode');\n }\n const currentTable = $getTableNodeFromLexicalNodeOrThrow(selectedNode);\n let columnIndex = $getTableColumnIndexFromTableCellNode(selectedNode);\n const rowsInTable: TableCellNode[] = currentTable.getChildren();\n const rowIndex = $getTableRowIndexFromTableCellNode(selectedNode);\n const insertedCellNode = $insertTableColumnAtSelection(position === 'insertColumnLeft');\n\n if (!insertedCellNode) return;\n const insertedColumnIndex = $getTableColumnIndexFromTableCellNode(insertedCellNode);\n\n if (insertedColumnIndex === -1) return;\n const colWidths = currentTable.getColWidths();\n\n if (!colWidths) return;\n const newColWidths = colWidths.map((width, index) =>\n index === insertedColumnIndex ? DEFAULT_COL_WIDTH : width - Math.ceil(DEFAULT_COL_WIDTH / (colWidths.length - 1))\n );\n\n currentTable.setColWidths(newColWidths);\n\n columnIndex = position === 'insertColumnLeft' ? columnIndex : columnIndex + 1;\n const firstDescendant = rowsInTable[rowIndex].getChildren()[columnIndex];\n if (firstDescendant) {\n (firstDescendant as TextNode).select();\n }\n};\n\nexport const deleteColumn = (selectedNode: ElementNode) => {\n if (!$isTableCellNode(selectedNode)) {\n throw new Error('Selected node is not a TableCellNode');\n }\n const currentTable = $getTableNodeFromLexicalNodeOrThrow(selectedNode);\n const numberOfColumns = (currentTable.getFirstChild() as ElementNode)?.getChildrenSize() || 0;\n\n if (numberOfColumns === 1) {\n deleteTable(selectedNode);\n } else {\n $deleteTableColumnAtSelection();\n }\n};\n\nexport const getEditorContentWidth = (editor: LexicalEditor): number => {\n const rootEl = editor.getRootElement();\n if (!rootEl || typeof window === 'undefined') return 0;\n const rect = rootEl.getBoundingClientRect();\n const styles = window.getComputedStyle(rootEl);\n const insertX = parseFloat(styles.paddingLeft || '0') + parseFloat(styles.paddingRight || '0') + DEFAULT_COL_WIDTH;\n return Math.max(0, rect.width - insertX);\n};\n\nexport const getEditorParrentCellWidth = (\n node: TableCellNode | null,\n nrOfColumns: number,\n editor: LexicalEditor\n): number => {\n if (!node) return 0;\n\n const cell = editor.getElementByKey(node.getKey());\n if (!cell) return 0;\n\n const computedStyles = window.getComputedStyle(cell);\n return parseInt(computedStyles.width) - nrOfColumns * BORDER_WIDTHS - 1;\n};\n\nexport const tableHasContent = (tableNode: TableNode): boolean => {\n const rows = tableNode.getChildren();\n for (const row of rows) {\n const cells = (row as TableRowNode).getChildren();\n for (const cell of cells) {\n if ($isTableCellNode(cell)) {\n const cellText = cell.getTextContent().trim();\n if (cellText.length > 0) {\n return true;\n }\n }\n }\n }\n return false;\n};\n"],"names":["MIN_COLUMN_WIDTH","DEFAULT_COL_WIDTH","BORDER_WIDTHS","PREVENT_OPEN_DELAY","DEFAULT_EDITOR_WIDTH","createTable","nrOfRows","nrOfColumns","tableNode","$createTableNodeWithDimensions","rowIndex","rowNode","$createTableRowNode","colIndex","cellNode","$createTableCellNode","$createParagraphNode","deleteRow","selectedNode","currentRow","$getTableRowNodeFromTableCellNodeOrThrow","nextRow","currentTable","firstDescendant","deleteTable","$findTableNode","wrapperNode","TableWrapperNode","insertRow","position","$isTableCellNode","newRow","$insertTableRowAtSelection","insertColumn","$getTableNodeFromLexicalNodeOrThrow","columnIndex","$getTableColumnIndexFromTableCellNode","rowsInTable","$getTableRowIndexFromTableCellNode","insertedCellNode","$insertTableColumnAtSelection","insertedColumnIndex","colWidths","newColWidths","width","index","deleteColumn","$deleteTableColumnAtSelection","getEditorContentWidth","editor","rootEl","rect","styles","insertX","getEditorParrentCellWidth","node","cell","computedStyles","tableHasContent","rows","row","cells"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../src/components/RteEditor/Plugins/TablePlugin/helpers.ts"],"sourcesContent":["import {\n $createTableNodeWithDimensions,\n $createTableRowNode,\n $createTableCellNode,\n $deleteTableColumnAtSelection,\n $isTableCellNode,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowNodeFromTableCellNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $getTableColumnIndexFromTableCellNode,\n $insertTableColumnAtSelection,\n $insertTableRowAtSelection,\n $findTableNode,\n} from '@lexical/table';\nimport { $createParagraphNode } from 'lexical';\n\nimport type { TableCellNode, TableNode, TableRowNode } from '@lexical/table';\nimport type { TextNode, ElementNode, LexicalEditor } from 'lexical';\n\nimport { TableWrapperNode } from 'components/RteEditor/nodes';\n\nexport const MIN_COLUMN_WIDTH = 32;\nexport const DEFAULT_COL_WIDTH = 48;\nexport const BORDER_WIDTHS = 1;\nexport const PREVENT_OPEN_DELAY = 200;\nexport const DEFAULT_EDITOR_WIDTH = 320;\n\nexport const createTable = (nrOfRows: number, nrOfColumns: number): ElementNode => {\n const tableNode = $createTableNodeWithDimensions(0, 0, false);\n for (let rowIndex = 0; rowIndex < nrOfRows; rowIndex++) {\n const rowNode = $createTableRowNode();\n for (let colIndex = 0; colIndex < nrOfColumns; colIndex++) {\n const cellNode = $createTableCellNode(0, undefined, undefined);\n cellNode.append($createParagraphNode());\n rowNode.append(cellNode);\n }\n tableNode.append(rowNode);\n }\n return tableNode;\n};\n\nexport const deleteRow = (selectedNode: ElementNode) => {\n const currentRow = $getTableRowNodeFromTableCellNodeOrThrow(selectedNode);\n const nextRow = currentRow.getNextSibling() || currentRow.getPreviousSibling();\n const currentTable = currentRow.getParentOrThrow();\n currentTable.getChildrenSize() > 1 ? currentRow.remove() : currentTable.remove();\n\n if (nextRow !== null) {\n const firstDescendant = (nextRow as ElementNode).getFirstDescendant();\n if (firstDescendant) {\n (firstDescendant as TextNode).select();\n }\n }\n};\n\nexport const deleteTable = (selectedNode: ElementNode) => {\n const tableNode = $findTableNode(selectedNode);\n if (!tableNode) {\n throw new Error('Selected node is not a TableCellNode');\n }\n\n const wrapperNode = tableNode.getParent();\n if (wrapperNode instanceof TableWrapperNode) {\n wrapperNode.remove();\n } else {\n tableNode.remove();\n }\n};\n\nexport const insertRow = (selectedNode: ElementNode, position: 'insertRowAbove' | 'insertRowBelow') => {\n if (!$isTableCellNode(selectedNode)) {\n throw new Error('Selected node is not a TableCellNode');\n }\n const newRow = $createTableRowNode();\n\n $insertTableRowAtSelection(position === 'insertRowBelow');\n\n const firstDescendant = newRow.getFirstDescendant();\n if (firstDescendant) {\n (firstDescendant as TextNode).select();\n }\n};\n\nexport const insertColumn = (selectedNode: ElementNode, position: 'insertColumnLeft' | 'insertColumnRight') => {\n if (!$isTableCellNode(selectedNode)) {\n throw new Error('Selected node is not a TableCellNode');\n }\n const currentTable = $getTableNodeFromLexicalNodeOrThrow(selectedNode);\n let columnIndex = $getTableColumnIndexFromTableCellNode(selectedNode);\n const rowsInTable: TableCellNode[] = currentTable.getChildren();\n const rowIndex = $getTableRowIndexFromTableCellNode(selectedNode);\n const insertedCellNode = $insertTableColumnAtSelection(position === 'insertColumnLeft');\n\n if (!insertedCellNode) return;\n const insertedColumnIndex = $getTableColumnIndexFromTableCellNode(insertedCellNode);\n\n if (insertedColumnIndex === -1) return;\n const colWidths = currentTable.getColWidths();\n\n if (!colWidths) return;\n const newColWidths = colWidths.map((width, index) =>\n index === insertedColumnIndex ? DEFAULT_COL_WIDTH : width - Math.ceil(DEFAULT_COL_WIDTH / (colWidths.length - 1))\n );\n\n currentTable.setColWidths(newColWidths);\n\n columnIndex = position === 'insertColumnLeft' ? columnIndex : columnIndex + 1;\n const firstDescendant = rowsInTable[rowIndex].getChildren()[columnIndex];\n if (firstDescendant) {\n (firstDescendant as TextNode).select();\n }\n};\n\nexport const deleteColumn = (selectedNode: ElementNode) => {\n if (!$isTableCellNode(selectedNode)) {\n throw new Error('Selected node is not a TableCellNode');\n }\n const currentTable = $getTableNodeFromLexicalNodeOrThrow(selectedNode);\n const numberOfColumns = (currentTable.getFirstChild() as ElementNode)?.getChildrenSize() || 0;\n\n if (numberOfColumns === 1) {\n deleteTable(selectedNode);\n } else {\n $deleteTableColumnAtSelection();\n }\n};\n\nexport const getEditorContentWidth = (editor: LexicalEditor): number => {\n const rootEl = editor.getRootElement();\n if (!rootEl || typeof window === 'undefined') return 0;\n const rect = rootEl.getBoundingClientRect();\n const styles = window.getComputedStyle(rootEl);\n const insertX = parseFloat(styles.paddingLeft || '0') + parseFloat(styles.paddingRight || '0') + DEFAULT_COL_WIDTH;\n return Math.max(0, rect.width - insertX);\n};\n\nexport const getEditorParrentCellWidth = (\n node: TableCellNode | null,\n nrOfColumns: number,\n editor: LexicalEditor\n): number => {\n if (!node) return 0;\n\n const cell = editor.getElementByKey(node.getKey());\n if (!cell) return 0;\n\n const computedStyles = window.getComputedStyle(cell);\n return parseInt(computedStyles.width) - nrOfColumns * BORDER_WIDTHS - 1;\n};\n\nexport const tableHasContent = (tableNode: TableNode): boolean => {\n const rows = tableNode.getChildren();\n for (const row of rows) {\n const cells = (row as TableRowNode).getChildren();\n for (const cell of cells) {\n if ($isTableCellNode(cell)) {\n const cellText = cell.getTextContent().trim();\n if (cellText.length > 0) {\n return true;\n }\n }\n }\n }\n return false;\n};\n"],"names":["MIN_COLUMN_WIDTH","DEFAULT_COL_WIDTH","BORDER_WIDTHS","PREVENT_OPEN_DELAY","DEFAULT_EDITOR_WIDTH","createTable","nrOfRows","nrOfColumns","tableNode","$createTableNodeWithDimensions","rowIndex","rowNode","$createTableRowNode","colIndex","cellNode","$createTableCellNode","$createParagraphNode","deleteRow","selectedNode","currentRow","$getTableRowNodeFromTableCellNodeOrThrow","nextRow","currentTable","firstDescendant","deleteTable","$findTableNode","wrapperNode","TableWrapperNode","insertRow","position","$isTableCellNode","newRow","$insertTableRowAtSelection","insertColumn","$getTableNodeFromLexicalNodeOrThrow","columnIndex","$getTableColumnIndexFromTableCellNode","rowsInTable","$getTableRowIndexFromTableCellNode","insertedCellNode","$insertTableColumnAtSelection","insertedColumnIndex","colWidths","newColWidths","width","index","deleteColumn","$deleteTableColumnAtSelection","getEditorContentWidth","editor","rootEl","rect","styles","insertX","getEditorParrentCellWidth","node","cell","computedStyles","tableHasContent","rows","row","cells"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { T as o } from "../../../../TablePlugin-CqCjNBW_.js";
1
+ import { T as o } from "../../../../TablePlugin-DmE96vN7.js";
2
2
  import { TableCellContextMenu as t } from "./TableCellContextMenu/TableCellContextMenu.js";
3
3
  export {
4
4
  t as TableCellContextMenu,
@@ -1,4 +1,5 @@
1
1
  import { JSX } from 'react';
2
+ import { SearchResponse } from 'components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm';
2
3
  export type Position = {
3
4
  xPos: number;
4
5
  yPos: number;
@@ -6,6 +7,8 @@ export type Position = {
6
7
  };
7
8
  interface ToolBarProps {
8
9
  editorScrollPosition: number;
10
+ onCatalogueLinkSearch?: (query: string, linkType: 'course' | 'programme') => void;
11
+ catalogueSearchResponse?: SearchResponse;
9
12
  }
10
- export declare const ToolBarPlugin: ({ editorScrollPosition }: ToolBarProps) => JSX.Element;
13
+ export declare const ToolBarPlugin: ({ editorScrollPosition, onCatalogueLinkSearch, catalogueSearchResponse, }: ToolBarProps) => JSX.Element;
11
14
  export {};
@@ -1,72 +1,85 @@
1
- import { jsxs as y, jsx as n } from "react/jsx-runtime";
1
+ import { jsxs as C, jsx as t } from "react/jsx-runtime";
2
2
  import { o as L } from "../../../../LexicalComposerContext.prod-DOyoZx0P.js";
3
- import { b as f, y as h, a0 as P } from "../../../../Lexical.prod-sd_e2sqT.js";
4
- import { useState as C, useRef as E, useCallback as B, useEffect as c } from "react";
5
- import { B as g } from "../../../../LexicalTable.prod-Oa2YPHLl.js";
6
- import { BlockFormatPlugin as T } from "../BlockFormatPlugin/BlockFormatPlugin.js";
7
- import { ListPlugin as N } from "../ListPlugin/ListPlugin.js";
8
- import { LinkPlugin as k } from "../LinkPlugin/LinkPlugin.js";
9
- import { HistoryPlugin as x } from "../HistoryPlugin/HistoryPlugin.js";
10
- import { T as S } from "../../../../TablePlugin-CqCjNBW_.js";
11
- import { TableCellContextMenu as z } from "../TablePlugin/TableCellContextMenu/TableCellContextMenu.js";
3
+ import { b as g, y as b, a0 as E } from "../../../../Lexical.prod-DH2XfwvA.js";
4
+ import { useState as B, useRef as T, useCallback as N, useEffect as m } from "react";
5
+ import { B as w } from "../../../../LexicalTable.prod-RGq0GKAR.js";
6
+ import { CourseCataloguePlugin as x } from "../CourseCataloguePlugin/CourseCataloguePlugin.js";
7
+ import { BlockFormatPlugin as k } from "../BlockFormatPlugin/BlockFormatPlugin.js";
8
+ import { ListPlugin as S } from "../ListPlugin/ListPlugin.js";
9
+ import { LinkPlugin as z } from "../LinkPlugin/LinkPlugin.js";
10
+ import { HistoryPlugin as A } from "../HistoryPlugin/HistoryPlugin.js";
11
+ import { T as K } from "../../../../TablePlugin-DmE96vN7.js";
12
+ import { TableCellContextMenu as R } from "../TablePlugin/TableCellContextMenu/TableCellContextMenu.js";
12
13
  import "react-dom";
13
14
  import "../../../../index-yEhaxKq-.js";
14
- import { s as A } from "../../../../RteEditor.module-CUi7Vqe8.js";
15
- import { setScrollableContainers as b, removeScrollableContainers as K } from "../../helpers.js";
16
- const W = ({ editorScrollPosition: m }) => {
17
- const [t] = L(), [r, i] = C(null), d = E(null), u = B(() => {
18
- const e = f();
19
- if (h(e)) {
20
- const s = e.anchor.getNode(), l = g(s);
21
- if (l) {
22
- const p = t.getElementByKey(l.getKey()), a = p ? p.getBoundingClientRect() : { right: 0, bottom: 0, height: 0 };
23
- i({ xPos: a.right, yPos: a.bottom, height: a.height });
15
+ import { s as j } from "../../../../RteEditor.module-DaBh86FK.js";
16
+ import { setScrollableContainers as v, removeScrollableContainers as _ } from "../../helpers.js";
17
+ const $ = ({
18
+ editorScrollPosition: r,
19
+ onCatalogueLinkSearch: d,
20
+ catalogueSearchResponse: u
21
+ }) => {
22
+ const [n] = L(), [i, s] = B(null), p = T(null), f = N(() => {
23
+ const o = g();
24
+ if (b(o)) {
25
+ const l = o.anchor.getNode(), a = w(l);
26
+ if (a) {
27
+ const h = n.getElementByKey(a.getKey()), c = h ? h.getBoundingClientRect() : { right: 0, bottom: 0, height: 0 };
28
+ s({ xPos: c.right, yPos: c.bottom, height: c.height });
24
29
  } else
25
- i(null);
30
+ s(null);
26
31
  }
27
- }, [t]), w = (e) => {
28
- d.current?.mutateTable(e);
29
- }, o = () => {
30
- t.update(() => {
31
- const e = f();
32
- if (h(e)) {
33
- const s = e.anchor.getNode();
34
- g(s) && (P(null), i(null));
32
+ }, [n]), y = (o) => {
33
+ p.current?.mutateTable(o);
34
+ }, e = () => {
35
+ n.update(() => {
36
+ const o = g();
37
+ if (b(o)) {
38
+ const l = o.anchor.getNode();
39
+ w(l) && (E(null), s(null));
35
40
  }
36
41
  });
37
42
  };
38
- return c(() => {
39
- t.registerUpdateListener(({ editorState: e }) => {
40
- e.read(() => {
41
- u();
43
+ return m(() => {
44
+ n.registerUpdateListener(({ editorState: o }) => {
45
+ o.read(() => {
46
+ f();
42
47
  });
43
48
  });
44
- }, [t, u]), c(() => (b(o), window.addEventListener("scroll", o), window.addEventListener("resize", o), () => {
45
- window.removeEventListener("scroll", o), window.removeEventListener("resize", o), K(o);
46
- }), [t]), c(() => {
47
- const e = () => {
48
- b(o);
49
+ }, [n, f]), m(() => (v(e), window.addEventListener("scroll", e), window.addEventListener("resize", e), () => {
50
+ window.removeEventListener("scroll", e), window.removeEventListener("resize", e), _(e);
51
+ }), [n]), m(() => {
52
+ const o = () => {
53
+ v(e);
49
54
  };
50
- return window.addEventListener("keydown", e, { capture: !0 }), () => {
51
- window.removeEventListener("keydown", e);
55
+ return window.addEventListener("keydown", o, { capture: !0 }), () => {
56
+ window.removeEventListener("keydown", o);
52
57
  };
53
- }, []), /* @__PURE__ */ y("div", { className: A.editor__toolbar, children: [
54
- /* @__PURE__ */ n(T, {}),
55
- /* @__PURE__ */ n(N, {}),
56
- /* @__PURE__ */ n(S, { isActive: !!r, ref: d }),
57
- r && /* @__PURE__ */ n(
58
- z,
58
+ }, []), /* @__PURE__ */ C("div", { className: j.editor__toolbar, children: [
59
+ /* @__PURE__ */ t(k, {}),
60
+ /* @__PURE__ */ t(S, {}),
61
+ /* @__PURE__ */ t(K, { isActive: !!i, ref: p }),
62
+ i && /* @__PURE__ */ t(
63
+ R,
59
64
  {
60
- position: r,
61
- parentScrollPosition: m,
62
- onAction: w
65
+ position: i,
66
+ parentScrollPosition: r,
67
+ onAction: y
63
68
  }
64
69
  ),
65
- /* @__PURE__ */ n(k, { parentScrollPosition: m }),
66
- /* @__PURE__ */ n(x, {})
70
+ /* @__PURE__ */ t(z, { parentScrollPosition: r }),
71
+ d && u && /* @__PURE__ */ t(
72
+ x,
73
+ {
74
+ parentScrollPosition: r,
75
+ onSearch: d,
76
+ searchResponse: u
77
+ }
78
+ ),
79
+ /* @__PURE__ */ t(A, {})
67
80
  ] });
68
81
  };
69
82
  export {
70
- W as ToolBarPlugin
83
+ $ as ToolBarPlugin
71
84
  };
72
85
  //# sourceMappingURL=ToolbarPlugin.js.map