@haklex/rich-ext-nested-doc 0.0.81 → 0.0.83

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.
@@ -1 +1 @@
1
- {"version":3,"file":"NestedDocRenderer.d.ts","sourceRoot":"","sources":["../src/NestedDocRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAGvB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,OAAmB,GACpB,EAAE;IACD,KAAK,EAAE,qBAAqB,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,2CAOA"}
1
+ {"version":3,"file":"NestedDocRenderer.d.ts","sourceRoot":"","sources":["../src/NestedDocRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAIvB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,OAAmB,GACpB,EAAE;IACD,KAAK,EAAE,qBAAqB,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,2CAYA"}
@@ -1 +1 @@
1
- {"version":3,"file":"NestedDocStaticDecorator.d.ts","sourceRoot":"","sources":["../src/NestedDocStaticDecorator.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAUrD,UAAU,6BAA6B;IACrC,YAAY,EAAE,qBAAqB,CAAC;CACrC;AAED,wBAAgB,wBAAwB,CAAC,EAAE,YAAY,EAAE,EAAE,6BAA6B,kDA0EvF"}
1
+ {"version":3,"file":"NestedDocStaticDecorator.d.ts","sourceRoot":"","sources":["../src/NestedDocStaticDecorator.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAUrD,UAAU,6BAA6B;IACrC,YAAY,EAAE,qBAAqB,CAAC;CACrC;AAED,wBAAgB,wBAAwB,CAAC,EAAE,YAAY,EAAE,EAAE,6BAA6B,kDAqFvF"}
package/dist/index.mjs CHANGED
@@ -1,273 +1,267 @@
1
- import { C as rendererContent, S as previewSurface, _ as dialogTitle, a as _defineProperty, b as editorArea, c as truncateEditorState, d as dialogHeader, f as dialogHeaderCloseBtn, g as dialogShell, h as dialogPopup, i as NestedDocNode, l as NestedDocRenderer, m as dialogHeaderRight, n as $createNestedDocNode, o as NestedDocStaticDecorator, p as dialogHeaderLeft, r as $isNestedDocNode, s as hasRenderableEditorState, t as NESTED_DOC_BLOCK_TRANSFORMER, u as dialogFooter, v as editOverlay, x as previewEmpty, y as editOverlayRoot } from "./transformer-VVBkt_Yh.js";
2
- import { editorTheme, useColorScheme } from "@haklex/rich-editor";
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import { t as truncateEditorState, h as hasRenderableEditorState, d as dialogPopup, e as editOverlayRoot, r as rendererContent, p as previewSurface, N as NestedDocRenderer, a as previewEmpty, b as editOverlay, $ as $isNestedDocNode, c as dialogShell, f as dialogHeader, g as dialogHeaderLeft, i as dialogTitle, j as dialogHeaderRight, k as dialogHeaderCloseBtn, l as editorArea, m as dialogFooter, n as NestedDocNode } from "./transformer-CeHuyTaK.js";
5
+ import { o, q, s } from "./transformer-CeHuyTaK.js";
6
+ import { useColorScheme, editorTheme } from "@haklex/rich-editor";
3
7
  import { getResolvedEditNodes } from "@haklex/rich-editor/nodes";
4
- import { $getNodeByKey, $insertNodes, COMMAND_PRIORITY_EDITOR, createCommand, createEditor } from "lexical";
5
- import { FileText, Pencil, X } from "lucide-react";
6
- import { createContext, createElement, use, useCallback, useEffect, useMemo, useRef, useState } from "react";
8
+ import { $getNodeByKey, $insertNodes, createEditor, createCommand, COMMAND_PRIORITY_EDITOR } from "lexical";
9
+ import { Pencil, FileText, X } from "lucide-react";
10
+ import { createContext, use, useMemo, useCallback, useRef, useState, createElement, useEffect } from "react";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
7
12
  import { ActionBar, ActionButton } from "@haklex/rich-editor-ui";
8
- import { PortalContainerProvider, usePortalTheme } from "@haklex/rich-style-token";
13
+ import { usePortalTheme, PortalContainerProvider } from "@haklex/rich-style-token";
9
14
  import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
10
- import { jsx, jsxs } from "react/jsx-runtime";
11
- //#region src/NestedDocDialogEditorContext.tsx
12
- var NestedDocDialogEditorContext = createContext(null);
13
- var NestedDocDialogEditorProvider = NestedDocDialogEditorContext.Provider;
15
+ const NestedDocDialogEditorContext = createContext(null);
16
+ const NestedDocDialogEditorProvider = NestedDocDialogEditorContext.Provider;
14
17
  function useNestedDocDialogEditor() {
15
- return use(NestedDocDialogEditorContext);
18
+ return use(NestedDocDialogEditorContext);
16
19
  }
17
- //#endregion
18
- //#region src/NestedDocEditDecorator.tsx
19
- var PREVIEW_NODE_LIMIT = 6;
20
- var EMPTY_EDITOR_STATE = { root: {
21
- children: [{
22
- children: [],
23
- direction: "ltr",
24
- format: "",
25
- indent: 0,
26
- type: "paragraph",
27
- version: 1,
28
- textFormat: 0,
29
- textStyle: ""
30
- }],
31
- direction: "ltr",
32
- format: "",
33
- indent: 0,
34
- type: "root",
35
- version: 1
36
- } };
37
- function NestedDocEditDecorator({ nodeKey, contentEditor, contentState }) {
38
- const [editor] = useLexicalComposerContext();
39
- const colorScheme = useColorScheme();
40
- const { className: portalClassName } = usePortalTheme();
41
- const DialogEditor = useNestedDocDialogEditor();
42
- const previewState = useMemo(() => truncateEditorState(contentState, PREVIEW_NODE_LIMIT), [contentState]);
43
- const hasPreview = hasRenderableEditorState(previewState);
44
- const handleOpenDialog = useCallback(async () => {
45
- if (!DialogEditor) return;
46
- const { presentDialog } = await import("@haklex/rich-editor-ui");
47
- presentDialog({
48
- content: ({ dismiss }) => /* @__PURE__ */ jsx(NestedDocDialogContent, {
49
- DialogEditor,
50
- contentEditor,
51
- initialState: contentEditor.getEditorState().toJSON(),
52
- nodeKey,
53
- parentEditor: editor,
54
- onDismiss: dismiss
55
- }),
56
- className: dialogPopup,
57
- portalClassName,
58
- theme: colorScheme,
59
- showCloseButton: false,
60
- clickOutsideToDismiss: false
61
- });
62
- }, [
63
- DialogEditor,
64
- colorScheme,
65
- contentEditor,
66
- editor,
67
- nodeKey,
68
- portalClassName
69
- ]);
70
- return /* @__PURE__ */ jsxs("div", {
71
- "aria-label": "Open nested document editor",
72
- className: editOverlayRoot,
73
- role: "button",
74
- tabIndex: 0,
75
- onClick: handleOpenDialog,
76
- onKeyDown: (event) => {
77
- if (event.key === "Enter" || event.key === " ") {
78
- event.preventDefault();
79
- handleOpenDialog();
80
- }
81
- },
82
- children: [/* @__PURE__ */ jsx("div", {
83
- className: `${rendererContent} rich-nested-doc-content`,
84
- children: hasPreview ? /* @__PURE__ */ jsx("div", {
85
- className: previewSurface,
86
- children: /* @__PURE__ */ jsx(NestedDocRenderer, { value: previewState })
87
- }) : /* @__PURE__ */ jsx("p", {
88
- className: previewEmpty,
89
- children: "Empty nested document. Click to edit."
90
- })
91
- }), /* @__PURE__ */ jsx("div", {
92
- "aria-hidden": true,
93
- className: editOverlay,
94
- children: /* @__PURE__ */ jsx(Pencil, { size: 24 })
95
- })]
96
- });
20
+ const PREVIEW_NODE_LIMIT = 6;
21
+ const EMPTY_EDITOR_STATE = {
22
+ root: {
23
+ children: [
24
+ {
25
+ children: [],
26
+ direction: "ltr",
27
+ format: "",
28
+ indent: 0,
29
+ type: "paragraph",
30
+ version: 1,
31
+ textFormat: 0,
32
+ textStyle: ""
33
+ }
34
+ ],
35
+ direction: "ltr",
36
+ format: "",
37
+ indent: 0,
38
+ type: "root",
39
+ version: 1
40
+ }
41
+ };
42
+ function NestedDocEditDecorator({
43
+ nodeKey,
44
+ contentEditor,
45
+ contentState
46
+ }) {
47
+ const [editor] = useLexicalComposerContext();
48
+ const colorScheme = useColorScheme();
49
+ const { className: portalClassName } = usePortalTheme();
50
+ const DialogEditor = useNestedDocDialogEditor();
51
+ const previewState = useMemo(
52
+ () => truncateEditorState(contentState, PREVIEW_NODE_LIMIT),
53
+ [contentState]
54
+ );
55
+ const hasPreview = hasRenderableEditorState(previewState);
56
+ const handleOpenDialog = useCallback(async () => {
57
+ if (!DialogEditor) return;
58
+ const { presentDialog } = await import("@haklex/rich-editor-ui");
59
+ presentDialog({
60
+ content: ({ dismiss }) => /* @__PURE__ */ jsx(
61
+ NestedDocDialogContent,
62
+ {
63
+ DialogEditor,
64
+ contentEditor,
65
+ initialState: contentEditor.getEditorState().toJSON(),
66
+ nodeKey,
67
+ parentEditor: editor,
68
+ onDismiss: dismiss
69
+ }
70
+ ),
71
+ className: dialogPopup,
72
+ portalClassName,
73
+ theme: colorScheme,
74
+ showCloseButton: false,
75
+ clickOutsideToDismiss: false
76
+ });
77
+ }, [DialogEditor, colorScheme, contentEditor, editor, nodeKey, portalClassName]);
78
+ return /* @__PURE__ */ jsxs(
79
+ "div",
80
+ {
81
+ "aria-label": "Open nested document editor",
82
+ className: editOverlayRoot,
83
+ role: "button",
84
+ tabIndex: 0,
85
+ onClick: handleOpenDialog,
86
+ onKeyDown: (event) => {
87
+ if (event.key === "Enter" || event.key === " ") {
88
+ event.preventDefault();
89
+ handleOpenDialog();
90
+ }
91
+ },
92
+ children: [
93
+ /* @__PURE__ */ jsx("div", { className: `${rendererContent} rich-nested-doc-content`, children: hasPreview ? /* @__PURE__ */ jsx("div", { className: previewSurface, children: /* @__PURE__ */ jsx(NestedDocRenderer, { value: previewState }) }) : /* @__PURE__ */ jsx("p", { className: previewEmpty, children: "Empty nested document. Click to edit." }) }),
94
+ /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: editOverlay, children: /* @__PURE__ */ jsx(Pencil, { size: 24 }) })
95
+ ]
96
+ }
97
+ );
97
98
  }
98
- function NestedDocDialogContent({ initialState, parentEditor, nodeKey, contentEditor, onDismiss, DialogEditor }) {
99
- const dialogEditorRef = useRef(null);
100
- const [shellEl, setShellEl] = useState(null);
101
- const safeInitialState = initialState?.root?.children?.length > 0 ? initialState : EMPTY_EDITOR_STATE;
102
- const handleDone = useCallback(() => {
103
- const dialogEditor = dialogEditorRef.current;
104
- if (dialogEditor) {
105
- const newState = dialogEditor.getEditorState().toJSON();
106
- const parsed = contentEditor.parseEditorState(newState);
107
- contentEditor.setEditorState(parsed);
108
- parentEditor.update(() => {
109
- const node = $getNodeByKey(nodeKey);
110
- if ($isNestedDocNode(node)) node.setContentState(newState);
111
- });
112
- }
113
- onDismiss();
114
- }, [
115
- contentEditor,
116
- nodeKey,
117
- onDismiss,
118
- parentEditor
119
- ]);
120
- const handleKeyDownCapture = useCallback((event) => {
121
- if (!(event.metaKey || event.ctrlKey)) return;
122
- if (event.key === "Enter" || event.key.toLowerCase() === "s") {
123
- event.preventDefault();
124
- handleDone();
125
- }
126
- }, [handleDone]);
127
- const handleEditorReady = useCallback((editor) => {
128
- dialogEditorRef.current = editor;
129
- }, []);
130
- return /* @__PURE__ */ jsxs("div", {
131
- className: dialogShell,
132
- ref: setShellEl,
133
- onKeyDownCapture: handleKeyDownCapture,
134
- children: [
135
- /* @__PURE__ */ jsxs("div", {
136
- className: dialogHeader,
137
- children: [/* @__PURE__ */ jsx("div", {
138
- className: dialogHeaderLeft,
139
- children: /* @__PURE__ */ jsxs("h3", {
140
- className: dialogTitle,
141
- children: [/* @__PURE__ */ jsx(FileText, { size: 18 }), /* @__PURE__ */ jsx("span", { children: "Nested document" })]
142
- })
143
- }), /* @__PURE__ */ jsx("div", {
144
- className: dialogHeaderRight,
145
- children: /* @__PURE__ */ jsx("button", {
146
- className: dialogHeaderCloseBtn,
147
- title: "Close",
148
- type: "button",
149
- onClick: onDismiss,
150
- children: /* @__PURE__ */ jsx(X, { size: 14 })
151
- })
152
- })]
153
- }),
154
- /* @__PURE__ */ jsx("div", {
155
- className: editorArea,
156
- children: shellEl && /* @__PURE__ */ jsx(PortalContainerProvider, {
157
- value: shellEl,
158
- children: /* @__PURE__ */ jsx(DialogEditor, {
159
- initialValue: safeInitialState,
160
- onEditorReady: handleEditorReady
161
- })
162
- })
163
- }),
164
- /* @__PURE__ */ jsx("div", {
165
- className: dialogFooter,
166
- children: /* @__PURE__ */ jsxs(ActionBar, { children: [/* @__PURE__ */ jsx(ActionButton, {
167
- size: "md",
168
- variant: "ghost",
169
- onClick: onDismiss,
170
- children: "Cancel"
171
- }), /* @__PURE__ */ jsx(ActionButton, {
172
- size: "md",
173
- variant: "accent",
174
- onClick: handleDone,
175
- children: "Save"
176
- })] })
177
- })
178
- ]
179
- });
99
+ function NestedDocDialogContent({
100
+ initialState,
101
+ parentEditor,
102
+ nodeKey,
103
+ contentEditor,
104
+ onDismiss,
105
+ DialogEditor
106
+ }) {
107
+ const dialogEditorRef = useRef(null);
108
+ const [shellEl, setShellEl] = useState(null);
109
+ const safeInitialState = initialState?.root?.children?.length > 0 ? initialState : EMPTY_EDITOR_STATE;
110
+ const handleDone = useCallback(() => {
111
+ const dialogEditor = dialogEditorRef.current;
112
+ if (dialogEditor) {
113
+ const newState = dialogEditor.getEditorState().toJSON();
114
+ const parsed = contentEditor.parseEditorState(newState);
115
+ contentEditor.setEditorState(parsed);
116
+ parentEditor.update(() => {
117
+ const node = $getNodeByKey(nodeKey);
118
+ if ($isNestedDocNode(node)) {
119
+ node.setContentState(newState);
120
+ }
121
+ });
122
+ }
123
+ onDismiss();
124
+ }, [contentEditor, nodeKey, onDismiss, parentEditor]);
125
+ const handleKeyDownCapture = useCallback(
126
+ (event) => {
127
+ const isModifier = event.metaKey || event.ctrlKey;
128
+ if (!isModifier) return;
129
+ if (event.key === "Enter" || event.key.toLowerCase() === "s") {
130
+ event.preventDefault();
131
+ handleDone();
132
+ }
133
+ },
134
+ [handleDone]
135
+ );
136
+ const handleEditorReady = useCallback((editor) => {
137
+ dialogEditorRef.current = editor;
138
+ }, []);
139
+ return /* @__PURE__ */ jsxs("div", { className: dialogShell, ref: setShellEl, onKeyDownCapture: handleKeyDownCapture, children: [
140
+ /* @__PURE__ */ jsxs("div", { className: dialogHeader, children: [
141
+ /* @__PURE__ */ jsx("div", { className: dialogHeaderLeft, children: /* @__PURE__ */ jsxs("h3", { className: dialogTitle, children: [
142
+ /* @__PURE__ */ jsx(FileText, { size: 18 }),
143
+ /* @__PURE__ */ jsx("span", { children: "Nested document" })
144
+ ] }) }),
145
+ /* @__PURE__ */ jsx("div", { className: dialogHeaderRight, children: /* @__PURE__ */ jsx(
146
+ "button",
147
+ {
148
+ className: dialogHeaderCloseBtn,
149
+ title: "Close",
150
+ type: "button",
151
+ onClick: onDismiss,
152
+ children: /* @__PURE__ */ jsx(X, { size: 14 })
153
+ }
154
+ ) })
155
+ ] }),
156
+ /* @__PURE__ */ jsx("div", { className: editorArea, children: shellEl && /* @__PURE__ */ jsx(PortalContainerProvider, { value: shellEl, children: /* @__PURE__ */ jsx(DialogEditor, { initialValue: safeInitialState, onEditorReady: handleEditorReady }) }) }),
157
+ /* @__PURE__ */ jsx("div", { className: dialogFooter, children: /* @__PURE__ */ jsxs(ActionBar, { children: [
158
+ /* @__PURE__ */ jsx(ActionButton, { size: "md", variant: "ghost", onClick: onDismiss, children: "Cancel" }),
159
+ /* @__PURE__ */ jsx(ActionButton, { size: "md", variant: "accent", onClick: handleDone, children: "Save" })
160
+ ] }) })
161
+ ] });
180
162
  }
181
- //#endregion
182
- //#region src/NestedDocEditNode.ts
183
163
  function createContentEditor() {
184
- return createEditor({
185
- namespace: "NestedDocContent",
186
- nodes: getResolvedEditNodes(),
187
- theme: editorTheme,
188
- onError: (error) => {
189
- console.error("[NestedDocContent]", error);
190
- }
191
- });
164
+ return createEditor({
165
+ namespace: "NestedDocContent",
166
+ nodes: getResolvedEditNodes(),
167
+ theme: editorTheme,
168
+ onError: (error) => {
169
+ console.error("[NestedDocContent]", error);
170
+ }
171
+ });
192
172
  }
193
- var NestedDocEditNode = class NestedDocEditNode extends NestedDocNode {
194
- static clone(node) {
195
- const cloned = new NestedDocEditNode(node.__contentState, node.__key);
196
- cloned.__contentEditor = node.__contentEditor;
197
- return cloned;
198
- }
199
- constructor(contentState, key) {
200
- super(contentState, key);
201
- _defineProperty(this, "__contentEditor", void 0);
202
- this.__contentEditor = createContentEditor();
203
- if (contentState) {
204
- const editorState = this.__contentEditor.parseEditorState(contentState);
205
- this.__contentEditor.setEditorState(editorState);
206
- }
207
- }
208
- getContentEditor() {
209
- return this.__contentEditor;
210
- }
211
- static importJSON(serializedNode) {
212
- return new NestedDocEditNode(serializedNode.content);
213
- }
214
- exportJSON() {
215
- return {
216
- ...super.exportJSON(),
217
- type: "nested-doc",
218
- content: this.__contentEditor.getEditorState().toJSON(),
219
- version: 1
220
- };
221
- }
222
- decorate(_editor, _config) {
223
- return createElement(NestedDocEditDecorator, {
224
- nodeKey: this.__key,
225
- contentEditor: this.__contentEditor,
226
- contentState: this.__contentState
227
- });
228
- }
173
+ const _NestedDocEditNode = class _NestedDocEditNode extends NestedDocNode {
174
+ constructor(contentState, key) {
175
+ super(contentState, key);
176
+ __publicField(this, "__contentEditor");
177
+ this.__contentEditor = createContentEditor();
178
+ if (contentState) {
179
+ const editorState = this.__contentEditor.parseEditorState(contentState);
180
+ this.__contentEditor.setEditorState(editorState);
181
+ }
182
+ }
183
+ static clone(node) {
184
+ const cloned = new _NestedDocEditNode(node.__contentState, node.__key);
185
+ cloned.__contentEditor = node.__contentEditor;
186
+ return cloned;
187
+ }
188
+ getContentEditor() {
189
+ return this.__contentEditor;
190
+ }
191
+ static importJSON(serializedNode) {
192
+ return new _NestedDocEditNode(serializedNode.content);
193
+ }
194
+ exportJSON() {
195
+ return {
196
+ ...super.exportJSON(),
197
+ type: "nested-doc",
198
+ content: this.__contentEditor.getEditorState().toJSON(),
199
+ version: 1
200
+ };
201
+ }
202
+ decorate(_editor, _config) {
203
+ return createElement(NestedDocEditDecorator, {
204
+ nodeKey: this.__key,
205
+ contentEditor: this.__contentEditor,
206
+ contentState: this.__contentState
207
+ });
208
+ }
229
209
  };
230
- _defineProperty(NestedDocEditNode, "commandItems", [{
231
- title: "Nested Document",
232
- icon: createElement(FileText, { size: 20 }),
233
- description: "Embed a collapsible nested document",
234
- keywords: [
235
- "nested",
236
- "document",
237
- "nested-doc",
238
- "embed"
239
- ],
240
- section: "ADVANCED",
241
- placement: ["slash", "toolbar"],
242
- group: "insert",
243
- onSelect: (editor) => {
244
- editor.update(() => {
245
- $insertNodes([$createNestedDocEditNode()]);
246
- });
247
- }
248
- }]);
210
+ __publicField(_NestedDocEditNode, "commandItems", [
211
+ {
212
+ title: "Nested Document",
213
+ icon: createElement(FileText, { size: 20 }),
214
+ description: "Embed a collapsible nested document",
215
+ keywords: ["nested", "document", "nested-doc", "embed"],
216
+ section: "ADVANCED",
217
+ placement: ["slash", "toolbar"],
218
+ group: "insert",
219
+ onSelect: (editor) => {
220
+ editor.update(() => {
221
+ $insertNodes([$createNestedDocEditNode()]);
222
+ });
223
+ }
224
+ }
225
+ ]);
226
+ let NestedDocEditNode = _NestedDocEditNode;
249
227
  function $createNestedDocEditNode(contentState) {
250
- return new NestedDocEditNode(contentState);
228
+ return new NestedDocEditNode(contentState);
251
229
  }
252
230
  function $isNestedDocEditNode(node) {
253
- return node instanceof NestedDocEditNode;
231
+ return node instanceof NestedDocEditNode;
254
232
  }
255
- //#endregion
256
- //#region src/NestedDocPlugin.tsx
257
- var INSERT_NESTED_DOC_COMMAND = createCommand("INSERT_NESTED_DOC");
233
+ const INSERT_NESTED_DOC_COMMAND = createCommand("INSERT_NESTED_DOC");
258
234
  function NestedDocPlugin() {
259
- const [editor] = useLexicalComposerContext();
260
- useEffect(() => {
261
- return editor.registerCommand(INSERT_NESTED_DOC_COMMAND, (contentState) => {
262
- $insertNodes([$createNestedDocEditNode(contentState || void 0)]);
263
- return true;
264
- }, COMMAND_PRIORITY_EDITOR);
265
- }, [editor]);
266
- return null;
235
+ const [editor] = useLexicalComposerContext();
236
+ useEffect(() => {
237
+ return editor.registerCommand(
238
+ INSERT_NESTED_DOC_COMMAND,
239
+ (contentState) => {
240
+ $insertNodes([$createNestedDocEditNode(contentState || void 0)]);
241
+ return true;
242
+ },
243
+ COMMAND_PRIORITY_EDITOR
244
+ );
245
+ }, [editor]);
246
+ return null;
267
247
  }
268
- //#endregion
269
- //#region src/index.ts
270
- var nestedDocNodes = [NestedDocNode];
271
- var nestedDocEditNodes = [NestedDocEditNode];
272
- //#endregion
273
- export { $createNestedDocEditNode, $createNestedDocNode, $isNestedDocEditNode, $isNestedDocNode, INSERT_NESTED_DOC_COMMAND, NESTED_DOC_BLOCK_TRANSFORMER, NestedDocDialogEditorProvider, NestedDocEditDecorator, NestedDocEditNode, NestedDocNode, NestedDocPlugin, NestedDocRenderer, NestedDocStaticDecorator, nestedDocEditNodes, nestedDocNodes, useNestedDocDialogEditor };
248
+ const nestedDocNodes = [NestedDocNode];
249
+ const nestedDocEditNodes = [NestedDocEditNode];
250
+ export {
251
+ $createNestedDocEditNode,
252
+ o as $createNestedDocNode,
253
+ $isNestedDocEditNode,
254
+ $isNestedDocNode,
255
+ INSERT_NESTED_DOC_COMMAND,
256
+ q as NESTED_DOC_BLOCK_TRANSFORMER,
257
+ NestedDocDialogEditorProvider,
258
+ NestedDocEditDecorator,
259
+ NestedDocEditNode,
260
+ NestedDocNode,
261
+ NestedDocPlugin,
262
+ NestedDocRenderer,
263
+ s as NestedDocStaticDecorator,
264
+ nestedDocEditNodes,
265
+ nestedDocNodes,
266
+ useNestedDocDialogEditor
267
+ };
@@ -1,2 +1 @@
1
- :root{--rc-text:#000;--rc-text-secondary:#27272a;--rc-text-tertiary:#71717a;--rc-text-quaternary:#a1a1aa;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f4f4f5;--rc-fill:#e8e8ec;--rc-fill-secondary:#eeeeef;--rc-fill-tertiary:#f4f4f6;--rc-fill-quaternary:#f9f9fa;--rc-border:#f4f4f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#3f3f46;--rc-code-bg:#f4f4f5;--rc-hr-border:#e4e4e7;--rc-quote-border:#2563eb;--rc-quote-bg:#eff6ff;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-line-height:1.7;--rc-line-height-tight:1.4;--rc-font-family:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}:root.dark{--rc-text:#fafafa;--rc-text-secondary:#a1a1aa;--rc-text-tertiary:#71717a;--rc-text-quaternary:#52525b;--rc-bg:#09090b;--rc-bg-secondary:#18181b;--rc-bg-tertiary:#27272a;--rc-fill:#2a2a2f;--rc-fill-secondary:#222226;--rc-fill-tertiary:#1b1b1f;--rc-fill-quaternary:#131316;--rc-border:#27272a;--rc-accent:#60a5fa;--rc-accent-light:#60a5fa20;--rc-link:#60a5fa;--rc-code-text:#e4e4e7;--rc-code-bg:#27272a;--rc-hr-border:#27272a;--rc-quote-border:#60a5fa;--rc-quote-bg:#1e3a5f;--rc-alert-info:#7db9e5;--rc-alert-warning:#da864a;--rc-alert-tip:#54da48;--rc-alert-caution:#e16973;--rc-alert-important:#9966e0;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-line-height:1.7;--rc-line-height-tight:1.4;--rc-font-family:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}._1kl9cd60{--rc-text:#000;--rc-text-secondary:#27272a;--rc-text-tertiary:#71717a;--rc-text-quaternary:#a1a1aa;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f4f4f5;--rc-fill:#e8e8ec;--rc-fill-secondary:#eeeeef;--rc-fill-tertiary:#f4f4f6;--rc-fill-quaternary:#f9f9fa;--rc-border:#f4f4f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#3f3f46;--rc-code-bg:#f4f4f5;--rc-hr-border:#e4e4e7;--rc-quote-border:#2563eb;--rc-quote-bg:#eff6ff;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-line-height:1.7;--rc-line-height-tight:1.4;--rc-font-family:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}._1kl9cd61{--rc-text:#000;--rc-text-secondary:#27272a;--rc-text-tertiary:#71717a;--rc-text-quaternary:#a1a1aa;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f4f4f5;--rc-fill:#e8e8ec;--rc-fill-secondary:#eeeeef;--rc-fill-tertiary:#f4f4f6;--rc-fill-quaternary:#f9f9fa;--rc-border:#f4f4f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#3f3f46;--rc-code-bg:#f4f4f5;--rc-hr-border:#e4e4e7;--rc-quote-border:#2563eb;--rc-quote-bg:#eff6ff;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-line-height:1.8;--rc-line-height-tight:1.4;--rc-font-family:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}._1kl9cd62{--rc-text:#000;--rc-text-secondary:#27272a;--rc-text-tertiary:#71717a;--rc-text-quaternary:#a1a1aa;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f4f4f5;--rc-fill:#e8e8ec;--rc-fill-secondary:#eeeeef;--rc-fill-tertiary:#f4f4f6;--rc-fill-quaternary:#f9f9fa;--rc-border:#f4f4f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#3f3f46;--rc-code-bg:#f4f4f5;--rc-hr-border:#e4e4e7;--rc-quote-border:#a1a1aa;--rc-quote-bg:#fafafa;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:none;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:2px;--rc-space-sm:4px;--rc-space-md:10px;--rc-space-lg:16px;--rc-space-xl:20px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:14px;--rc-font-size-small:12px;--rc-line-height:1.5;--rc-line-height-tight:1.3;--rc-font-family:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm:3px;--rc-radius-md:6px;--rc-radius-lg:12px}.dark ._1kl9cd60,[data-theme=dark] ._1kl9cd60,.dark._1kl9cd60,[data-theme=dark]._1kl9cd60,.dark ._1kl9cd61,[data-theme=dark] ._1kl9cd61,.dark._1kl9cd61,[data-theme=dark]._1kl9cd61,.dark ._1kl9cd62,[data-theme=dark] ._1kl9cd62,.dark._1kl9cd62,[data-theme=dark]._1kl9cd62{--rc-text:#fafafa;--rc-text-secondary:#a1a1aa;--rc-text-tertiary:#71717a;--rc-text-quaternary:#52525b;--rc-bg:#09090b;--rc-bg-secondary:#18181b;--rc-bg-tertiary:#27272a;--rc-fill:#2a2a2f;--rc-fill-secondary:#222226;--rc-fill-tertiary:#1b1b1f;--rc-fill-quaternary:#131316;--rc-border:#27272a;--rc-accent:#60a5fa;--rc-accent-light:#60a5fa20;--rc-link:#60a5fa;--rc-code-text:#e4e4e7;--rc-code-bg:#27272a;--rc-hr-border:#27272a;--rc-quote-border:#60a5fa;--rc-quote-bg:#1e3a5f;--rc-alert-info:#7db9e5;--rc-alert-warning:#da864a;--rc-alert-tip:#54da48;--rc-alert-caution:#e16973;--rc-alert-important:#9966e0;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006}@keyframes ds1tv41{to{--rc-hl-highlighted:1}}@keyframes ds1tv42{0%{background-color:#ef44443d}to{background-color:#0000}}.ds1tv40{font-family:var(--rc-font-family);font-size:var(--rc-font-size-base);line-height:var(--rc-line-height);color:var(--rc-text);word-wrap:break-word;overflow-wrap:break-word}.ds1tv40 .rich-paragraph{line-height:var(--rc-line-height);margin:0 0 1em}.ds1tv40 .rich-text-bold{font-weight:700}.ds1tv40 .rich-text-italic{font-style:italic}.ds1tv40 .rich-text-underline{text-decoration:underline}.ds1tv40 .rich-text-strikethrough{opacity:.65;text-decoration:line-through}.ds1tv40 .rich-text-superscript{vertical-align:super;font-size:.8em}.ds1tv40 .rich-text-subscript{vertical-align:sub;font-size:.8em}.ds1tv40 .rich-text-code{font-family:var(--rc-font-mono);background-color:var(--rc-code-bg);color:var(--rc-code-text);border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border);padding:2px 6px;font-size:.9em}[contenteditable=true] .rich-text-code{padding-right:0}.ds1tv40 mark{background:0 0}.ds1tv40 .rich-text-highlight{--rc-hl-lightness:.3;--rc-hl-highlighted:1;--rc-hl-color:oklch(from var(--rc-accent) l c h / var(--rc-hl-lightness));background:linear-gradient(120deg, var(--rc-hl-color,lightblue) 50%, transparent 50%) 110% 0 / 200% 100% no-repeat;background-position:calc((1 - var(--rc-hl-highlighted)) * 110%) 0;color:var(--rc-text);transition:background-position 1s}[contenteditable=true] .rich-text-highlight{--rc-hl-highlighted:1;animation:none}[data-theme=dark] .ds1tv40 .rich-text-highlight{--rc-hl-lightness:.35}.ds1tv40 :-webkit-any(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6){position:relative}.ds1tv40 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6){position:relative}.ds1tv40 .rich-heading-anchor{color:var(--rc-text-secondary);opacity:0;align-items:center;font-size:.8rem;text-decoration:none;transition:opacity .15s;display:flex;position:absolute;top:0;bottom:0;left:-1.25rem}.ds1tv40 .rich-heading-anchor svg{flex-shrink:0}.ds1tv40 :-webkit-any(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6):hover .rich-heading-anchor{opacity:.5}.ds1tv40 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6):hover .rich-heading-anchor{opacity:.5}.ds1tv40 :-webkit-any(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6):hover .rich-heading-anchor:hover{opacity:1}.ds1tv40 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6):hover .rich-heading-anchor:hover{opacity:1}[contenteditable=true] .rich-heading-h1:before,[contenteditable=true] .rich-heading-h2:before,[contenteditable=true] .rich-heading-h3:before,[contenteditable=true] .rich-heading-h4:before,[contenteditable=true] .rich-heading-h5:before,[contenteditable=true] .rich-heading-h6:before{color:var(--rc-text-secondary);opacity:.6;pointer-events:none;font-size:.5rem;font-weight:600;font-family:var(--rc-font-mono);display:flex;position:absolute;bottom:.5rem;left:-1.5rem}[contenteditable=true] .rich-heading-h1:before{content:"H1"}[contenteditable=true] .rich-heading-h2:before{content:"H2"}[contenteditable=true] .rich-heading-h3:before{content:"H3"}[contenteditable=true] .rich-heading-h4:before{content:"H4"}[contenteditable=true] .rich-heading-h5:before{content:"H5"}[contenteditable=true] .rich-heading-h6:before{content:"H6"}.ds1tv40 .rich-heading-h1{font-size:2em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.5em;margin-bottom:.5em}.ds1tv40 .rich-heading-h2{font-size:1.5em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.4em;margin-bottom:.45em}.ds1tv40 .rich-heading-h3{font-size:1.25em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.3em;margin-bottom:.4em}.ds1tv40 .rich-heading-h4{font-size:1.125em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.2em;margin-bottom:.35em}.ds1tv40 .rich-heading-h5{font-size:1em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.1em;margin-bottom:.3em}.ds1tv40 .rich-heading-h6{font-size:.875em;font-weight:600;line-height:var(--rc-line-height-tight);color:var(--rc-text);margin-top:1em;margin-bottom:.25em}.ds1tv40 .rich-link{color:var(--rc-link);text-decoration:none;transition:color .2s}.ds1tv40 .rich-link:hover{text-decoration:underline}.ds1tv40 .rich-link[data-favicon=loaded]:before{content:"";vertical-align:-.125em;background-image:var(--rc-link-favicon);background-position:50%;background-repeat:no-repeat;background-size:contain;border-radius:2px;width:1em;height:1em;margin-right:.2em;display:inline-block}.ds1tv40 .rich-link-favicon{vertical-align:-.125em;align-items:center;margin-right:.15em;display:inline-flex}.ds1tv40 .rich-link-favicon img{object-fit:contain;border-radius:2px;width:1em;height:1em}.ds1tv40 .rich-link-favicon svg{width:.9em;height:.9em}.ds1tv40 .rich-list-ol{padding-left:var(--rc-space-lg);margin-bottom:1em;list-style-type:decimal}.ds1tv40 .rich-list-ul{padding-left:var(--rc-space-lg);margin-bottom:1em;list-style-type:disc}.ds1tv40 .rich-list-item{margin-bottom:.25em}.ds1tv40 .rich-list-nested-item{list-style-type:none}.ds1tv40 .rich-list-nested-item .rich-list-ol{list-style-type:lower-alpha}.ds1tv40 .rich-list-nested-item .rich-list-ul{list-style-type:circle}.ds1tv40 .rich-checklist{padding-left:0;list-style-type:none}.ds1tv40 .rich-list-item.rich-list-item-checked,.ds1tv40 .rich-list-item.rich-list-item-unchecked{--rc-cb-size:1.125rem;outline:none;padding-left:2em;list-style-type:none;transition:color .25s;position:relative}.ds1tv40 .rich-list-item.rich-list-item-unchecked:before,.ds1tv40 .rich-list-item.rich-list-item-checked:before{content:"";left:0;top:calc((1lh - var(--rc-cb-size)) / 2);width:var(--rc-cb-size);height:var(--rc-cb-size);border:1.5px solid var(--rc-text-quaternary);border-radius:var(--rc-radius-sm);box-sizing:border-box;cursor:pointer;background-color:#0000;transition:background-color .25s cubic-bezier(.4,0,.2,1),border-color .25s cubic-bezier(.4,0,.2,1),transform .15s;position:absolute}[contenteditable=true] .ds1tv40 .rich-list-item.rich-list-item-unchecked:hover:before{border-color:var(--rc-text-tertiary)}[contenteditable=true] .ds1tv40 .rich-list-item.rich-list-item-unchecked:active:before,[contenteditable=true] .ds1tv40 .rich-list-item.rich-list-item-checked:active:before{transform:scale(.94)}.ds1tv40 .rich-list-item.rich-list-item-unchecked:after,.ds1tv40 .rich-list-item.rich-list-item-checked:after{content:"";left:calc(var(--rc-cb-size) * .32);top:calc((1lh - var(--rc-cb-size)) / 2 + var(--rc-cb-size) * .14);width:calc(var(--rc-cb-size) * .28);height:calc(var(--rc-cb-size) * .55);border-right:2px solid var(--rc-accent);border-bottom:2px solid var(--rc-accent);box-sizing:border-box;pointer-events:none;transform-origin:50%;opacity:0;transition:transform .3s cubic-bezier(.34,1.56,.64,1) .1s,opacity .15s;display:block;position:absolute;transform:rotate(45deg)scale(0)}.ds1tv40 .rich-list-item.rich-list-item-checked:before{border-color:var(--rc-accent);background-color:var(--rc-accent-light)}[contenteditable=true] .ds1tv40 .rich-list-item.rich-list-item-checked:hover:before{background-color:color-mix(in oklab, var(--rc-accent) 12%, transparent)}.ds1tv40 .rich-list-item.rich-list-item-checked:after{opacity:1;transform:rotate(45deg)scale(1)}.ds1tv40 .rich-list-item-checked{color:var(--rc-text-secondary)}.ds1tv40 .rich-list-item.rich-list-item-checked>*,.ds1tv40 .rich-list-item.rich-list-item-unchecked>*{background-image:linear-gradient(var(--rc-text-secondary), var(--rc-text-secondary));background-position:0;background-repeat:no-repeat;background-size:0% 1.5px;transition:background-size .35s cubic-bezier(.4,0,.2,1) .15s,opacity .15s}.ds1tv40 .rich-list-item.rich-list-item-checked>*{opacity:.5;background-size:100% 1.5px}.ds1tv40 .rich-quote{background-color:var(--rc-quote-bg);margin:var(--rc-space-md) 0;padding:var(--rc-space-sm) var(--rc-space-md);padding-left:calc(var(--rc-space-md) + 4px);color:var(--rc-text-secondary);border-radius:0 var(--rc-radius-sm) var(--rc-radius-sm) 0;font-style:italic;position:relative}.ds1tv40 .rich-quote:before{content:"";border-radius:var(--rc-radius-sm);background-color:var(--rc-quote-border);width:4px;position:absolute;top:0;bottom:0;left:0}.ds1tv40 .rich-quote>.rich-paragraph:first-child{margin-top:0}.ds1tv40 .rich-quote>.rich-paragraph:last-child{margin-bottom:0}.ds1tv40 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}.ds1tv40 .rich-table-scrollable-wrapper{overflow-x:auto}.ds1tv40 .rich-table{border-collapse:separate;border-spacing:0;width:100%;margin:var(--rc-space-lg) 0;font-size:var(--rc-font-size-small);border:1px solid var(--rc-border);border-radius:var(--rc-radius-md);overflow:hidden}.ds1tv40 .rich-table-cell{border:none;border-bottom:1px solid var(--rc-border);border-right:1px solid var(--rc-border);padding:1.25em var(--rc-space-lg);text-align:left;vertical-align:middle;line-height:1.5}.ds1tv40 .rich-table-cell:last-child{border-right:none}.ds1tv40 .rich-table tbody tr:last-child .rich-table-cell{border-bottom:none}.ds1tv40 .rich-table-cell .rich-paragraph{line-height:inherit;margin:0;padding:0}.ds1tv40 .rich-table-cell>:first-child{margin-top:0}.ds1tv40 .rich-table-cell>:last-child{margin-bottom:0}.ds1tv40 .rich-table-cell-header{border:none;border-bottom:1px solid var(--rc-border);border-right:1px solid var(--rc-border);padding:var(--rc-space-md) var(--rc-space-lg);text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--rc-text-secondary);background-color:var(--rc-bg-secondary);vertical-align:middle;z-index:1;font-size:.75em;font-weight:600;line-height:1.5;position:sticky;top:0}.ds1tv40 .rich-table-cell-header:last-child{border-right:none}.ds1tv40 .rich-table-cell-header .rich-paragraph{line-height:inherit;margin:0;padding:0}.ds1tv40 .rich-table-cell-header>:first-child{margin-top:0}.ds1tv40 .rich-table-cell-header>:last-child{margin-bottom:0}.ds1tv40 img{border-radius:var(--rc-radius-md);max-width:100%;height:auto}.ds1tv40 .rich-spoiler{background-color:var(--rc-text);color:#0000;border-radius:var(--rc-radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;padding-inline-start:4px;padding-inline-end:4px;transition:background-color .3s,color .3s}[contenteditable=true] .rich-spoiler{background-color:color-mix(in srgb, var(--rc-text) 30%, transparent);color:inherit;-webkit-user-select:auto;user-select:auto;cursor:text}.ds1tv40 .rich-spoiler:hover,.ds1tv40 .rich-spoiler-revealed{color:inherit;-webkit-user-select:auto;user-select:auto;background-color:#0000}.ds1tv40 .rich-tag{font-size:var(--rc-font-size-small);vertical-align:baseline;border-radius:999px;padding-inline-start:.75em;padding-inline-end:.75em;line-height:1.6;display:inline-block}.ds1tv40 .rich-ruby{ruby-position:over;ruby-align:center}.ds1tv40 .rich-ruby-rt{color:var(--rc-text-secondary);-webkit-user-select:none;user-select:none;font-size:.58em;line-height:1}[contenteditable=true] .rich-ruby[data-ruby]{padding-top:.72em;line-height:1.2;display:inline-block;position:relative}[contenteditable=true] .rich-ruby[data-ruby]:before{content:attr(data-ruby);text-align:center;color:var(--rc-text-secondary);pointer-events:none;white-space:nowrap;font-size:.58em;line-height:1;position:absolute;top:0;left:0;right:0;transform:translateY(-.68em)}.ds1tv40 .rich-footnote{vertical-align:super;font-size:.8em}.ds1tv40 .rich-footnote-ref{min-width:1.5em;color:var(--rc-accent);background-color:var(--rc-accent-light);border-radius:999px;justify-content:center;align-items:center;padding:0 .35em;font-size:.82em;font-weight:600;line-height:1.45;text-decoration:none;transition:filter .15s;display:inline-flex}.ds1tv40 .rich-footnote-ref:hover{filter:brightness(.96)}.ds1tv40 .rich-footnote-highlight{animation:1.2s ease-out ds1tv42}.ds1tv40 .rich-footnote-ref-wrapper{display:inline;position:relative}.ds1tv40 .rich-footnote-section{margin-top:var(--rc-space-lg)}.ds1tv40 .rich-footnote-section-divider{border:none;border-top:1px solid var(--rc-border);margin:var(--rc-space-lg) 0 var(--rc-space-md)}.ds1tv40 .rich-footnote-section-list{padding-left:var(--rc-space-lg);font-size:var(--rc-font-size-small);color:var(--rc-text-secondary);line-height:1.6;list-style-type:decimal}.ds1tv40 .rich-footnote-section-item{margin-bottom:var(--rc-space-sm);padding-left:var(--rc-space-xs)}.ds1tv40 .rich-footnote-back-ref{margin-left:var(--rc-space-xs);color:var(--rc-accent);font-size:.85em;font-family:var(--rc-font-mono);align-items:center;text-decoration:none;transition:opacity .15s;display:inline-flex}.ds1tv40 .rich-footnote-back-ref:hover{opacity:.7}.ds1tv40 .rich-footnote-section-item-edit{align-items:center;gap:var(--rc-space-sm);list-style-type:none;display:flex}.ds1tv40 .rich-footnote-section-item-num{color:var(--rc-text-secondary);font-size:var(--rc-font-size-small);flex-shrink:0;min-width:1.5em;font-weight:600}.ds1tv40 .rich-footnote-section-item-input{border:1px solid var(--rc-border);border-radius:var(--rc-radius-sm);padding:var(--rc-space-xs) var(--rc-space-sm);font-size:var(--rc-font-size-small);color:var(--rc-text);background-color:#0000;outline:none;flex:1;transition:border-color .15s}.ds1tv40 .rich-footnote-section-item-input:focus{border-color:var(--rc-accent)}.ds1tv40 .rich-footnote-section-item-remove{width:20px;height:20px;color:var(--rc-text-secondary);cursor:pointer;border-radius:var(--rc-radius-sm);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;transition:color .15s,background-color .15s;display:inline-flex}.ds1tv40 .rich-footnote-section-item-remove:hover{color:#ef4444;background-color:#ef44441a}.rich-drag-handle{cursor:grab;border-radius:var(--rc-radius-sm);width:20px;height:20px;color:var(--rc-text-secondary);opacity:.4;z-index:10;justify-content:center;align-items:center;transition:opacity .15s,background-color .15s;display:flex;position:absolute}.rich-drag-handle:hover{opacity:1;background-color:var(--rc-fill-secondary)}.rich-drag-handle:active{cursor:grabbing}.rich-drop-indicator{background-color:var(--rc-accent);pointer-events:none;z-index:10;border-radius:1px;height:2px;position:absolute}.ds1tv40 .rich-alert{background-color:#0000;border:none;border-radius:0;margin:2em 0;padding:0 1em}.ds1tv40>:first-child,.ds1tv40 .rich-editor__content>:first-child{margin-top:0}.ds1tv40>:last-child,.ds1tv40 .rich-editor__content>:last-child{margin-bottom:0}@supports (animation-timeline:view()){.ds1tv40 .rich-text-highlight{--rc-hl-highlighted:0;animation:step-end both ds1tv41;animation-timeline:view();animation-range:entry 100% cover 10%}}._1pke0ca0{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);color:var(--rc-text);line-height:1.75}._1pke0ca0 .rich-paragraph{margin-top:1.5em;margin-bottom:1.5em}._1pke0ca0 .rich-heading-h1{color:var(--rc-text);margin-top:0;margin-bottom:.833333em;font-size:3em;font-weight:800;line-height:1}._1pke0ca0 .rich-heading-h2{color:var(--rc-text);margin-top:1.86667em;margin-bottom:1.06667em;font-size:1.875em;font-weight:700;line-height:1.33333}._1pke0ca0 .rich-heading-h3{color:var(--rc-text);margin-top:1.66667em;margin-bottom:.666667em;font-size:1.5em;font-weight:600;line-height:1.5}._1pke0ca0 .rich-heading-h4{color:var(--rc-text);margin-top:2em;margin-bottom:.5em;font-weight:600;line-height:1.5625}._1pke0ca0 .rich-heading-h2+*,._1pke0ca0 .rich-heading-h3+*,._1pke0ca0 .rich-heading-h4+*{margin-top:0}._1pke0ca0 .rich-quote{color:var(--rc-text);quotes:"“""”""‘""’";background-color:#0000;border-radius:0;margin-top:2.5em;margin-bottom:2.5em;padding-left:calc(1.5em + 4px);font-style:italic;font-weight:500}._1pke0ca0 .rich-quote .rich-paragraph:first-of-type:before{content:open-quote}._1pke0ca0 .rich-quote .rich-paragraph:last-of-type:after{content:close-quote}._1pke0ca0 .rich-quote .rich-paragraph:first-child{margin-top:0}._1pke0ca0 .rich-quote .rich-paragraph:last-child{margin-bottom:0}._1pke0ca0 .rich-text-code{color:var(--rc-text);background-color:var(--rc-code-bg);border-radius:var(--rc-radius-sm);font-size:.875em;font-weight:600;font-family:var(--rc-font-mono);padding:.2em .4em}._1pke0ca0 .rich-text-code:before,._1pke0ca0 .rich-text-code:after{content:"`";color:var(--rc-text-secondary);opacity:.5}._1pke0ca0 [contenteditable=true] .rich-text-code:before,._1pke0ca0 [contenteditable=true] .rich-text-code:after{content:""}._1pke0ca0 .rich-code-block{color:var(--rc-text);background-color:var(--rc-code-bg);border-radius:.375rem;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.75}._1pke0ca0 .rich-code-block pre{margin:0;padding:1em 1.5em}._1pke0ca0 .rich-list-ul,._1pke0ca0 .rich-list-ol{margin-top:1.5em;margin-bottom:1.5em;padding-left:1.75em}._1pke0ca0 .rich-list-item{margin-top:.75em;margin-bottom:.75em;padding-left:.5em}._1pke0ca0 .rich-list-item .rich-paragraph{margin-top:1em;margin-bottom:1em}._1pke0ca0 .rich-list-item>.rich-paragraph:first-child{margin-top:1.5em}._1pke0ca0 .rich-list-item>.rich-paragraph:last-child{margin-bottom:1.5em}._1pke0ca0 .rich-list-ul .rich-list-ul,._1pke0ca0 .rich-list-ul .rich-list-ol,._1pke0ca0 .rich-list-ol .rich-list-ul,._1pke0ca0 .rich-list-ol .rich-list-ol{margin-top:1em;margin-bottom:1em}._1pke0ca0 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.5}._1pke0ca0 .rich-table .rich-paragraph{line-height:inherit;margin:0;padding:0}._1pke0ca0 .rich-image{margin-top:2em;margin-bottom:2em}._1pke0ca0 .rich-image>*{margin-top:0;margin-bottom:0}._1pke0ca0 .rich-image figcaption{color:var(--rc-text-secondary);margin-top:1em;font-size:.875em;line-height:1.5}._1pke0ca0 .rich-hr{border-color:var(--rc-hr-border);border-top-width:1px;width:60px;margin:3.5em auto}._1pke0ca0 .rich-hr+*{margin-top:0}._1pke0ca0 .rich-link{font-weight:500;text-decoration:underline}._1pke0ca0 .rich-banner,._1pke0ca0 .rich-code-snippet,._1pke0ca0 .rich-details{margin:2em 0}._1pke0ca0>:first-child{margin-top:0}._1pke0ca0>:last-child{margin-bottom:0}._1iyoz3l0{font-size:var(--rc-font-size-base);line-height:var(--rc-line-height)}._1iyoz3l0 .rich-paragraph{margin-bottom:.6em}._1iyoz3l0 .rich-heading-h1{margin-top:.8em;margin-bottom:.3em;font-size:1.35em;font-weight:700}._1iyoz3l0 .rich-heading-h2{margin-top:.7em;margin-bottom:.25em;font-size:1.2em;font-weight:700}._1iyoz3l0 .rich-heading-h3{margin-top:.6em;margin-bottom:.2em;font-size:1.1em;font-weight:600}._1iyoz3l0 .rich-heading-h4{margin-top:.5em;margin-bottom:.15em;font-size:1em;font-weight:600}._1iyoz3l0 .rich-heading-h5{margin-top:.45em;margin-bottom:.1em;font-size:.9em;font-weight:600}._1iyoz3l0 .rich-heading-h6{margin-top:.4em;margin-bottom:.1em;font-size:.85em;font-weight:600}._1iyoz3l0 .rich-quote{padding:var(--rc-space-sm) var(--rc-space-md);padding-left:calc(var(--rc-space-md) + 3px);margin:var(--rc-space-sm) 0;font-size:.95em}._1iyoz3l0 .rich-quote:before{width:3px}._1iyoz3l0 .rich-list-ol,._1iyoz3l0 .rich-list-ul{padding-left:var(--rc-space-md);margin-bottom:.6em}._1iyoz3l0 .rich-list-item{margin-bottom:.1em}._1iyoz3l0 .rich-code-block{margin:var(--rc-space-sm) 0;border-radius:var(--rc-radius-sm);font-size:var(--rc-font-size-small)}._1iyoz3l0 .rich-code-block pre{padding:var(--rc-space-sm)}._1iyoz3l0 .line:before{display:none!important}._1iyoz3l0 .rich-table{margin:var(--rc-space-sm) 0;font-size:var(--rc-font-size-small)}._1iyoz3l0 .rich-table-cell,._1iyoz3l0 .rich-table-cell-header{padding:var(--rc-space-xs) var(--rc-space-sm)}._1iyoz3l0 .rich-image{margin:var(--rc-space-sm) 0}._1iyoz3l0 .rich-image figcaption{font-size:var(--rc-font-size-small)}._1iyoz3l0 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}._1iyoz3l0 .rich-alert{padding:var(--rc-space-sm) var(--rc-space-md);padding-left:var(--rc-space-lg);margin:var(--rc-space-sm) 0}._1iyoz3l0 .rich-katex-block{padding:var(--rc-space-sm) 0;margin:var(--rc-space-sm) 0}.g7jfj60{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);color:var(--rc-text);line-height:1.8}.g7jfj60>.rich-paragraph,.g7jfj60 .rich-editor__content>.rich-paragraph,.g7jfj60 .rich-content__body>.rich-paragraph{margin-top:1.25em;margin-bottom:1.25em;line-height:1.8}.g7jfj60>.rich-paragraph:first-of-type,.g7jfj60 .rich-editor__content>.rich-paragraph:first-of-type,.g7jfj60 .rich-content__body>.rich-paragraph:first-of-type{margin-top:0;margin-bottom:2rem}.g7jfj60>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.g7jfj60 .rich-editor__content>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.g7jfj60 .rich-content__body>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child{margin-inline-start:2rem}.g7jfj60>.rich-paragraph:first-of-type:first-letter,.g7jfj60 .rich-content__body>.rich-paragraph:first-of-type:first-letter{float:left;margin-right:.2em;font-size:2.4em;line-height:1}.g7jfj60 .rich-editor__content>.rich-paragraph:first-of-type:first-letter{color:var(--rc-accent);font-size:1.5em;font-weight:700}.g7jfj60>.rich-paragraph:last-child,.g7jfj60 .rich-editor__content>.rich-paragraph:last-child,.g7jfj60 .rich-content__body>.rich-paragraph:last-child{margin-bottom:0}.g7jfj60 .rich-text-bold{font-family:var(--rc-font-family);color:var(--rc-text);font-weight:600}.g7jfj60 .rich-heading-h1{letter-spacing:-.025em;color:var(--rc-text);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.g7jfj60 .rich-heading-h2{letter-spacing:-.025em;color:var(--rc-text);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.g7jfj60 .rich-heading-h2+*{margin-top:0}.g7jfj60 .rich-heading-h3{letter-spacing:-.025em;color:var(--rc-text);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.g7jfj60 .rich-heading-h3+*{margin-top:0}.g7jfj60 .rich-heading-h4{color:var(--rc-text);margin-top:1.5em;margin-bottom:.5em;font-size:1.125em;font-weight:600;line-height:1.5}.g7jfj60 .rich-heading-h4+*{margin-top:0}.g7jfj60 .rich-heading-h5{color:var(--rc-text);margin-top:1.5em;margin-bottom:.5em;font-size:1em;font-weight:600;line-height:1.5}.g7jfj60 .rich-heading-h5+*{margin-top:0}.g7jfj60 .rich-heading-h6{color:var(--rc-text);text-transform:uppercase;margin-top:1.5em;margin-bottom:.5em;font-size:.875em;font-weight:600;line-height:1.5}.g7jfj60 .rich-heading-h6+*{margin-top:0}.g7jfj60 .rich-quote{color:inherit;background-color:color-mix(in srgb, var(--rc-accent) 10%, transparent);border-radius:0;margin:1.6em -1rem;padding:1em 2em;font-style:normal;line-height:1.8}.g7jfj60 .rich-quote:before{display:none}.g7jfj60 .rich-quote .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.g7jfj60 .rich-link{text-underline-offset:2px;font-weight:500;text-decoration:underline;text-decoration-thickness:1px;transition:color .15s}.g7jfj60 .rich-link:hover{text-decoration-thickness:2px}.g7jfj60 .rich-text-code{font-size:.875em;font-family:var(--rc-font-mono);border-radius:var(--rc-radius-sm);background-color:var(--rc-code-bg);padding:.2em .4em;font-weight:500}.g7jfj60 .rich-list-ol,.g7jfj60 .rich-list-ul{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.g7jfj60 .rich-list-ol{list-style-type:decimal}.g7jfj60 .rich-list-ul{list-style-type:disc}.g7jfj60 .rich-list-item{margin-top:.5em;margin-bottom:.5em;padding-left:.375em}.g7jfj60 .rich-list-item::marker{color:var(--rc-text-secondary)}.g7jfj60 .rich-code-block{border-radius:var(--rc-radius-md);margin-top:1.71429em;margin-bottom:1.71429em;font-size:.875em;line-height:1.71429;overflow-x:auto}.g7jfj60 .rich-code-block pre{margin:0;padding:.857143em 1.14286em}.g7jfj60 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.g7jfj60 .rich-table .rich-paragraph{line-height:inherit;margin:0;padding:0}.g7jfj60 .rich-table .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.g7jfj60 .rich-image{margin-top:2em;margin-bottom:2em}.g7jfj60 .rich-image img{border-radius:var(--rc-radius-md)}.g7jfj60 .rich-image figcaption{color:var(--rc-text-secondary);text-align:center;margin-top:.857143em;font-size:.875em;line-height:1.42857}.g7jfj60 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);opacity:.2;width:60px;margin:.5rem auto}.g7jfj60 .rich-katex-block{margin-top:1.6em;margin-bottom:1.6em;padding:1em 0;overflow-x:auto}.g7jfj60 .rich-spoiler{border-radius:var(--rc-radius-sm);padding-inline-start:.25em;padding-inline-end:.25em}.g7jfj60>:first-child{margin-top:0}.g7jfj60>:last-child{margin-bottom:0}._1an6v8d0{cursor:pointer;margin:var(--rc-space-md) 0;border-radius:var(--rc-radius-md);border:1px solid var(--rc-border);display:block;position:relative;overflow:clip}._1an6v8d1{color:#fff;opacity:0;pointer-events:none;background:#00000059;justify-content:center;align-items:center;transition:opacity .2s,background .2s;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}._1an6v8d0:hover ._1an6v8d1{opacity:1;background:#00000080}._1an6v8d2{padding-block:var(--rc-space-md);padding-inline:var(--rc-space-xl);max-height:300px;overflow:clip}._1an6v8d3._1an6v8d3{gap:0;width:900px;max-width:90vw;max-height:min(900px,100vh - 1rem);padding:0;overflow:hidden}._1an6v8d4{background:var(--rc-bg);grid-template-rows:auto minmax(0,1fr) auto;height:min(800px,100vh - 1rem);display:grid}._1an6v8d5{border-bottom:1px solid var(--rc-border);flex-shrink:0;justify-content:space-between;align-items:center;height:48px;padding:0 .5rem 0 1rem;display:flex}._1an6v8d6{align-items:center;gap:.5rem;display:flex}._1an6v8d7{font-size:var(--rc-font-size-md);color:var(--rc-text);align-items:center;gap:.5rem;margin:0;font-weight:500;display:flex}._1an6v8d8{align-items:center;gap:4px;display:flex}._1an6v8d9{cursor:pointer;width:28px;height:28px;color:var(--rc-text-secondary);background:0 0;border:none;border-radius:.25rem;justify-content:center;align-items:center;transition:color .15s;display:inline-flex}._1an6v8d9:hover{color:var(--rc-text)}._1an6v8da{border-bottom:1px solid var(--rc-border);background:var(--rc-bg);padding:0 .75rem .5rem}._1an6v8db{max-width:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background-color:#0000;border:none;border-radius:0;margin:0;position:sticky;top:0}._1an6v8db>div{padding-inline-start:0;padding-inline-end:0}._1an6v8dc{background:linear-gradient(180deg, color-mix(in srgb, var(--rc-text) 2%, transparent), transparent);min-height:0;overflow:hidden}._1an6v8dc .rich-editor{flex-direction:column;height:100%;display:flex}._1an6v8dc .rich-editor__content-wrapper{max-width:75ch;overflow-y:auto}._1an6v8dc .rich-editor__content{padding-left:1.5rem;padding-right:1.5rem}._1an6v8dc .rich-editor__placeholder{left:1.5rem}._1an6v8dc .ds1tv40>:first-child{box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background-color:#0000;border-top:none;border-left:none;border-right:none;border-radius:0;max-width:none;margin:0}._1an6v8dd{scrollbar-gutter:stable both-edges;height:100%;overflow:hidden auto}._1an6v8de{background:var(--rc-bg);min-height:100%;display:flex;overflow:hidden}._1an6v8df{outline:none;flex:1;min-height:460px;padding:1.25rem 1.5rem 1.75rem;overflow:visible}._1an6v8dg{border-top:1px solid var(--rc-border);justify-content:flex-end;align-items:center;padding:.5rem .75rem;display:flex}._1an6v8dh{cursor:pointer;margin:var(--rc-space-md) 0;border-radius:var(--rc-radius-md);border:1px solid var(--rc-border);display:block;position:relative;overflow:clip}._1an6v8di{color:#fff;opacity:0;pointer-events:none;z-index:1;background:#00000040;justify-content:center;align-items:center;transition:opacity .2s;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}._1an6v8dh:hover ._1an6v8di{opacity:1}._1an6v8dj{background:linear-gradient(to bottom, transparent, var(--rc-bg));pointer-events:none;height:4rem;position:absolute;bottom:0;left:0;right:0}._1an6v8dk._1an6v8dk{flex-direction:column;width:700px;max-width:90vw;height:min(800px,100vh - 2rem);max-height:min(800px,100vh - 2rem);display:flex;overflow:hidden}._1an6v8dl{flex:1;min-height:0;padding:0 1.5rem 1.5rem;overflow:hidden auto}._1an6v8dm{pointer-events:none}._1an6v8dn{color:var(--rc-text-secondary);font-size:var(--rc-font-size-md);opacity:.72;margin:0}._1an6v8df .rich-paragraph:first-child,._1an6v8dm .rich-paragraph:first-child{margin-top:0}._1an6v8dm .rich-paragraph:last-child{margin-bottom:0}
2
- /*$vite$:1*/
1
+ :root{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-fill: #e8e8ec;--rc-fill-secondary: #eeeeef;--rc-fill-tertiary: #f4f4f6;--rc-fill-quaternary: #f9f9fa;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}:root.dark{--rc-text: #fafafa;--rc-text-secondary: #a1a1aa;--rc-text-tertiary: #71717a;--rc-text-quaternary: #52525b;--rc-bg: #09090b;--rc-bg-secondary: #18181b;--rc-bg-tertiary: #27272a;--rc-fill: #2a2a2f;--rc-fill-secondary: #222226;--rc-fill-tertiary: #1b1b1f;--rc-fill-quaternary: #131316;--rc-border: #27272a;--rc-accent: #60a5fa;--rc-accent-light: #60a5fa20;--rc-link: #60a5fa;--rc-code-text: #e4e4e7;--rc-code-bg: #27272a;--rc-hr-border: #27272a;--rc-quote-border: #60a5fa;--rc-quote-bg: #1e3a5f;--rc-alert-info: #7db9e5;--rc-alert-warning: #da864a;--rc-alert-tip: #54da48;--rc-alert-caution: #e16973;--rc-alert-important: #9966e0;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .45), 0 2px 8px rgba(0, 0, 0, .3);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.4), 0 4px 6px -4px rgba(0,0,0,.35);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.25), 0 4px 16px rgba(0,0,0,.4);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._1kl9cd60{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-fill: #e8e8ec;--rc-fill-secondary: #eeeeef;--rc-fill-tertiary: #f4f4f6;--rc-fill-quaternary: #f9f9fa;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._1kl9cd61{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-fill: #e8e8ec;--rc-fill-secondary: #eeeeef;--rc-fill-tertiary: #f4f4f6;--rc-fill-quaternary: #f9f9fa;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.8;--rc-line-height-tight: 1.4;--rc-font-family: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._1kl9cd62{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-fill: #e8e8ec;--rc-fill-secondary: #eeeeef;--rc-fill-tertiary: #f4f4f6;--rc-fill-quaternary: #f9f9fa;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #a1a1aa;--rc-quote-bg: #fafafa;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: none;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 2px;--rc-space-sm: 4px;--rc-space-md: 10px;--rc-space-lg: 16px;--rc-space-xl: 20px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 14px;--rc-font-size-small: 12px;--rc-line-height: 1.5;--rc-line-height-tight: 1.3;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 3px;--rc-radius-md: 6px;--rc-radius-lg: 12px}.dark ._1kl9cd60,[data-theme=dark] ._1kl9cd60,.dark._1kl9cd60,[data-theme=dark]._1kl9cd60,.dark ._1kl9cd61,[data-theme=dark] ._1kl9cd61,.dark._1kl9cd61,[data-theme=dark]._1kl9cd61,.dark ._1kl9cd62,[data-theme=dark] ._1kl9cd62,.dark._1kl9cd62,[data-theme=dark]._1kl9cd62{--rc-text: #fafafa;--rc-text-secondary: #a1a1aa;--rc-text-tertiary: #71717a;--rc-text-quaternary: #52525b;--rc-bg: #09090b;--rc-bg-secondary: #18181b;--rc-bg-tertiary: #27272a;--rc-fill: #2a2a2f;--rc-fill-secondary: #222226;--rc-fill-tertiary: #1b1b1f;--rc-fill-quaternary: #131316;--rc-border: #27272a;--rc-accent: #60a5fa;--rc-accent-light: #60a5fa20;--rc-link: #60a5fa;--rc-code-text: #e4e4e7;--rc-code-bg: #27272a;--rc-hr-border: #27272a;--rc-quote-border: #60a5fa;--rc-quote-bg: #1e3a5f;--rc-alert-info: #7db9e5;--rc-alert-warning: #da864a;--rc-alert-tip: #54da48;--rc-alert-caution: #e16973;--rc-alert-important: #9966e0;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .45), 0 2px 8px rgba(0, 0, 0, .3);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.4), 0 4px 6px -4px rgba(0,0,0,.35);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.25), 0 4px 16px rgba(0,0,0,.4)}@keyframes ds1tv40{to{--rc-hl-highlighted: 1}}@keyframes ds1tv41{0%{background-color:#ef44443d}to{background-color:transparent}}.ds1tv42{font-family:var(--rc-font-family);font-size:var(--rc-font-size-base);line-height:var(--rc-line-height);color:var(--rc-text);word-wrap:break-word;overflow-wrap:break-word}.ds1tv43{margin:0 0 1em;line-height:var(--rc-line-height)}.ds1tv44{font-weight:700}.ds1tv45{font-style:italic}.ds1tv46{text-decoration:underline}.ds1tv47{text-decoration:line-through;opacity:.65}.ds1tv48{vertical-align:super;font-size:.8em}.ds1tv49{vertical-align:sub;font-size:.8em}.ds1tv4a{font-family:var(--rc-font-mono);font-size:.9em;background-color:var(--rc-code-bg);color:var(--rc-code-text);padding:2px 6px;border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border)}[contenteditable=true] .ds1tv4a{padding-right:0}.ds1tv4b{--rc-hl-lightness: .3;--rc-hl-highlighted: 1;--rc-hl-color: oklch(from var(--rc-accent) l c h / var(--rc-hl-lightness));background:linear-gradient(120deg,var(--rc-hl-color, lightblue) 50%,transparent 50%) 110% 0 / 200% 100% no-repeat;background-position:calc((1 - var(--rc-hl-highlighted)) * 110%) 0;color:var(--rc-text);transition:background-position 1s}[contenteditable=true] .ds1tv4b{--rc-hl-highlighted: 1;animation:none}[data-theme=dark] .ds1tv4b{--rc-hl-lightness: .35}.ds1tv4c{position:absolute;left:-1.25rem;top:0;bottom:0;display:flex;align-items:center;text-decoration:none;color:var(--rc-text-secondary);opacity:0;transition:opacity .15s ease;font-size:.8rem}.ds1tv4d{position:relative;font-size:2em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.5em;margin-bottom:.5em}[contenteditable=true] .ds1tv4d:before{content:"H1";position:absolute;left:-1.5rem;bottom:.5rem;display:flex;font-size:.5rem;font-weight:600;color:var(--rc-text-secondary);opacity:.6;pointer-events:none;font-family:var(--rc-font-mono)}.ds1tv4e{position:relative;font-size:1.5em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.4em;margin-bottom:.45em}[contenteditable=true] .ds1tv4e:before{content:"H2";position:absolute;left:-1.5rem;bottom:.5rem;display:flex;font-size:.5rem;font-weight:600;color:var(--rc-text-secondary);opacity:.6;pointer-events:none;font-family:var(--rc-font-mono)}.ds1tv4f{position:relative;font-size:1.25em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.3em;margin-bottom:.4em}[contenteditable=true] .ds1tv4f:before{content:"H3";position:absolute;left:-1.5rem;bottom:.5rem;display:flex;font-size:.5rem;font-weight:600;color:var(--rc-text-secondary);opacity:.6;pointer-events:none;font-family:var(--rc-font-mono)}.ds1tv4g{position:relative;font-size:1.125em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.2em;margin-bottom:.35em}[contenteditable=true] .ds1tv4g:before{content:"H4";position:absolute;left:-1.5rem;bottom:.5rem;display:flex;font-size:.5rem;font-weight:600;color:var(--rc-text-secondary);opacity:.6;pointer-events:none;font-family:var(--rc-font-mono)}.ds1tv4h{position:relative;font-size:1em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.1em;margin-bottom:.3em}[contenteditable=true] .ds1tv4h:before{content:"H5";position:absolute;left:-1.5rem;bottom:.5rem;display:flex;font-size:.5rem;font-weight:600;color:var(--rc-text-secondary);opacity:.6;pointer-events:none;font-family:var(--rc-font-mono)}.ds1tv4i{position:relative;font-size:.875em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1em;margin-bottom:.25em;color:var(--rc-text)}[contenteditable=true] .ds1tv4i:before{content:"H6";position:absolute;left:-1.5rem;bottom:.5rem;display:flex;font-size:.5rem;font-weight:600;color:var(--rc-text-secondary);opacity:.6;pointer-events:none;font-family:var(--rc-font-mono)}.ds1tv4j{color:var(--rc-link);text-decoration:none;transition:color .2s ease}.ds1tv4j:hover{text-decoration:underline}.ds1tv4j[data-favicon=loaded]:before{content:"";display:inline-block;width:1em;height:1em;margin-right:.2em;vertical-align:-.125em;background-image:var(--rc-link-favicon);background-size:contain;background-repeat:no-repeat;background-position:center;border-radius:2px}.ds1tv4k{display:inline-flex;align-items:center;margin-right:.15em;vertical-align:-.125em}.ds1tv4l{list-style-type:decimal;padding-left:var(--rc-space-lg);margin-bottom:1em}.ds1tv4m{list-style-type:disc;padding-left:var(--rc-space-lg);margin-bottom:1em}.ds1tv4n{margin-bottom:.25em}.ds1tv4o{list-style-type:none}.ds1tv4p{list-style-type:none;padding-left:0}.ds1tv4q{--rc-cb-size: 1.125rem;position:relative;padding-left:2em;list-style-type:none;outline:none;transition:color .25s ease}.ds1tv4q:before{content:"";position:absolute;left:0;top:calc((1lh - var(--rc-cb-size)) / 2);width:var(--rc-cb-size);height:var(--rc-cb-size);border:1.5px solid var(--rc-text-quaternary);border-radius:var(--rc-radius-sm);box-sizing:border-box;cursor:pointer;background-color:transparent;transition:background-color .25s cubic-bezier(.4,0,.2,1),border-color .25s cubic-bezier(.4,0,.2,1),transform .15s ease}.ds1tv4q:after{content:"";position:absolute;left:calc(var(--rc-cb-size) * .32);top:calc((1lh - var(--rc-cb-size)) / 2 + var(--rc-cb-size) * .14);width:calc(var(--rc-cb-size) * .28);height:calc(var(--rc-cb-size) * .55);border-right:2px solid var(--rc-accent);border-bottom:2px solid var(--rc-accent);box-sizing:border-box;display:block;pointer-events:none;transform:rotate(45deg) scale(0);transform-origin:center;opacity:0;transition:transform .3s cubic-bezier(.34,1.56,.64,1) .1s,opacity .15s ease}[contenteditable=true] .ds1tv4q:active:before{transform:scale(.94)}[contenteditable=true] .ds1tv4q:hover:before{border-color:var(--rc-text-tertiary)}.ds1tv4r{--rc-cb-size: 1.125rem;position:relative;padding-left:2em;list-style-type:none;outline:none;transition:color .25s ease;color:var(--rc-text-secondary)}.ds1tv4r:before{content:"";position:absolute;left:0;top:calc((1lh - var(--rc-cb-size)) / 2);width:var(--rc-cb-size);height:var(--rc-cb-size);border:1.5px solid var(--rc-text-quaternary);border-radius:var(--rc-radius-sm);box-sizing:border-box;cursor:pointer;background-color:var(--rc-accent-light);transition:background-color .25s cubic-bezier(.4,0,.2,1),border-color .25s cubic-bezier(.4,0,.2,1),transform .15s ease;border-color:var(--rc-accent)}.ds1tv4r:after{content:"";position:absolute;left:calc(var(--rc-cb-size) * .32);top:calc((1lh - var(--rc-cb-size)) / 2 + var(--rc-cb-size) * .14);width:calc(var(--rc-cb-size) * .28);height:calc(var(--rc-cb-size) * .55);border-right:2px solid var(--rc-accent);border-bottom:2px solid var(--rc-accent);box-sizing:border-box;display:block;pointer-events:none;transform:rotate(45deg) scale(1);transform-origin:center;opacity:1;transition:transform .3s cubic-bezier(.34,1.56,.64,1) .1s,opacity .15s ease}[contenteditable=true] .ds1tv4r:active:before{transform:scale(.94)}[contenteditable=true] .ds1tv4r:hover:before{background-color:color-mix(in oklab,var(--rc-accent) 12%,transparent)}.ds1tv4s{position:relative;background-color:var(--rc-quote-bg);margin:var(--rc-space-md) 0;padding:var(--rc-space-sm) var(--rc-space-md);padding-left:calc(var(--rc-space-md) + 4px);font-style:italic;color:var(--rc-text-secondary);border-radius:0 var(--rc-radius-sm) var(--rc-radius-sm) 0}.ds1tv4s:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:var(--rc-radius-sm);background-color:var(--rc-quote-border)}.ds1tv4t{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}.ds1tv4u{overflow-x:auto}.ds1tv4v{border:none;border-bottom:1px solid var(--rc-border);border-right:1px solid var(--rc-border);padding:1.25em var(--rc-space-lg);text-align:left;vertical-align:middle;line-height:1.5}.ds1tv4v:last-child{border-right:none}.ds1tv4w{border:none;border-bottom:1px solid var(--rc-border);border-right:1px solid var(--rc-border);padding:var(--rc-space-md) var(--rc-space-lg);text-align:left;font-weight:600;font-size:.75em;text-transform:uppercase;letter-spacing:.05em;color:var(--rc-text-secondary);background-color:var(--rc-bg-secondary);vertical-align:middle;line-height:1.5;position:sticky;top:0;z-index:1}.ds1tv4w:last-child{border-right:none}.ds1tv4x{width:100%;border-collapse:separate;border-spacing:0;margin:var(--rc-space-lg) 0;font-size:var(--rc-font-size-small);border:1px solid var(--rc-border);border-radius:var(--rc-radius-md);overflow:hidden}.ds1tv4y{background-color:var(--rc-text);color:transparent;border-radius:var(--rc-radius-sm);padding-inline:4px;cursor:pointer;transition:background-color .3s ease,color .3s ease;user-select:none}[contenteditable=true] .ds1tv4y{background-color:color-mix(in srgb,var(--rc-text) 30%,transparent);color:inherit;user-select:auto;cursor:text}.ds1tv4y:hover,.ds1tv4z{background-color:transparent;color:inherit;user-select:auto}.ds1tv410{display:inline-block;border-radius:999px;padding-inline:.75em;font-size:var(--rc-font-size-small);line-height:1.6;vertical-align:baseline}.ds1tv411{display:inline-block;font-family:var(--rc-font-mono);font-size:var(--rc-font-size-small);color:var(--rc-text-secondary);background-color:var(--rc-code-bg);border:1px dashed var(--rc-border);border-radius:var(--rc-radius-sm);padding:2px 6px;white-space:break-spaces}.ds1tv411:before{content:"<!--";opacity:.7}.ds1tv411:after{content:"-->";opacity:.7}.ds1tv412{ruby-position:over;ruby-align:center}[contenteditable=true] .ds1tv412[data-ruby]{position:relative;display:inline-block;padding-top:.72em;line-height:1.2}[contenteditable=true] .ds1tv412[data-ruby]:before{content:attr(data-ruby);position:absolute;left:0;right:0;top:0;transform:translateY(-.68em);font-size:.58em;line-height:1;text-align:center;color:var(--rc-text-secondary);pointer-events:none;white-space:nowrap}.ds1tv413{font-size:.58em;line-height:1;color:var(--rc-text-secondary);user-select:none}.ds1tv414{vertical-align:super;font-size:.8em}.ds1tv415{display:inline-flex;align-items:center;justify-content:center;min-width:1.5em;text-decoration:none;color:var(--rc-accent);background-color:var(--rc-accent-light);border-radius:999px;padding:0 .35em;line-height:1.45;font-weight:600;font-size:.82em;transition:filter .15s ease}.ds1tv415:hover{filter:brightness(.96)}.ds1tv416{animation:ds1tv41 1.2s ease-out}.ds1tv417{position:relative;display:inline}.ds1tv418{margin-top:var(--rc-space-lg)}.ds1tv419{border:none;border-top:1px solid var(--rc-border);margin:var(--rc-space-lg) 0 var(--rc-space-md)}.ds1tv41a{list-style-type:decimal;padding-left:var(--rc-space-lg);font-size:var(--rc-font-size-small);color:var(--rc-text-secondary);line-height:1.6}.ds1tv41b{margin-bottom:var(--rc-space-sm);padding-left:var(--rc-space-xs)}.ds1tv41c{display:inline-flex;align-items:center;margin-left:var(--rc-space-xs);color:var(--rc-accent);text-decoration:none;font-size:.85em;transition:opacity .15s ease;font-family:var(--rc-font-mono)}.ds1tv41c:hover{opacity:.7}.ds1tv41d{display:flex;align-items:center;gap:var(--rc-space-sm);list-style-type:none}.ds1tv41e{flex-shrink:0;color:var(--rc-text-secondary);font-size:var(--rc-font-size-small);font-weight:600;min-width:1.5em}.ds1tv41f{flex:1;border:1px solid var(--rc-border);border-radius:var(--rc-radius-sm);padding:var(--rc-space-xs) var(--rc-space-sm);font-size:var(--rc-font-size-small);color:var(--rc-text);background-color:transparent;outline:none;transition:border-color .15s ease}.ds1tv41f:focus{border-color:var(--rc-accent)}.ds1tv41g{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:none;color:var(--rc-text-secondary);cursor:pointer;border-radius:var(--rc-radius-sm);font-size:14px;transition:color .15s ease,background-color .15s ease}.ds1tv41g:hover{color:#ef4444;background-color:#ef44441a}.ds1tv41h{position:absolute;display:flex;align-items:center;justify-content:center;width:20px;height:20px;cursor:grab;border-radius:var(--rc-radius-sm);color:var(--rc-text-secondary);opacity:.4;transition:opacity .15s ease,background-color .15s ease;z-index:10}.ds1tv41h:hover{opacity:1;background-color:var(--rc-fill-secondary)}.ds1tv41h:active{cursor:grabbing}.ds1tv41i{position:absolute;height:2px;background-color:var(--rc-accent);border-radius:1px;pointer-events:none;z-index:10}.ds1tv41j{margin:2em 0;padding:0 1em;background-color:transparent;border:none;border-radius:0}.ds1tv42 mark{background:transparent}.ds1tv42 img{max-width:100%;height:auto;border-radius:var(--rc-radius-md)}.ds1tv42>*:first-child,.ds1tv42 .rich-editor__content>*:first-child{margin-top:0}.ds1tv42>*:last-child,.ds1tv42 .rich-editor__content>*:last-child{margin-bottom:0}.ds1tv4c svg{flex-shrink:0}.ds1tv4d:hover .ds1tv4c{opacity:.5}.ds1tv4d:hover .ds1tv4c:hover{opacity:1}.ds1tv4e:hover .ds1tv4c{opacity:.5}.ds1tv4e:hover .ds1tv4c:hover{opacity:1}.ds1tv4f:hover .ds1tv4c{opacity:.5}.ds1tv4f:hover .ds1tv4c:hover{opacity:1}.ds1tv4g:hover .ds1tv4c{opacity:.5}.ds1tv4g:hover .ds1tv4c:hover{opacity:1}.ds1tv4h:hover .ds1tv4c{opacity:.5}.ds1tv4h:hover .ds1tv4c:hover{opacity:1}.ds1tv4i:hover .ds1tv4c{opacity:.5}.ds1tv4i:hover .ds1tv4c:hover{opacity:1}.ds1tv4k img{width:1em;height:1em;border-radius:2px;object-fit:contain}.ds1tv4k svg{width:.9em;height:.9em}.ds1tv4o .ds1tv4l{list-style-type:lower-alpha}.ds1tv4o .ds1tv4m{list-style-type:circle}.ds1tv4r>*,.ds1tv4q>*{background-image:linear-gradient(var(--rc-text-secondary),var(--rc-text-secondary));background-size:0% 1.5px;background-position:left center;background-repeat:no-repeat;transition:background-size .35s cubic-bezier(.4,0,.2,1) .15s,opacity .15s ease}.ds1tv4r>*{background-size:100% 1.5px;opacity:.5}.ds1tv4s>.ds1tv43:first-child{margin-top:0}.ds1tv4s>.ds1tv43:last-child{margin-bottom:0}.ds1tv4x tbody tr:last-child .ds1tv4v{border-bottom:none}.ds1tv4v .ds1tv43{margin:0;padding:0;line-height:inherit}.ds1tv4v>:first-child{margin-top:0}.ds1tv4v>:last-child{margin-bottom:0}.ds1tv4w .ds1tv43{margin:0;padding:0;line-height:inherit}.ds1tv4w>:first-child{margin-top:0}.ds1tv4w>:last-child{margin-bottom:0}@supports (animation-timeline: view()){.ds1tv4b{--rc-hl-highlighted: 0;animation:ds1tv40 steps(1) both;animation-timeline:view();animation-range:entry 100% cover 10%}}._1pke0ca0{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.75;color:var(--rc-text)}._1pke0ca0 .rich-paragraph{margin-top:1.5em;margin-bottom:1.5em}._1pke0ca0 .rich-heading-h1{color:var(--rc-text);font-weight:800;font-size:3em;margin-top:0;margin-bottom:.8333333333333334em;line-height:1}._1pke0ca0 .rich-heading-h2{color:var(--rc-text);font-weight:700;font-size:1.875em;margin-top:1.8666666666666667em;margin-bottom:1.0666666666666667em;line-height:1.3333333}._1pke0ca0 .rich-heading-h3{color:var(--rc-text);font-weight:600;font-size:1.5em;margin-top:1.6666666666666667em;margin-bottom:.6666666666666666em;line-height:1.5}._1pke0ca0 .rich-heading-h4{color:var(--rc-text);font-weight:600;margin-top:2em;margin-bottom:.5em;line-height:1.5625}._1pke0ca0 .rich-heading-h2+*,._1pke0ca0 .rich-heading-h3+*,._1pke0ca0 .rich-heading-h4+*{margin-top:0}._1pke0ca0 .rich-quote{font-weight:500;font-style:italic;color:var(--rc-text);margin-top:2.5em;margin-bottom:2.5em;padding-left:calc(1.5em + 4px);background-color:transparent;border-radius:0;quotes:"“""”""‘""’"}._1pke0ca0 .rich-quote .rich-paragraph:first-of-type:before{content:open-quote}._1pke0ca0 .rich-quote .rich-paragraph:last-of-type:after{content:close-quote}._1pke0ca0 .rich-quote .rich-paragraph:first-child{margin-top:0}._1pke0ca0 .rich-quote .rich-paragraph:last-child{margin-bottom:0}._1pke0ca0 .rich-text-code{color:var(--rc-text);font-weight:600;font-size:.875em;background-color:var(--rc-code-bg);padding:.2em .4em;border-radius:var(--rc-radius-sm);font-family:var(--rc-font-mono)}._1pke0ca0 .rich-text-code:before,._1pke0ca0 .rich-text-code:after{content:"`";color:var(--rc-text-secondary);opacity:.5}._1pke0ca0 [contenteditable=true] .rich-text-code:before,._1pke0ca0 [contenteditable=true] .rich-text-code:after{content:""}._1pke0ca0 .rich-code-block{color:var(--rc-text);background-color:var(--rc-code-bg);border-radius:.375rem;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.75}._1pke0ca0 .rich-code-block pre{padding:1em 1.5em;margin:0}._1pke0ca0 .rich-list-ul,._1pke0ca0 .rich-list-ol{margin-top:1.5em;margin-bottom:1.5em;padding-left:1.75em}._1pke0ca0 .rich-list-item{margin-top:.75em;margin-bottom:.75em;padding-left:.5em}._1pke0ca0 .rich-list-item .rich-paragraph{margin-top:1em;margin-bottom:1em}._1pke0ca0 .rich-list-item>.rich-paragraph:first-child{margin-top:1.5em}._1pke0ca0 .rich-list-item>.rich-paragraph:last-child{margin-bottom:1.5em}._1pke0ca0 .rich-list-ul .rich-list-ul,._1pke0ca0 .rich-list-ul .rich-list-ol,._1pke0ca0 .rich-list-ol .rich-list-ul,._1pke0ca0 .rich-list-ol .rich-list-ol{margin-top:1em;margin-bottom:1em}._1pke0ca0 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.5}._1pke0ca0 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}._1pke0ca0 .rich-image{margin-top:2em;margin-bottom:2em}._1pke0ca0 .rich-image>*{margin-top:0;margin-bottom:0}._1pke0ca0 .rich-image figcaption{color:var(--rc-text-secondary);font-size:.875em;line-height:1.5;margin-top:1em}._1pke0ca0 .rich-hr{border-color:var(--rc-hr-border);border-top-width:1px;width:60px;margin:3.5em auto}._1pke0ca0 .rich-hr+*{margin-top:0}._1pke0ca0 .rich-link{font-weight:500;text-decoration:underline}._1pke0ca0 .rich-banner,._1pke0ca0 .rich-code-snippet,._1pke0ca0 .rich-details{margin:2em 0}._1pke0ca0>*:first-child{margin-top:0}._1pke0ca0>*:last-child{margin-bottom:0}._1iyoz3l0{font-size:var(--rc-font-size-base);line-height:var(--rc-line-height)}._1iyoz3l0 .rich-paragraph{margin-bottom:.6em}._1iyoz3l0 .rich-heading-h1{font-size:1.35em;font-weight:700;margin-top:.8em;margin-bottom:.3em}._1iyoz3l0 .rich-heading-h2{font-size:1.2em;font-weight:700;margin-top:.7em;margin-bottom:.25em}._1iyoz3l0 .rich-heading-h3{font-size:1.1em;font-weight:600;margin-top:.6em;margin-bottom:.2em}._1iyoz3l0 .rich-heading-h4{font-size:1em;font-weight:600;margin-top:.5em;margin-bottom:.15em}._1iyoz3l0 .rich-heading-h5{font-size:.9em;font-weight:600;margin-top:.45em;margin-bottom:.1em}._1iyoz3l0 .rich-heading-h6{font-size:.85em;font-weight:600;margin-top:.4em;margin-bottom:.1em}._1iyoz3l0 .rich-quote{padding:var(--rc-space-sm) var(--rc-space-md);padding-left:calc(var(--rc-space-md) + 3px);margin:var(--rc-space-sm) 0;font-size:.95em}._1iyoz3l0 .rich-quote:before{width:3px}._1iyoz3l0 .rich-list-ol,._1iyoz3l0 .rich-list-ul{margin-bottom:.6em;padding-left:var(--rc-space-md)}._1iyoz3l0 .rich-list-item{margin-bottom:.1em}._1iyoz3l0 .rich-code-block{margin:var(--rc-space-sm) 0;border-radius:var(--rc-radius-sm);font-size:var(--rc-font-size-small)}._1iyoz3l0 .rich-code-block pre{padding:var(--rc-space-sm)}._1iyoz3l0 .line:before{display:none!important}._1iyoz3l0 .rich-table{margin:var(--rc-space-sm) 0;font-size:var(--rc-font-size-small)}._1iyoz3l0 .rich-table-cell,._1iyoz3l0 .rich-table-cell-header{padding:var(--rc-space-xs) var(--rc-space-sm)}._1iyoz3l0 .rich-image{margin:var(--rc-space-sm) 0}._1iyoz3l0 .rich-image figcaption{font-size:var(--rc-font-size-small)}._1iyoz3l0 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}._1iyoz3l0 .rich-alert{padding:var(--rc-space-sm) var(--rc-space-md);padding-left:var(--rc-space-lg);margin:var(--rc-space-sm) 0}._1iyoz3l0 .rich-katex-block{padding:var(--rc-space-sm) 0;margin:var(--rc-space-sm) 0}.g7jfj60{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.8;color:var(--rc-text)}.g7jfj60>.rich-paragraph,.g7jfj60 .rich-editor__content>.rich-paragraph,.g7jfj60 .rich-content__body>.rich-paragraph{margin-top:1.25em;margin-bottom:1.25em;line-height:1.8}.g7jfj60>.rich-paragraph:first-of-type,.g7jfj60 .rich-editor__content>.rich-paragraph:first-of-type,.g7jfj60 .rich-content__body>.rich-paragraph:first-of-type{margin-top:0;margin-bottom:2rem}.g7jfj60>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.g7jfj60 .rich-editor__content>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.g7jfj60 .rich-content__body>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child{margin-inline-start:2rem}.g7jfj60>.rich-paragraph:first-of-type:first-letter,.g7jfj60 .rich-content__body>.rich-paragraph:first-of-type:first-letter{float:left;font-size:2.4em;margin-right:.2em;line-height:1}.g7jfj60 .rich-editor__content>.rich-paragraph:first-of-type:first-letter{font-size:1.5em;font-weight:700;color:var(--rc-accent)}.g7jfj60>.rich-paragraph:last-child,.g7jfj60 .rich-editor__content>.rich-paragraph:last-child,.g7jfj60 .rich-content__body>.rich-paragraph:last-child{margin-bottom:0}.g7jfj60 .rich-text-bold{font-family:var(--rc-font-family);font-weight:600;color:var(--rc-text)}.g7jfj60 .rich-heading-h1{font-size:2.25em;font-weight:800;line-height:1.1111111;margin-top:0;margin-bottom:.8888889em;letter-spacing:-.025em;color:var(--rc-text)}.g7jfj60 .rich-heading-h2{font-size:1.5em;font-weight:700;line-height:1.3333333;margin-top:2em;margin-bottom:1em;letter-spacing:-.025em;color:var(--rc-text)}.g7jfj60 .rich-heading-h2+*{margin-top:0}.g7jfj60 .rich-heading-h3{font-size:1.25em;font-weight:600;line-height:1.6;margin-top:1.6em;margin-bottom:.6em;letter-spacing:-.025em;color:var(--rc-text)}.g7jfj60 .rich-heading-h3+*{margin-top:0}.g7jfj60 .rich-heading-h4{font-size:1.125em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text)}.g7jfj60 .rich-heading-h4+*{margin-top:0}.g7jfj60 .rich-heading-h5{font-size:1em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text)}.g7jfj60 .rich-heading-h5+*{margin-top:0}.g7jfj60 .rich-heading-h6{font-size:.875em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text);text-transform:uppercase}.g7jfj60 .rich-heading-h6+*{margin-top:0}.g7jfj60 .rich-quote{font-style:normal;line-height:1.8;color:inherit;background-color:color-mix(in srgb,var(--rc-accent) 10%,transparent);margin-top:1.6em;margin-bottom:1.6em;margin-left:-1rem;margin-right:-1rem;padding:1em 2em;border-radius:0}.g7jfj60 .rich-quote:before{display:none}.g7jfj60 .rich-quote .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.g7jfj60 .rich-link{font-weight:500;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color .15s ease}.g7jfj60 .rich-link:hover{text-decoration-thickness:2px}.g7jfj60 .rich-text-code{font-size:.875em;font-family:var(--rc-font-mono);font-weight:500;padding:.2em .4em;border-radius:var(--rc-radius-sm);background-color:var(--rc-code-bg)}.g7jfj60 .rich-list-ol,.g7jfj60 .rich-list-ul{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.g7jfj60 .rich-list-ol{list-style-type:decimal}.g7jfj60 .rich-list-ul{list-style-type:disc}.g7jfj60 .rich-list-item{margin-top:.5em;margin-bottom:.5em;padding-left:.375em}.g7jfj60 .rich-list-item::marker{color:var(--rc-text-secondary)}.g7jfj60 .rich-code-block{font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:var(--rc-radius-md);overflow-x:auto}.g7jfj60 .rich-code-block pre{padding:.8571429em 1.1428571em;margin:0}.g7jfj60 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.g7jfj60 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}.g7jfj60 .rich-table .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.g7jfj60 .rich-image{margin-top:2em;margin-bottom:2em}.g7jfj60 .rich-image img{border-radius:var(--rc-radius-md)}.g7jfj60 .rich-image figcaption{font-size:.875em;line-height:1.4285714;margin-top:.8571429em;color:var(--rc-text-secondary);text-align:center}.g7jfj60 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);opacity:.2;margin-top:.5rem;margin-bottom:.5rem;width:60px;margin-left:auto;margin-right:auto}.g7jfj60 .rich-katex-block{margin-top:1.6em;margin-bottom:1.6em;overflow-x:auto;padding:1em 0}.g7jfj60 .rich-spoiler{border-radius:var(--rc-radius-sm);padding-inline:.25em}.g7jfj60>*:first-child{margin-top:0}.g7jfj60>*:last-child{margin-bottom:0}._1an6v8d0{position:relative;display:block;cursor:pointer;margin:var(--rc-space-md) 0;border-radius:var(--rc-radius-md);border:1px solid var(--rc-border);overflow:clip}._1an6v8d1{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#00000059;color:#fff;opacity:0;pointer-events:none;transition:opacity .2s,background .2s}._1an6v8d0:hover ._1an6v8d1{opacity:1;background:#00000080}._1an6v8d2{padding-block:var(--rc-space-md);padding-inline:var(--rc-space-xl);max-height:300px;overflow:clip}._1an6v8d3._1an6v8d3{padding:0;gap:0;width:900px;max-width:90vw;max-height:min(900px,calc(100vh - 1rem));overflow:hidden}._1an6v8d4{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:min(800px,calc(100vh - 1rem));background:var(--rc-bg)}._1an6v8d5{display:flex;align-items:center;justify-content:space-between;padding:0 .5rem 0 1rem;height:48px;border-bottom:1px solid var(--rc-border);flex-shrink:0}._1an6v8d6{display:flex;align-items:center;gap:.5rem}._1an6v8d7{display:flex;align-items:center;gap:.5rem;margin:0;font-size:var(--rc-font-size-md);font-weight:500;color:var(--rc-text)}._1an6v8d8{display:flex;align-items:center;gap:4px}._1an6v8d9{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:.25rem;border:none;background:none;cursor:pointer;color:var(--rc-text-secondary);transition:color .15s}._1an6v8d9:hover{color:var(--rc-text)}._1an6v8da{padding:0 .75rem .5rem;border-bottom:1px solid var(--rc-border);background:var(--rc-bg)}._1an6v8db{margin:0;max-width:none;border-radius:0;position:sticky;top:0}._1an6v8db{border:none;box-shadow:none;background-color:transparent;backdrop-filter:none}._1an6v8db>div{padding-inline:0}._1an6v8dc{min-height:0;overflow:hidden;background:linear-gradient(180deg,color-mix(in srgb,var(--rc-text) 2%,transparent),transparent)}._1an6v8dc .rich-editor{display:flex;flex-direction:column;height:100%}._1an6v8dc .rich-editor__content-wrapper{max-width:75ch;overflow-y:auto}._1an6v8dc .rich-editor__content{padding-left:1.5rem;padding-right:1.5rem}._1an6v8dc .rich-editor__placeholder{left:1.5rem}._1an6v8dc .ds1tv42>*:first-child{border-top:none;border-left:none;border-right:none;box-shadow:none;border-radius:0;margin:0;max-width:none;backdrop-filter:none;background-color:transparent}._1an6v8dd{height:100%;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable both-edges}._1an6v8de{display:flex;min-height:100%;background:var(--rc-bg);overflow:hidden}._1an6v8df{flex:1;min-height:460px;padding:1.25rem 1.5rem 1.75rem;outline:none;overflow:visible}._1an6v8dg{display:flex;align-items:center;justify-content:flex-end;padding:.5rem .75rem;border-top:1px solid var(--rc-border)}._1an6v8dh{position:relative;display:block;cursor:pointer;margin:var(--rc-space-md) 0;border-radius:var(--rc-radius-md);border:1px solid var(--rc-border);overflow:clip}._1an6v8di{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#00000040;color:#fff;opacity:0;pointer-events:none;transition:opacity .2s;z-index:1}._1an6v8dh:hover ._1an6v8di{opacity:1}._1an6v8dj{position:absolute;bottom:0;left:0;right:0;height:4rem;background:linear-gradient(to bottom,transparent,var(--rc-bg));pointer-events:none}._1an6v8dk._1an6v8dk{display:flex;flex-direction:column;width:700px;max-width:90vw;height:min(800px,calc(100vh - 2rem));max-height:min(800px,calc(100vh - 2rem));overflow:hidden}._1an6v8dl{flex:1;min-height:0;padding:0 1.5rem 1.5rem;overflow-y:auto;overflow-x:hidden}._1an6v8dm{pointer-events:none}._1an6v8dn{margin:0;color:var(--rc-text-secondary);font-size:var(--rc-font-size-md);opacity:.72}._1an6v8df .rich-paragraph:first-child,._1an6v8dm .rich-paragraph:first-child{margin-top:0}._1an6v8dm .rich-paragraph:last-child{margin-bottom:0}
package/dist/static.mjs CHANGED
@@ -1,5 +1,12 @@
1
- import { i as NestedDocNode, l as NestedDocRenderer, n as $createNestedDocNode, o as NestedDocStaticDecorator, r as $isNestedDocNode, t as NESTED_DOC_BLOCK_TRANSFORMER } from "./transformer-VVBkt_Yh.js";
2
- //#region src/static.ts
3
- var nestedDocNodes = [NestedDocNode];
4
- //#endregion
5
- export { $createNestedDocNode, $isNestedDocNode, NESTED_DOC_BLOCK_TRANSFORMER, NestedDocNode, NestedDocRenderer, NestedDocStaticDecorator, nestedDocNodes };
1
+ import { n as NestedDocNode } from "./transformer-CeHuyTaK.js";
2
+ import { o, $, q, N, s } from "./transformer-CeHuyTaK.js";
3
+ const nestedDocNodes = [NestedDocNode];
4
+ export {
5
+ o as $createNestedDocNode,
6
+ $ as $isNestedDocNode,
7
+ q as NESTED_DOC_BLOCK_TRANSFORMER,
8
+ NestedDocNode,
9
+ N as NestedDocRenderer,
10
+ s as NestedDocStaticDecorator,
11
+ nestedDocNodes
12
+ };
@@ -0,0 +1,249 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import { extractTextContent as extractTextContent$1 } from "@haklex/rich-editor/commands";
5
+ import { useOptionalNestedContentRenderer, useColorScheme, useRendererConfig, usePresentDialog, useVariant, ColorSchemeProvider, NestedContentRendererProvider, extractTextContent } from "@haklex/rich-editor/static";
6
+ import { DecoratorNode } from "lexical";
7
+ import { useMemo, useCallback, createElement } from "react";
8
+ import { jsx, Fragment, jsxs } from "react/jsx-runtime";
9
+ import { usePortalTheme } from "@haklex/rich-style-token";
10
+ import { Maximize2 } from "lucide-react";
11
+ import { RichRenderer } from "@haklex/rich-static-renderer";
12
+ var editOverlayRoot = "_1an6v8d0";
13
+ var editOverlay = "_1an6v8d1";
14
+ var rendererContent = "_1an6v8d2";
15
+ var dialogPopup = "_1an6v8d3";
16
+ var dialogShell = "_1an6v8d4";
17
+ var dialogHeader = "_1an6v8d5";
18
+ var dialogHeaderLeft = "_1an6v8d6";
19
+ var dialogTitle = "_1an6v8d7";
20
+ var dialogHeaderRight = "_1an6v8d8";
21
+ var dialogHeaderCloseBtn = "_1an6v8d9";
22
+ var editorArea = "_1an6v8dc";
23
+ var dialogFooter = "_1an6v8dg";
24
+ var staticOverlayRoot = "_1an6v8dh";
25
+ var staticOverlay = "_1an6v8di";
26
+ var staticGradientMask = "_1an6v8dj";
27
+ var staticDialogPopup = "_1an6v8dk";
28
+ var staticDialogBody = "_1an6v8dl";
29
+ var previewSurface = "_1an6v8dm";
30
+ var previewEmpty = "_1an6v8dn";
31
+ function NestedDocRenderer({
32
+ value,
33
+ variant = "comment"
34
+ }) {
35
+ const renderNestedContent = useOptionalNestedContentRenderer();
36
+ const theme = useColorScheme();
37
+ const rendererConfig = useRendererConfig();
38
+ if (renderNestedContent) {
39
+ return /* @__PURE__ */ jsx(Fragment, { children: renderNestedContent(value, variant) });
40
+ }
41
+ return /* @__PURE__ */ jsx(RichRenderer, { rendererConfig, theme, value, variant });
42
+ }
43
+ function truncateEditorState(state, maxNodes) {
44
+ const root = state.root;
45
+ if (!root?.children || root.children.length <= maxNodes) return state;
46
+ return {
47
+ ...state,
48
+ root: {
49
+ ...root,
50
+ children: root.children.slice(0, maxNodes)
51
+ }
52
+ };
53
+ }
54
+ function hasRenderableEditorState(state) {
55
+ const children = state.root?.children ?? [];
56
+ if (children.length === 0) return false;
57
+ if (children.length > 1) return true;
58
+ const first = children[0];
59
+ if (!first) return false;
60
+ if (first.type !== "paragraph") return true;
61
+ return first.children?.some((child) => {
62
+ if (child.type !== "text") return true;
63
+ return Boolean(child.text?.trim());
64
+ }) ?? false;
65
+ }
66
+ const PREVIEW_NODE_LIMIT = 6;
67
+ function NestedDocStaticDecorator({ contentState }) {
68
+ const colorScheme = useColorScheme();
69
+ const { className: portalClassName } = usePortalTheme();
70
+ const presentDialogFromCtx = usePresentDialog();
71
+ const renderNestedContent = useOptionalNestedContentRenderer();
72
+ const children = contentState.root?.children ?? [];
73
+ const needsTruncation = children.length > PREVIEW_NODE_LIMIT;
74
+ const previewState = useMemo(
75
+ () => truncateEditorState(contentState, PREVIEW_NODE_LIMIT),
76
+ [contentState]
77
+ );
78
+ const hasPreview = hasRenderableEditorState(contentState);
79
+ const title = useMemo(() => {
80
+ const firstChild = children[0];
81
+ if (!firstChild) return "";
82
+ const walk = (node) => {
83
+ if (node.text) return node.text;
84
+ if (node.children) return node.children.map(walk).join("");
85
+ return "";
86
+ };
87
+ return walk(firstChild).slice(0, 80);
88
+ }, [children]);
89
+ const contextVariant = useVariant();
90
+ const handleOpen = useCallback(async () => {
91
+ const present = presentDialogFromCtx ?? (await import("@haklex/rich-editor-ui")).presentDialog;
92
+ present({
93
+ title: title || void 0,
94
+ content: () => /* @__PURE__ */ jsx(ColorSchemeProvider, { colorScheme, children: /* @__PURE__ */ jsx(NestedContentRendererProvider, { value: renderNestedContent, children: /* @__PURE__ */ jsx("div", { className: staticDialogBody, children: /* @__PURE__ */ jsx(NestedDocRenderer, { value: contentState, variant: contextVariant }) }) }) }),
95
+ className: staticDialogPopup,
96
+ portalClassName,
97
+ theme: colorScheme,
98
+ showCloseButton: true,
99
+ clickOutsideToDismiss: true,
100
+ sheet: "auto"
101
+ });
102
+ }, [
103
+ colorScheme,
104
+ contentState,
105
+ portalClassName,
106
+ presentDialogFromCtx,
107
+ renderNestedContent,
108
+ title,
109
+ contextVariant
110
+ ]);
111
+ if (!hasPreview) {
112
+ return null;
113
+ }
114
+ return /* @__PURE__ */ jsxs(
115
+ "div",
116
+ {
117
+ className: staticOverlayRoot,
118
+ role: "button",
119
+ tabIndex: 0,
120
+ onClick: handleOpen,
121
+ onKeyDown: (e) => {
122
+ if (e.key === "Enter" || e.key === " ") {
123
+ e.preventDefault();
124
+ handleOpen();
125
+ }
126
+ },
127
+ children: [
128
+ /* @__PURE__ */ jsx("div", { className: `${rendererContent} rich-nested-doc-content`, children: /* @__PURE__ */ jsx("div", { className: previewSurface, children: /* @__PURE__ */ jsx(NestedDocRenderer, { value: previewState }) }) }),
129
+ needsTruncation && /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: staticGradientMask }),
130
+ /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: staticOverlay, children: /* @__PURE__ */ jsx(Maximize2, { size: 24 }) })
131
+ ]
132
+ }
133
+ );
134
+ }
135
+ class NestedDocNode extends DecoratorNode {
136
+ constructor(contentState, key) {
137
+ super(key);
138
+ __publicField(this, "__contentState");
139
+ this.__contentState = contentState || {
140
+ root: {
141
+ children: [
142
+ {
143
+ type: "paragraph",
144
+ children: [],
145
+ direction: null,
146
+ format: "",
147
+ indent: 0,
148
+ textFormat: 0,
149
+ textStyle: "",
150
+ version: 1
151
+ }
152
+ ],
153
+ direction: null,
154
+ format: "",
155
+ indent: 0,
156
+ type: "root",
157
+ version: 1
158
+ }
159
+ };
160
+ }
161
+ static getType() {
162
+ return "nested-doc";
163
+ }
164
+ static clone(node) {
165
+ return new NestedDocNode(node.__contentState, node.__key);
166
+ }
167
+ createDOM(_config) {
168
+ const div = document.createElement("div");
169
+ div.className = "rich-nested-doc";
170
+ return div;
171
+ }
172
+ updateDOM() {
173
+ return false;
174
+ }
175
+ isInline() {
176
+ return false;
177
+ }
178
+ getContentState() {
179
+ return this.getLatest().__contentState;
180
+ }
181
+ setContentState(state) {
182
+ const writable = this.getWritable();
183
+ writable.__contentState = state;
184
+ }
185
+ getTextContent() {
186
+ return extractTextContent(this.__contentState);
187
+ }
188
+ static importJSON(serializedNode) {
189
+ return new NestedDocNode(serializedNode.content);
190
+ }
191
+ exportJSON() {
192
+ return {
193
+ ...super.exportJSON(),
194
+ type: "nested-doc",
195
+ content: this.__contentState,
196
+ version: 1
197
+ };
198
+ }
199
+ decorate(_editor, _config) {
200
+ return createElement(NestedDocStaticDecorator, {
201
+ contentState: this.__contentState
202
+ });
203
+ }
204
+ }
205
+ function $createNestedDocNode(contentState) {
206
+ return new NestedDocNode(contentState);
207
+ }
208
+ function $isNestedDocNode(node) {
209
+ return node instanceof NestedDocNode;
210
+ }
211
+ const NESTED_DOC_BLOCK_TRANSFORMER = {
212
+ dependencies: [],
213
+ export: (node) => {
214
+ if (!$isNestedDocNode(node)) return null;
215
+ const text = extractTextContent$1(node.getContentState());
216
+ return `<nested-doc>
217
+ ${text}
218
+ </nested-doc>`;
219
+ },
220
+ // eslint-disable-next-line regexp/no-useless-assertions -- intentionally never-matching regex for export-only transformer
221
+ regExp: /a^/,
222
+ replace: () => {
223
+ },
224
+ type: "element"
225
+ };
226
+ export {
227
+ $isNestedDocNode as $,
228
+ NestedDocRenderer as N,
229
+ previewEmpty as a,
230
+ editOverlay as b,
231
+ dialogShell as c,
232
+ dialogPopup as d,
233
+ editOverlayRoot as e,
234
+ dialogHeader as f,
235
+ dialogHeaderLeft as g,
236
+ hasRenderableEditorState as h,
237
+ dialogTitle as i,
238
+ dialogHeaderRight as j,
239
+ dialogHeaderCloseBtn as k,
240
+ editorArea as l,
241
+ dialogFooter as m,
242
+ NestedDocNode as n,
243
+ $createNestedDocNode as o,
244
+ previewSurface as p,
245
+ NESTED_DOC_BLOCK_TRANSFORMER as q,
246
+ rendererContent as r,
247
+ NestedDocStaticDecorator as s,
248
+ truncateEditorState as t
249
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haklex/rich-ext-nested-doc",
3
- "version": "0.0.81",
3
+ "version": "0.0.83",
4
4
  "description": "Nested document extension for haklex rich editor",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,12 +25,13 @@
25
25
  "dist"
26
26
  ],
27
27
  "dependencies": {
28
- "@haklex/rich-editor": "0.0.81",
29
- "@haklex/rich-static-renderer": "0.0.81",
30
- "@haklex/rich-style-token": "0.0.81",
31
- "@haklex/rich-editor-ui": "0.0.81"
28
+ "@haklex/rich-editor": "0.0.83",
29
+ "@haklex/rich-editor-ui": "0.0.83",
30
+ "@haklex/rich-static-renderer": "0.0.83",
31
+ "@haklex/rich-style-token": "0.0.83"
32
32
  },
33
33
  "devDependencies": {
34
+ "@lexical/markdown": "^0.41.0",
34
35
  "@lexical/react": "^0.41.0",
35
36
  "@types/react": "^19.2.14",
36
37
  "@types/react-dom": "^19.2.3",
@@ -45,6 +46,7 @@
45
46
  "vite-plugin-dts": "^4.5.4"
46
47
  },
47
48
  "peerDependencies": {
49
+ "@lexical/markdown": "^0.41.0",
48
50
  "@lexical/react": "^0.41.0",
49
51
  "lexical": "^0.41.0",
50
52
  "lucide-react": "^0.574.0",
@@ -1,269 +0,0 @@
1
- import { DecoratorNode } from "lexical";
2
- import { Maximize2 } from "lucide-react";
3
- import { createElement, useCallback, useMemo } from "react";
4
- import { usePortalTheme } from "@haklex/rich-style-token";
5
- import { ColorSchemeProvider, extractTextContent, useColorScheme, usePresentDialog, useRendererConfig, useVariant } from "@haklex/rich-editor/static";
6
- import { RichRenderer } from "@haklex/rich-static-renderer";
7
- import { jsx, jsxs } from "react/jsx-runtime";
8
- import { extractTextContent as extractTextContent$1 } from "@haklex/rich-editor/commands";
9
- //#region src/styles.css.ts
10
- var editOverlayRoot = "_1an6v8d0";
11
- var editOverlay = "_1an6v8d1";
12
- var rendererContent = "_1an6v8d2";
13
- var dialogPopup = "_1an6v8d3";
14
- var dialogShell = "_1an6v8d4";
15
- var dialogHeader = "_1an6v8d5";
16
- var dialogHeaderLeft = "_1an6v8d6";
17
- var dialogTitle = "_1an6v8d7";
18
- var dialogHeaderRight = "_1an6v8d8";
19
- var dialogHeaderCloseBtn = "_1an6v8d9";
20
- var editorArea = "_1an6v8dc";
21
- var dialogFooter = "_1an6v8dg";
22
- var staticOverlayRoot = "_1an6v8dh";
23
- var staticOverlay = "_1an6v8di";
24
- var staticDialogPopup = "_1an6v8dk";
25
- var staticDialogBody = "_1an6v8dl";
26
- var previewSurface = "_1an6v8dm";
27
- var previewEmpty = "_1an6v8dn";
28
- //#endregion
29
- //#region src/NestedDocRenderer.tsx
30
- function NestedDocRenderer({ value, variant = "comment" }) {
31
- const theme = useColorScheme();
32
- return /* @__PURE__ */ jsx(RichRenderer, {
33
- rendererConfig: useRendererConfig(),
34
- theme,
35
- value,
36
- variant
37
- });
38
- }
39
- //#endregion
40
- //#region src/utils.ts
41
- function truncateEditorState(state, maxNodes) {
42
- const root = state.root;
43
- if (!root?.children || root.children.length <= maxNodes) return state;
44
- return {
45
- ...state,
46
- root: {
47
- ...root,
48
- children: root.children.slice(0, maxNodes)
49
- }
50
- };
51
- }
52
- function hasRenderableEditorState(state) {
53
- const children = state.root?.children ?? [];
54
- if (children.length === 0) return false;
55
- if (children.length > 1) return true;
56
- const first = children[0];
57
- if (!first) return false;
58
- if (first.type !== "paragraph") return true;
59
- return first.children?.some((child) => {
60
- if (child.type !== "text") return true;
61
- return Boolean(child.text?.trim());
62
- }) ?? false;
63
- }
64
- //#endregion
65
- //#region src/NestedDocStaticDecorator.tsx
66
- var PREVIEW_NODE_LIMIT = 6;
67
- function NestedDocStaticDecorator({ contentState }) {
68
- const colorScheme = useColorScheme();
69
- const { className: portalClassName } = usePortalTheme();
70
- const presentDialogFromCtx = usePresentDialog();
71
- const children = contentState.root?.children ?? [];
72
- const needsTruncation = children.length > PREVIEW_NODE_LIMIT;
73
- const previewState = useMemo(() => truncateEditorState(contentState, PREVIEW_NODE_LIMIT), [contentState]);
74
- const hasPreview = hasRenderableEditorState(contentState);
75
- const title = useMemo(() => {
76
- const firstChild = children[0];
77
- if (!firstChild) return "";
78
- const walk = (node) => {
79
- if (node.text) return node.text;
80
- if (node.children) return node.children.map(walk).join("");
81
- return "";
82
- };
83
- return walk(firstChild).slice(0, 80);
84
- }, [children]);
85
- const contextVariant = useVariant();
86
- const handleOpen = useCallback(async () => {
87
- (presentDialogFromCtx ?? (await import("@haklex/rich-editor-ui")).presentDialog)({
88
- title: title || void 0,
89
- content: () => /* @__PURE__ */ jsx(ColorSchemeProvider, {
90
- colorScheme,
91
- children: /* @__PURE__ */ jsx("div", {
92
- className: staticDialogBody,
93
- children: /* @__PURE__ */ jsx(NestedDocRenderer, {
94
- value: contentState,
95
- variant: contextVariant
96
- })
97
- })
98
- }),
99
- className: staticDialogPopup,
100
- portalClassName,
101
- theme: colorScheme,
102
- showCloseButton: true,
103
- clickOutsideToDismiss: true,
104
- sheet: "auto"
105
- });
106
- }, [
107
- colorScheme,
108
- contentState,
109
- portalClassName,
110
- presentDialogFromCtx,
111
- title,
112
- contextVariant
113
- ]);
114
- if (!hasPreview) return null;
115
- return /* @__PURE__ */ jsxs("div", {
116
- className: staticOverlayRoot,
117
- role: "button",
118
- tabIndex: 0,
119
- onClick: handleOpen,
120
- onKeyDown: (e) => {
121
- if (e.key === "Enter" || e.key === " ") {
122
- e.preventDefault();
123
- handleOpen();
124
- }
125
- },
126
- children: [
127
- /* @__PURE__ */ jsx("div", {
128
- className: `${rendererContent} rich-nested-doc-content`,
129
- children: /* @__PURE__ */ jsx("div", {
130
- className: previewSurface,
131
- children: /* @__PURE__ */ jsx(NestedDocRenderer, { value: previewState })
132
- })
133
- }),
134
- needsTruncation && /* @__PURE__ */ jsx("div", {
135
- "aria-hidden": true,
136
- className: "_1an6v8dj"
137
- }),
138
- /* @__PURE__ */ jsx("div", {
139
- "aria-hidden": true,
140
- className: staticOverlay,
141
- children: /* @__PURE__ */ jsx(Maximize2, { size: 24 })
142
- })
143
- ]
144
- });
145
- }
146
- //#endregion
147
- //#region \0@oxc-project+runtime@0.115.0/helpers/typeof.js
148
- function _typeof(o) {
149
- "@babel/helpers - typeof";
150
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
151
- return typeof o;
152
- } : function(o) {
153
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
154
- }, _typeof(o);
155
- }
156
- //#endregion
157
- //#region \0@oxc-project+runtime@0.115.0/helpers/toPrimitive.js
158
- function toPrimitive(t, r) {
159
- if ("object" != _typeof(t) || !t) return t;
160
- var e = t[Symbol.toPrimitive];
161
- if (void 0 !== e) {
162
- var i = e.call(t, r || "default");
163
- if ("object" != _typeof(i)) return i;
164
- throw new TypeError("@@toPrimitive must return a primitive value.");
165
- }
166
- return ("string" === r ? String : Number)(t);
167
- }
168
- //#endregion
169
- //#region \0@oxc-project+runtime@0.115.0/helpers/toPropertyKey.js
170
- function toPropertyKey(t) {
171
- var i = toPrimitive(t, "string");
172
- return "symbol" == _typeof(i) ? i : i + "";
173
- }
174
- //#endregion
175
- //#region \0@oxc-project+runtime@0.115.0/helpers/defineProperty.js
176
- function _defineProperty(e, r, t) {
177
- return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
178
- value: t,
179
- enumerable: !0,
180
- configurable: !0,
181
- writable: !0
182
- }) : e[r] = t, e;
183
- }
184
- //#endregion
185
- //#region src/NestedDocNode.ts
186
- var NestedDocNode = class NestedDocNode extends DecoratorNode {
187
- static getType() {
188
- return "nested-doc";
189
- }
190
- static clone(node) {
191
- return new NestedDocNode(node.__contentState, node.__key);
192
- }
193
- constructor(contentState, key) {
194
- super(key);
195
- _defineProperty(this, "__contentState", void 0);
196
- this.__contentState = contentState || { root: {
197
- children: [{
198
- type: "paragraph",
199
- children: [],
200
- direction: null,
201
- format: "",
202
- indent: 0,
203
- textFormat: 0,
204
- textStyle: "",
205
- version: 1
206
- }],
207
- direction: null,
208
- format: "",
209
- indent: 0,
210
- type: "root",
211
- version: 1
212
- } };
213
- }
214
- createDOM(_config) {
215
- const div = document.createElement("div");
216
- div.className = "rich-nested-doc";
217
- return div;
218
- }
219
- updateDOM() {
220
- return false;
221
- }
222
- isInline() {
223
- return false;
224
- }
225
- getContentState() {
226
- return this.getLatest().__contentState;
227
- }
228
- setContentState(state) {
229
- const writable = this.getWritable();
230
- writable.__contentState = state;
231
- }
232
- getTextContent() {
233
- return extractTextContent(this.__contentState);
234
- }
235
- static importJSON(serializedNode) {
236
- return new NestedDocNode(serializedNode.content);
237
- }
238
- exportJSON() {
239
- return {
240
- ...super.exportJSON(),
241
- type: "nested-doc",
242
- content: this.__contentState,
243
- version: 1
244
- };
245
- }
246
- decorate(_editor, _config) {
247
- return createElement(NestedDocStaticDecorator, { contentState: this.__contentState });
248
- }
249
- };
250
- function $createNestedDocNode(contentState) {
251
- return new NestedDocNode(contentState);
252
- }
253
- function $isNestedDocNode(node) {
254
- return node instanceof NestedDocNode;
255
- }
256
- //#endregion
257
- //#region src/transformer.ts
258
- var NESTED_DOC_BLOCK_TRANSFORMER = {
259
- dependencies: [],
260
- export: (node) => {
261
- if (!$isNestedDocNode(node)) return null;
262
- return `<nested-doc>\n${extractTextContent$1(node.getContentState())}\n</nested-doc>`;
263
- },
264
- regExp: /a^/,
265
- replace: () => {},
266
- type: "element"
267
- };
268
- //#endregion
269
- export { rendererContent as C, previewSurface as S, dialogTitle as _, _defineProperty as a, editorArea as b, truncateEditorState as c, dialogHeader as d, dialogHeaderCloseBtn as f, dialogShell as g, dialogPopup as h, NestedDocNode as i, NestedDocRenderer as l, dialogHeaderRight as m, $createNestedDocNode as n, NestedDocStaticDecorator as o, dialogHeaderLeft as p, $isNestedDocNode as r, hasRenderableEditorState as s, NESTED_DOC_BLOCK_TRANSFORMER as t, dialogFooter as u, editOverlay as v, previewEmpty as x, editOverlayRoot as y };