@pie-lib/editable-html-tip-tap 2.2.0-beta.9 → 3.0.0-next.36

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 (238) hide show
  1. package/dist/components/CharacterPicker.d.ts +31 -0
  2. package/dist/components/CharacterPicker.js +141 -0
  3. package/dist/components/EditableHtml.d.ts +11 -0
  4. package/dist/components/EditableHtml.js +330 -0
  5. package/dist/components/MenuBar.d.ts +11 -0
  6. package/dist/components/MenuBar.js +531 -0
  7. package/dist/components/TiptapContainer.d.ts +11 -0
  8. package/dist/components/TiptapContainer.js +167 -0
  9. package/dist/components/characters/characterUtils.d.ts +35 -0
  10. package/dist/components/characters/characterUtils.js +465 -0
  11. package/dist/components/characters/custom-popper.d.ts +14 -0
  12. package/dist/components/characters/custom-popper.js +32 -0
  13. package/dist/components/common/done-button.d.ts +30 -0
  14. package/dist/components/common/done-button.js +26 -0
  15. package/dist/components/common/toolbar-buttons.d.ts +38 -0
  16. package/dist/components/common/toolbar-buttons.js +96 -0
  17. package/dist/components/icons/CssIcon.d.ts +11 -0
  18. package/dist/components/icons/CssIcon.js +14 -0
  19. package/dist/components/icons/RespArea.d.ts +26 -0
  20. package/dist/components/icons/RespArea.js +42 -0
  21. package/dist/components/icons/TableIcons.d.ts +14 -0
  22. package/dist/components/icons/TableIcons.js +34 -0
  23. package/dist/components/icons/TextAlign.d.ts +18 -0
  24. package/dist/components/icons/TextAlign.js +143 -0
  25. package/dist/components/image/AltDialog.d.ts +22 -0
  26. package/dist/components/image/AltDialog.js +61 -0
  27. package/dist/components/image/ImageToolbar.d.ts +24 -0
  28. package/dist/components/image/ImageToolbar.js +80 -0
  29. package/dist/components/image/InsertImageHandler.d.ts +33 -0
  30. package/dist/components/image/InsertImageHandler.js +65 -0
  31. package/dist/components/image/findImageNode.d.ts +3 -0
  32. package/dist/components/image/findImageNode.js +11 -0
  33. package/dist/components/media/MediaDialog.d.ts +43 -0
  34. package/dist/components/media/MediaDialog.js +389 -0
  35. package/dist/components/media/MediaToolbar.d.ts +19 -0
  36. package/dist/components/media/MediaToolbar.js +41 -0
  37. package/dist/components/media/MediaWrapper.d.ts +19 -0
  38. package/dist/components/respArea/DragInTheBlank/DragInTheBlank.d.ts +23 -0
  39. package/dist/components/respArea/DragInTheBlank/DragInTheBlank.js +58 -0
  40. package/dist/components/respArea/DragInTheBlank/choice.d.ts +56 -0
  41. package/dist/components/respArea/DragInTheBlank/choice.js +157 -0
  42. package/dist/components/respArea/ExplicitConstructedResponse.d.ts +20 -0
  43. package/dist/components/respArea/ExplicitConstructedResponse.js +84 -0
  44. package/dist/components/respArea/InlineDropdown.d.ts +18 -0
  45. package/dist/components/respArea/InlineDropdown.js +126 -0
  46. package/dist/components/respArea/MathTemplated.d.ts +19 -0
  47. package/dist/components/respArea/MathTemplated.js +98 -0
  48. package/dist/components/respArea/ToolbarIcon.d.ts +14 -0
  49. package/dist/components/respArea/ToolbarIcon.js +17 -0
  50. package/dist/components/respArea/inlineDropdownUtils.d.ts +15 -0
  51. package/dist/components/respArea/inlineDropdownUtils.js +15 -0
  52. package/dist/constants.d.ts +13 -0
  53. package/dist/constants.js +4 -0
  54. package/dist/extensions/css.d.ts +11 -0
  55. package/dist/extensions/css.js +120 -0
  56. package/dist/extensions/custom-toolbar-wrapper.d.ts +11 -0
  57. package/dist/extensions/custom-toolbar-wrapper.js +61 -0
  58. package/dist/extensions/div-node.d.ts +10 -0
  59. package/dist/extensions/div-node.js +42 -0
  60. package/dist/extensions/ensure-empty-root-div.d.ts +14 -0
  61. package/dist/extensions/ensure-empty-root-div.js +24 -0
  62. package/dist/extensions/ensure-list-item-content-is-div.d.ts +15 -0
  63. package/dist/extensions/ensure-list-item-content-is-div.js +31 -0
  64. package/dist/extensions/extended-list-item.d.ts +13 -0
  65. package/dist/extensions/extended-list-item.js +5 -0
  66. package/dist/extensions/extended-table-cell.d.ts +10 -0
  67. package/dist/extensions/extended-table-cell.js +6 -0
  68. package/dist/extensions/extended-table.d.ts +17 -0
  69. package/dist/extensions/extended-table.js +34 -0
  70. package/dist/extensions/heading-paragraph.d.ts +17 -0
  71. package/dist/extensions/heading-paragraph.js +30 -0
  72. package/dist/extensions/image-component.d.ts +22 -0
  73. package/dist/extensions/image-component.js +223 -0
  74. package/dist/extensions/image.d.ts +10 -0
  75. package/dist/extensions/image.js +77 -0
  76. package/dist/extensions/index.d.ts +16 -0
  77. package/dist/extensions/index.js +64 -0
  78. package/dist/extensions/math.d.ts +15 -0
  79. package/dist/extensions/math.js +213 -0
  80. package/dist/extensions/media.d.ts +19 -0
  81. package/dist/extensions/media.js +149 -0
  82. package/dist/extensions/responseArea.d.ts +27 -0
  83. package/dist/extensions/responseArea.js +255 -0
  84. package/dist/index.d.ts +13 -0
  85. package/dist/index.js +7 -0
  86. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +16 -0
  87. package/dist/styles/editorContainerStyles.d.ts +134 -0
  88. package/dist/theme.d.ts +9 -0
  89. package/dist/utils/helper.d.ts +9 -0
  90. package/dist/utils/helper.js +27 -0
  91. package/dist/utils/size.d.ts +9 -0
  92. package/dist/utils/size.js +14 -0
  93. package/dist/utils/toolbar.d.ts +10 -0
  94. package/dist/utils/toolbar.js +7 -0
  95. package/package.json +56 -42
  96. package/CHANGELOG.json +0 -32
  97. package/CHANGELOG.md +0 -2532
  98. package/lib/components/CharacterPicker.js +0 -226
  99. package/lib/components/CharacterPicker.js.map +0 -1
  100. package/lib/components/EditableHtml.js +0 -388
  101. package/lib/components/EditableHtml.js.map +0 -1
  102. package/lib/components/MenuBar.js +0 -702
  103. package/lib/components/MenuBar.js.map +0 -1
  104. package/lib/components/TiptapContainer.js +0 -242
  105. package/lib/components/TiptapContainer.js.map +0 -1
  106. package/lib/components/characters/characterUtils.js +0 -378
  107. package/lib/components/characters/characterUtils.js.map +0 -1
  108. package/lib/components/characters/custom-popper.js +0 -44
  109. package/lib/components/characters/custom-popper.js.map +0 -1
  110. package/lib/components/common/done-button.js +0 -34
  111. package/lib/components/common/done-button.js.map +0 -1
  112. package/lib/components/common/toolbar-buttons.js +0 -149
  113. package/lib/components/common/toolbar-buttons.js.map +0 -1
  114. package/lib/components/icons/CssIcon.js +0 -25
  115. package/lib/components/icons/CssIcon.js.map +0 -1
  116. package/lib/components/icons/RespArea.js +0 -72
  117. package/lib/components/icons/RespArea.js.map +0 -1
  118. package/lib/components/icons/TableIcons.js +0 -53
  119. package/lib/components/icons/TableIcons.js.map +0 -1
  120. package/lib/components/icons/TextAlign.js +0 -157
  121. package/lib/components/icons/TextAlign.js.map +0 -1
  122. package/lib/components/image/AltDialog.js +0 -98
  123. package/lib/components/image/AltDialog.js.map +0 -1
  124. package/lib/components/image/ImageToolbar.js +0 -137
  125. package/lib/components/image/ImageToolbar.js.map +0 -1
  126. package/lib/components/image/InsertImageHandler.js +0 -135
  127. package/lib/components/image/InsertImageHandler.js.map +0 -1
  128. package/lib/components/media/MediaDialog.js +0 -594
  129. package/lib/components/media/MediaDialog.js.map +0 -1
  130. package/lib/components/media/MediaToolbar.js +0 -74
  131. package/lib/components/media/MediaToolbar.js.map +0 -1
  132. package/lib/components/media/MediaWrapper.js +0 -67
  133. package/lib/components/media/MediaWrapper.js.map +0 -1
  134. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +0 -84
  135. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +0 -1
  136. package/lib/components/respArea/DragInTheBlank/choice.js +0 -253
  137. package/lib/components/respArea/DragInTheBlank/choice.js.map +0 -1
  138. package/lib/components/respArea/ExplicitConstructedResponse.js +0 -137
  139. package/lib/components/respArea/ExplicitConstructedResponse.js.map +0 -1
  140. package/lib/components/respArea/InlineDropdown.js +0 -223
  141. package/lib/components/respArea/InlineDropdown.js.map +0 -1
  142. package/lib/components/respArea/MathTemplated.js +0 -130
  143. package/lib/components/respArea/MathTemplated.js.map +0 -1
  144. package/lib/components/respArea/ToolbarIcon.js +0 -81
  145. package/lib/components/respArea/ToolbarIcon.js.map +0 -1
  146. package/lib/components/respArea/inlineDropdownUtils.js +0 -67
  147. package/lib/components/respArea/inlineDropdownUtils.js.map +0 -1
  148. package/lib/constants.js +0 -11
  149. package/lib/constants.js.map +0 -1
  150. package/lib/extensions/css.js +0 -227
  151. package/lib/extensions/css.js.map +0 -1
  152. package/lib/extensions/custom-toolbar-wrapper.js +0 -92
  153. package/lib/extensions/custom-toolbar-wrapper.js.map +0 -1
  154. package/lib/extensions/div-node.js +0 -83
  155. package/lib/extensions/div-node.js.map +0 -1
  156. package/lib/extensions/ensure-empty-root-div.js +0 -48
  157. package/lib/extensions/ensure-empty-root-div.js.map +0 -1
  158. package/lib/extensions/ensure-list-item-content-is-div.js +0 -64
  159. package/lib/extensions/ensure-list-item-content-is-div.js.map +0 -1
  160. package/lib/extensions/extended-list-item.js +0 -15
  161. package/lib/extensions/extended-list-item.js.map +0 -1
  162. package/lib/extensions/extended-table-cell.js +0 -22
  163. package/lib/extensions/extended-table-cell.js.map +0 -1
  164. package/lib/extensions/extended-table.js +0 -75
  165. package/lib/extensions/extended-table.js.map +0 -1
  166. package/lib/extensions/heading-paragraph.js +0 -61
  167. package/lib/extensions/heading-paragraph.js.map +0 -1
  168. package/lib/extensions/image-component.js +0 -351
  169. package/lib/extensions/image-component.js.map +0 -1
  170. package/lib/extensions/image.js +0 -134
  171. package/lib/extensions/image.js.map +0 -1
  172. package/lib/extensions/index.js +0 -46
  173. package/lib/extensions/index.js.map +0 -1
  174. package/lib/extensions/math.js +0 -469
  175. package/lib/extensions/math.js.map +0 -1
  176. package/lib/extensions/media.js +0 -243
  177. package/lib/extensions/media.js.map +0 -1
  178. package/lib/extensions/responseArea.js +0 -452
  179. package/lib/extensions/responseArea.js.map +0 -1
  180. package/lib/index.js +0 -37
  181. package/lib/index.js.map +0 -1
  182. package/lib/styles/editorContainerStyles.js +0 -137
  183. package/lib/styles/editorContainerStyles.js.map +0 -1
  184. package/lib/theme.js +0 -8
  185. package/lib/theme.js.map +0 -1
  186. package/lib/utils/helper.js +0 -73
  187. package/lib/utils/helper.js.map +0 -1
  188. package/lib/utils/size.js +0 -26
  189. package/lib/utils/size.js.map +0 -1
  190. package/lib/utils/toolbar.js +0 -19
  191. package/lib/utils/toolbar.js.map +0 -1
  192. package/src/components/CharacterPicker.jsx +0 -237
  193. package/src/components/EditableHtml.jsx +0 -458
  194. package/src/components/MenuBar.jsx +0 -561
  195. package/src/components/TiptapContainer.jsx +0 -235
  196. package/src/components/characters/characterUtils.js +0 -447
  197. package/src/components/characters/custom-popper.js +0 -38
  198. package/src/components/common/done-button.jsx +0 -27
  199. package/src/components/common/toolbar-buttons.jsx +0 -127
  200. package/src/components/icons/CssIcon.jsx +0 -15
  201. package/src/components/icons/RespArea.jsx +0 -71
  202. package/src/components/icons/TableIcons.jsx +0 -52
  203. package/src/components/icons/TextAlign.jsx +0 -114
  204. package/src/components/image/AltDialog.jsx +0 -82
  205. package/src/components/image/ImageToolbar.jsx +0 -99
  206. package/src/components/image/InsertImageHandler.js +0 -107
  207. package/src/components/media/MediaDialog.jsx +0 -596
  208. package/src/components/media/MediaToolbar.jsx +0 -49
  209. package/src/components/media/MediaWrapper.jsx +0 -39
  210. package/src/components/respArea/DragInTheBlank/DragInTheBlank.jsx +0 -76
  211. package/src/components/respArea/DragInTheBlank/choice.jsx +0 -259
  212. package/src/components/respArea/ExplicitConstructedResponse.jsx +0 -136
  213. package/src/components/respArea/InlineDropdown.jsx +0 -240
  214. package/src/components/respArea/MathTemplated.jsx +0 -124
  215. package/src/components/respArea/ToolbarIcon.jsx +0 -66
  216. package/src/components/respArea/inlineDropdownUtils.js +0 -79
  217. package/src/constants.js +0 -5
  218. package/src/extensions/css.js +0 -233
  219. package/src/extensions/custom-toolbar-wrapper.jsx +0 -78
  220. package/src/extensions/div-node.js +0 -86
  221. package/src/extensions/ensure-empty-root-div.js +0 -47
  222. package/src/extensions/ensure-list-item-content-is-div.js +0 -62
  223. package/src/extensions/extended-list-item.js +0 -10
  224. package/src/extensions/extended-table-cell.js +0 -19
  225. package/src/extensions/extended-table.js +0 -60
  226. package/src/extensions/heading-paragraph.js +0 -53
  227. package/src/extensions/image-component.jsx +0 -340
  228. package/src/extensions/image.js +0 -109
  229. package/src/extensions/index.js +0 -81
  230. package/src/extensions/math.js +0 -454
  231. package/src/extensions/media.js +0 -188
  232. package/src/extensions/responseArea.js +0 -407
  233. package/src/index.jsx +0 -5
  234. package/src/styles/editorContainerStyles.js +0 -145
  235. package/src/theme.js +0 -1
  236. package/src/utils/helper.js +0 -69
  237. package/src/utils/size.js +0 -32
  238. package/src/utils/toolbar.js +0 -15
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @synced-from pie-lib/packages/editable-html-tip-tap/src/components/CharacterPicker.jsx
3
+ * @auto-generated
4
+ *
5
+ * This file is automatically synced from pie-elements and converted to TypeScript.
6
+ * Manual edits will be overwritten on next sync.
7
+ * To make changes, edit the upstream JavaScript file and run sync again.
8
+ */
9
+ import React from 'react';
10
+ import PropTypes from 'prop-types';
11
+ declare const CharacterIcon: {
12
+ ({ letter }: {
13
+ letter: any;
14
+ }): React.JSX.Element;
15
+ propTypes: {
16
+ letter: PropTypes.Requireable<string>;
17
+ };
18
+ };
19
+ export declare function CharacterPicker({ editor, opts, onClose }: {
20
+ editor: any;
21
+ opts: any;
22
+ onClose: any;
23
+ }): React.JSX.Element | null;
24
+ export declare namespace CharacterPicker {
25
+ var propTypes: {
26
+ editor: PropTypes.Requireable<object>;
27
+ opts: PropTypes.Requireable<object>;
28
+ onClose: PropTypes.Validator<(...args: any[]) => any>;
29
+ };
30
+ }
31
+ export { CharacterIcon };
@@ -0,0 +1,141 @@
1
+ import { spanishConfig as e, specialConfig as t } from "./characters/characterUtils.js";
2
+ import n from "./characters/custom-popper.js";
3
+ import { useEffect as r, useMemo as i, useRef as a, useState as o } from "react";
4
+ import { get as s } from "@pie-element/shared-lodash";
5
+ import c from "react-dom";
6
+ import l from "prop-types";
7
+ import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
8
+ import { PureToolbar as p } from "@pie-lib/math-toolbar";
9
+ //#region src/components/CharacterPicker.tsx
10
+ var m = ({ letter: e }) => /* @__PURE__ */ d("div", {
11
+ style: {
12
+ fontSize: "24px",
13
+ lineHeight: "24px"
14
+ },
15
+ children: e
16
+ });
17
+ m.propTypes = { letter: l.string };
18
+ function h({ editor: l, opts: m, onClose: h }) {
19
+ if (!m?.characters?.length) return null;
20
+ let g = a(null), _ = a(h), [v, y] = o({
21
+ top: 0,
22
+ left: 0
23
+ }), [b, x] = o(null);
24
+ _.current = h;
25
+ let S = i(() => {
26
+ if (!m) return e;
27
+ switch (!0) {
28
+ case m.language === "spanish": return e;
29
+ case m.language === "special": return t;
30
+ default: return m;
31
+ }
32
+ }, [m]), C = i(() => S.characters.reduce((e, t) => (t.length >= e.columns && (e.columns = t.length), e), {
33
+ rows: S.characters.length,
34
+ columns: 0
35
+ }), [S]), w = () => x(null);
36
+ r(() => () => {
37
+ w();
38
+ }, []), r(() => {
39
+ if (!l) return;
40
+ let e = l.options.element, t = l.view.dom, n = () => {
41
+ if (!g.current) return;
42
+ let t = e.getBoundingClientRect(), { from: n } = l.state.selection, r = l.view.coordsAtPos(n), i = g.current.offsetHeight, a = g.current.offsetWidth, o = window.innerHeight - (t.bottom + 60) >= i || t.top < i + 80 ? t.bottom + 60 : t.top - i - 20, s = r.left;
43
+ o = Math.max(8, Math.min(o, window.innerHeight - i - 8)), s = Math.max(8, Math.min(s, window.innerWidth - a - 8)), y({
44
+ top: o,
45
+ left: s
46
+ });
47
+ };
48
+ n();
49
+ let r = null, i = () => {
50
+ r === null && (r = requestAnimationFrame(() => {
51
+ r = null, n();
52
+ }));
53
+ };
54
+ window.addEventListener("scroll", i, !0), window.addEventListener("resize", i);
55
+ let a = (e) => {
56
+ g.current && !g.current.contains(e.target) && !t.contains(e.target) && _.current();
57
+ }, o = setTimeout(() => {
58
+ document.addEventListener("click", a);
59
+ });
60
+ return () => {
61
+ clearTimeout(o), r !== null && cancelAnimationFrame(r), window.removeEventListener("scroll", i, !0), window.removeEventListener("resize", i), document.removeEventListener("click", a);
62
+ };
63
+ }, [l]);
64
+ let T = (e, t) => x({
65
+ anchorEl: e.currentTarget,
66
+ el: t
67
+ });
68
+ return /* @__PURE__ */ f(u, { children: [c.createPortal(/* @__PURE__ */ d("div", {
69
+ ref: g,
70
+ className: "insert-character-dialog",
71
+ "data-toolbar-for": l.instanceId,
72
+ style: {
73
+ visibility: v.top === 0 && v.left === 0 ? "hidden" : "initial",
74
+ position: "fixed",
75
+ top: `${v.top}px`,
76
+ left: `${v.left}px`,
77
+ maxWidth: "500px",
78
+ zIndex: 1e3
79
+ },
80
+ children: /* @__PURE__ */ d("div", { children: /* @__PURE__ */ d(p, {
81
+ keyPadCharacterRef: m.keyPadCharacterRef,
82
+ setKeypadInteraction: m.setKeypadInteraction,
83
+ autoFocus: !0,
84
+ noDecimal: !0,
85
+ hideInput: !0,
86
+ noLatexHandling: !0,
87
+ hideDoneButtonBackground: !0,
88
+ layoutForKeyPad: C,
89
+ additionalKeys: S.characters.reduce((e, t) => (e = [...e, ...t.map((e) => ({
90
+ name: s(e, "name") || e,
91
+ write: s(e, "write") || e,
92
+ label: s(e, "label") || e,
93
+ category: "character",
94
+ extraClass: "character",
95
+ extraProps: {
96
+ ...e.extraProps || {},
97
+ style: {
98
+ ...(e.extraProps || {}).style,
99
+ border: "1px solid #000"
100
+ }
101
+ },
102
+ ...S.hasPreview ? { actions: {
103
+ onMouseEnter: (t) => T(t, e),
104
+ onMouseLeave: w
105
+ } } : {}
106
+ }))], e), []),
107
+ keypadMode: "language",
108
+ onChange: (e) => {
109
+ typeof e == "string" && l.chain().focus().insertContent(e).run();
110
+ },
111
+ onDone: h
112
+ }) })
113
+ }), document.body), b && c.createPortal(/* @__PURE__ */ f(n, {
114
+ onClose: w,
115
+ anchorEl: b.anchorEl,
116
+ children: [
117
+ /* @__PURE__ */ d("div", { children: b.el.label }),
118
+ /* @__PURE__ */ d("div", {
119
+ style: {
120
+ fontSize: 20,
121
+ lineHeight: "20px"
122
+ },
123
+ children: b.el.description
124
+ }),
125
+ /* @__PURE__ */ d("div", {
126
+ style: {
127
+ fontSize: 20,
128
+ lineHeight: "20px"
129
+ },
130
+ children: b.el.unicode
131
+ })
132
+ ]
133
+ }), document.body)] });
134
+ }
135
+ h.propTypes = {
136
+ editor: l.object,
137
+ opts: l.object,
138
+ onClose: l.func.isRequired
139
+ };
140
+ //#endregion
141
+ export { m as CharacterIcon, h as CharacterPicker };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @synced-from pie-lib/packages/editable-html-tip-tap/src/components/EditableHtml.jsx
3
+ * @auto-generated
4
+ *
5
+ * This file is automatically synced from pie-elements and converted to TypeScript.
6
+ * Manual edits will be overwritten on next sync.
7
+ * To make changes, edit the upstream JavaScript file and run sync again.
8
+ */
9
+ import React from 'react';
10
+ export declare const EditableHtml: (props: any) => React.JSX.Element;
11
+ export default EditableHtml;
@@ -0,0 +1,330 @@
1
+ import { normalizeInitialMarkup as e } from "../utils/helper.js";
2
+ import t from "../extensions/extended-table.js";
3
+ import { ExtendedTableCell as n, ExtendedTableHeader as r } from "../extensions/extended-table-cell.js";
4
+ import { DivNode as i } from "../extensions/div-node.js";
5
+ import { EnsureEmptyRootIsDiv as a } from "../extensions/ensure-empty-root-div.js";
6
+ import { EnsureListItemContentIsDiv as o } from "../extensions/ensure-list-item-content-is-div.js";
7
+ import { DragInTheBlankNode as s, ExplicitConstructedResponseNode as c, InlineDropdownNode as l, MathTemplatedNode as u, ResponseAreaExtension as ee } from "../extensions/responseArea.js";
8
+ import { MathNode as te } from "../extensions/math.js";
9
+ import { ImageUploadNode as d } from "../extensions/image.js";
10
+ import { Media as f } from "../extensions/media.js";
11
+ import { CSSMark as ne } from "../extensions/css.js";
12
+ import { ExtendedListItem as p } from "../extensions/extended-list-item.js";
13
+ import { HeadingParagraph as re } from "../extensions/heading-paragraph.js";
14
+ import { valueToSize as m } from "../utils/size.js";
15
+ import h from "./TiptapContainer.js";
16
+ import { PLUGINS_MAP as g, buildExtensions as _ } from "../extensions/index.js";
17
+ import { useCallback as v, useEffect as y, useMemo as b, useState as x } from "react";
18
+ import { debounce as S } from "@pie-element/shared-lodash";
19
+ import { EditorContent as C, useEditor as w, useEditorState as T } from "@tiptap/react";
20
+ import { styled as E } from "@mui/material/styles";
21
+ import D from "@tiptap/starter-kit";
22
+ import { TextStyleKit as O } from "@tiptap/extension-text-style";
23
+ import { CharacterCount as k } from "@tiptap/extension-character-count";
24
+ import A from "@tiptap/extension-superscript";
25
+ import j from "@tiptap/extension-subscript";
26
+ import M from "@tiptap/extension-text-align";
27
+ import N from "@tiptap/extension-image";
28
+ import P from "@tiptap/extension-placeholder";
29
+ import { TableRow as F } from "@tiptap/extension-table-row";
30
+ import { jsx as I } from "react/jsx-runtime";
31
+ //#region src/components/EditableHtml.tsx
32
+ var ie = {
33
+ position: "bottom",
34
+ alignment: "left",
35
+ alwaysVisible: !1,
36
+ showDone: !0,
37
+ doneOn: "blur"
38
+ }, L = {
39
+ options: {},
40
+ respAreaToolbar: () => {},
41
+ onHandleAreaChange: () => {}
42
+ }, R = [
43
+ "bold",
44
+ "italic",
45
+ "underline",
46
+ "strikethrough",
47
+ "code",
48
+ "bulleted-list",
49
+ "numbered-list",
50
+ "image",
51
+ "math",
52
+ "languageCharacters",
53
+ "text-align",
54
+ "table",
55
+ "video",
56
+ "audio",
57
+ "responseArea",
58
+ "superscript",
59
+ "subscript",
60
+ "css",
61
+ "h3",
62
+ "undo",
63
+ "redo"
64
+ ], z = {
65
+ "--white": "#fff",
66
+ "--black": "#2e2b29",
67
+ "--black-contrast": "#110f0e",
68
+ "--gray-1": "rgba(61, 37, 20, .05)",
69
+ "--gray-2": "rgba(61, 37, 20, .08)",
70
+ "--gray-3": "rgba(61, 37, 20, .12)",
71
+ "--gray-4": "rgba(53, 38, 28, .3)",
72
+ "--gray-5": "rgba(28, 25, 23, .6)",
73
+ "--green": "#22c55e",
74
+ "--purple": "#6a00f5",
75
+ "--purple-contrast": "#5800cc",
76
+ "--purple-light": "rgba(88, 5, 255, .05)",
77
+ "--yellow-contrast": "#facc15",
78
+ "--yellow": "rgba(250, 204, 21, .4)",
79
+ "--yellow-light": "#fffae5",
80
+ "--red": "#ff5c33",
81
+ "--red-light": "#ffebe5",
82
+ "--shadow": "0px 12px 33px 0px rgba(0, 0, 0, .06),\n 0px 3.618px 9.949px 0px rgba(0, 0, 0, .04)"
83
+ }, B = (e) => ({
84
+ role: "textbox",
85
+ "data-pie-editor": "true",
86
+ spellcheck: e ? "true" : "false",
87
+ autocorrect: e ? "on" : "off",
88
+ autocapitalize: e ? "on" : "off"
89
+ }), V = (C) => {
90
+ let { showParagraphs: E, separateParagraphs: V } = C.pluginProps || {}, [ae, U] = x([]), [W, G] = x(!1), { toolbarOpts: K } = C, q = v((e) => {
91
+ U((t) => {
92
+ let n = t.filter((t) => t.pos !== e);
93
+ return n.length === 0 && G(!1), n;
94
+ });
95
+ }, [U]), J = {
96
+ ...ie,
97
+ ...K
98
+ }, Y = v((e) => {
99
+ let t = e.getHTML();
100
+ C.markup !== t && C.onChange?.(t), J.doneOn === "blur" && C.onDone?.(t);
101
+ }, [
102
+ C.markup,
103
+ C.onChange,
104
+ C.onDone,
105
+ J.doneOn
106
+ ]), X = b(() => ({
107
+ ...L,
108
+ ...C.responseAreaProps,
109
+ onInlineDropdownToolbarClose: Y
110
+ }), [C.responseAreaProps, Y]), oe = b(() => {
111
+ let { customPlugins: e, ...t } = C.pluginProps || {};
112
+ e ||= [];
113
+ let n = (C.activePlugins || R)?.filter((e) => {
114
+ let n = g[e] || e, r = t[n] || {};
115
+ return !r || !r.disabled;
116
+ });
117
+ return _(n, e, {
118
+ math: {},
119
+ textAlign: C.textAlign,
120
+ html: {},
121
+ extraCSSRules: C.extraCSSRules || {},
122
+ image: { ...C.imageSupport },
123
+ toolbar: {},
124
+ table: {},
125
+ responseArea: { type: X.type },
126
+ languageCharacters: C.languageCharactersProps,
127
+ keyPadCharacterRef: {},
128
+ setKeypadInteraction: {},
129
+ media: {}
130
+ });
131
+ }, [C, X.type]), se = [
132
+ M.configure({
133
+ types: [
134
+ "heading",
135
+ "paragraph",
136
+ "div",
137
+ "headingParagraph",
138
+ "h1",
139
+ "h2",
140
+ "h3",
141
+ "h4",
142
+ "h5",
143
+ "h6",
144
+ "td",
145
+ "th"
146
+ ],
147
+ alignments: [
148
+ "left",
149
+ "right",
150
+ "center",
151
+ "justify"
152
+ ]
153
+ }),
154
+ O,
155
+ k.configure({ limit: C.charactersLimit || 1e6 }),
156
+ D.configure({
157
+ trailingNode: {
158
+ node: "paragraph",
159
+ notAfter: ["paragraph", "div"]
160
+ },
161
+ link: {
162
+ autolink: !1,
163
+ linkOnPaste: !1
164
+ }
165
+ }),
166
+ p,
167
+ i,
168
+ re,
169
+ a,
170
+ o,
171
+ P.configure({
172
+ placeholder: C.placeholder,
173
+ showOnlyWhenEditable: !0,
174
+ showOnlyCurrent: !1,
175
+ includeChildren: !0
176
+ }),
177
+ t,
178
+ F,
179
+ r,
180
+ n,
181
+ ee.configure(X),
182
+ c.configure(X),
183
+ s.configure(X),
184
+ l.configure(X),
185
+ u.configure(X),
186
+ te.configure({
187
+ toolbarOpts: J,
188
+ math: C.pluginProps?.math || {}
189
+ }),
190
+ j,
191
+ A,
192
+ N,
193
+ d.configure({
194
+ toolbarOpts: J,
195
+ imageHandling: {
196
+ disableImageAlignmentButtons: C.disableImageAlignmentButtons,
197
+ onDone: (e) => C.onDone?.(e.getHTML()),
198
+ onDelete: C.imageSupport && C.imageSupport.delete && ((e) => {
199
+ let { src: t } = e.attrs;
200
+ C.imageSupport.delete(t, (t) => {
201
+ q(e.pos);
202
+ });
203
+ }),
204
+ insertImageRequested: C.imageSupport && ((e, t, n) => {
205
+ let [r, i] = t, a = (t) => {
206
+ let n;
207
+ W && t && (n = C.onChange), q(i), n?.(e.getHTML());
208
+ };
209
+ e._insertingImage = !0, U((e) => [...e, r]), (() => {
210
+ let t = n(a), r = S(() => {
211
+ let t = () => window.removeEventListener("focus", r);
212
+ if (!e._insertingImage) {
213
+ t();
214
+ return;
215
+ }
216
+ q(i), e._insertingImage = !1, t();
217
+ }, 500);
218
+ window.addEventListener("focus", r), C.imageSupport.add(t);
219
+ })();
220
+ }),
221
+ maxImageWidth: C.maxImageWidth,
222
+ maxImageHeight: C.maxImageHeight
223
+ },
224
+ limit: 3
225
+ }),
226
+ f.configure({ uploadSoundSupport: C.uploadSoundSupport }),
227
+ ne.configure({ extraCSSRules: C.extraCSSRules })
228
+ ], Z = C.spellCheck !== !1, Q = w({
229
+ extensions: se,
230
+ immediatelyRender: !1,
231
+ editorProps: {
232
+ attributes: B(Z),
233
+ handleKeyDown(e, t) {
234
+ return C.onKeyDown ? C.onKeyDown(t) : !1;
235
+ }
236
+ },
237
+ editable: !C.disabled,
238
+ content: e(C.markup),
239
+ onUpdate: ({ editor: e, transaction: t }) => {
240
+ t.isDone && C.onChange?.(e.getHTML());
241
+ },
242
+ onBlur: ({ editor: e }) => {
243
+ e._insertingImage || e._toolbarOpened || e.isActive("inline_dropdown") || e.isActive("explicit_constructed_response") || !e.schema || Y(e);
244
+ }
245
+ }, [C.charactersLimit]);
246
+ y(() => {
247
+ C.editorRef && C.editorRef(Q);
248
+ }, [C.editorRef, Q]), y(() => {
249
+ Q?.setEditable(!C.disabled);
250
+ }, [C.disabled, Q]), y(() => {
251
+ if (!Q) return;
252
+ let e = Q.options?.editorProps, t = {
253
+ ...e?.attributes,
254
+ ...B(Z)
255
+ };
256
+ e?.attributes?.spellcheck !== t.spellcheck && Q.setOptions({ editorProps: {
257
+ ...e,
258
+ attributes: t
259
+ } });
260
+ }, [Z, Q]), y(() => {
261
+ if (!Q) return;
262
+ let t = e(C.markup);
263
+ t !== Q.getHTML() && Q.commands.setContent(t, { emitUpdate: !1 });
264
+ }, [C.markup, Q]), y(() => {
265
+ Object.entries(z).forEach(([e, t]) => {
266
+ document.documentElement.style.setProperty(e, t);
267
+ });
268
+ }, []);
269
+ let ce = T({
270
+ editor: Q,
271
+ selector: (e) => ({ isFocused: e.editor?.isFocused })
272
+ }), $ = b(() => {
273
+ let { minWidth: e, width: t, maxWidth: n, minHeight: r, height: i, maxHeight: a } = C;
274
+ return {
275
+ width: m(t),
276
+ minWidth: m(e),
277
+ maxWidth: m(n),
278
+ height: m(i),
279
+ minHeight: m(r),
280
+ maxHeight: m(a)
281
+ };
282
+ }, [C]);
283
+ return /* @__PURE__ */ I(h, {
284
+ ...C,
285
+ activePlugins: oe,
286
+ toolbarOpts: J,
287
+ editorState: ce,
288
+ editor: Q,
289
+ children: Q && /* @__PURE__ */ I(H, {
290
+ style: {
291
+ minHeight: $.minHeight,
292
+ height: $.height,
293
+ maxHeight: $.maxHeight
294
+ },
295
+ showParagraph: E && !E.disabled,
296
+ separateParagraph: V && !V.disabled,
297
+ editor: Q
298
+ })
299
+ });
300
+ }, H = E(C, { shouldForwardProp: (e) => !["showParagraph", "separateParagraph"].includes(e) })(({ showParagraph: e, separateParagraph: t }) => ({
301
+ display: "flex",
302
+ outline: "none !important",
303
+ "& .ProseMirror": {
304
+ flex: 1,
305
+ padding: "5px",
306
+ maxHeight: "500px",
307
+ outline: "none !important",
308
+ position: "initial",
309
+ "& > p, & > div": { margin: "0" },
310
+ "& p[data-placeholder].is-empty:only-child, & div[data-placeholder].is-empty:only-child": { position: "relative" },
311
+ "& p[data-placeholder].is-empty:only-child::before, & div[data-placeholder].is-empty:only-child::before": {
312
+ content: "attr(data-placeholder)",
313
+ position: "absolute",
314
+ left: 0,
315
+ top: 0,
316
+ color: "#9CA3AF",
317
+ pointerEvents: "none",
318
+ whiteSpace: "pre-wrap"
319
+ },
320
+ ...e && { "& > p:has(+ p)::after, & > div:has(+ div)::after": {
321
+ display: "block",
322
+ content: "\"¶\"",
323
+ fontSize: "1em",
324
+ color: "#146EB3"
325
+ } },
326
+ ...t && { "& > p:has(+ p)": { marginBottom: "1em" } }
327
+ }
328
+ }));
329
+ //#endregion
330
+ export { V as EditableHtml, V as default };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @synced-from pie-lib/packages/editable-html-tip-tap/src/components/MenuBar.jsx
3
+ * @auto-generated
4
+ *
5
+ * This file is automatically synced from pie-elements and converted to TypeScript.
6
+ * Manual edits will be overwritten on next sync.
7
+ * To make changes, edit the upstream JavaScript file and run sync again.
8
+ */
9
+ import React from 'react';
10
+ declare const StyledMenuBar: (props: any) => React.JSX.Element;
11
+ export default StyledMenuBar;