sykpcomposer 0.0.94 → 0.0.95

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 (34) hide show
  1. package/dist/ImageComponent-ddf2b888.js +402 -0
  2. package/dist/ImageComponent-ddf2b888.js.map +1 -0
  3. package/dist/InlineImageComponent-46949279.js +249 -0
  4. package/dist/InlineImageComponent-46949279.js.map +1 -0
  5. package/dist/Placeholder-347ad381.js +97 -0
  6. package/dist/Placeholder-347ad381.js.map +1 -0
  7. package/dist/index-3341449c.js +48210 -0
  8. package/dist/index-3341449c.js.map +1 -0
  9. package/dist/index.es.js +4 -48720
  10. package/dist/index.es.js.map +1 -1
  11. package/dist/index.umd.js +152 -224
  12. package/dist/index.umd.js.map +1 -1
  13. package/dist/src/components/hooks/useModal.d.ts +12 -0
  14. package/dist/src/components/nodes/ImageComponent.d.ts +22 -0
  15. package/dist/src/components/nodes/ImageNode.d.ts +49 -0
  16. package/dist/src/components/nodes/InlineImageComponent.d.ts +18 -0
  17. package/dist/src/components/nodes/InlineImageNode.d.ts +65 -0
  18. package/dist/src/components/plugins/ImagePlugin.d.ts +24 -0
  19. package/dist/src/components/plugins/InlineImagePlugin.d.ts +16 -0
  20. package/dist/src/components/ui/Button.d.ts +17 -0
  21. package/dist/src/components/ui/ContentEditable.d.ts +12 -0
  22. package/dist/src/components/ui/Dialog.d.ts +15 -0
  23. package/dist/src/components/ui/FileInput.d.ts +16 -0
  24. package/dist/src/components/ui/ImageResizer.d.ts +24 -0
  25. package/dist/src/components/ui/Modal.d.ts +14 -0
  26. package/dist/src/components/ui/Placeholder.d.ts +12 -0
  27. package/dist/src/components/ui/Select.d.ts +14 -0
  28. package/dist/src/components/ui/TextInput.d.ts +19 -0
  29. package/dist/src/{components/plugins/TreeViewPlugin.d.ts → utils/joinClasses.d.ts} +1 -2
  30. package/dist/style.css +1 -1
  31. package/package.json +1 -1
  32. package/dist/src/components/ExampleTheme.d.ts +0 -3
  33. package/dist/src/components/heading.d.ts +0 -3
  34. package/dist/src/components/plugins/HtmlPlugin.d.ts +0 -6
@@ -0,0 +1,249 @@
1
+ import { m as $, u as M, d as b, w, x as B, n as U, a as T, c as z, e as O, C as f, f as W, k as q, g as G, I as H, r as J, h as Q, j as e, i as V, l as X, T as Y, S as Z, D as K, B as ee } from "./index-3341449c.js";
2
+ import { u as te, d as ne, L as ae, P as se } from "./Placeholder-347ad381.js";
3
+ import { useRef as N, useState as I, useCallback as k, useEffect as oe, Suspense as le } from "react";
4
+ import "react-dom";
5
+ const y = /* @__PURE__ */ new Set();
6
+ function re(o) {
7
+ if (!y.has(o))
8
+ throw new Promise((m) => {
9
+ const a = new Image();
10
+ a.src = o, a.onload = () => {
11
+ y.add(o), m(null);
12
+ };
13
+ });
14
+ }
15
+ function ie({
16
+ altText: o,
17
+ className: m,
18
+ imageRef: a,
19
+ src: h,
20
+ width: r,
21
+ height: c,
22
+ position: i
23
+ }) {
24
+ return re(h), /* @__PURE__ */ e.jsx(
25
+ "img",
26
+ {
27
+ className: m || void 0,
28
+ src: h,
29
+ alt: o,
30
+ ref: a,
31
+ "data-position": i,
32
+ style: {
33
+ display: "block",
34
+ height: c,
35
+ width: r
36
+ },
37
+ draggable: "false"
38
+ }
39
+ );
40
+ }
41
+ function ce({
42
+ activeEditor: o,
43
+ nodeKey: m,
44
+ onClose: a
45
+ }) {
46
+ const r = o.getEditorState().read(
47
+ () => B(m)
48
+ ), [c, i] = I(r.getAltText()), [j, S] = I(r.getShowCaption()), [C, p] = I(r.getPosition()), x = (d) => {
49
+ S(d.target.checked);
50
+ }, l = (d) => {
51
+ p(d.target.value);
52
+ }, g = () => {
53
+ const d = { altText: c, position: C, showCaption: j };
54
+ r && o.update(() => {
55
+ r.update(d);
56
+ }), a();
57
+ };
58
+ return /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
59
+ /* @__PURE__ */ e.jsx("div", { style: { marginBottom: "1em" }, children: /* @__PURE__ */ e.jsx(
60
+ Y,
61
+ {
62
+ label: "Alt Text",
63
+ placeholder: "Descriptive alternative text",
64
+ onChange: i,
65
+ value: c,
66
+ "data-test-id": "image-modal-alt-text-input"
67
+ }
68
+ ) }),
69
+ /* @__PURE__ */ e.jsxs(
70
+ Z,
71
+ {
72
+ style: { marginBottom: "1em", width: "208px" },
73
+ value: C,
74
+ label: "Position",
75
+ name: "position",
76
+ id: "position-select",
77
+ onChange: l,
78
+ children: [
79
+ /* @__PURE__ */ e.jsx("option", { value: "left", children: "Left" }),
80
+ /* @__PURE__ */ e.jsx("option", { value: "right", children: "Right" }),
81
+ /* @__PURE__ */ e.jsx("option", { value: "full", children: "Full Width" })
82
+ ]
83
+ }
84
+ ),
85
+ /* @__PURE__ */ e.jsxs("div", { className: "Input__wrapper", children: [
86
+ /* @__PURE__ */ e.jsx(
87
+ "input",
88
+ {
89
+ id: "caption",
90
+ type: "checkbox",
91
+ checked: j,
92
+ onChange: x
93
+ }
94
+ ),
95
+ /* @__PURE__ */ e.jsx("label", { htmlFor: "caption", children: "Show Caption" })
96
+ ] }),
97
+ /* @__PURE__ */ e.jsx(K, { children: /* @__PURE__ */ e.jsx(
98
+ ee,
99
+ {
100
+ "data-test-id": "image-modal-file-upload-btn",
101
+ onClick: () => g(),
102
+ children: "Confirm"
103
+ }
104
+ ) })
105
+ ] });
106
+ }
107
+ function fe({
108
+ src: o,
109
+ altText: m,
110
+ nodeKey: a,
111
+ width: h,
112
+ height: r,
113
+ showCaption: c,
114
+ caption: i,
115
+ position: j
116
+ }) {
117
+ const [S, C] = $(), p = N(null), x = N(null), [l, g, d] = te(a), [n] = M(), [D, F] = I(null), R = N(null), E = k(
118
+ (s) => {
119
+ if (l && b(w())) {
120
+ s.preventDefault();
121
+ const t = B(a);
122
+ if (U(t))
123
+ return t.remove(), !0;
124
+ }
125
+ return !1;
126
+ },
127
+ [l, a]
128
+ ), P = k(
129
+ (s) => {
130
+ const u = w(), t = x.current;
131
+ if (l && b(u) && u.getNodes().length === 1) {
132
+ if (c)
133
+ return T(null), s.preventDefault(), i.focus(), !0;
134
+ if (t !== null && t !== document.activeElement)
135
+ return s.preventDefault(), t.focus(), !0;
136
+ }
137
+ return !1;
138
+ },
139
+ [i, l, c]
140
+ ), _ = k(
141
+ (s) => R.current === i || x.current === s.target ? (T(null), n.update(() => {
142
+ g(!0);
143
+ const u = n.getRootElement();
144
+ u !== null && u.focus();
145
+ }), !0) : !1,
146
+ [i, n, g]
147
+ );
148
+ oe(() => {
149
+ let s = !0;
150
+ const u = z(
151
+ n.registerUpdateListener(({ editorState: t }) => {
152
+ s && F(t.read(() => w()));
153
+ }),
154
+ n.registerCommand(
155
+ Q,
156
+ (t, v) => (R.current = v, !1),
157
+ f
158
+ ),
159
+ n.registerCommand(
160
+ J,
161
+ (t) => {
162
+ const v = t;
163
+ return v.target === p.current ? (v.shiftKey ? g(!l) : (d(), g(!0)), !0) : !1;
164
+ },
165
+ f
166
+ ),
167
+ n.registerCommand(
168
+ H,
169
+ (t) => t.target === p.current ? (t.preventDefault(), !0) : !1,
170
+ f
171
+ ),
172
+ n.registerCommand(
173
+ G,
174
+ E,
175
+ f
176
+ ),
177
+ n.registerCommand(
178
+ q,
179
+ E,
180
+ f
181
+ ),
182
+ n.registerCommand(W, P, f),
183
+ n.registerCommand(O, _, f)
184
+ );
185
+ return () => {
186
+ s = !1, u();
187
+ };
188
+ }, [
189
+ d,
190
+ n,
191
+ l,
192
+ a,
193
+ E,
194
+ P,
195
+ _,
196
+ g
197
+ ]);
198
+ const L = l && b(D), A = l;
199
+ return /* @__PURE__ */ e.jsxs(le, { fallback: null, children: [
200
+ /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
201
+ /* @__PURE__ */ e.jsxs("div", { draggable: L, children: [
202
+ /* @__PURE__ */ e.jsx(
203
+ "button",
204
+ {
205
+ className: "image-edit-button",
206
+ ref: x,
207
+ onClick: () => {
208
+ C("Update Inline Image", (s) => /* @__PURE__ */ e.jsx(
209
+ ce,
210
+ {
211
+ activeEditor: n,
212
+ nodeKey: a,
213
+ onClose: s
214
+ }
215
+ ));
216
+ },
217
+ children: "Edit"
218
+ }
219
+ ),
220
+ /* @__PURE__ */ e.jsx(
221
+ ie,
222
+ {
223
+ className: A ? `focused ${b(D) ? "draggable" : ""}` : null,
224
+ src: o,
225
+ altText: m,
226
+ imageRef: p,
227
+ width: h,
228
+ height: r,
229
+ position: j
230
+ }
231
+ )
232
+ ] }),
233
+ c && /* @__PURE__ */ e.jsx("div", { className: "image-caption-container", children: /* @__PURE__ */ e.jsx(ne, { initialEditor: i, children: /* @__PURE__ */ e.jsx(
234
+ V,
235
+ {
236
+ contentEditable: /* @__PURE__ */ e.jsx(ae, { className: "InlineImageNode__contentEditable" }),
237
+ placeholder: /* @__PURE__ */ e.jsx(se, { className: "InlineImageNode__placeholder", children: "Enter a caption..." }),
238
+ ErrorBoundary: X
239
+ }
240
+ ) }) })
241
+ ] }),
242
+ S
243
+ ] });
244
+ }
245
+ export {
246
+ ce as UpdateInlineImageDialog,
247
+ fe as default
248
+ };
249
+ //# sourceMappingURL=InlineImageComponent-46949279.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineImageComponent-46949279.js","sources":["../src/components/nodes/InlineImageComponent.tsx"],"sourcesContent":["import type { Position } from \"./InlineImageNode\";\nimport type { BaseSelection, LexicalEditor, NodeKey } from \"lexical\";\n\nimport \"./InlineImageNode.css\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport LexicalErrorBoundary from \"@lexical/react/LexicalErrorBoundary\";\nimport { LexicalNestedComposer } from \"@lexical/react/LexicalNestedComposer\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { useLexicalNodeSelection } from \"@lexical/react/useLexicalNodeSelection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n DRAGSTART_COMMAND,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\";\nimport * as React from \"react\";\nimport { Suspense, useCallback, useEffect, useRef, useState } from \"react\";\n\nimport useModal from \"../hooks/useModal\";\nimport Button from \"../ui/Button\";\nimport ContentEditable from \"../ui/ContentEditable\";\nimport { DialogActions } from \"../ui/Dialog\";\nimport Placeholder from \"../ui/Placeholder\";\nimport Select from \"../ui/Select\";\nimport TextInput from \"../ui/TextInput\";\nimport { $isInlineImageNode, InlineImageNode } from \"./InlineImageNode\";\n\nconst imageCache = new Set();\n\nfunction useSuspenseImage(src: string) {\n if (!imageCache.has(src)) {\n throw new Promise((resolve) => {\n const img = new Image();\n img.src = src;\n img.onload = () => {\n imageCache.add(src);\n resolve(null);\n };\n });\n }\n}\n\nfunction LazyImage({\n altText,\n className,\n imageRef,\n src,\n width,\n height,\n position,\n}: {\n altText: string;\n className: string | null;\n height: \"inherit\" | number;\n imageRef: { current: null | HTMLImageElement };\n src: string;\n width: \"inherit\" | number;\n position: Position;\n}): JSX.Element {\n useSuspenseImage(src);\n return (\n <img\n className={className || undefined}\n src={src}\n alt={altText}\n ref={imageRef}\n data-position={position}\n style={{\n display: \"block\",\n height,\n width,\n }}\n draggable=\"false\"\n />\n );\n}\n\nexport function UpdateInlineImageDialog({\n activeEditor,\n nodeKey,\n onClose,\n}: {\n activeEditor: LexicalEditor;\n nodeKey: NodeKey;\n onClose: () => void;\n}): JSX.Element {\n const editorState = activeEditor.getEditorState();\n const node = editorState.read(\n () => $getNodeByKey(nodeKey) as InlineImageNode\n );\n const [altText, setAltText] = useState(node.getAltText());\n const [showCaption, setShowCaption] = useState(node.getShowCaption());\n const [position, setPosition] = useState<Position>(node.getPosition());\n\n const handleShowCaptionChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setShowCaption(e.target.checked);\n };\n\n const handlePositionChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n setPosition(e.target.value as Position);\n };\n\n const handleOnConfirm = () => {\n const payload = { altText, position, showCaption };\n if (node) {\n activeEditor.update(() => {\n node.update(payload);\n });\n }\n onClose();\n };\n\n return (\n <>\n <div style={{ marginBottom: \"1em\" }}>\n <TextInput\n label=\"Alt Text\"\n placeholder=\"Descriptive alternative text\"\n onChange={setAltText}\n value={altText}\n data-test-id=\"image-modal-alt-text-input\"\n />\n </div>\n\n <Select\n style={{ marginBottom: \"1em\", width: \"208px\" }}\n value={position}\n label=\"Position\"\n name=\"position\"\n id=\"position-select\"\n onChange={handlePositionChange}\n >\n <option value=\"left\">Left</option>\n <option value=\"right\">Right</option>\n <option value=\"full\">Full Width</option>\n </Select>\n\n <div className=\"Input__wrapper\">\n <input\n id=\"caption\"\n type=\"checkbox\"\n checked={showCaption}\n onChange={handleShowCaptionChange}\n />\n <label htmlFor=\"caption\">Show Caption</label>\n </div>\n\n <DialogActions>\n <Button\n data-test-id=\"image-modal-file-upload-btn\"\n onClick={() => handleOnConfirm()}\n >\n Confirm\n </Button>\n </DialogActions>\n </>\n );\n}\n\nexport default function InlineImageComponent({\n src,\n altText,\n nodeKey,\n width,\n height,\n showCaption,\n caption,\n position,\n}: {\n altText: string;\n caption: LexicalEditor;\n height: \"inherit\" | number;\n nodeKey: NodeKey;\n showCaption: boolean;\n src: string;\n width: \"inherit\" | number;\n position: Position;\n}): JSX.Element {\n const [modal, showModal] = useModal();\n const imageRef = useRef<null | HTMLImageElement>(null);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n const [isSelected, setSelected, clearSelection] =\n useLexicalNodeSelection(nodeKey);\n const [editor] = useLexicalComposerContext();\n const [selection, setSelection] = useState<BaseSelection | null>(null);\n const activeEditorRef = useRef<LexicalEditor | null>(null);\n\n const onDelete = useCallback(\n (payload: KeyboardEvent) => {\n if (isSelected && $isNodeSelection($getSelection())) {\n const event: KeyboardEvent = payload;\n event.preventDefault();\n const node = $getNodeByKey(nodeKey);\n if ($isInlineImageNode(node)) {\n node.remove();\n return true;\n }\n }\n return false;\n },\n [isSelected, nodeKey]\n );\n\n const onEnter = useCallback(\n (event: KeyboardEvent) => {\n const latestSelection = $getSelection();\n const buttonElem = buttonRef.current;\n if (\n isSelected &&\n $isNodeSelection(latestSelection) &&\n latestSelection.getNodes().length === 1\n ) {\n if (showCaption) {\n // Move focus into nested editor\n $setSelection(null);\n event.preventDefault();\n caption.focus();\n return true;\n } else if (\n buttonElem !== null &&\n buttonElem !== document.activeElement\n ) {\n event.preventDefault();\n buttonElem.focus();\n return true;\n }\n }\n return false;\n },\n [caption, isSelected, showCaption]\n );\n\n const onEscape = useCallback(\n (event: KeyboardEvent) => {\n if (\n activeEditorRef.current === caption ||\n buttonRef.current === event.target\n ) {\n $setSelection(null);\n editor.update(() => {\n setSelected(true);\n const parentRootElement = editor.getRootElement();\n if (parentRootElement !== null) {\n parentRootElement.focus();\n }\n });\n return true;\n }\n return false;\n },\n [caption, editor, setSelected]\n );\n\n useEffect(() => {\n let isMounted = true;\n const unregister = mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n if (isMounted) {\n setSelection(editorState.read(() => $getSelection()));\n }\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_, activeEditor) => {\n activeEditorRef.current = activeEditor;\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand<MouseEvent>(\n CLICK_COMMAND,\n (payload) => {\n const event = payload;\n if (event.target === imageRef.current) {\n if (event.shiftKey) {\n setSelected(!isSelected);\n } else {\n clearSelection();\n setSelected(true);\n }\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n DRAGSTART_COMMAND,\n (event) => {\n if (event.target === imageRef.current) {\n // TODO This is just a temporary workaround for FF to behave like other browsers.\n // Ideally, this handles drag & drop too (and all browsers).\n event.preventDefault();\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_DELETE_COMMAND,\n onDelete,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_BACKSPACE_COMMAND,\n onDelete,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(KEY_ENTER_COMMAND, onEnter, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_ESCAPE_COMMAND, onEscape, COMMAND_PRIORITY_LOW)\n );\n return () => {\n isMounted = false;\n unregister();\n };\n }, [\n clearSelection,\n editor,\n isSelected,\n nodeKey,\n onDelete,\n onEnter,\n onEscape,\n setSelected,\n ]);\n\n const draggable = isSelected && $isNodeSelection(selection);\n const isFocused = isSelected;\n return (\n <Suspense fallback={null}>\n <>\n <div draggable={draggable}>\n <button\n className=\"image-edit-button\"\n ref={buttonRef}\n onClick={() => {\n showModal(\"Update Inline Image\", (onClose) => (\n <UpdateInlineImageDialog\n activeEditor={editor}\n nodeKey={nodeKey}\n onClose={onClose}\n />\n ));\n }}\n >\n Edit\n </button>\n <LazyImage\n className={\n isFocused\n ? `focused ${$isNodeSelection(selection) ? \"draggable\" : \"\"}`\n : null\n }\n src={src}\n altText={altText}\n imageRef={imageRef}\n width={width}\n height={height}\n position={position}\n />\n </div>\n {showCaption && (\n <div className=\"image-caption-container\">\n <LexicalNestedComposer initialEditor={caption}>\n <RichTextPlugin\n contentEditable={\n <ContentEditable className=\"InlineImageNode__contentEditable\" />\n }\n placeholder={\n <Placeholder className=\"InlineImageNode__placeholder\">\n Enter a caption...\n </Placeholder>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n </LexicalNestedComposer>\n </div>\n )}\n </>\n {modal}\n </Suspense>\n );\n}\n"],"names":["imageCache","useSuspenseImage","src","resolve","img","LazyImage","altText","className","imageRef","width","height","position","jsx","UpdateInlineImageDialog","activeEditor","nodeKey","onClose","node","$getNodeByKey","setAltText","useState","showCaption","setShowCaption","setPosition","handleShowCaptionChange","e","handlePositionChange","handleOnConfirm","payload","jsxs","Fragment","TextInput","Select","DialogActions","Button","InlineImageComponent","caption","modal","showModal","useModal","useRef","buttonRef","isSelected","setSelected","clearSelection","useLexicalNodeSelection","editor","useLexicalComposerContext","selection","setSelection","activeEditorRef","onDelete","useCallback","$isNodeSelection","$getSelection","$isInlineImageNode","onEnter","event","latestSelection","buttonElem","$setSelection","onEscape","parentRootElement","useEffect","isMounted","unregister","mergeRegister","editorState","SELECTION_CHANGE_COMMAND","_","COMMAND_PRIORITY_LOW","CLICK_COMMAND","DRAGSTART_COMMAND","KEY_DELETE_COMMAND","KEY_BACKSPACE_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","draggable","isFocused","Suspense","LexicalNestedComposer","RichTextPlugin","ContentEditable","Placeholder","LexicalErrorBoundary"],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import { o as x, p as P, q as S, j as _, u as L, w as v, d as h, s as O, a as $, x as D, v as K } from "./index-3341449c.js";
2
+ import { useRef as T, useContext as N, useMemo as R, useEffect as m, useState as W, useCallback as w } from "react";
3
+ function U(e) {
4
+ return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
5
+ }
6
+ var q = U(function(e) {
7
+ const t = new URLSearchParams();
8
+ t.append("code", e);
9
+ for (let n = 1; n < arguments.length; n++)
10
+ t.append("v", arguments[n]);
11
+ throw Error(`Minified Lexical error #${e}; visit https://lexical.dev/docs/error?${t} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`);
12
+ });
13
+ function b(e) {
14
+ const t = e.transform();
15
+ return t !== null ? /* @__PURE__ */ new Set([t]) : /* @__PURE__ */ new Set();
16
+ }
17
+ function B({ initialEditor: e, children: t, initialNodes: n, initialTheme: d, skipCollabChecks: o }) {
18
+ const r = T(!1), u = N(x);
19
+ u == null && q(9);
20
+ const [l, { getTheme: M }] = u, C = R(() => {
21
+ const i = d || M() || void 0, y = P(u, i);
22
+ if (i !== void 0 && (e._config.theme = i), e._parentEditor = l, n)
23
+ for (let s of n) {
24
+ let c = null, a = null;
25
+ if (typeof s != "function") {
26
+ const f = s;
27
+ s = f.replace, c = f.with, a = f.withKlass || null;
28
+ }
29
+ const g = e._nodes.get(s.getType());
30
+ e._nodes.set(s.getType(), { exportDOM: g ? g.exportDOM : void 0, klass: s, replace: c, replaceWithKlass: a, transforms: b(s) });
31
+ }
32
+ else {
33
+ const s = e._nodes = new Map(l._nodes);
34
+ for (const [c, a] of s)
35
+ e._nodes.set(c, { exportDOM: a.exportDOM, klass: a.klass, replace: a.replace, replaceWithKlass: a.replaceWithKlass, transforms: b(a.klass) });
36
+ }
37
+ return e._config.namespace = l._config.namespace, e._editable = l._editable, [e, y];
38
+ }, []), { isCollabActive: j, yjsDocMap: k } = S(), p = o || r.current || k.has(e.getKey());
39
+ return m(() => {
40
+ p && (r.current = !0);
41
+ }, [p]), m(() => l.registerEditableListener((i) => {
42
+ e.setEditable(i);
43
+ }), [e, l]), _.jsx(x.Provider, { value: C, children: !j || p ? t : null });
44
+ }
45
+ function E(e, t) {
46
+ return e.getEditorState().read(() => {
47
+ const n = D(t);
48
+ return n !== null && n.isSelected();
49
+ });
50
+ }
51
+ function F(e) {
52
+ const [t] = L(), [n, d] = W(() => E(t, e));
53
+ return m(() => {
54
+ let o = !0;
55
+ const r = t.registerUpdateListener(() => {
56
+ o && d(E(t, e));
57
+ });
58
+ return () => {
59
+ o = !1, r();
60
+ };
61
+ }, [t, e]), [n, w((o) => {
62
+ t.update(() => {
63
+ let r = v();
64
+ h(r) || (r = O(), $(r)), h(r) && (o ? r.add(e) : r.delete(e));
65
+ });
66
+ }, [t, e]), w(() => {
67
+ t.update(() => {
68
+ const o = v();
69
+ h(o) && o.clear();
70
+ });
71
+ }, [t])];
72
+ }
73
+ function G({
74
+ className: e,
75
+ style: t
76
+ }) {
77
+ return /* @__PURE__ */ _.jsx(
78
+ K,
79
+ {
80
+ className: e || "ContentEditable__root",
81
+ style: t
82
+ }
83
+ );
84
+ }
85
+ function H({
86
+ children: e,
87
+ className: t
88
+ }) {
89
+ return /* @__PURE__ */ _.jsx("div", { className: t || "Placeholder__root", children: e });
90
+ }
91
+ export {
92
+ G as L,
93
+ H as P,
94
+ B as d,
95
+ F as u
96
+ };
97
+ //# sourceMappingURL=Placeholder-347ad381.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Placeholder-347ad381.js","sources":["../node_modules/@lexical/react/LexicalNestedComposer.prod.mjs","../node_modules/@lexical/react/useLexicalNodeSelection.prod.mjs","../src/components/ui/ContentEditable.tsx","../src/components/ui/Placeholder.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useCollaborationContext as e}from\"@lexical/react/LexicalCollaborationContext\";import{LexicalComposerContext as t,createLexicalComposerContext as r}from\"@lexical/react/LexicalComposerContext\";import{useRef as o,useContext as n,useMemo as l,useEffect as i}from\"react\";import{jsx as a}from\"react/jsx-runtime\";function s(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var c=s((function(e){const t=new URLSearchParams;t.append(\"code\",e);for(let e=1;e<arguments.length;e++)t.append(\"v\",arguments[e]);throw Error(`Minified Lexical error #${e}; visit https://lexical.dev/docs/error?${t} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}));function p(e){const t=e.transform();return null!==t?new Set([t]):new Set}function d({initialEditor:s,children:d,initialNodes:f,initialTheme:u,skipCollabChecks:m}){const h=o(!1),x=n(t);null==x&&c(9);const[_,{getTheme:g}]=x,v=l((()=>{const e=u||g()||void 0,t=r(x,e);if(void 0!==e&&(s._config.theme=e),s._parentEditor=_,f)for(let e of f){let t=null,r=null;if(\"function\"!=typeof e){const o=e;e=o.replace,t=o.with,r=o.withKlass||null}const o=s._nodes.get(e.getType());s._nodes.set(e.getType(),{exportDOM:o?o.exportDOM:void 0,klass:e,replace:t,replaceWithKlass:r,transforms:p(e)})}else{const e=s._nodes=new Map(_._nodes);for(const[t,r]of e)s._nodes.set(t,{exportDOM:r.exportDOM,klass:r.klass,replace:r.replace,replaceWithKlass:r.replaceWithKlass,transforms:p(r.klass)})}return s._config.namespace=_._config.namespace,s._editable=_._editable,[s,t]}),[]),{isCollabActive:w,yjsDocMap:b}=e(),M=m||h.current||b.has(s.getKey());return i((()=>{M&&(h.current=!0)}),[M]),i((()=>_.registerEditableListener((e=>{s.setEditable(e)}))),[s,_]),a(t.Provider,{value:v,children:!w||M?d:null})}export{d as LexicalNestedComposer};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{$getSelection as t,$isNodeSelection as r,$createNodeSelection as o,$setSelection as n,$getNodeByKey as c}from\"lexical\";import{useState as a,useEffect as i,useCallback as l}from\"react\";function d(e,t){return e.getEditorState().read((()=>{const e=c(t);return null!==e&&e.isSelected()}))}function u(c){const[u]=e(),[p,s]=a((()=>d(u,c)));i((()=>{let e=!0;const t=u.registerUpdateListener((()=>{e&&s(d(u,c))}));return()=>{e=!1,t()}}),[u,c]);return[p,l((e=>{u.update((()=>{let a=t();r(a)||(a=o(),n(a)),r(a)&&(e?a.add(c):a.delete(c))}))}),[u,c]),l((()=>{u.update((()=>{const e=t();r(e)&&e.clear()}))}),[u])]}export{u as useLexicalNodeSelection};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport './ContentEditable.css';\n\nimport {ContentEditable} from '@lexical/react/LexicalContentEditable';\nimport * as React from 'react';\n\nexport default function LexicalContentEditable({\n className,\n style,\n}: {\n className?: string;\n style?: React.CSSProperties;\n}): JSX.Element {\n return (\n <ContentEditable\n className={className || 'ContentEditable__root'}\n style={style}\n />\n );\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport './Placeholder.css';\n\nimport * as React from 'react';\nimport {ReactNode} from 'react';\n\nexport default function Placeholder({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}): JSX.Element {\n return <div className={className || 'Placeholder__root'}>{children}</div>;\n}\n"],"names":["s","c","e","p","d","f","u","m","h","o","x","n","t","_","g","v","l","r","w","b","M","i","a","LexicalContentEditable","className","style","jsx","ContentEditable","Placeholder","children"],"mappings":"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","x_google_ignoreList":[0,1]}